[ Index ] WAROFGENERALS

PHP Cross Reference of WAROFGENERALS MODS SOURCES

title

Body

[close]

/Command and conquer Generals/Stargate SG1/INI/Object/ -> FactionUnit.ini (source)

   1   ; FILE: FactionUnit.ini ///////////////////////////////////////////////////////
   2  ; This file contains only objects that are units tied to specific factions.
   3  ; You will find tanks, infantry, transports ... all our "units" here.  Also
   4  ; in this file are related objects such as debris from the units or 
   5  ; tank shells to fire and deal damage to the enemy.
   6  ;//////////////////////////////////////////////////////////////////////////////
   7  
   8  Object 12UMCruiserMissile
   9  
  10    
  11      
  12   ; *** ART Parameters ***
  13    Draw = W3DModelDraw ModuleTag_01
  14      OkToChangeModelColor = Yes
  15      DefaultConditionState
  16        Model = 12UMCmi
  17      End
  18    End
  19  
  20    ; ***DESIGN parameters ***
  21    DisplayName      = OBJECT:TomahawkMissile
  22    EditorSorting   = SYSTEM
  23    VisionRange = 0.0  
  24    ArmorSet
  25      Conditions      = None
  26      ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
  27      ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
  28      ;*AntiBallisticMissile = Yes set in the Weapon.ini.
  29      Armor           = BallisticMissileArmor 
  30      DamageFX        = None
  31    End
  32  
  33    ; *** ENGINEERING Parameters ***
  34    KindOf = PROJECTILE BALLISTIC_MISSILE 
  35    Body = ActiveBody ModuleTag_02
  36      MaxHealth       = 200.0
  37      InitialHealth   = 100.0
  38    End
  39  
  40  ; ---- begin Projectile death behaviors
  41    Behavior = InstantDeathBehavior DeathModuleTag_01
  42      DeathTypes = NONE +DETONATED
  43      ; we detonated normally.
  44      FX          = WeaponFX_TomahawkMissileDetonation
  45    End
  46    Behavior = InstantDeathBehavior DeathModuleTag_02
  47      DeathTypes = NONE +LASERED
  48      ; shot down by laser.
  49      FX         = FX_GenericMissileDisintegrate
  50      OCL        = OCL_GenericMissileDisintegrate
  51    End
  52    Behavior = InstantDeathBehavior DeathModuleTag_03
  53      DeathTypes = ALL -LASERED -DETONATED
  54      ; shot down by nonlaser.
  55      FX         = FX_GenericMissileDeath
  56    End
  57  ; ---- end Projectile death behaviors
  58      
  59    Behavior = PhysicsBehavior ModuleTag_06
  60      Mass = 1
  61    End
  62    Behavior = MissileAIUpdate ModuleTag_07
  63      TryToFollowTarget = Yes 
  64      FuelLifetime = 100000
  65      IgnitionDelay = 0
  66      IgnitionFX = FX_TomahawkIgnition
  67      InitialVelocity = 50                ; in dist/sec
  68      DistanceToTravelBeforeTurning = 10000
  69      DistanceToTargetBeforeDiving = 10000 ; When I hit this close to target, I ignore PreferredHeight. 
  70      ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
  71      ; heart, being over the target counts as "there", so we'll give up and just go straight.
  72  
  73      DistanceToTargetForLock = 10000 ; Short lock on, as it looks better flying.  jba.
  74    End
  75    Locomotor = SET_NORMAL TomahawkMissileLocomotor
  76  
  77    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
  78    GeometryMajorRadius = 8.0
  79    GeometryHeight = 4.0
  80    GeometryIsSmall = Yes    
  81  
  82    Shadow = SHADOW_DECAL
  83  End
  84  
  85  
  86  
  87  ;
  88  ;
  89  ;
  90  ;
  91  ;
  92  ;
  93  ;
  94  Object AvengerPointDefenseLaserBeam
  95   ; *** ART Parameters ***
  96    Draw = W3DLaserDraw ModuleTag_01
  97      Texture = EXLaser.tga
  98      NumBeams = 4                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
  99  
 100      InnerBeamWidth = 0.4            ;The total width of beam
 101      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
 102  
 103      OuterBeamWidth = 1.2            ;The total width of beam
 104      OuterColor = R:255 G:0 B:0  A:150 ;The outside color of the laser (cool)
 105      
 106      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
 107      ;FadeLifetime = 0                ;Laser will fade and delete.
 108  
 109      ;@todo -- add shot ability functionality (instead of instant point A to B)
 110    End
 111  
 112    KindOf = IMMOBILE
 113    ClientUpdate = LaserUpdate ModuleTag_02
 114      MuzzleParticleSystem = PaladinPointDefenseLaserFlare
 115      ParentFireBoneName   = Laser
 116      ParentFireBoneOnTurret = Yes
 117    End
 118  
 119    ;Used as a weapon, this is essentially a fast pulse laser. Adjusting
 120    ;the lifetime values will determine how long it renders. The damage
 121    ;is applied immediately, so lifetime doesn't matter.
 122    Behavior = LifetimeUpdate ModuleTag_03
 123      MinLifetime = 95   ; min lifetime in msec
 124      MaxLifetime = 95   ; max lifetime in msec
 125    End
 126  End
 127  
 128  
 129  ;
 130  ;
 131  ;
 132  ;
 133  ;
 134  ;
 135  ;
 136  Object 12MissileCruiserHull
 137  
 138    ; *** ART Parameters ***
 139    Draw = W3DModelDraw ModuleTag_01
 140      OkToChangeModelColor = Yes
 141  
 142      DefaultConditionState
 143        Model = 12UMC_E
 144      End
 145    End
 146  
 147    ; ***DESIGN parameters ***
 148    Side = America
 149    EditorSorting   = SYSTEM
 150    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
 151  
 152    ; *** AUDIO Parameters ***
 153    ; *** ENGINEERING Parameters ***
 154    RadarPriority = UNIT
 155    KindOf = CAN_CAST_REFLECTIONS IMMOBILE NO_COLLIDE HULK
 156  
 157    Body = ActiveBody ModuleTag_02
 158      MaxHealth       = 1.0
 159      InitialHealth   = 1.0
 160    End
 161  
 162  
 163    Behavior = PhysicsBehavior ModuleTag_03
 164      Mass = 50
 165      AllowBouncing = Yes
 166    End
 167  
 168    Behavior = LifetimeUpdate ModuleTag_04
 169      MinLifetime = 0   ; min lifetime in msec
 170      MaxLifetime = 0   ; max lifetime in msec
 171    End
 172  
 173    Behavior = SlowDeathBehavior ModuleTag_05
 174      SinkDelay = 2000
 175      SinkRate = 2     ; in Dist/Sec
 176      DestructionDelay = 23000
 177    End
 178  
 179    Behavior = TransitionDamageFX ModuleTag_06
 180      RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
 181    End
 182  
 183    Geometry = BOX
 184    GeometryMajorRadius = 9.0
 185    GeometryMinorRadius = 6.0
 186    GeometryHeight = 7.5     
 187    GeometryIsSmall = Yes    
 188  
 189  End
 190  
 191  
 192  
 193  ;------------------------------------------------------------------------------
 194  
 195  
 196  
 197  
 198  Object 12UMissileCruiser
 199    SelectPortrait         = SABattleship_L
 200   
 201    Draw                   = W3DTankDraw ModuleTag_01
 202      OkToChangeModelColor = Yes
 203  
 204      ConditionState       = NONE
 205        Model              = 12UMC
 206        Turret             = LTURRET
 207        TurretPitch        = LTURRETEL
 208        AltTurret          = MTURRET
 209        AltTurretPitch     = MTURRETEL
 210        WeaponLaunchBone   = TERTIARY WeaponC
 211        WeaponFireFXBone   = TERTIARY MUZZLEC
 212        WeaponLaunchBone   = PRIMARY WEAPONA
 213        WeaponFireFXBone   = PRIMARY WEAPONA
 214        ParticleSysBone    = STACK01 SteamVent
 215        ParticleSysBone    = STACK02 SteamVent
 216        ParticleSysBone    = STACK03 SteamVent
 217        ParticleSysBone    = TreadFX02 BattleShipWaterRipples
 218        ParticleSysBone    = TreadFX03 BattleShipWaterRipples
 219        ParticleSysBone    = TreadFX04 BattleShipWaterRipples
 220      End
 221  
 222      ConditionState       = REALLYDAMAGED RUBBLE
 223        Model              = 12UMC_D
 224        Turret             = LTURRET
 225        TurretPitch        = LTURRETEL
 226        AltTurret          = MTURRET
 227        AltTurretPitch     = MTURRETEL
 228        WeaponLaunchBone   = TERTIARY WeaponC
 229        WeaponFireFXBone   = TERTIARY MUZZLEC
 230        WeaponLaunchBone   = PRIMARY WEAPONA
 231        WeaponFireFXBone   = PRIMARY WEAPONA
 232        ParticleSysBone    = STACK01 SteamVent
 233        ParticleSysBone    = STACK02 SteamVent
 234        ParticleSysBone    = STACK03 SteamVent
 235        ParticleSysBone    = TreadFX02 BattleShipWaterRipples
 236        ParticleSysBone    = TreadFX03 BattleShipWaterRipples
 237        ParticleSysBone    = TreadFX04 BattleShipWaterRipples
 238        ParticleSysBone    = SMOKE01 SmolderingSmoke
 239        ParticleSysBone    = SMOKE02 SmolderingSmoke
 240        ParticleSysBone    = SMOKE02 SmolderingFireLarge
 241        ParticleSysBone    = SMOKE03 SmolderingSmoke
 242        ParticleSysBone    = SMOKE04 SmolderingSmoke
 243        ParticleSysBone    = SMOKE05 SmolderingSmoke
 244        ParticleSysBone    = SMOKE05 SmolderingFireLarge
 245        ParticleSysBone    = SMOKE06 SmolderingSmoke
 246      End
 247  
 248    End
 249  
 250    ; ***DESIGN parameters ***
 251    DisplayName            = OBJECT:Battleship
 252    Side                   = America
 253    EditorSorting          = VEHICLE
 254    TransportSlotCount     = 0
 255    CommandSet             = GenericCommandSet
 256    WeaponSet
 257      Conditions           = None 
 258      Weapon               = PRIMARY 12MissileCruiserBarrage
 259      PreferredAgainst     = PRIMARY VEHICLE STRUCTURE
 260      Weapon               = SECONDARY 12MissileCruiserPDL
 261      Weapon               = TERTIARY 12MissileCruiserMissile
 262      PreferredAgainst     = TERTIARY AIRCRAFT
 263    End
 264    ArmorSet
 265      Conditions        = None
 266      Armor             = TankArmor
 267      DamageFX          = TankDamageFX
 268    End
 269    VisionRange            = 300
 270    BuildCost       = 1
 271    BuildTime       = 1
 272    VisionRange     = 150
 273    ShroudClearingRange = 320
 274    Prerequisites
 275      ;fuck all
 276    End
 277  
 278    ; *** AUDIO Parameters ***
 279    VoiceSelect = BattleshipVoiceSelect
 280    VoiceMove = BattleshipVoiceMove
 281    VoiceGuard = BattleshipVoiceMove
 282    VoiceAttack = BattleshipVoiceAttack
 283    SoundAmbient = BattleshipAmbientLoop
 284  
 285    UnitSpecificSounds
 286      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
 287      TurretMoveLoop       = OverlordTankTurretMoveLoop
 288    End
 289  
 290    ; *** ENGINEERING Parameters ***
 291    RadarPriority          = UNIT
 292    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE
 293  
 294    Body = ActiveBody ModuleTag_02
 295      MaxHealth            = 3000.0
 296      InitialHealth        = 3000.0
 297    End
 298  
 299    Behavior = AIUpdateInterface ModuleTag_03
 300      Turret
 301        TurretTurnRate        = 180
 302        TurretPitchRate       = 180
 303        AllowsPitch           = Yes
 304        NaturalTurretPitch    = 45   
 305        GroundUnitPitch       = 0
 306        MinPhysicalPitch      = -20
 307        ControlledWeaponSlots = SECONDARY
 308        MinIdleScanInterval   = 250
 309        MaxIdleScanInterval   = 250
 310        MinIdleScanAngle      = 0
 311        MaxIdleScanAngle      = 360
 312      End
 313      AltTurret
 314        TurretTurnRate        = 120
 315        TurretPitchRate       = 50
 316        AllowsPitch           = Yes
 317        GroundUnitPitch       = 0
 318        MinPhysicalPitch      = 0
 319        ControlledWeaponSlots = TERTIARY
 320        MinIdleScanInterval   = 250
 321        MaxIdleScanInterval   = 250
 322        MinIdleScanAngle      = 0
 323        MaxIdleScanAngle      = 360
 324      End
 325      AutoAcquireEnemiesWhenIdle = Yes
 326    End
 327  
 328    Locomotor = SET_NORMAL 12UMissileCLoco
 329  
 330    Behavior               = PhysicsBehavior ModuleTag_04
 331      Mass                 = 5000.0
 332    End
 333  
 334    Behavior = SlowDeathBehavior ModuleTag_12
 335      DeathTypes = ALL -CRUSHED -SPLATTED
 336      ProbabilityModifier = 25
 337      DestructionDelay = 200
 338      DestructionDelayVariance = 100
 339      OCL = INITIAL OCL_12FuckedMCruiser
 340      FX  = FINAL FX_12GenericShockwaveFinal
 341    End
 342  
 343    Geometry               = BOX
 344    GeometryMajorRadius    = 100.0
 345    GeometryMinorRadius    = 20.0
 346    GeometryHeight         = 40     
 347    GeometryIsSmall        = No 
 348    Shadow                 = SHADOW_VOLUME   
 349  
 350  End
 351  
 352  
 353  
 354  ;-------------------------------------------- 
 355  Object AmericaAircraftCarrierJet
 356  
 357  
 358    ; *** ART Parameters ***
 359   SelectPortrait         = SACRaptor_L
 360    ButtonImage            = SACRaptor
 361  
 362  
 363  
 364    UpgradeCameo1 = Upgrade_AmericaLaserMissiles
 365    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
 366    UpgradeCameo3 = Upgrade_GLACamouflage
 367    ;UpgradeCameo4 = NONE
 368    ;UpgradeCameo5 = NONE
 369    
 370    Draw                   = W3DModelDraw ModuleTag_01
 371   
 372      DefaultConditionState
 373        Model               = Harrier
 374        HideSubObject       = BurnerFX01 BurnerFX02
 375        WeaponLaunchBone = PRIMARY WeaponA
 376      End
 377  
 378      ConditionState        = JETEXHAUST
 379        ; exhaust
 380        ParticleSysBone     = Wingtip01 JetContrail
 381        ParticleSysBone     = Wingtip02 JetContrail
 382      End
 383  
 384      ConditionState        = JETEXHAUST JETAFTERBURNER
 385        ; exhaust
 386        ParticleSysBone     = Wingtip01 JetContrail
 387        ParticleSysBone     = Wingtip02 JetContrail
 388        ; afterburner
 389        ShowSubObject       = BurnerFX01 BurnerFX02
 390        ParticleSysBone     = Engine01 JetLenzflare
 391        ParticleSysBone     = Engine02 JetLenzflare
 392      End
 393  
 394      ConditionState        = REALLYDAMAGED
 395        Model               = Harrier
 396        ; damage
 397        ParticleSysBone     = Smoke01 JetSmoke
 398        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
 399      End
 400      
 401      ConditionState        = REALLYDAMAGED JETEXHAUST
 402        Model               = Harrier
 403        ; damage
 404        ParticleSysBone     = Smoke01 JetSmoke
 405        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
 406        ; exhaust
 407        ParticleSysBone     = Wingtip01 JetContrail
 408        ParticleSysBone     = Wingtip02 JetContrail
 409      End
 410  
 411      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
 412        Model               = Harrier
 413        ; damage
 414        ParticleSysBone     = Smoke01 JetSmoke
 415        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
 416        ; afterburner
 417        ShowSubObject       = BurnerFX01 BurnerFX02
 418        ParticleSysBone     = Engine01 JetLenzflare
 419        ParticleSysBone     = Engine02 JetLenzflare
 420        ; exhaust
 421        ParticleSysBone     = Wingtip01 JetContrail
 422        ParticleSysBone     = Wingtip02 JetContrail
 423      End
 424  
 425      ConditionState        = RUBBLE
 426        Model               = Harrier
 427        HideSubObject       = None 
 428        ShowSubObject       = None
 429      End
 430  
 431      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
 432        Model               = Harrier
 433        ;HideSubObject is needed cause there're inherited from default condition state      
 434        HideSubObject       = None 
 435        ShowSubObject       = None
 436        ParticleSysBone     = Engine01 JetExhaust
 437        ParticleSysBone     = Engine02 JetExhaust
 438        ; exhaust
 439        ParticleSysBone     = Wingtip01 JetContrail
 440        ParticleSysBone     = Wingtip02 JetContrail
 441      End
 442  
 443      OkToChangeModelColor = Yes
 444  
 445    End
 446  
 447    ; ***DESIGN parameters ***
 448    DisplayName         = OBJECT:Comanche
 449    EditorSorting       = VEHICLE
 450    Side                = America
 451    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
 452    VisionRange         = 180.0
 453    ShroudClearingRange = 600
 454    Prerequisites
 455      Object            = AmericaAircraftCarrier
 456    End
 457  
 458   
 459    WeaponSet
 460      Conditions          = None 
 461      ; -----
 462      Weapon              = PRIMARY     Comanche20mmCannonWeapon
 463      PreferredAgainst    = PRIMARY     INFANTRY
 464      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
 465      ; -----
 466      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
 467      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
 468      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
 469      ; -----
 470      Weapon              = TERTIARY    NONE
 471    End
 472    WeaponSet
 473      Conditions          = PLAYER_UPGRADE 
 474      ; -----
 475      Weapon              = PRIMARY     Comanche20mmCannonWeapon
 476      PreferredAgainst    = PRIMARY     INFANTRY
 477      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
 478      ; -----
 479      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
 480      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
 481      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
 482      ; -----
 483      Weapon              = TERTIARY    ComancheRocketPodWeapon
 484      AutoChooseSources   = TERTIARY    NONE
 485    End
 486  
 487    ArmorSet
 488      Conditions      = None
 489      Armor           = ComancheArmor
 490      DamageFX        = None
 491    End
 492    BuildCost           = 1500
 493    BuildTime           = 20              ; in seconds
 494    ExperienceValue     = 50 50 100 200   ; Experience point value at each level
 495    ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
 496    IsTrainable         = Yes             ; Can gain experience
 497    CommandSet          = ChinaJetMIGCommandSet
 498  
 499     ; *** AUDIO Parameters ***
 500    VoiceSelect            = RaptorVoiceSelect
 501    VoiceMove              = RaptorVoiceMove
 502    VoiceAttack            = RaptorVoiceAttack
 503    VoiceAttackAir         = RaptorVoiceAttackAir
 504    VoiceGuard             = RaptorVoiceAirPatrol
 505    SoundDie               = RaptorVoiceFalling
 506    SoundAmbient           = RaptorAmbientLoop
 507    SoundAmbientRubble     = NoSound
 508    ; For now, it is better to have some sound than no sound cause there is a bug in
 509    ; what triggers the sound move loop sound, and the multiplayer test is only days away
 510    ; SoundMoveLoop          = RaptorAmbientLoop  ; don't want sound while sitting at airfield
 511    ; SoundAmbient           = NoSound
 512    UnitSpecificSounds
 513      VoiceCreate          = RaptorVoiceCreate
 514      SoundEject           = PilotSoundEject
 515      VoiceEject           = PilotVoiceEject
 516      Afterburner          = RaptorAfterburner
 517      VoiceLowFuel         = RaptorVoiceLowFuel
 518      VoiceGarrison        = RaptorVoiceMove
 519    End
 520  
 521  
 522    ; *** ENGINEERING Parameters ***
 523    RadarPriority   = UNIT
 524    KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
 525  
 526    Behavior = WeaponSetUpgrade ModuleTag_02
 527      TriggeredBy = Upgrade_ComancheRocketPods
 528    End
 529    Behavior = ExperienceScalarUpgrade ModuleTag_03
 530      TriggeredBy = Upgrade_AmericaAdvancedTraining
 531      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
 532    End
 533  
 534    Body = ActiveBody ModuleTag_04
 535      MaxHealth       = 220.0
 536      InitialHealth   = 220.0
 537    End
 538  
 539    Behavior = FXListDie ModuleTag_05
 540      DeathFX = FX_HelicopterStartDeath
 541    End
 542  
 543    Behavior = JetAIUpdate ModuleTag_06
 544      MinHeight                     = 5
 545      NeedsRunway                   = No
 546      KeepsParkingSpaceWhenAirborne = No
 547      AutoAcquireEnemiesWhenIdle    = Yes
 548      ; note that comanches do not return to base when idle
 549  
 550      ; this is a bit of a trick... normally, units cannot move-and-fire at
 551      ; the same time. we need the comanche to be able to. so we give it
 552      ; a "turret" (invisible) and put the two main weapons on it, but with
 553      ; no turn rate. voila!
 554      Turret
 555        TurretTurnRate = 0      ; this "turret" does not turn
 556        TurretPitchRate = 0     ; nor does it pitch
 557        ControlledWeaponSlots = PRIMARY SECONDARY
 558      End
 559  
 560    End
 561    Locomotor = SET_NORMAL  ComancheLocomotor
 562    Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
 563  
 564    Behavior = PhysicsBehavior ModuleTag_07
 565      Mass = 50.0
 566    End
 567    Behavior = HelicopterSlowDeathBehavior ModuleTag_08
 568      DestructionDelay                = 99999999        ; the destruction delay
 569      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
 570      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
 571      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
 572      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)
 573      SoundDeathLoop                  = ComancheDamagedLoop
 574      MinSelfSpin                     = 100                     ; in degrees per second
 575      MaxSelfSpin                     = 300                     ; in degrees per second
 576      SelfSpinUpdateDelay             = 100             ; in milliseconds
 577      SelfSpinUpdateAmount            = 10             ; in degrees
 578      FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
 579      MinBladeFlyOffDelay             = 1500            ; in milliseconds
 580      MaxBladeFlyOffDelay             = 1500            ; in milliseconds
 581      AttachParticle                  = SootySmokeTrail
 582      AttachParticleBone              = Propeller02
 583      BladeObjectName                 = ComancheBlades
 584      BladeBoneName                   = Propeller01
 585      ; Most things that eject pilots do so immediately upon death,
 586      ; via use of EjectPilotDie, but Helicopters are a special case...
 587      ; they need to do so after their blades are ejected.
 588      OCLEjectPilot                   = OCL_EjectPilotViaParachute
 589      FXBlade                         = FX_HelicopterBladeExplosion
 590      OCLBlade                        = OCL_HelicopterBladeExplosion
 591      FXHitGround                     = FX_HelicopterHitGround
 592      OCLHitGround                    = OCL_HelicopterHitGround
 593      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
 594      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
 595      DelayFromGroundToFinalDeath     = 1500
 596      FinalRubbleObject               = ComancheRubbleHull
 597    End
 598  
 599    Behavior = TransitionDamageFX ModuleTag_09
 600      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
 601      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
 602    End
 603  
 604    Behavior = FlammableUpdate ModuleTag_21
 605      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
 606      AflameDamageAmount = 3       ; taking this much damage...
 607      AflameDamageDelay = 500       ; this often.
 608    End
 609  
 610      Behavior = StealthUpdate ModuleTag_07
 611      StealthDelay                = 2500 ; msec
 612      StealthForbiddenConditions  = ATTACKING USING_ABILITY
 613      MoveThresholdSpeed          = 3
 614      InnateStealth               = No ;Requires upgrade first
 615      OrderIdleEnemiesToAttackMeUponReveal  = Yes
 616    End
 617  
 618    Behavior = StealthUpgrade ModuleTag_08
 619      TriggeredBy = Upgrade_GLACamouflage
 620    End
 621  
 622    
 623   
 624  
 625  
 626    Behavior = MobMemberSlavedUpdate ModuleTag_22
 627      MustCatchUpRadius   = 500 ;????????
 628      NoNeedToCatchUpRadius = 180 ;??????
 629      Squirrelliness = 0.05
 630      CatchUpCrisisBailTime = 3000; this is in calls to this update, not in frames
 631    End
 632  
 633    Geometry = BOX
 634    GeometryMajorRadius = 20.0
 635    GeometryMinorRadius = 3.0
 636    GeometryHeight = 25.0
 637    GeometryIsSmall = No
 638    Shadow = SHADOW_VOLUME
 639    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
 640  
 641  End
 642  ;------------------------------------------------------------------------------
 643  
 644  ;------------------------------------------------------------------------------
 645  ;------------------------------------------------------------------------------
 646  ;------------------------------------------------------------------------------
 647  Object AmericaAircraftCarrier
 648  
 649  
 650  
 651  
 652    SelectPortrait         = SACarrier_L
 653    ButtonImage            = SACarrier_L
 654  
 655    UpgradeCameo1 = Upgrade_SeaRepair
 656    UpgradeCameo2 = Upgrade_SeaArmour
 657    ;UpgradeCameo3 = NONE
 658    ;UpgradeCameo4 = NONE
 659    ;UpgradeCameo5 = NONE
 660  
 661  
 662  
 663    ; *** ART Parameters ***
 664    Draw                   = W3DTankDraw ModuleTag_01
 665      OkToChangeModelColor = Yes
 666      InitialRecoilSpeed   = 120
 667      MaxRecoilDistance    = 8
 668      RecoilSettleSpeed    = 6
 669  
 670      ConditionState       = NONE
 671         Model               = PSAirCarrier
 672      Animation           = PSAirCarrier.PSAirCarrier
 673        AnimationMode      = LOOP
 674        Turret            = TURRET01
 675        TurretPitch       = TURRETEL
 676        WeaponLaunchBone  = PRIMARY   WeaponA
 677        WeaponLaunchBone  = SECONDARY WeaponA
 678        WeaponFireFXBone  = PRIMARY   WeaponA
 679        WeaponFireFXBone  = SECONDARY WeaponA
 680      End
 681  
 682      ConditionState       = MOVING
 683         Model               = PSAirCarrier
 684      Animation           = PSAirCarrier.PSAirCarrier
 685        AnimationMode      = LOOP
 686  
 687      End
 688  
 689      ConditionState       = OVER_WATER
 690         Model               = PSAirCarrier
 691      Animation           = PSAirCarrier.PSAirCarrier
 692        AnimationMode      = LOOP
 693  
 694      End
 695  
 696      ConditionState       = MOVING OVER_WATER
 697     Model               = PSAirCarrier
 698      Animation           = PSAirCarrier.PSAirCarrier
 699        AnimationMode      = LOOP
 700  
 701        ParticleSysBone = Mist01 AmphibMistSide
 702        ParticleSysBone = Mist02 AmphibMistSide
 703        ParticleSysBone = Mist03 AmphibMist
 704        ParticleSysBone = Mist04 AmphibMistSide
 705        ParticleSysBone = Mist05 AmphibMistSide
 706        ParticleSysBone = Mist06 AmphibMist
 707        ParticleSysBone = Mist07 AmphibMistSide
 708        ParticleSysBone = Mist08 AmphibMistSide
 709        ParticleSysBone = Mist09 AmphibMistSide
 710        ParticleSysBone = Mist10 AmphibMist
 711        ParticleSysBone = Mist11 AmphibMistSide
 712        ParticleSysBone = Mist12 AmphibMistSide
 713        ParticleSysBone = TreadFX01 AmphibWave
 714        ParticleSysBone = TreadFX02 AmphibWave
 715        ParticleSysBone = TreadFX03 AmphibWave
 716        ParticleSysBone = TreadFX04 AmphibWave
 717        ParticleSysBone = TreadFX05 AmphibWave
 718      End
 719    End
 720  
 721    VoiceSelect = OverlordTankVoiceSelect
 722  
 723    ; ***DESIGN parameters ***
 724    DisplayName            = OBJECT:Carrier
 725    Side                   = America
 726    EditorSorting          = VEHICLE
 727    TransportSlotCount     = 9                 ;how many "slots" we take in a transport (0 == not transportable)
 728   WeaponSet
 729      Conditions          = None 
 730      Weapon              = PRIMARY     PatriotMissileWeapon
 731      Weapon              = SECONDARY   PatriotMissileAssistWeapon
 732      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_AI FROM_SCRIPT
 733      AutoChooseSources   = SECONDARY   NONE
 734      PreferredAgainst    = PRIMARY     BALLISTIC_MISSILE AIRCRAFT
 735      PreferredAgainst    = SECONDARY   BALLISTIC_MISSILE AIRCRAFT
 736      ShareWeaponReloadTime = Yes
 737    End
 738  
 739  
 740    ArmorSet
 741      Conditions           = None
 742      ;Armor                = InvulnerableArmor
 743      Armor = TankDamage
 744      DamageFX = TankDamageFX
 745    End
 746    BuildCost = 15000
 747    BuildTime = 25 
 748    VisionRange            = 400
 749    ShroudClearingRange = 450
 750    Prerequisites
 751       Object = AmericaPowerPlant
 752       Object = AmericaBarracks
 753       Object = AmericaWarFactory
 754       Object = AmericaStrategyCenter
 755    End
 756    CommandSet             = AmericaAircraftCarrierCommandSet
 757  
 758    ; *** AUDIO Parameters ***
 759    SoundAmbient           = BattleshipAmbientLoop
 760    VoiceSelect = OverlordTankVoiceSelect
 761    UnitSpecificSounds
 762      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
 763      TurretMoveLoop       = TurretMoveLoop
 764    End
 765  
 766    ; *** ENGINEERING Parameters ***
 767    RadarPriority          = UNIT
 768    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE
 769  
 770    Body = ActiveBody ModuleTag_02
 771      MaxHealth            = 3000.0
 772      InitialHealth        = 3000.0
 773    End
 774  
 775    Behavior = MaxHealthUpgrade ModuleTag_09
 776      TriggeredBy   = Upgrade_SubmarineArmor
 777      AddMaxHealth  = 1000.0
 778      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
 779    End
 780  
 781    Behavior = AutoHealBehavior ModuleTag_05
 782      HealingAmount = 7
 783      HealingDelay = 500 ; msec
 784      TriggeredBy = Upgrade_SubmarineRepair
 785    End
 786  
 787    Behavior = AIUpdateInterface ModuleTag_03
 788      Turret
 789        TurretTurnRate = 100   ; turn rate, in degrees per sec
 790        ControlledWeaponSlots = PRIMARY
 791      End
 792      AutoAcquireEnemiesWhenIdle = Yes
 793  
 794    End
 795  
 796    Behavior            = SpawnBehavior ModuleTag_04
 797      SpawnNumber       =5
 798      SpawnReplaceDelay = 3000 ; 3 seconds
 799  
 800          SpawnTemplateName = AmericaAircraftCarrierJet
 801  
 802      ExitByBudding = No ;Yes;!
 803  
 804      InitialBurst = 1 ; the first set of 5 will not delay
 805      OneShot     = No
 806      AggregateHealth = No
 807    End
 808  
 809    Behavior = QueueProductionExitUpdate ModuleTag_05
 810      UnitCreatePoint   = X:  -70.0  Y:  0.0   Z:30.0
 811      NaturalRallyPoint = X: 0.0  Y:  0.0   Z:60.0
 812      ExitDelay     = 5000 ; 5 sec
 813      InitialBurst = 1 ; the first set of 5 will not delay
 814    End
 815  
 816    Locomotor = SET_NORMAL BasicBoatLocomotor 
 817  
 818    Behavior               = PhysicsBehavior ModuleTag_06
 819      Mass                 = 5000.0
 820    End
 821  
 822    Behavior = SlowDeathBehavior ModuleTag_07
 823      ProbabilityModifier = 25
 824      DestructionDelay = 200
 825      DestructionDelayVariance = 100
 826      OCL = FINAL    OCL_FirestormSmall
 827      FX  = FINAL    WeaponFX_NapalmMissileDetonation
 828    End
 829     Behavior = MaxHealthUpgrade ModuleTag_09
 830      TriggeredBy   = Upgrade_SeaArmour
 831      AddMaxHealth  = 1000.0
 832      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
 833    End
 834  
 835    Behavior = AutoHealBehavior ModuleTag_05
 836      HealingAmount = 7
 837      HealingDelay = 500 ; msec
 838      TriggeredBy = Upgrade_SeaRepair
 839    End
 840    Geometry               = BOX
 841    Scale                  = 0.85
 842    GeometryMajorRadius    = 164.0
 843    GeometryMinorRadius    = 18.0
 844    GeometryHeight         = 54.8
 845    GeometryIsSmall        = No
 846    Shadow                 = SHADOW_VOLUME
 847  
 848  End
 849  ;---------------------------------------------------------------------------------------
 850    
 851  Object AmericaParachute
 852  
 853    ; *** ART Parameters ***
 854    Draw = W3DModelDraw ModuleTag_01
 855      OkToChangeModelColor = Yes
 856      DefaultConditionState
 857        Model = PMparacht_SKNc
 858        Animation = PMparacht_SKL.PMparacht_FAL
 859        AnimationMode = LOOP
 860      End
 861      ConditionState = PARACHUTING
 862        Model = PMparacht_SKNc
 863        Animation = PMparacht_SKL.PMparacht_OPN
 864        AnimationMode = ONCE
 865      End
 866      ConditionState = RUBBLE
 867        Model = PMparacht_SKNc
 868        Animation = PMparacht_SKL.PMparacht_DRP
 869        AnimationMode = ONCE
 870      End
 871      ; this is a weird state to resolve an ambiguity: sometimes
 872      ; we can have a "rubble" parachute momentarily, that doesn't
 873      ; know that it has finished parachuting yet...
 874      ConditionState = RUBBLE PARACHUTING
 875        Model = PMparacht_SKNc
 876        Animation = PMparacht_SKL.PMparacht_DRP
 877        AnimationMode = ONCE
 878      End
 879    End 
 880  
 881    ; ***DESIGN parameters ***
 882    Side                = America
 883    EditorSorting       = SYSTEM
 884    TransportSlotCount  = 0                 
 885    VisionRange         = 300.0 
 886    ShroudClearingRange = 300
 887    IsTrainable         = No  ;Can gain experience
 888    ; in theory, it would be nice to allow chutes to be attackable; however, bugs in the code
 889    ; can cause the rider to be left in a bad state (eg, no-collision bit set) if the chute dies
 890    ; prematurely. so disable this for now, and give it a ton of health to prevent splash damage
 891    ; from killing it. (srj)
 892    KindOf              = PRELOAD PARACHUTE UNATTACKABLE
 893  
 894    ; *** AUDIO Parameters ***
 895  
 896    ; *** ENGINEERING Parameters ***
 897    Behavior = AIUpdateInterface ModuleTag_02
 898      ; nothing
 899    End
 900    Locomotor = SET_NORMAL ParachuteLocomotor
 901    Locomotor = SET_FREEFALL FreeFallLocomotor
 902  
 903    Body = ActiveBody ModuleTag_03
 904      MaxHealth       = 100000.0
 905      InitialHealth   = 100000.0
 906    End
 907  
 908    Behavior = PhysicsBehavior ModuleTag_04
 909      Mass = 5.0
 910    End
 911  
 912    Behavior = ParachuteContain ModuleTag_05
 913      PitchRateMax = 60           ; deg/sec
 914      RollRateMax = 60            ; deg/sec
 915      LowAltitudeDamping  = 0.2   ; how much to damp swaying when we get "close" to the ground
 916      ParachuteOpenDist   = 25.0  ; how far we have to fall 'till we open our 'chute
 917      AllowInsideKindOf   = INFANTRY PARACHUTABLE
 918      ParachuteOpenSound  = ParachuteOpen
 919    End
 920  
 921    Behavior = SlowDeathBehavior ModuleTag_06
 922      SinkDelay = 1000
 923      SinkRate = 1     ; in Dist/Sec
 924      DestructionDelay = 4000
 925    End
 926  
 927    RadarPriority = NOT_ON_RADAR
 928  
 929    Geometry = CYLINDER
 930    Scale = 0.95                            ;Scaling
 931    GeometryMajorRadius = 3.0
 932    GeometryHeight = 12.0    
 933    GeometryIsSmall = Yes
 934    Shadow = SHADOW_VOLUME
 935  
 936  End
 937  
 938  ;------------------------------------------------------------------------------
 939  Object AmericaCrateParachute
 940  
 941    ; *** ART Parameters ***
 942    Draw = W3DModelDraw ModuleTag_01
 943      OkToChangeModelColor = Yes
 944      DefaultConditionState
 945        Model = PMparacht_SKNc
 946        Animation = PMparacht_SKL.PMparacht_FAL
 947        AnimationMode = LOOP
 948      End
 949      ConditionState = PARACHUTING
 950        Model = PMparacht_SKNc
 951        Animation = PMparacht_SKL.PMparacht_OPN
 952        AnimationMode = ONCE
 953      End
 954      ConditionState = RUBBLE
 955        Model = PMparacht_SKNc
 956        Animation = PMparacht_SKL.PMparacht_DRP
 957        AnimationMode = ONCE
 958      End
 959      ; this is a weird state to resolve an ambiguity: sometimes
 960      ; we can have a "rubble" parachute momentarily, that doesn't
 961      ; know that it has finished parachuting yet...
 962      ConditionState = RUBBLE PARACHUTING
 963        Model = PMparacht_SKNc
 964        Animation = PMparacht_SKL.PMparacht_DRP
 965        AnimationMode = ONCE
 966      End
 967    End
 968  
 969    ; ***DESIGN parameters ***
 970    Side                = America
 971    EditorSorting       = SYSTEM
 972    TransportSlotCount  = 0                 
 973    VisionRange         = 300.0 
 974    ShroudClearingRange = 300
 975    IsTrainable         = No  ;Can gain experience
 976    ; in theory, it would be nice to allow chutes to be attackable; however, bugs in the code
 977    ; can cause the rider to be left in a bad state (eg, no-collision bit set) if the chute dies
 978    ; prematurely. so disable this for now, and give it a ton of health to prevent splash damage
 979    ; from killing it. (srj)
 980    KindOf              = PRELOAD PARACHUTE UNATTACKABLE
 981  
 982    ; *** AUDIO Parameters ***
 983  
 984    ; *** ENGINEERING Parameters ***
 985    Behavior = AIUpdateInterface ModuleTag_02
 986      ; nothing
 987    End
 988    Locomotor = SET_NORMAL CrateParachuteLocomotor
 989    Locomotor = SET_FREEFALL CrateFreeFallLocomotor
 990  
 991    Body = ActiveBody ModuleTag_03
 992      MaxHealth       = 100000.0
 993      InitialHealth   = 100000.0
 994    End
 995  
 996    Behavior = PhysicsBehavior ModuleTag_04
 997      Mass = 5.0
 998    End
 999  
1000    Behavior = ParachuteContain ModuleTag_05
1001      PitchRateMax        = 60    ; deg/sec
1002      RollRateMax         = 60    ; deg/sec
1003      LowAltitudeDamping  = 0.2   ; how much to damp swaying when we get "close" to the ground
1004      ParachuteOpenDist   = 12.5  ; how far we have to fall 'till we open our 'chute
1005      AllowInsideKindOf   = PARACHUTABLE
1006      ParachuteOpenSound  = ParachuteOpen
1007    End
1008  
1009    Behavior = SlowDeathBehavior ModuleTag_06
1010      SinkDelay = 1000
1011      SinkRate = 1     ; in Dist/Sec
1012      DestructionDelay = 4000
1013    End
1014  
1015    RadarPriority = NOT_ON_RADAR
1016    Geometry = CYLINDER
1017    GeometryMajorRadius = 15.0
1018    GeometryHeight = 12.0    
1019    GeometryIsSmall = Yes
1020    Shadow = SHADOW_VOLUME
1021  
1022  End
1023  
1024  ;------------------------------------------------------------------------------
1025  Object AmericaInfantryColonelBurton
1026  
1027    ; *** ART Parameters ***
1028    SelectPortrait         = SABurton_L
1029    ButtonImage            = SABurton
1030    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
1031  
1032  
1033    Draw = W3DModelDraw ModuleTag_01
1034    OkToChangeModelColor = Yes
1035  
1036      ; idle
1037      DefaultConditionState
1038        Model               = AIHERO_SKN
1039        IdleAnimation       = AIHERO_SKL.AIHERO_STA 0 25
1040        IdleAnimation       = AIHERO_SKL.AIHERO_IDA
1041        IdleAnimation       = AIHERO_SKL.AIHERO_IDB
1042        AnimationMode       = ONCE
1043        TransitionKey       = TRANS_Stand
1044        WeaponFireFXBone    = PRIMARY Muzzle
1045        WeaponMuzzleFlash   = PRIMARY MuzzleFX
1046        WeaponMuzzleFlash   = SECONDARY NONE
1047        HideSubObject     = MUZZLEFX01
1048      End
1049   
1050      
1051      ; injured idle
1052      ConditionState        = REALLYDAMAGED
1053        IdleAnimation       = AIHERO_SKL.AIHERO_ISTA 0 30
1054        IdleAnimation       = AIHERO_SKL.AIHERO_IIDA
1055        IdleAnimation       = AIHERO_SKL.AIHERO_IIDB
1056        AnimationMode       = ONCE
1057        TransitionKey       = TRANS_StandInjured
1058      End
1059  
1060  
1061      TransitionState     = TRANS_Stand TRANS_StandInjured
1062        Animation         = AIHERO_SKL.AIHERO_ISTAHIT
1063        AnimationMode     = ONCE
1064      End
1065      
1066      ; moving
1067      ConditionState        = MOVING
1068        Animation           = AIHERO_SKL.AIHERO_RNA 26
1069        AnimationMode       = LOOP
1070        Flags               = RANDOMSTART
1071        TransitionKey       = TRANS_Walking
1072        ParticleSysBone     = None InfantryDustTrails
1073        HideSubObject     = MUZZLEFX01
1074      End
1075      AliasConditionState = MOVING FIRING_A
1076      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
1077      AliasConditionState = MOVING RELOADING_A
1078      AliasConditionState = MOVING FIRING_B
1079      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
1080      AliasConditionState = MOVING RELOADING_B
1081  
1082      ; injured moving
1083      ConditionState     = MOVING REALLYDAMAGED
1084        Animation        = AIHERO_SKL.AIHERO_IRNA 26
1085        AnimationMode    = LOOP
1086        Flags            = RANDOMSTART
1087        TransitionKey    = TRANS_WalkingInjured
1088        ParticleSysBone  = None InfantryDustTrails
1089        HideSubObject     = MUZZLEFX01
1090      End
1091      AliasConditionState = MOVING FIRING_A REALLYDAMAGED
1092      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
1093      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
1094      AliasConditionState = MOVING FIRING_B REALLYDAMAGED
1095      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
1096      AliasConditionState = MOVING RELOADING_B REALLYDAMAGED
1097  
1098      ; Firing animation
1099      ConditionState      = FIRING_A
1100        Animation         = AIHERO_SKL.AIHERO_ATA
1101        AnimationMode     = ONCE
1102        AnimationSpeedFactorRange = 1.5 1.5
1103        TransitionKey     = TRANS_FiringA
1104      End
1105  
1106      ConditionState      = BETWEEN_FIRING_SHOTS_A
1107        Animation         = AIHERO_SKL.AIHERO_ATA
1108        AnimationMode     = MANUAL
1109        Flags             = START_FRAME_LAST
1110        WaitForStateToFinishIfPossible = TRANS_FiringA
1111      End
1112      AliasConditionState = RELOADING_A
1113  
1114      ; Injured Firing animation
1115      ConditionState      = FIRING_A REALLYDAMAGED
1116        Animation         = AIHERO_SKL.AIHERO_IATA
1117        AnimationMode     = ONCE
1118        AnimationSpeedFactorRange = 1.5 1.5
1119        TransitionKey     = TRANS_FiringAInjured
1120      End
1121  
1122      ConditionState      = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
1123        Animation         = AIHERO_SKL.AIHERO_IATA
1124        AnimationMode     = MANUAL
1125        Flags             = START_FRAME_LAST
1126        WaitForStateToFinishIfPossible = TRANS_FiringAInjured
1127      End
1128      AliasConditionState = RELOADING_A REALLYDAMAGED
1129  
1130      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
1131        Animation         = AIHERO_SKL.AIHERO_IATAHIT
1132        AnimationMode     = ONCE
1133      End
1134  
1135      ; Placing charge animation
1136      ConditionState      = UNPACKING
1137        Animation         = AIHERO_SKL.AIHERO_ATB1
1138        AnimationMode     = ONCE
1139      End
1140      AliasConditionState = MOVING UNPACKING
1141  
1142      ; Injured Placing charge animation
1143      ConditionState      = UNPACKING REALLYDAMAGED
1144        Animation         = AIHERO_SKL.AIHERO_IATB1
1145        AnimationMode     = ONCE
1146      End
1147      AliasConditionState = MOVING UNPACKING REALLYDAMAGED
1148  
1149      ; Stab animations
1150      ConditionState      = PREATTACK_B 
1151        Animation         = AIHERO_SKL.AIHERO_ATC
1152        AnimationMode     = ONCE
1153        TransitionKey     = TRANS_Stabbing
1154        HideSubObject     = MUZZLEFX01
1155      End
1156      AliasConditionState = PREATTACK_B MOVING
1157      AliasConditionState = PREATTACK_B FIRING_B
1158      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
1159  
1160      ConditionState      = FIRING_B
1161        Animation         = AIHERO_SKL.AIHERO_ATC
1162        AnimationMode     = MANUAL
1163        Flags             = START_FRAME_LAST
1164        TransitionKey     = TRANS_Stabbing
1165        HideSubObject     = MUZZLEFX01
1166      End
1167      AliasConditionState = BETWEEN_FIRING_SHOTS_B
1168      AliasConditionState = RELOADING_B
1169  
1170      TransitionState     = TRANS_Stabbing TRANS_Stand
1171        Animation         = AIHERO_SKL.AIHERO_ATC2
1172        AnimationMode     = ONCE
1173      End
1174  
1175      ; Injured Stab animations
1176      ConditionState      = PREATTACK_B REALLYDAMAGED 
1177        Animation         = AIHERO_SKL.AIHERO_IATC1
1178        AnimationMode     = ONCE
1179        TransitionKey     = TRANS_StabbingInjured
1180        HideSubObject     = MUZZLEFX01
1181      End
1182      AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
1183      AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
1184      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
1185  
1186      ConditionState      = FIRING_B REALLYDAMAGED
1187        Animation         = AIHERO_SKL.AIHERO_IATC2
1188        AnimationMode     = MANUAL
1189        Flags             = START_FRAME_LAST
1190        TransitionKey     = TRANS_StabbingInjured
1191        HideSubObject     = MUZZLEFX01
1192      End
1193      AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
1194      AliasConditionState = RELOADING_B REALLYDAMAGED
1195  
1196      TransitionState     = TRANS_StabbingInjured TRANS_StandInjured
1197        Animation         = AIHERO_SKL.AIHERO_IATC2
1198        AnimationMode     = ONCE
1199      End
1200  
1201      ; cheering
1202      ConditionState      = SPECIAL_CHEERING
1203        Animation         = AIHERO_SKL.AIHERO_CHA
1204        AnimationMode     = ONCE
1205      End
1206      
1207      ; injured cheering
1208      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
1209        Animation         = AIHERO_SKL.AIHERO_ICHA
1210        AnimationMode     = ONCE
1211      End
1212      
1213      ; climbing
1214      ConditionState      = CLIMBING
1215        Animation         = AIHERO_SKL.AIHERO_CLMID
1216        AnimationMode     = LOOP
1217        TransitionKey     = TRANS_Climbing
1218      End
1219      AliasConditionState = RAPPELLING
1220      AliasConditionState = CLIMBING REALLYDAMAGED
1221      AliasConditionState = RAPPELLING REALLYDAMAGED
1222  
1223      ConditionState      = CLIMBING MOVING
1224        Animation         = AIHERO_SKL.AIHERO_CLMUP
1225        AnimationMode     = LOOP
1226        TransitionKey     = TRANS_Climbing
1227      End
1228      AliasConditionState = CLIMBING MOVING REALLYDAMAGED
1229  
1230      ConditionState      = RAPPELLING MOVING
1231        Animation         = AIHERO_SKL.AIHERO_CLMUP
1232        AnimationMode     = LOOP_BACKWARDS
1233        TransitionKey     = TRANS_Climbing
1234      End
1235      AliasConditionState = RAPPELLING MOVING REALLYDAMAGED
1236  
1237  ; these transitions don't really work well with our code. leave 'em out.
1238  ;    TransitionState     = TRANS_Climbing TRANS_Stand
1239  ;      Animation         = AIHERO_SKL.AIHERO_CLMST
1240  ;      AnimationMode     = ONCE
1241  ;    End
1242  ;
1243  ;    TransitionState     = TRANS_Stand TRANS_Climbing
1244  ;      Animation         = AIHERO_SKL.AIHERO_CLMST
1245  ;      AnimationMode     = ONCE_BACKWARDS
1246  ;    End
1247  
1248      ; dying anims
1249      ConditionState      = DYING
1250        Animation         = AIHERO_SKL.AIHERO_DTA
1251        Animation         = AIHERO_SKL.AIHERO_DTB
1252        Animation         = AIHero_SKL.AIHero_IDTA
1253        Animation         = AIHero_SKL.AIHero_IDTB
1254        AnimationMode     = ONCE
1255        TransitionKey     = TRANS_Dying
1256      End
1257      AliasConditionState = RAPPELLING DYING
1258      AliasConditionState = CLIMBING DYING
1259  
1260      TransitionState     = TRANS_Dying TRANS_Flailing
1261        Animation         = AIHERO_SKL.AIHERO_ADTG21
1262        AnimationMode     = ONCE
1263      End
1264  
1265      ConditionState      = DYING EXPLODED_FLAILING
1266        Animation         = AIHERO_SKL.AIHERO_ADTG22
1267        AnimationMode     = LOOP
1268        TransitionKey     = TRANS_Flailing
1269      End
1270  
1271      ConditionState      = DYING EXPLODED_BOUNCING
1272        Animation         = AIHERO_SKL.AIHERO_ADTG23
1273        AnimationMode     = ONCE
1274        TransitionKey     = None
1275      End
1276  
1277      ; misc anims
1278      ConditionState      = FREEFALL
1279        Animation         = AIHERO_SKL.AIHERO_PFL
1280        AnimationMode     = LOOP
1281        TransitionKey     = TRANS_Falling
1282      End
1283      AliasConditionState = FREEFALL REALLYDAMAGED
1284      AliasConditionState = FREEFALL DYING
1285  
1286      ConditionState      = PARACHUTING
1287        Animation         = AIHERO_SKL.AIHERO_PHG
1288        AnimationMode     = LOOP
1289        TransitionKey     = TRANS_Chute
1290      End
1291      AliasConditionState = PARACHUTING REALLYDAMAGED
1292      AliasConditionState = PARACHUTING DYING
1293  
1294      TransitionState     = TRANS_Falling TRANS_Chute
1295        Animation         = AIHERO_SKL.AIHERO_POP
1296        AnimationMode     = ONCE
1297        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
1298      End
1299  
1300      TransitionState     = TRANS_Chute TRANS_Stand
1301        Animation         = AIHERO_SKL.AIHERO_PTD
1302        AnimationMode     = ONCE
1303      End
1304  
1305      TransitionState     = TRANS_Chute TRANS_StandInjured
1306        Animation         = AIHERO_SKL.AIHERO_PTD
1307        AnimationMode     = ONCE
1308      End
1309  
1310    End
1311  
1312    ; ***DESIGN parameters ***
1313    DisplayName         = OBJECT:ColonelBurton
1314    Side                = America
1315    EditorSorting       = INFANTRY
1316    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
1317    WeaponSet
1318      Conditions          = None 
1319      Weapon              = PRIMARY     ColonelBurtonSniperRifleWeapon
1320      Weapon              = SECONDARY   ColonelBurtonKnifeWeapon
1321      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
1322      AutoChooseSources   = SECONDARY   NONE
1323    End
1324    ArmorSet
1325      Conditions      = None
1326      Armor           = HumanArmor
1327      DamageFX        = InfantryDamageFX
1328    End
1329    VisionRange         = 150
1330    ShroudClearingRange = 500
1331    Prerequisites
1332      Object = AmericaBarracks
1333      Object = AmericaStrategyCenter
1334    End
1335    BuildCost = 1500
1336    BuildTime = 20.0          ;in seconds  
1337  
1338    ExperienceValue     = 50 100 100 150  ; Experience point value at each level
1339    ExperienceRequired  = 0 200 300 600   ; Experience points needed to gain each level
1340    IsTrainable         = Yes             ; Can gain experience
1341    CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
1342    CommandSet          = AmericaInfantryColonelBurtonCommandSet
1343  
1344    MaxSimultaneousOfType = 1
1345  
1346    ; *** AUDIO Parameters ***
1347    VoiceSelect = ColonelBurtonVoiceSelect
1348    VoiceMove = ColonelBurtonVoiceMove
1349    VoiceAttack = ColonelBurtonVoiceAttack
1350    VoiceFear = ColonelBurtonVoiceFear
1351    VoiceGuard = ColonelBurtonVoiceMove
1352    SoundDie = ColonelBurtonVoiceDie
1353    SoundDieFire = DieByFireUSA
1354    SoundDieToxin = DieByToxinUSA
1355    SoundStealthOn = StealthOn
1356    SoundStealthOff = StealthOff
1357    
1358    UnitSpecificSounds
1359      VoiceMelee = ColonelBurtonVoiceAttackKnife
1360      VoiceCreate           = ColonelBurtonVoiceCreate
1361      VoiceGarrison         = ColonelBurtonVoiceGarrison
1362      VoiceEnter            = ColonelBurtonVoiceMove
1363      VoiceEnterHostile     = ColonelBurtonVoiceMove
1364      VoiceGetHealed        = ColonelBurtonVoiceMove
1365    End
1366  
1367    ; *** ENGINEERING Parameters ***
1368    RadarPriority = UNIT
1369    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE HERO
1370  
1371    Body = ActiveBody ModuleTag_02
1372      MaxHealth       = 200.0
1373      InitialHealth   = 200.0
1374    End
1375  
1376    Behavior = AIUpdateInterface ModuleTag_03
1377      AutoAcquireEnemiesWhenIdle = Yes
1378    End
1379  
1380    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
1381    End
1382  
1383    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
1384      ScanRate = 1000 ; once a second.
1385      ScanRange = 300 ;
1386      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
1387      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
1388    End
1389  
1390    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor ColonelBurtonCliffLocomotor
1391  
1392    Behavior = PhysicsBehavior ModuleTag_06
1393      Mass = 5.0
1394    End
1395  
1396    Behavior = StealthUpdate ModuleTag_07
1397      StealthDelay                = 2000 ; msec
1398      StealthForbiddenConditions  = FIRING_PRIMARY
1399      HintDetectableConditions    = IS_FIRING_WEAPON 
1400      FriendlyOpacityMin          = 50.0%
1401      FriendlyOpacityMax          = 100.0%
1402      InnateStealth               = Yes
1403      OrderIdleEnemiesToAttackMeUponReveal  = Yes
1404    End
1405  
1406    Behavior = SpecialAbility ModuleTag_08
1407      SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
1408      UpdateModuleStartsAttack = Yes
1409      InitiateSound             = ColonelBurtonVoicePlantRemoteCharge
1410    End
1411    Behavior = SpecialAbilityUpdate ModuleTag_09
1412      SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
1413      StartAbilityRange = 0.0
1414      PreparationTime = 0
1415      SpecialObject = RemoteC4Charge
1416      MaxSpecialObjects = 8
1417      SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
1418      AlwaysValidateSpecialObjects = Yes      ;Coupled with the above setting, this one is necessary for code optimization.
1419      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
1420      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
1421      UnpackTime              = 5500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
1422      PackTime                = 0
1423      SkipPackingWithNoTarget = Yes           ;When yes, the packing/unpacking will be ignored when detonating charges.
1424      FlipOwnerAfterUnpacking = Yes
1425      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
1426      UnpackSound               = ColonelBurtonPlantCharge
1427      LoseStealthOnTrigger      = Yes
1428      PreTriggerUnstealthTime   = 5000 ; in milliseconds
1429    End
1430  
1431    Behavior = SpecialAbility ModuleTag_10
1432      SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
1433      UpdateModuleStartsAttack = Yes
1434      InitiateSound             = ColonelBurtonVoicePlantTimedCharge
1435    End
1436    Behavior = SpecialAbilityUpdate ModuleTag_11
1437      SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
1438      StartAbilityRange = 0.0
1439      PreparationTime = 0
1440      SpecialObject = TimedC4Charge
1441      MaxSpecialObjects = 10
1442      SpecialObjectsPersistWhenOwnerDies = Yes 
1443      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
1444      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
1445      UnpackTime              = 5500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
1446      FlipOwnerAfterUnpacking = Yes
1447      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
1448      UnpackSound               = ColonelBurtonPlantCharge
1449      LoseStealthOnTrigger      = Yes
1450      PreTriggerUnstealthTime   = 5000 ; in milliseconds
1451  
1452    End
1453   
1454    Behavior = ExperienceScalarUpgrade ModuleTag_12
1455      TriggeredBy   = Upgrade_AmericaAdvancedTraining
1456      AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
1457    End
1458   
1459    ;Hero units can't be squished!
1460    ;Behavior = SquishCollide ModuleTag_13
1461    ;  ;nothing
1462    ;End
1463  
1464  
1465  ; --- begin Death modules ---
1466    Behavior = SlowDeathBehavior ModuleTag_Death01
1467      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
1468      SinkDelay           = 50000
1469      SinkRate            = 0.5     ; in Dist/Sec
1470      DestructionDelay    = 8000000
1471      FX                  = INITIAL FX_GIDie
1472    End
1473    Behavior = SlowDeathBehavior ModuleTag_Death02
1474      DeathTypes          = NONE +CRUSHED +SPLATTED
1475      SinkDelay           = 50000
1476      SinkRate            = 0.5     ; in Dist/Sec
1477      DestructionDelay    = 8000000
1478      FX                  = INITIAL FX_GIDieCrushed
1479    End
1480    Behavior = SlowDeathBehavior ModuleTag_Death03
1481      DeathTypes          = NONE +EXPLODED
1482      SinkDelay           = 50000
1483      SinkRate            = 0.5     ; in Dist/Sec
1484      DestructionDelay    = 8000000
1485      FX                  = INITIAL FX_GIDie
1486      FlingForce          = 8
1487      FlingForceVariance  = 3
1488      FlingPitch          = 60
1489      FlingPitchVariance  = 10
1490    End
1491    Behavior = SlowDeathBehavior ModuleTag_Death04
1492      DeathTypes          = NONE +BURNED
1493      DestructionDelay    = 0
1494      FX                  = INITIAL FX_GIDie
1495      OCL                 = INITIAL OCL_FlamingInfantry
1496    End
1497    Behavior = SlowDeathBehavior ModuleTag_Death05
1498      DeathTypes          = NONE +POISONED
1499      DestructionDelay    = 0
1500      FX                  = INITIAL FX_GIDie
1501      OCL                 = INITIAL OCL_ToxicInfantry
1502    End
1503      Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
1504      DeathTypes          = NONE +POISONED_BETA
1505      DestructionDelay    = 0
1506      FX                  = INITIAL FX_GIDie
1507      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
1508    End
1509  ; --- end Death modules ---
1510  
1511    Behavior = PoisonedBehavior ModuleTag_18
1512      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
1513      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
1514    End
1515   
1516    Geometry = CYLINDER
1517    Scale = 0.95                            ;Scaling
1518    GeometryMajorRadius = 1.0
1519    GeometryMinorRadius = 1.0
1520    GeometryHeight = 8.0
1521    GeometryIsSmall = Yes
1522    Shadow = SHADOW_DECAL
1523    ShadowSizeX = 9
1524    ShadowSizeY = 9
1525    ShadowTexture = ShadowI
1526    BuildCompletion = APPEARS_AT_RALLY_POINT
1527  
1528  End
1529  
1530  ;------------------------------------------------------------------------------
1531  Object AmericaVehicleHumvee
1532  
1533    ; *** ART Parameters ***
1534    SelectPortrait         = SAHummer_L
1535    ButtonImage            = SAHummer
1536    
1537    UpgradeCameo1 = Upgrade_AmericaBattleDrone
1538    UpgradeCameo2 = Upgrade_AmericaScoutDrone
1539    UpgradeCameo3 = Upgrade_AmericaTOWMissile
1540    UpgradeCameo4 = Upgrade_AmericaAdvancedTraining
1541    ;UpgradeCameo5 = XXX
1542    
1543    Draw = W3DTruckDraw ModuleTag_01
1544      OkToChangeModelColor = Yes
1545  
1546      ConditionState = NONE
1547        Model = AVHUMMER
1548        Turret = Turret
1549        ShowSubObject = Turret
1550        HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01
1551        WeaponFireFXBone = PRIMARY Muzzle
1552        WeaponMuzzleFlash = PRIMARY MuzzleFX
1553      End
1554  
1555      ConditionState = REALLYDAMAGED
1556        Model = AVHUMMER_d
1557        Turret = Turret
1558        ShowSubObject = Turret
1559        HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01
1560        WeaponFireFXBone = PRIMARY Muzzle
1561        WeaponMuzzleFlash = PRIMARY MuzzleFX
1562      End
1563  
1564      ConditionState = WEAPONSET_PLAYER_UPGRADE
1565        Model = AVHUMMER
1566        Turret = TurretUp01
1567        HideSubObject = Turret MuzzleFX01
1568        ShowSubObject = TurretUp01 Housecolor03
1569        WeaponFireFXBone = PRIMARY MuzzleUp
1570        WeaponMuzzleFlash = PRIMARY MuzzleFXUp
1571        WeaponFireFXBone = SECONDARY WeaponB
1572        WeaponLaunchBone = SECONDARY WeaponB
1573        WeaponFireFXBone = TERTIARY WeaponB
1574        WeaponLaunchBone = TERTIARY WeaponB
1575      End
1576  
1577      ConditionState = REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE
1578        Model = AVHUMMER_d
1579        Turret = TurretUp01
1580        HideSubObject = Turret MuzzleFX01
1581        ShowSubObject = TurretUp01 Housecolor03
1582        WeaponFireFXBone = PRIMARY MuzzleUp
1583        WeaponMuzzleFlash = PRIMARY MuzzleFXUp
1584        WeaponFireFXBone = SECONDARY WeaponB
1585        WeaponLaunchBone = SECONDARY WeaponB
1586        WeaponFireFXBone = TERTIARY WeaponB
1587        WeaponLaunchBone = TERTIARY WeaponB
1588      End
1589  
1590      TrackMarks = EXTireTrack.tga
1591  
1592      Dust = RocketBuggyDust
1593      DirtSpray = RocketBuggyDirtSpray
1594      PowerslideSpray = RocketBuggyDirtPowerSlide
1595  
1596      ; These parameters are only used if the model has a separate suspension, 
1597      ; and the locomotor has HasSuspension = Yes.
1598      LeftFrontTireBone = Tire01
1599      RightFrontTireBone = Tire02
1600      LeftRearTireBone = Tire03
1601      RightRearTireBone = Tire04
1602      TireRotationMultiplier = 0.2   ; this * speed = rotation.
1603      PowerslideRotationAddition = 1.25   ; This speed is added to the rotation speed when powersliding.
1604  
1605    End
1606  
1607    ; ***DESIGN parameters ***
1608    DisplayName           = OBJECT:Humvee
1609    Side                  = America
1610    EditorSorting         = VEHICLE
1611    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
1612    WeaponSet
1613      Conditions = None 
1614      Weapon = PRIMARY HumveeGun
1615    End
1616    WeaponSet
1617      Conditions = PLAYER_UPGRADE 
1618      Weapon = PRIMARY HumveeGun
1619      Weapon = SECONDARY HumveeMissileWeapon
1620      Weapon = TERTIARY HumveeMissileWeaponAir
1621      PreferredAgainst = TERTIARY     AIRCRAFT
1622    End
1623    ArmorSet
1624      Conditions      = None
1625      Armor           = HumveeArmor
1626      DamageFX        = TruckDamageFX
1627    End
1628    BuildCost       = 700
1629    BuildTime       = 10.0          ;in seconds    
1630    VisionRange     = 150
1631    ShroudClearingRange = 320
1632    Prerequisites
1633      Object = AmericaWarFactory
1634    End
1635    ExperienceValue = 50 50 100 150   ;Experience point value at each level
1636    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
1637    IsTrainable = Yes             ;Can gain experience
1638    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
1639    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
1640    CommandSet      = AmericaVehicleHumveeCommandSet
1641  
1642    ; *** AUDIO Parameters ***
1643    VoiceSelect = HumveeVoiceSelect
1644    VoiceMove = HumveeVoiceMove
1645    VoiceGuard = HumveeVoiceMove
1646    VoiceAttack = HumveeVoiceAttack
1647    VoiceAttackAir = HumveeVoiceAttackTOW
1648    SoundMoveStart = HumveeMoveStart
1649    SoundMoveStartDamaged = HumveeMoveStart
1650    SoundEnter = HumveeEnter
1651    SoundExit = HumveeExit
1652  
1653    UnitSpecificSounds
1654      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
1655      ;TurretMoveStart    = NoSound
1656      VoiceCreate         = HumveeVoiceCreate
1657      TurretMoveLoop      = TurretMoveLoop
1658      SoundEject          = PilotSoundEject
1659      VoiceEject          = PilotVoiceEject
1660      VoiceCrush          = HumveeVoiceCrush
1661    ; Required for the W3DTruckDraw module
1662      TruckLandingSound = RocketBuggyLand
1663      TruckPowerslideSound = RocketBuggyPowerslide
1664      VoiceUnload = HumveeVoiceUnload
1665      VoiceEnter = HumveeVoiceMove
1666    End
1667  
1668    Behavior = AIUpdateInterface ModuleTag_20
1669      AutoAcquireEnemiesWhenIdle = Yes
1670      MoodAttackCheckRate        = 250
1671    End
1672  
1673    ; *** ENGINEERING Parameters ***
1674    RadarPriority = UNIT
1675    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
1676  
1677    Body = ActiveBody ModuleTag_02
1678      MaxHealth       = 240.0
1679      InitialHealth   = 240.0
1680    End
1681    Behavior = TransportAIUpdate ModuleTag_03
1682      Turret
1683        TurretTurnRate = 180
1684        RecenterTime = 5000   ; how long to wait during idle before recentering
1685        ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
1686      End
1687      AutoAcquireEnemiesWhenIdle = Yes
1688    End
1689    Locomotor = SET_NORMAL HumveeLocomotor
1690  
1691    Behavior = PhysicsBehavior ModuleTag_04
1692      Mass = 50.0
1693    End
1694  
1695    Behavior = TransportContain  ModuleTag_05
1696      PassengersAllowedToFire = Yes
1697      Slots             = 5
1698  ;    EnterSound          = GarrisonEnter
1699  ;    ExitSound           = GarrisonExit
1700      DamagePercentToUnits = 100% ;10%
1701      AllowInsideKindOf  = INFANTRY
1702      ExitDelay = 250
1703      NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
1704      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
1705    End
1706  
1707    Behavior = ObjectCreationUpgrade ModuleTag_06
1708      UpgradeObject = OCL_AmericanBattleDrone
1709      TriggeredBy   = Upgrade_AmericaBattleDrone
1710      ConflictsWith = Upgrade_AmericaScoutDrone
1711    End
1712    Behavior = ObjectCreationUpgrade ModuleTag_07
1713      UpgradeObject = OCL_AmericanScoutDrone
1714      TriggeredBy   = Upgrade_AmericaScoutDrone
1715      ConflictsWith = Upgrade_AmericaBattleDrone
1716    End
1717    Behavior = ProductionUpdate ModuleTag_08
1718      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
1719    End
1720  
1721    Behavior = WeaponSetUpgrade ModuleTag_09
1722      TriggeredBy = Upgrade_AmericaTOWMissile
1723    End
1724    Behavior = ExperienceScalarUpgrade ModuleTag_10
1725      TriggeredBy = Upgrade_AmericaAdvancedTraining
1726      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
1727    End
1728  
1729    Behavior = SlowDeathBehavior ModuleTag_11
1730      DeathTypes = ALL -CRUSHED -SPLATTED
1731      ProbabilityModifier = 25
1732      DestructionDelay = 1
1733      OCL = INITIAL  OCL_InitialHumveeDebris
1734      FX  = FINAL    FX_BattleMasterExplosionOneFinal
1735      OCL = FINAL    OCL_FinalHumveeDebris
1736    End
1737  
1738    Behavior = DestroyDie ModuleTag_12
1739      DeathTypes = NONE +CRUSHED +SPLATTED
1740    End
1741  
1742    Behavior = FXListDie ModuleTag_13
1743      DeathTypes = NONE +CRUSHED +SPLATTED
1744      DeathFX = FX_CarCrush
1745    End
1746  
1747    Behavior = CreateCrateDie ModuleTag_CratesChange
1748      CrateData = SalvageCrateData
1749      ;CrateData = EliteTankCrateData
1750      ;CrateData = HeroicTankCrateData
1751    End
1752  
1753  ; This is commented out per hotlist request 10/9 ML
1754  ;  Behavior = CreateObjectDie ModuleTag_15
1755  ;    DeathTypes = ALL -CRUSHED -SPLATTED
1756  ;    CreationList = OCL_AmericanRangerDebris01
1757  ;    ExemptStatus = HIJACKED
1758  ;  End
1759  
1760    Behavior = EjectPilotDie ModuleTag_16
1761      DeathTypes = ALL -CRUSHED -SPLATTED
1762      ExemptStatus = HIJACKED
1763      ; The following added out per hotlist request 10/9 as above ML
1764      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
1765      GroundCreationList = OCL_EjectPilotOnGround
1766      AirCreationList = OCL_EjectPilotViaParachute
1767    End
1768  
1769    Behavior = TransitionDamageFX ModuleTag_17
1770      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
1771      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
1772    End
1773  
1774    Behavior = FlammableUpdate ModuleTag_21
1775      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
1776      AflameDamageAmount = 3       ; taking this much damage...
1777      AflameDamageDelay = 500       ; this often.
1778    End
1779  
1780    Geometry = BOX
1781    GeometryMajorRadius = 14.0
1782    GeometryMinorRadius = 7.0
1783    GeometryHeight = 11.5     
1784    GeometryIsSmall = Yes 
1785    Shadow = SHADOW_VOLUME
1786    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
1787  
1788  End
1789  
1790  ;------------------------------------------------------------------------------
1791  ;**************************** Cinematic-Only unit *****************************
1792  Object CINE_AmericaVehicleHumvee
1793  
1794    ; *** ART Parameters ***
1795    SelectPortrait         = SAHummer_L
1796    ButtonImage            = SAHummer
1797    
1798    UpgradeCameo1 = Upgrade_AmericaBattleDrone
1799    UpgradeCameo2 = Upgrade_AmericaScoutDrone
1800    UpgradeCameo3 = Upgrade_AmericaTOWMissile
1801    ;UpgradeCameo4 = Upgrade_AmericaAdvancedTraining
1802    ;UpgradeCameo5 = XXX
1803    
1804    Draw = W3DTruckDraw ModuleTag_01
1805      OkToChangeModelColor = Yes
1806  
1807      ConditionState = NONE
1808        Model = AVHUMMER
1809        Turret = Turret
1810        ShowSubObject = Turret
1811        HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01
1812        WeaponFireFXBone = PRIMARY Muzzle
1813        WeaponMuzzleFlash = PRIMARY MuzzleFX
1814      End
1815  
1816      ConditionState = REALLYDAMAGED
1817        Model = AVHUMMER_d
1818        Turret = Turret
1819        ShowSubObject = Turret
1820        HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01
1821        WeaponFireFXBone = PRIMARY Muzzle
1822        WeaponMuzzleFlash = PRIMARY MuzzleFX
1823      End
1824  
1825      ConditionState = WEAPONSET_PLAYER_UPGRADE
1826        Model = AVHUMMER
1827        Turret = TurretUp01
1828        HideSubObject = Turret MuzzleFX01
1829        ShowSubObject = TurretUp01 Housecolor03
1830        WeaponFireFXBone = PRIMARY MuzzleUp
1831        WeaponMuzzleFlash = PRIMARY MuzzleFXUp
1832        WeaponFireFXBone = SECONDARY WeaponB
1833        WeaponLaunchBone = SECONDARY WeaponB
1834        WeaponFireFXBone = TERTIARY WeaponB
1835        WeaponLaunchBone = TERTIARY WeaponB
1836      End
1837  
1838      ConditionState = REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE
1839        Model = AVHUMMER_d
1840        Turret = TurretUp01
1841        HideSubObject = Turret MuzzleFX01
1842        ShowSubObject = TurretUp01 Housecolor03
1843        WeaponFireFXBone = PRIMARY MuzzleUp
1844        WeaponMuzzleFlash = PRIMARY MuzzleFXUp
1845        WeaponFireFXBone = SECONDARY WeaponB
1846        WeaponLaunchBone = SECONDARY WeaponB
1847        WeaponFireFXBone = TERTIARY WeaponB
1848        WeaponLaunchBone = TERTIARY WeaponB
1849      End
1850  
1851      TrackMarks = EXTireTrack.tga
1852  
1853      Dust = RocketBuggyDust
1854      DirtSpray = RocketBuggyDirtSpray
1855      PowerslideSpray = RocketBuggyDirtPowerSlide
1856  
1857      ; These parameters are only used if the model has a separate suspension, 
1858      ; and the locomotor has HasSuspension = Yes.
1859      LeftFrontTireBone = Tire01
1860      RightFrontTireBone = Tire02
1861      LeftRearTireBone = Tire03
1862      RightRearTireBone = Tire04
1863      TireRotationMultiplier = 0.2   ; this * speed = rotation.
1864      PowerslideRotationAddition = 1.25   ; This speed is added to the rotation speed when powersliding.
1865  
1866    End
1867  
1868    ; ***DESIGN parameters ***
1869    DisplayName           = OBJECT:Humvee
1870    Side                  = America
1871    EditorSorting         = VEHICLE
1872    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
1873    WeaponSet
1874      Conditions = None 
1875      Weapon = PRIMARY HumveeGun
1876    End
1877    WeaponSet
1878      Conditions = PLAYER_UPGRADE 
1879      Weapon = PRIMARY HumveeGun
1880      Weapon = SECONDARY HumveeMissileWeapon
1881      Weapon = TERTIARY HumveeMissileWeaponAir
1882      PreferredAgainst = TERTIARY     AIRCRAFT
1883    End
1884    ArmorSet
1885      Conditions      = None
1886      Armor           = HumveeArmor
1887      DamageFX        = TruckDamageFX
1888    End
1889    BuildCost       = 700
1890    BuildTime       = 10.0          ;in seconds    
1891    VisionRange     = 320
1892    ShroudClearingRange = 320
1893    Prerequisites
1894      Object = AmericaWarFactory
1895    End
1896    ExperienceValue = 50 50 100 150   ;Experience point value at each level
1897    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
1898    IsTrainable = Yes             ;Can gain experience
1899    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
1900    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
1901    CommandSet      = AmericaVehicleHumveeCommandSet
1902  
1903    ; *** AUDIO Parameters ***
1904    VoiceSelect = HumveeVoiceSelect
1905    VoiceMove = HumveeVoiceMove
1906    VoiceGuard = HumveeVoiceMove
1907    VoiceAttack = HumveeVoiceAttack
1908    VoiceAttackAir = HumveeVoiceAttackTOW
1909    SoundMoveStart = HumveeMoveStart
1910    SoundMoveStartDamaged = HumveeMoveStart
1911    SoundEnter = HumveeEnter
1912    SoundExit = HumveeExit
1913  
1914    UnitSpecificSounds
1915      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
1916      ;TurretMoveStart    = NoSound
1917      VoiceCreate         = HumveeVoiceCreate
1918      TurretMoveLoop      = TurretMoveLoop
1919      SoundEject          = PilotSoundEject
1920      VoiceEject          = PilotVoiceEject
1921      VoiceCrush          = HumveeVoiceCrush
1922    ; Required for the W3DTruckDraw module
1923      TruckLandingSound = RocketBuggyLand
1924      TruckPowerslideSound = RocketBuggyPowerslide
1925      VoiceUnload = HumveeVoiceUnload
1926      VoiceEnter = HumveeVoiceMove
1927    End
1928  
1929    Behavior = AIUpdateInterface ModuleTag_20
1930      AutoAcquireEnemiesWhenIdle = Yes
1931      MoodAttackCheckRate        = 250
1932    End
1933  
1934    ; *** ENGINEERING Parameters ***
1935    RadarPriority = UNIT
1936    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
1937  
1938    Body = ActiveBody ModuleTag_02
1939      MaxHealth       = 240.0
1940      InitialHealth   = 240.0
1941    End
1942    Behavior = TransportAIUpdate ModuleTag_03
1943      Turret
1944        TurretTurnRate = 180
1945        RecenterTime = 5000   ; how long to wait during idle before recentering
1946        ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
1947      End
1948      AutoAcquireEnemiesWhenIdle = Yes
1949    End
1950    Locomotor = SET_NORMAL CINE_USAHumveeLocomotor
1951  
1952    Behavior = PhysicsBehavior ModuleTag_04
1953      Mass = 50.0
1954    End
1955  
1956    Behavior = TransportContain  ModuleTag_05
1957      PassengersAllowedToFire = Yes
1958      Slots             = 5
1959  ;    EnterSound          = GarrisonEnter
1960  ;    ExitSound           = GarrisonExit
1961      DamagePercentToUnits = 10%
1962      AllowInsideKindOf  = INFANTRY
1963      ExitDelay = 250
1964      NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
1965      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
1966    End
1967  
1968    Behavior = ObjectCreationUpgrade ModuleTag_06
1969      UpgradeObject = OCL_AmericanBattleDrone
1970      TriggeredBy   = Upgrade_AmericaBattleDrone
1971      ConflictsWith = Upgrade_AmericaScoutDrone
1972    End
1973    Behavior = ObjectCreationUpgrade ModuleTag_07
1974      UpgradeObject = OCL_AmericanScoutDrone
1975      TriggeredBy   = Upgrade_AmericaScoutDrone
1976      ConflictsWith = Upgrade_AmericaBattleDrone
1977    End
1978    Behavior = ProductionUpdate ModuleTag_08
1979      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
1980    End
1981  
1982    Behavior = WeaponSetUpgrade ModuleTag_09
1983      TriggeredBy = Upgrade_AmericaTOWMissile
1984    End
1985    Behavior = ExperienceScalarUpgrade ModuleTag_10
1986      TriggeredBy = Upgrade_AmericaAdvancedTraining
1987      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
1988    End
1989  
1990    Behavior = SlowDeathBehavior ModuleTag_11
1991      DeathTypes = ALL -CRUSHED -SPLATTED
1992      ProbabilityModifier = 25
1993      DestructionDelay = 1
1994      OCL = INITIAL  OCL_InitialHumveeDebris
1995      FX  = FINAL    FX_BattleMasterExplosionOneFinal
1996      OCL = FINAL    OCL_FinalHumveeDebris
1997    End
1998  
1999    Behavior = DestroyDie ModuleTag_12
2000      DeathTypes = NONE +CRUSHED +SPLATTED
2001    End
2002  
2003    Behavior = FXListDie ModuleTag_13
2004      DeathTypes = NONE +CRUSHED +SPLATTED
2005      DeathFX = FX_CarCrush
2006    End
2007  
2008    Behavior = CreateCrateDie ModuleTag_CratesChange
2009      CrateData = SalvageCrateData
2010      ;CrateData = EliteTankCrateData
2011      ;CrateData = HeroicTankCrateData
2012    End
2013  
2014  ; This is commented out per hotlist request 10/9 ML
2015  ;  Behavior = CreateObjectDie ModuleTag_15
2016  ;    DeathTypes = ALL -CRUSHED -SPLATTED
2017  ;    CreationList = OCL_AmericanRangerDebris01
2018  ;    ExemptStatus = HIJACKED
2019  ;  End
2020  
2021    Behavior = EjectPilotDie ModuleTag_16
2022      DeathTypes = ALL -CRUSHED -SPLATTED
2023      ExemptStatus = HIJACKED
2024      ; The following added out per hotlist request 10/9 as above ML
2025      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
2026      GroundCreationList = OCL_EjectPilotOnGround
2027      AirCreationList = OCL_EjectPilotViaParachute
2028    End
2029  
2030    Behavior = TransitionDamageFX ModuleTag_17
2031      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
2032      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
2033    End
2034  
2035    Behavior = FlammableUpdate ModuleTag_21
2036      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
2037      AflameDamageAmount = 3       ; taking this much damage...
2038      AflameDamageDelay = 500       ; this often.
2039    End
2040  
2041    Geometry = BOX
2042    GeometryMajorRadius = 14.0
2043    GeometryMinorRadius = 7.0
2044    GeometryHeight = 11.5     
2045    GeometryIsSmall = Yes 
2046    Shadow = SHADOW_VOLUME
2047    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
2048  
2049  End
2050  
2051  ;------------------------------------------------------------------------------
2052  Object HumveeMissile
2053  
2054    ; *** ART Parameters ***
2055    Draw = W3DModelDraw ModuleTag_01
2056      OkToChangeModelColor = Yes
2057      DefaultConditionState
2058        Model = UVRockBug_m
2059      End
2060    End
2061  
2062    ; ***DESIGN parameters ***
2063  
2064    EditorSorting   = SYSTEM
2065    VisionRange = 0.0  
2066    ArmorSet
2067      Conditions      = None
2068      Armor           = ProjectileArmor
2069      DamageFX        = None
2070    End
2071  
2072    ; *** ENGINEERING Parameters ***
2073    KindOf = PROJECTILE SMALL_MISSILE
2074    Body = ActiveBody ModuleTag_02
2075      MaxHealth       = 100.0
2076      InitialHealth   = 100.0
2077    End
2078  
2079  ; ---- begin Projectile death behaviors
2080    Behavior = InstantDeathBehavior DeathModuleTag_01
2081      DeathTypes = NONE +DETONATED
2082      ; we detonated normally.
2083      ; no FX, just quiet destroy ourselves
2084    End
2085    Behavior = InstantDeathBehavior DeathModuleTag_02
2086      DeathTypes = NONE +LASERED
2087      ; shot down by laser.
2088      FX         = FX_GenericMissileDisintegrate
2089      OCL        = OCL_GenericMissileDisintegrate
2090    End
2091    Behavior = InstantDeathBehavior DeathModuleTag_03
2092      DeathTypes = ALL -LASERED -DETONATED
2093      ; shot down by nonlaser.
2094      FX         = FX_GenericMissileDeath
2095    End
2096  ; ---- end Projectile death behaviors
2097     
2098    Behavior = PhysicsBehavior ModuleTag_06
2099      Mass = 1
2100    End
2101    Behavior = MissileAIUpdate ModuleTag_07
2102      TryToFollowTarget = No 
2103      FuelLifetime = 1000
2104      InitialVelocity = 150                ; in dist/sec
2105      IgnitionDelay = 0
2106      DistanceToTravelBeforeTurning = 3
2107      IgnitionFX = FX_HumveeMissileIgnition
2108    End
2109    Locomotor = SET_NORMAL RocketBuggyMissileLocomotor
2110  
2111    Geometry = Sphere
2112    GeometryIsSmall = Yes
2113    GeometryMajorRadius = 2.0
2114  
2115  End
2116  
2117  ;------------------------------------------------------------------------------
2118  Object AmericaVehicleHumveeDeadHull
2119  
2120    ; *** ART Parameters ***
2121    Draw = W3DModelDraw ModuleTag_01
2122      OkToChangeModelColor = Yes
2123  
2124      DefaultConditionState
2125        Model = AVHUMMER_D1
2126      End
2127    End
2128  
2129    ; ***DESIGN parameters ***
2130    Side = America
2131    EditorSorting   = SYSTEM
2132    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
2133  
2134    ; *** AUDIO Parameters ***
2135    ; *** ENGINEERING Parameters ***
2136    RadarPriority = UNIT
2137    KindOf = CAN_CAST_REFLECTIONS IMMOBILE NO_COLLIDE HULK
2138  
2139    Body = ActiveBody ModuleTag_02
2140      MaxHealth       = 1.0
2141      InitialHealth   = 1.0
2142    End
2143  
2144  
2145    Behavior = PhysicsBehavior ModuleTag_03
2146      Mass = 50
2147      AllowBouncing = Yes
2148    End
2149  
2150    Behavior = LifetimeUpdate ModuleTag_04
2151      MinLifetime = 0   ; min lifetime in msec
2152      MaxLifetime = 0   ; max lifetime in msec
2153    End
2154  
2155    Behavior = SlowDeathBehavior ModuleTag_05
2156      SinkDelay = 14000
2157      SinkRate = 2     ; in Dist/Sec
2158      DestructionDelay = 20000
2159    End
2160  
2161    Behavior = TransitionDamageFX ModuleTag_06
2162      RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
2163    End
2164  
2165    Geometry = BOX
2166    GeometryMajorRadius = 9.0
2167    GeometryMinorRadius = 6.0
2168    GeometryHeight = 7.5     
2169    GeometryIsSmall = Yes    
2170  
2171  End
2172  
2173  ;----------------------------------------------------------
2174  Object AmericaVehicleTomahawk
2175  
2176    ; *** ART Parameters ***
2177    SelectPortrait         = SACTomahawk_L
2178    ButtonImage            = SACTomahawk
2179    
2180    UpgradeCameo1 = Upgrade_AmericaScoutDrone
2181    UpgradeCameo2 = Upgrade_AmericaBattleDrone
2182    UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
2183    ;UpgradeCameo4 = Upgrade_AmericaTomahawkRemoteControl  ***CUT***
2184    ;UpgradeCameo5 = XXX
2185    
2186    Draw = W3DTankDraw ModuleTag_01
2187      OkToChangeModelColor = Yes
2188        
2189      ProjectileBoneFeedbackEnabledSlots = PRIMARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
2190  
2191      DefaultConditionState
2192        Model = AVTomahawk
2193        Turret = TURRET
2194        TurretPitch = TURRETEL
2195        WeaponLaunchBone = PRIMARY WeaponA
2196        WeaponHideShowBone = PRIMARY MISSILE
2197      End
2198  
2199      ConditionState = REALLYDAMAGED
2200        Model = AVTomahawk_D
2201      End
2202      AliasConditionState = RUBBLE
2203  
2204      TrackMarks           = EXTnkTrack.tga
2205  
2206    End
2207  
2208    ; ***DESIGN parameters ***
2209    DisplayName      = OBJECT:Tomahawk
2210    Side = America
2211    EditorSorting   = VEHICLE
2212    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
2213    BuildCost       = 1200
2214    BuildTime       = 20.0          ;in seconds    
2215    VisionRange     = 180
2216    ShroudClearingRange = 200
2217    Prerequisites
2218      Object = AmericaWarFactory
2219      Object = AmericaStrategyCenter
2220    End
2221    ExperienceValue = 50 50 100 150    ;Experience point value at each level
2222    ExperienceRequired = 0 200 400 800  ;Experience points needed to gain each level
2223    IsTrainable = Yes             ;Can gain experience
2224    WeaponSet
2225      Conditions = None 
2226      Weapon = PRIMARY TomahawkMissileWeapon
2227    End
2228    ArmorSet
2229      Conditions      = None
2230      Armor           = TruckArmor
2231      DamageFX        = TankDamageFX
2232    End
2233    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
2234    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
2235    CommandSet      = AmericaVehicleTomahawkCommandSet
2236  
2237    ; *** AUDIO Parameters ***
2238    VoiceSelect = TomahawkVoiceSelect
2239    VoiceMove = TomahawkVoiceMove
2240    VoiceGuard = TomahawkVoiceMove
2241    VoiceAttack = TomahawkVoiceAttack
2242    SoundMoveStart = TomahawkMoveStart
2243    SoundMoveStartDamaged = TomahawkMoveStart
2244    
2245    UnitSpecificSounds
2246      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
2247      VoiceCreate = TomahawkVoiceCreate
2248      TurretMoveStart = NoSound
2249      TurretMoveLoop = TurretMoveLoopLoud
2250      SoundEject = PilotSoundEject
2251      VoiceEject = PilotVoiceEject
2252      VoiceCrush = TomahawkVoiceCrush
2253      VoiceEnter = TomahawkVoiceMove
2254      VoiceBombard = TomahawkVoiceAttack
2255    End
2256  
2257    ; *** ENGINEERING Parameters ***
2258    RadarPriority = UNIT
2259    KindOf = PRELOAD SELECTABLE DONT_AUTO_CRUSH_INFANTRY CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
2260  
2261    Body = ActiveBody ModuleTag_02
2262      MaxHealth       = 180.0
2263      InitialHealth   = 180.0
2264    End
2265  
2266    Behavior = AIUpdateInterface ModuleTag_03
2267      Turret
2268        TurretTurnRate = 60   ; turn rate, in degrees per sec
2269        TurretPitchRate = 60
2270        FirePitch = 70  ; Instead of aiming pitchwise at the target, it will aim here
2271        AllowsPitch = Yes
2272        ControlledWeaponSlots = PRIMARY
2273      End
2274      AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
2275    End
2276    Locomotor = SET_NORMAL TomahawkLocomotor
2277  
2278    Behavior = PhysicsBehavior ModuleTag_04
2279      Mass = 50.0
2280    End
2281    Behavior = SlowDeathBehavior ModuleTag_05
2282      DeathTypes = ALL -CRUSHED -SPLATTED
2283      DestructionDelay  = 500
2284      DestructionDelayVariance  = 100
2285      FX  = INITIAL  FX_GenericTankDeathEffect
2286      OCL = MIDPOINT OCL_AmericaVehicleTomahawkDie
2287      FX =  FINAL FX_AmericaVehicleTomahawkDeathExplosion
2288    End
2289  
2290    Behavior = ObjectCreationUpgrade ModuleTag_06
2291      UpgradeObject = OCL_AmericanBattleDrone
2292      TriggeredBy   = Upgrade_AmericaBattleDrone
2293      ConflictsWith = Upgrade_AmericaScoutDrone
2294    End
2295    Behavior = ObjectCreationUpgrade ModuleTag_07
2296      UpgradeObject = OCL_AmericanScoutDrone
2297      TriggeredBy   = Upgrade_AmericaScoutDrone
2298      ConflictsWith = Upgrade_AmericaBattleDrone
2299    End
2300    Behavior = ProductionUpdate ModuleTag_08
2301      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
2302    End
2303  
2304    Behavior = ExperienceScalarUpgrade ModuleTag_09
2305      TriggeredBy = Upgrade_AmericaAdvancedTraining
2306      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
2307    End
2308  
2309    Behavior = DestroyDie ModuleTag_10
2310      DeathTypes = NONE +CRUSHED +SPLATTED
2311    End
2312  
2313    Behavior = FXListDie ModuleTag_11
2314      DeathTypes = NONE +CRUSHED +SPLATTED
2315      DeathFX = FX_CarCrush
2316    End
2317  
2318    Behavior = CreateObjectDie ModuleTag_12
2319      DeathTypes = NONE +CRUSHED +SPLATTED
2320      CreationList = OCL_CrusaderTank_CrushEffect
2321    End
2322  
2323  ;  Behavior = FXListDie
2324  ;    DeathTypes = ALL -CRUSHED -SPLATTED
2325  ;    DeathFX = FX_GenericTankDeathEffect
2326  ;  End
2327  ; Behavior = CreateObjectDie
2328  ;    DeathTypes = ALL -CRUSHED -SPLATTED
2329  ;    CreationList = OCL_GenericTankDeathEffect
2330  ;  End
2331    Behavior = EjectPilotDie ModuleTag_13
2332      DeathTypes = ALL -CRUSHED -SPLATTED
2333      ExemptStatus = HIJACKED
2334      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
2335      GroundCreationList = OCL_EjectPilotOnGround
2336      AirCreationList = OCL_EjectPilotViaParachute
2337    End
2338    
2339    Behavior = TransitionDamageFX ModuleTag_14
2340      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
2341      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
2342    End
2343    
2344    Behavior = FlammableUpdate ModuleTag_21
2345      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
2346      AflameDamageAmount = 3       ; taking this much damage...
2347      AflameDamageDelay = 500       ; this often.
2348    End
2349  
2350    Geometry = BOX
2351    GeometryMajorRadius = 15.0
2352    GeometryMinorRadius = 10.0
2353    GeometryHeight = 10.0     
2354    GeometryIsSmall = Yes
2355    Shadow = SHADOW_VOLUME 
2356    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length   
2357  
2358  End
2359  
2360  ;----------------------------------------------------------
2361  Object AmericaVehicleTomahawkHulk
2362    ; *** ART Parameters ***
2363    Draw                = W3DModelDraw ModuleTag_01
2364      ConditionState    = NONE
2365        Model           = AVTomahawk_D1
2366      End
2367    End
2368  
2369    ; ***DESIGN parameters ***
2370    EditorSorting       = DEBRIS
2371  
2372    ; *** ENGINEERING Parameters ***
2373    KindOf              = NO_COLLIDE HULK
2374  
2375    Behavior                  = PhysicsBehavior ModuleTag_03
2376      Mass                    = 10.0
2377      AllowBouncing           = Yes
2378      KillWhenRestingOnGround = Yes
2379    End
2380    Behavior = LifetimeUpdate ModuleTag_04
2381      MinLifetime = 1500   ; min lifetime in msec
2382      MaxLifetime = 1600   ; max lifetime in msec
2383    End
2384  
2385    Behavior = SlowDeathBehavior ModuleTag_05
2386      SinkDelay        = 1500
2387      SinkRate            = 2     ; in Dist/Sec
2388      DestructionDelay = 8000
2389    End
2390  End
2391  
2392  ;----------------------------------------------------------
2393  Object ChinaVehicleNukeCannonHulk
2394    ; *** ART Parameters ***
2395    Draw                = W3DModelDraw ModuleTag_01
2396      ConditionState    = NONE
2397        Model           = NVNukeCn_D1
2398      End
2399    End
2400  
2401    ; ***DESIGN parameters ***
2402    EditorSorting       = DEBRIS
2403  
2404    ; *** ENGINEERING Parameters ***
2405    KindOf              = NO_COLLIDE HULK
2406  
2407    Behavior                  = PhysicsBehavior ModuleTag_03
2408      Mass                    = 10.0
2409      AllowBouncing           = Yes
2410      KillWhenRestingOnGround = Yes
2411    End
2412    Behavior = LifetimeUpdate ModuleTag_04
2413      MinLifetime = 1500   ; min lifetime in msec
2414      MaxLifetime = 1600   ; max lifetime in msec
2415    End
2416  
2417    Behavior = SlowDeathBehavior ModuleTag_05
2418      SinkDelay        = 1500
2419      SinkRate            = 2     ; in Dist/Sec
2420      DestructionDelay = 8000
2421    End
2422  End
2423  
2424  ;------------------------------------------------------------------------------
2425  Object AmericaJetRaptor
2426  
2427    ; *** ART Parameters ***
2428    SelectPortrait         = SACRaptor_L
2429    ButtonImage            = SACRaptor
2430    
2431    UpgradeCameo1 = Upgrade_AmericaLaserMissiles
2432    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
2433    UpgradeCameo3 = Upgrade_GLACamouflage
2434    ;UpgradeCameo4 = NONE
2435    ;UpgradeCameo5 = NONE
2436    
2437    Draw                   = W3DModelDraw ModuleTag_01
2438   
2439      DefaultConditionState
2440        Model               = AVRaptor
2441        HideSubObject       = BurnerFX01 BurnerFX02
2442        WeaponLaunchBone = PRIMARY WeaponA
2443      End
2444  
2445      ConditionState        = JETEXHAUST
2446        ; exhaust
2447        ParticleSysBone     = Wingtip01 JetContrail
2448        ParticleSysBone     = Wingtip02 JetContrail
2449      End
2450  
2451      ConditionState        = JETEXHAUST JETAFTERBURNER
2452        ; exhaust
2453        ParticleSysBone     = Wingtip01 JetContrail
2454        ParticleSysBone     = Wingtip02 JetContrail
2455        ; afterburner
2456        ShowSubObject       = BurnerFX01 BurnerFX02
2457        ParticleSysBone     = Engine01 JetLenzflare
2458        ParticleSysBone     = Engine02 JetLenzflare
2459      End
2460  
2461      ConditionState        = REALLYDAMAGED
2462        Model               = AVRaptor_D
2463        ; damage
2464        ParticleSysBone     = Smoke01 JetSmoke
2465        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
2466      End
2467      
2468      ConditionState        = REALLYDAMAGED JETEXHAUST
2469        Model               = AVRaptor_D
2470        ; damage
2471        ParticleSysBone     = Smoke01 JetSmoke
2472        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
2473        ; exhaust
2474        ParticleSysBone     = Wingtip01 JetContrail
2475        ParticleSysBone     = Wingtip02 JetContrail
2476      End
2477  
2478      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
2479        Model               = AVRaptor_D
2480        ; damage
2481        ParticleSysBone     = Smoke01 JetSmoke
2482        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
2483        ; afterburner
2484        ShowSubObject       = BurnerFX01 BurnerFX02
2485        ParticleSysBone     = Engine01 JetLenzflare
2486        ParticleSysBone     = Engine02 JetLenzflare
2487        ; exhaust
2488        ParticleSysBone     = Wingtip01 JetContrail
2489        ParticleSysBone     = Wingtip02 JetContrail
2490      End
2491  
2492      ConditionState        = RUBBLE
2493        Model               = AVRaptor_D1B
2494        HideSubObject       = None 
2495        ShowSubObject       = None
2496      End
2497  
2498      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
2499        Model               = AVRaptor_D1B
2500        ;HideSubObject is needed cause there're inherited from default condition state      
2501        HideSubObject       = None 
2502        ShowSubObject       = None
2503        ParticleSysBone     = Engine01 JetExhaust
2504        ParticleSysBone     = Engine02 JetExhaust
2505        ; exhaust
2506        ParticleSysBone     = Wingtip01 JetContrail
2507        ParticleSysBone     = Wingtip02 JetContrail
2508      End
2509  
2510      OkToChangeModelColor = Yes
2511  
2512    End
2513  
2514    ; ***DESIGN parameters ***
2515    DisplayName             = OBJECT:Raptor
2516    EditorSorting           = VEHICLE
2517    Side                    = America
2518    TransportSlotCount      = 0 ;how many "slots" we take in a transport (0 == not transportable)
2519    VisionRange             = 180.0 
2520    ShroudClearingRange     = 400
2521    Prerequisites
2522      Object                = AmericaAirfield
2523    End
2524  
2525    WeaponSet
2526      Conditions            = None 
2527      Weapon                = PRIMARY RaptorJetMissileWeapon
2528    End
2529    WeaponSet
2530      Conditions            = PLAYER_UPGRADE 
2531      Weapon                = PRIMARY RaptorJetLaserGuidedMissileWeapon
2532    End
2533    ArmorSet
2534      Conditions            = None
2535      Armor                 = AirplaneArmor
2536      DamageFX              = None
2537    End
2538  
2539    BuildCost               = 1800
2540    BuildTime               = 20   
2541    ExperienceValue         = 50 50 100 150  ;Experience point value at each level
2542    ExperienceRequired      = 0 100 200 400   ;Experience points needed to gain each level
2543    IsTrainable             = Yes             ;Can gain experience
2544    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
2545    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
2546    CommandSet              = AmericaJetRaptorCommandSet
2547  
2548    ; *** AUDIO Parameters ***
2549    VoiceSelect            = RaptorVoiceSelect
2550    VoiceMove              = RaptorVoiceMove
2551    VoiceAttack            = RaptorVoiceAttack
2552    VoiceAttackAir         = RaptorVoiceAttackAir
2553    VoiceGuard             = RaptorVoiceAirPatrol
2554    SoundDie               = RaptorVoiceFalling
2555    SoundAmbient           = RaptorAmbientLoop
2556    SoundAmbientRubble     = NoSound
2557    ; For now, it is better to have some sound than no sound cause there is a bug in
2558    ; what triggers the sound move loop sound, and the multiplayer test is only days away
2559    ; SoundMoveLoop          = RaptorAmbientLoop  ; don't want sound while sitting at airfield
2560    ; SoundAmbient           = NoSound
2561    UnitSpecificSounds
2562      VoiceCreate          = RaptorVoiceCreate
2563      SoundEject           = PilotSoundEject
2564      VoiceEject           = PilotVoiceEject
2565      Afterburner          = RaptorAfterburner
2566      VoiceLowFuel         = RaptorVoiceLowFuel
2567      VoiceGarrison        = RaptorVoiceMove
2568    End
2569  
2570    ; *** ENGINEERING Parameters ***
2571    RadarPriority          = UNIT
2572    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
2573    Body                   = ActiveBody ModuleTag_02
2574      MaxHealth            = 300.0
2575      InitialHealth        = 300.0
2576    End
2577  
2578    Behavior                = WeaponSetUpgrade ModuleTag_03
2579      TriggeredBy          = Upgrade_AmericaLaserMissiles
2580    End
2581    Behavior = ExperienceScalarUpgrade ModuleTag_04
2582      TriggeredBy = Upgrade_AmericaAdvancedTraining
2583      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
2584    End
2585  
2586    Behavior                          = JetSlowDeathBehavior ModuleTag_05
2587      FXOnGroundDeath                 = FX_JetOnGroundDeath
2588      OCLOnGroundDeath                = OCL_RaptorDeathFinalBlowUp
2589      DestructionDelay                = 99999999; destruction will happen when we
2590      RollRate                        = 0.2
2591      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
2592      PitchRate                       = 0.0
2593      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
2594      FXInitialDeath                  = FX_JetDeathInitial
2595      OCLInitialDeath                 = OCL_RaptorDeathInitial
2596      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
2597      FXSecondary                     = FX_JetDeathSecondary
2598      OCLSecondary                    = OCL_RaptorDeathSecondary
2599      FXHitGround                     = FX_JetDeathHitGround
2600      OCLHitGround                    = OCL_RaptorDeathHitGround
2601      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
2602      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
2603      OCLFinalBlowUp                  = OCL_RaptorDeathFinalBlowUp
2604  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
2605    End
2606    Behavior                    = EjectPilotDie ModuleTag_06
2607      ExemptStatus         = HIJACKED
2608      GroundCreationList = OCL_EjectPilotOnGround
2609      AirCreationList = OCL_EjectPilotViaParachute
2610      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
2611    End
2612    
2613    Behavior               = PhysicsBehavior ModuleTag_07
2614      Mass                 = 500.0
2615    End
2616  
2617    Behavior                 = TransitionDamageFX ModuleTag_08
2618      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
2619      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
2620    End
2621  
2622    Behavior = JetAIUpdate ModuleTag_09
2623      OutOfAmmoDamagePerSecond  = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
2624                                      ; note that it's expressed as a percent of max health, not an absolute
2625      TakeoffSpeedForMaxLift    = 100%   ; smaller numbers give more lift sooner when taking off
2626      TakeoffPause              = 500
2627      MinHeight                 = 5
2628      ParkingOffset             = 3             ; scooch it a little forward so the tail doesn't hit the doors
2629      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
2630    End
2631    Locomotor = SET_NORMAL RaptorJetLocomotor
2632    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
2633  
2634    Behavior = FlammableUpdate ModuleTag_21
2635      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
2636      AflameDamageAmount = 3       ; taking this much damage...
2637      AflameDamageDelay = 500       ; this often.
2638    End
2639    Behavior = StealthUpdate ModuleTag_07
2640      StealthDelay                = 2500 ; msec
2641      StealthForbiddenConditions  = ATTACKING USING_ABILITY
2642      MoveThresholdSpeed          = 3
2643      InnateStealth               = No ;Requires upgrade first
2644      OrderIdleEnemiesToAttackMeUponReveal  = Yes
2645    End
2646  
2647    Behavior = StealthUpgrade ModuleTag_08
2648      TriggeredBy = Upgrade_GLACamouflage
2649    End
2650  
2651    Geometry                 = Box
2652    GeometryIsSmall          = Yes
2653    GeometryMajorRadius      = 14.0
2654    GeometryMinorRadius      = 7.0
2655    GeometryHeight           = 5.0
2656    Shadow                   = SHADOW_VOLUME
2657    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length.
2658  
2659  End
2660  
2661  ;------------------------------------------------------------------------------
2662  ;This is the raptor as it's crashing
2663  ;------------------------------------------------------------------------------
2664  Object AmericaJetRaptorHulk
2665    ; *** ART Parameters ***
2666    Draw                = W3DModelDraw ModuleTag_01
2667      DefaultConditionState
2668        Model           = AVRaptor_D1
2669      End
2670    End
2671  
2672    ; ***DESIGN parameters ***
2673    EditorSorting       = DEBRIS
2674  
2675    ; *** ENGINEERING Parameters ***
2676    KindOf              =  NO_COLLIDE HULK
2677  
2678    Behavior                  = PhysicsBehavior ModuleTag_03
2679      Mass                    = 2.0
2680      AllowBouncing           = No
2681      KillWhenRestingOnGround = Yes
2682    End
2683  
2684    Behavior = LifetimeUpdate ModuleTag_04
2685      MinLifetime = 1500   ; min lifetime in msec
2686      MaxLifetime = 1600   ; max lifetime in msec
2687    End
2688  
2689    Behavior = SlowDeathBehavior ModuleTag_05
2690      SinkDelay        = 1500
2691      SinkRate            = 2     ; in Dist/Sec
2692      DestructionDelay = 8000
2693    End
2694  
2695  End
2696  
2697  ;------------------------------------------------------------------------------
2698  ;This is the A10 as it's crashing
2699  ;------------------------------------------------------------------------------
2700  Object AmericaJetA10Hulk
2701    ; *** ART Parameters ***
2702    Draw                = W3DModelDraw ModuleTag_01
2703      DefaultConditionState
2704        Model           = AVWarthog_D1
2705      End
2706    End
2707  
2708    ; ***DESIGN parameters ***
2709    EditorSorting       = DEBRIS
2710  
2711    ; *** ENGINEERING Parameters ***
2712    KindOf              =  NO_COLLIDE HULK
2713  
2714    Behavior                  = PhysicsBehavior ModuleTag_03
2715      Mass                    = 2.0
2716      AllowBouncing           = No
2717      KillWhenRestingOnGround = Yes
2718    End
2719  
2720    Behavior = LifetimeUpdate ModuleTag_04
2721      MinLifetime = 1500   ; min lifetime in msec
2722      MaxLifetime = 1600   ; max lifetime in msec
2723    End
2724  
2725  
2726  
2727    Behavior = SlowDeathBehavior ModuleTag_05
2728      SinkDelay        = 1500
2729      SinkRate         = 2     ; in Dist/Sec
2730      DestructionDelay = 8000
2731    End
2732  
2733  End
2734  
2735  ;------------------------------------------------------------------------------
2736  ;This is the stealth as it's crashing
2737  ;------------------------------------------------------------------------------
2738  Object AmericaJetStealthHulk
2739  
2740    ; *** ART Parameters ***
2741    Draw                = W3DModelDraw ModuleTag_01
2742      DefaultConditionState
2743        Model           = AVStealth_D1
2744      End
2745    End
2746  
2747    ; ***DESIGN parameters ***
2748    EditorSorting       = DEBRIS
2749  
2750    ; *** ENGINEERING Parameters ***
2751    KindOf              =  NO_COLLIDE HULK
2752  
2753    Behavior                  = PhysicsBehavior ModuleTag_03
2754      Mass                    = 2.0
2755      AllowBouncing           = No
2756      KillWhenRestingOnGround = Yes
2757    End
2758  
2759    Behavior = LifetimeUpdate ModuleTag_04
2760      MinLifetime = 1500   ; min lifetime in msec
2761      MaxLifetime = 1600   ; max lifetime in msec
2762    End
2763  
2764    Behavior = SlowDeathBehavior ModuleTag_05
2765      SinkDelay        = 1500
2766      SinkRate            = 2     ; in Dist/Sec
2767      DestructionDelay = 8000
2768    End
2769  
2770  End
2771  
2772  ;------------------------------------------------------------------------------
2773  ;This is the stealth as it's crashing
2774  ;------------------------------------------------------------------------------
2775  Object AmericaJetAuroraHulk
2776  
2777    ; *** ART Parameters ***
2778    Draw                = W3DModelDraw ModuleTag_01
2779      DefaultConditionState
2780        Model           = AVAurora_D1
2781      End
2782    End
2783  
2784    ; ***DESIGN parameters ***
2785    EditorSorting       = DEBRIS
2786  
2787    ; *** ENGINEERING Parameters ***
2788    KindOf              =  NO_COLLIDE HULK
2789  
2790    Behavior                  = PhysicsBehavior ModuleTag_03
2791      Mass                    = 2.0
2792      AllowBouncing           = No
2793      KillWhenRestingOnGround = Yes
2794    End
2795  
2796    Behavior = LifetimeUpdate ModuleTag_04
2797      MinLifetime = 1500   ; min lifetime in msec
2798      MaxLifetime = 1600   ; max lifetime in msec
2799    End
2800  
2801    Behavior = SlowDeathBehavior ModuleTag_05
2802      SinkDelay        = 1500
2803      SinkRate            = 2     ; in Dist/Sec
2804      DestructionDelay = 8000
2805    End
2806  
2807  End
2808  
2809  ;------------------------------------------------------------------------------
2810  Object A10ThunderboltMissile
2811  
2812    ; *** ART Parameters ***
2813    Draw = W3DModelDraw ModuleTag_01
2814      OkToChangeModelColor = Yes
2815      DefaultConditionState
2816        Model = AVWarthog_M
2817        ParticleSysBone = NONE MissileExhaust
2818      End
2819    End
2820  
2821    ; ***DESIGN parameters ***
2822    DisplayName      = OBJECT:Missile
2823    Side = America
2824    EditorSorting   = SYSTEM
2825    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
2826    VisionRange = 0.0  
2827    ArmorSet
2828      Conditions      = None
2829      Armor           = ProjectileArmor
2830      DamageFX        = None
2831    End
2832  
2833    ; *** AUDIO Parameters ***
2834  
2835    ; *** ENGINEERING Parameters ***
2836    KindOf            = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
2837    Body = ActiveBody ModuleTag_02
2838      MaxHealth       = 100.0
2839      InitialHealth   = 100.0
2840    End
2841  
2842  ; ---- begin Projectile death behaviors
2843    Behavior = InstantDeathBehavior DeathModuleTag_01
2844      DeathTypes = NONE +DETONATED
2845      ; we detonated normally.
2846      ; no FX, just quiet destroy ourselves
2847    End
2848    Behavior = InstantDeathBehavior DeathModuleTag_02
2849      DeathTypes = NONE +LASERED
2850      ; shot down by laser.
2851      FX         = FX_GenericMissileDisintegrate
2852      OCL        = OCL_GenericMissileDisintegrate
2853    End
2854    Behavior = InstantDeathBehavior DeathModuleTag_03
2855      DeathTypes = ALL -LASERED -DETONATED
2856      ; shot down by nonlaser.
2857      FX         = FX_GenericMissileDeath
2858    End
2859  ; ---- end Projectile death behaviors
2860   
2861  ; The weapon is in OCL.ini.  This makes it do double damage secretly.   
2862  ;  Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
2863  ;    DeathWeapon   = A10ThunderboltMissileWeapon
2864  ;    StartsActive  = Yes
2865  ;  End
2866  
2867    Behavior = PhysicsBehavior ModuleTag_08
2868      Mass = 1
2869    End
2870    Behavior = MissileAIUpdate ModuleTag_09
2871      TryToFollowTarget = Yes 
2872      FuelLifetime = 10000
2873      InitialVelocity = 30                ; in dist/sec
2874      IgnitionDelay = 0
2875      IgnitionFX = FX_A10ThunderboltMissileIgnition
2876    End
2877    ; It's a missile, it needs to hit so it can +DETONATED
2878  ;  Behavior = HeightDieUpdate ModuleTag_10
2879  ;    TargetHeight = 1.0
2880  ;    TargetHeightIncludesStructures = No
2881  ;  End
2882    Locomotor = SET_NORMAL A10ThunderboltMissileLocomotor
2883  
2884    Geometry = Sphere
2885    GeometryIsSmall = Yes
2886    GeometryMajorRadius = 1.0
2887  
2888    Behavior = SpecialPowerCompletionDie ModuleTag_11
2889      SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike
2890    End
2891  
2892  ;  Geometry = Sphere
2893   ; GeometryIsSmall = Yes
2894    ;GeometryMajorRadius = 12.0
2895  
2896  End
2897  
2898  ;------------------------------------------------------------------------------
2899  Object RaptorJetMissile
2900  
2901    ; *** ART Parameters ***
2902    Draw = W3DModelDraw ModuleTag_01
2903      OkToChangeModelColor = Yes
2904      DefaultConditionState
2905        Model = AVRaptor_M
2906      End
2907    End
2908  
2909    ; ***DESIGN parameters ***
2910    DisplayName       = OBJECT:Missile
2911    EditorSorting     = SYSTEM
2912    VisionRange = 0.0  
2913  
2914    ; *** ENGINEERING Parameters ***
2915    KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
2916    Body = ActiveBody ModuleTag_02
2917      MaxHealth       = 100.0
2918      InitialHealth   = 100.0
2919    End
2920  
2921  ; ---- begin Projectile death behaviors
2922    Behavior = InstantDeathBehavior DeathModuleTag_01
2923      DeathTypes = NONE +DETONATED
2924      ; we detonated normally.
2925      ; no FX, just quiet destroy ourselves
2926    End
2927    Behavior = InstantDeathBehavior DeathModuleTag_02
2928      DeathTypes = NONE +LASERED
2929      ; shot down by laser.
2930      FX         = FX_GenericMissileDisintegrate
2931      OCL        = OCL_GenericMissileDisintegrate
2932    End
2933    Behavior = InstantDeathBehavior DeathModuleTag_03
2934      DeathTypes = ALL -LASERED -DETONATED
2935      ; shot down by nonlaser.
2936      FX         = FX_GenericMissileDeath
2937    End
2938  ; ---- end Projectile death behaviors
2939  
2940    Behavior = PhysicsBehavior ModuleTag_07
2941      Mass = 1
2942    End
2943    Behavior = MissileAIUpdate ModuleTag_08
2944      TryToFollowTarget     = Yes 
2945      FuelLifetime          = 10000
2946      InitialVelocity       = 75                ; in dist/sec
2947      IgnitionDelay         = 30
2948      IgnitionFX            = FX_JetMissileIgnition
2949    End
2950    Locomotor = SET_NORMAL RaptorJetMissileLocomotor
2951  
2952    Geometry = Sphere
2953    GeometryIsSmall = Yes
2954    GeometryMajorRadius = 1.0
2955  
2956  End
2957  
2958  ;------------------------------------------------------------------------------
2959  Object StealthJetMissile
2960  
2961    ; *** ART Parameters ***
2962    Draw = W3DModelDraw ModuleTag_01
2963      OkToChangeModelColor = Yes
2964      DefaultConditionState
2965        Model = AVStealth_M
2966      End
2967    End
2968  
2969    ; ***DESIGN parameters ***
2970    DisplayName       = OBJECT:Missile
2971    EditorSorting     = SYSTEM
2972    VisionRange       = 0.0  
2973  
2974    ; *** ENGINEERING Parameters ***
2975    KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
2976    Body = ActiveBody ModuleTag_02
2977      MaxHealth       = 100.0
2978      InitialHealth   = 100.0
2979    End
2980  
2981  ; ---- begin Projectile death behaviors
2982    Behavior = InstantDeathBehavior DeathModuleTag_01
2983      DeathTypes = NONE +DETONATED
2984      ; we detonated normally.
2985      ; no FX, just quiet destroy ourselves
2986    End
2987    Behavior = InstantDeathBehavior DeathModuleTag_02
2988      DeathTypes = NONE +LASERED
2989      ; shot down by laser.
2990      FX         = FX_GenericMissileDisintegrate
2991      OCL        = OCL_GenericMissileDisintegrate
2992    End
2993    Behavior = InstantDeathBehavior DeathModuleTag_03
2994      DeathTypes = ALL -LASERED -DETONATED
2995      ; shot down by nonlaser.
2996      FX         = FX_GenericMissileDeath
2997    End
2998  ; ---- end Projectile death behaviors
2999  
3000    Behavior = PhysicsBehavior ModuleTag_07
3001      Mass = 1
3002    End
3003    Behavior = MissileAIUpdate ModuleTag_08
3004      TryToFollowTarget     = Yes 
3005      FuelLifetime          = 10000
3006      InitialVelocity       = 75                ; in dist/sec
3007      IgnitionDelay         = 30
3008      IgnitionFX            = FX_JetMissileIgnition
3009    End
3010    Locomotor = SET_NORMAL StealthJetMissileLocomotor
3011  
3012    Geometry = Sphere
3013    GeometryIsSmall = Yes
3014    GeometryMajorRadius = 1.0
3015  
3016  End
3017  
3018  ;------------------------------------------------------------------------------
3019  Object AmericaJetB52
3020  
3021    ; *** ART Parameters ***
3022    Draw = W3DModelDraw ModuleTag_01
3023      DefaultConditionState
3024        Model = AVBomber
3025        ParticleSysBone = Engine01 JetBlackTrailThin
3026        ParticleSysBone = Engine02 JetBlackTrailThin
3027        ParticleSysBone = Engine03 JetBlackTrailThin
3028        ParticleSysBone = Engine04 JetBlackTrailThin
3029        ParticleSysBone = WingTip01 JetContrailThin
3030        ParticleSysBone = WingTip02 JetContrailThin
3031      End
3032      ConditionState = DAMAGED
3033        Model = AVBomber_D
3034        ParticleSysBone = Smoke01 JetFireLarge
3035        ParticleSysBone = Smoke02 JetFireLarge
3036        ParticleSysBone = Engine01 JetBlackTrailThin
3037        ParticleSysBone = Engine02 JetBlackTrailThin
3038        ParticleSysBone = Engine03 JetBlackTrailThin
3039        ParticleSysBone = Engine04 JetBlackTrailThin
3040        ParticleSysBone = Smoke01 JetSmokeLarge
3041        ParticleSysBone = Smoke02 JetSmokeLarge
3042      End
3043      ConditionState = REALLYDAMAGED
3044        Model = AVBomber_D
3045        ParticleSysBone = Smoke01 JetFireLarge
3046        ParticleSysBone = Smoke02 JetFireLarge
3047        ParticleSysBone = Engine01 JetBlackTrailThin
3048        ParticleSysBone = Engine02 JetBlackTrailThin
3049        ParticleSysBone = Engine03 JetBlackTrailThin
3050        ParticleSysBone = Engine04 JetBlackTrailThin
3051        ParticleSysBone = Smoke01 JetSmokeLarge
3052        ParticleSysBone = Smoke02 JetSmokeLarge
3053      End
3054      ConditionState = RUBBLE
3055        Model = AVBomber_D1
3056        ParticleSysBone = Smoke01 JetFireLarge
3057        ParticleSysBone = Smoke02 JetFireLarge
3058        ParticleSysBone = Smoke01 JetSmokeLarge
3059        ParticleSysBone = Smoke02 JetSmokeLarge
3060      End
3061      OkToChangeModelColor = Yes
3062    End
3063    
3064    Draw = W3DModelDraw ModuleTag_02
3065      DefaultConditionState
3066        Model           = AVBomber_A2U
3067        Animation       = AVBomber_A2K.AVBomber_A2
3068        AnimationMode   = MANUAL
3069        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
3070      End
3071      ConditionState = DOOR_1_OPENING
3072        Animation       = AVBomber_A2K.AVBomber_A2
3073        AnimationMode   = ONCE
3074        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
3075      End
3076      ConditionState = DOOR_1_CLOSING
3077        Animation       = AVBomber_A2K.AVBomber_A2
3078        AnimationMode   = ONCE_BACKWARDS
3079        Flags           = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES
3080      End
3081  
3082      ConditionState = REALLYDAMAGED
3083        Model           = AVBomber_A2DU
3084        Animation       = AVBomber_A2K.AVBomber_A2
3085        AnimationMode   = MANUAL
3086        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
3087      End
3088      ConditionState = DOOR_1_OPENING REALLYDAMAGED
3089        Model           = AVBomber_A2DU
3090        Animation       = AVBomber_A2K.AVBomber_A2
3091        AnimationMode   = ONCE
3092        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
3093      End
3094      ConditionState = DOOR_1_CLOSING REALLYDAMAGED
3095        Model           = AVBomber_A2DU
3096        Animation       = AVBomber_A2K.AVBomber_A2
3097        AnimationMode   = ONCE_BACKWARDS
3098        Flags           = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES
3099      End
3100    End
3101  
3102    ; ***DESIGN parameters ***
3103    DisplayName         = OBJECT:B52
3104    EditorSorting       = VEHICLE
3105    Side                = America
3106    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
3107    VisionRange         = 0.0 
3108    ArmorSet
3109      Conditions      = None
3110      Armor           = AirplaneArmor
3111      DamageFX        = TankDamageFX
3112    End
3113    CommandSet        = Command_ScriptedTransportDrops
3114  
3115    ; *** AUDIO Parameters ***
3116    SoundAmbient = B52AmbientLoop
3117    SoundAmbientRubble    = NoSound
3118  
3119    ; *** ENGINEERING Parameters ***
3120    RadarPriority = UNIT
3121    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK  VEHICLE SCORE TRANSPORT AIRCRAFT IGNORED_IN_GUI
3122    Body = ActiveBody ModuleTag_03
3123      MaxHealth       = 1000.0
3124      InitialHealth   = 1000.0
3125    End
3126  
3127    ExperienceValue     = 50 50 50 50  ; Experience point value at each level
3128  
3129    ;SCRIPTED SUPPORT: These special powers are triggered directly 
3130    ;from the transport without creating a transport. This is done 
3131    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
3132    ;which also prevents creating the payload transport.
3133    Behavior    = OCLSpecialPower ModuleTag_04
3134      SpecialPowerTemplate = SuperweaponDaisyCutter  ;@@KRIS@@
3135      OCL                  = SUPERWEAPON_DaisyCutter
3136      CreateLocation       = USE_OWNER_OBJECT
3137    End
3138    Behavior    = OCLSpecialPower ModuleTag_05
3139      SpecialPowerTemplate = SuperweaponParadropAmerica
3140      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
3141      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
3142      OCL                  = SUPERWEAPON_Paradrop1
3143      CreateLocation       = USE_OWNER_OBJECT
3144    End 
3145    Behavior    = OCLSpecialPower ModuleTag_06
3146      SpecialPowerTemplate = SuperweaponCarpetBomb
3147      OCL                  = SUPERWEAPON_CarpetBomb
3148      CreateLocation       = USE_OWNER_OBJECT
3149    End 
3150     
3151    Behavior = PhysicsBehavior ModuleTag_07
3152      Mass = 500.0
3153    End
3154  
3155    Behavior = DeliverPayloadAIUpdate ModuleTag_08
3156      DoorDelay         = 500
3157      MaxAttempts       = 4
3158      DropOffset        = X:0 Y:0 Z:-10
3159      DropDelay         = 300     ; time in between each item dropped (if more than one)
3160      PutInContainer    = AmericaParachute
3161      DeliveryDistance  = 150
3162    End
3163    Locomotor = SET_NORMAL B52Locomotor
3164  
3165    Behavior = TransportContain ModuleTag_09
3166      Slots                       = 100                     ; hey, it's a BIG transport
3167      ScatterNearbyOnExit         = No
3168      OrientLikeContainerOnExit   = Yes
3169      KeepContainerVelocityOnExit = Yes
3170      ExitPitchRate               = 30
3171      ExitBone                    = WeaponA01
3172      AllowInsideKindOf           = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE
3173      DoorOpenTime                = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
3174      NumberOfExitPaths           = 0
3175      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
3176    End
3177      
3178    Behavior                          = JetSlowDeathBehavior ModuleTag_10
3179      DestructionDelay                = 2000 
3180      RollRate                        = 0.0
3181      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
3182      PitchRate                       = 0
3183      FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
3184      FXInitialDeath                  = FX_JetBigDeathInitial
3185      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
3186      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
3187      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
3188      FXSecondary                     = FX_BigPlaneDeath
3189  ;   FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
3190  ;   OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
3191  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
3192    End
3193  
3194    Behavior = TransitionDamageFX ModuleTag_11
3195      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
3196      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
3197    End
3198  
3199    Geometry = Box
3200    GeometryIsSmall = No
3201    GeometryMajorRadius = 60.0
3202    GeometryMinorRadius = 10.0
3203    GeometryHeight = 10.0
3204    Shadow = SHADOW_VOLUME
3205    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
3206  
3207  End
3208  
3209  
3210  ;------------------------------------------------------------------------------
3211  Object CINE_USA08_AmericaJetB52
3212  
3213    ; *** ART Parameters ***
3214    Draw = W3DModelDraw ModuleTag_01
3215      DefaultConditionState
3216        Model = AVBomber
3217        ParticleSysBone = Engine01 JetBlackTrailThin
3218        ParticleSysBone = Engine02 JetBlackTrailThin
3219        ParticleSysBone = Engine03 JetBlackTrailThin
3220        ParticleSysBone = Engine04 JetBlackTrailThin
3221        ParticleSysBone = WingTip01 JetContrailThin
3222        ParticleSysBone = WingTip02 JetContrailThin
3223      End
3224      ConditionState = DAMAGED
3225        Model = AVBomber_D
3226        ParticleSysBone = Smoke01 JetFireLarge
3227        ParticleSysBone = Smoke02 JetFireLarge
3228        ParticleSysBone = Engine01 JetBlackTrailThin
3229        ParticleSysBone = Engine02 JetBlackTrailThin
3230        ParticleSysBone = Engine03 JetBlackTrailThin
3231        ParticleSysBone = Engine04 JetBlackTrailThin
3232        ParticleSysBone = Smoke01 JetSmokeLarge
3233        ParticleSysBone = Smoke02 JetSmokeLarge
3234      End
3235      ConditionState = REALLYDAMAGED
3236        Model = AVBomber_D
3237        ParticleSysBone = Smoke01 JetFireLarge
3238        ParticleSysBone = Smoke02 JetFireLarge
3239        ParticleSysBone = Engine01 JetBlackTrailThin
3240        ParticleSysBone = Engine02 JetBlackTrailThin
3241        ParticleSysBone = Engine03 JetBlackTrailThin
3242        ParticleSysBone = Engine04 JetBlackTrailThin
3243        ParticleSysBone = Smoke01 JetSmokeLarge
3244        ParticleSysBone = Smoke02 JetSmokeLarge
3245      End
3246      ConditionState = RUBBLE
3247        Model = AVBomber_D1
3248        ParticleSysBone = Smoke01 JetFireLarge
3249        ParticleSysBone = Smoke02 JetFireLarge
3250        ParticleSysBone = Smoke01 JetSmokeLarge
3251        ParticleSysBone = Smoke02 JetSmokeLarge
3252      End
3253      OkToChangeModelColor = Yes
3254    End
3255    
3256    Draw = W3DModelDraw ModuleTag_02
3257      DefaultConditionState
3258        Model           = AVBomber_A2U
3259        Animation       = AVBomber_A2K.AVBomber_A2
3260        AnimationMode   = MANUAL
3261        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
3262      End
3263      ConditionState = DOOR_1_OPENING
3264        Animation       = AVBomber_A2K.AVBomber_A2
3265        AnimationMode   = ONCE
3266        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
3267      End
3268      ConditionState = DOOR_1_CLOSING
3269        Animation       = AVBomber_A2K.AVBomber_A2
3270        AnimationMode   = ONCE_BACKWARDS
3271        Flags           = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES
3272      End
3273  
3274      ConditionState = REALLYDAMAGED
3275        Model           = AVBomber_A2DU
3276        Animation       = AVBomber_A2K.AVBomber_A2
3277        AnimationMode   = MANUAL
3278        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
3279      End
3280      ConditionState = DOOR_1_OPENING REALLYDAMAGED
3281        Model           = AVBomber_A2DU
3282        Animation       = AVBomber_A2K.AVBomber_A2
3283        AnimationMode   = ONCE
3284        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
3285      End
3286      ConditionState = DOOR_1_CLOSING REALLYDAMAGED
3287        Model           = AVBomber_A2DU
3288        Animation       = AVBomber_A2K.AVBomber_A2
3289        AnimationMode   = ONCE_BACKWARDS
3290        Flags           = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES
3291      End
3292    End
3293  
3294    ; ***DESIGN parameters ***
3295    DisplayName         = OBJECT:B52
3296    EditorSorting       = VEHICLE
3297    Side                = America
3298    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
3299    VisionRange         = 0.0 
3300    ArmorSet
3301      Conditions      = None
3302      Armor           = AirplaneArmor
3303      DamageFX        = TankDamageFX
3304    End
3305    CommandSet        = Command_ScriptedTransportDrops
3306  
3307    ; *** AUDIO Parameters ***
3308    SoundAmbient = B52AmbientLoop
3309    SoundAmbientRubble    = NoSound
3310  
3311    ; *** ENGINEERING Parameters ***
3312    RadarPriority = UNIT
3313    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK  VEHICLE SCORE TRANSPORT AIRCRAFT IGNORED_IN_GUI
3314    Body = ActiveBody ModuleTag_03
3315      MaxHealth       = 1000.0
3316      InitialHealth   = 1000.0
3317    End
3318  
3319    ExperienceValue     = 50 50 50 50  ; Experience point value at each level
3320  
3321    ;SCRIPTED SUPPORT: These special powers are triggered directly 
3322    ;from the transport without creating a transport. This is done 
3323    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
3324    ;which also prevents creating the payload transport.
3325    Behavior    = OCLSpecialPower ModuleTag_04
3326      SpecialPowerTemplate = SuperweaponDaisyCutter  ;@@KRIS@@
3327      OCL                  = SUPERWEAPON_DaisyCutter
3328      CreateLocation       = USE_OWNER_OBJECT
3329    End
3330    Behavior    = OCLSpecialPower ModuleTag_05
3331      SpecialPowerTemplate = SuperweaponParadropAmerica
3332      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
3333      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
3334      OCL                  = SUPERWEAPON_Paradrop1
3335      CreateLocation       = USE_OWNER_OBJECT
3336    End 
3337    Behavior    = OCLSpecialPower ModuleTag_06
3338      SpecialPowerTemplate = SuperweaponCarpetBomb
3339      OCL                  = SUPERWEAPON_CarpetBomb
3340      CreateLocation       = USE_OWNER_OBJECT
3341    End 
3342     
3343    Behavior = PhysicsBehavior ModuleTag_07
3344      Mass = 500.0
3345    End
3346  
3347    Behavior = DeliverPayloadAIUpdate ModuleTag_08
3348      DoorDelay         = 500
3349      MaxAttempts       = 4
3350      DropOffset        = X:0 Y:0 Z:-10
3351      DropDelay         = 300     ; time in between each item dropped (if more than one)
3352      PutInContainer    = AmericaParachute
3353      DeliveryDistance  = 150
3354    End
3355    Locomotor = SET_NORMAL CINE_USA08_B52Locomotor
3356  
3357    Behavior = TransportContain ModuleTag_09
3358      Slots                       = 100                     ; hey, it's a BIG transport
3359      ScatterNearbyOnExit         = No
3360      OrientLikeContainerOnExit   = Yes
3361      KeepContainerVelocityOnExit = Yes
3362      ExitPitchRate               = 30
3363      ExitBone                    = WeaponA01
3364      AllowInsideKindOf           = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE
3365      DoorOpenTime                = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
3366      NumberOfExitPaths           = 0
3367      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
3368    End
3369      
3370    Behavior                          = JetSlowDeathBehavior ModuleTag_10
3371      DestructionDelay                = 2000 
3372      RollRate                        = 0.0
3373      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
3374      PitchRate                       = 0
3375      FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
3376      FXInitialDeath                  = FX_JetBigDeathInitial
3377      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
3378      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
3379      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
3380      FXSecondary                     = FX_BigPlaneDeath
3381  ;   FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
3382  ;   OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
3383  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
3384    End
3385  
3386    Behavior = TransitionDamageFX ModuleTag_11
3387      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
3388      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
3389    End
3390  
3391    Geometry = Box
3392    GeometryIsSmall = No
3393    GeometryMajorRadius = 60.0
3394    GeometryMinorRadius = 10.0
3395    GeometryHeight = 10.0
3396    Shadow = SHADOW_VOLUME
3397    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
3398  
3399  End
3400  
3401  
3402  ;------------------------------------------------------------------------------
3403  Object CarpetBomb
3404  
3405    ; *** ART Parameters ***
3406    Draw = W3DModelDraw ModuleTag_01
3407      DefaultConditionState
3408        Model = EXCarptBmb
3409      End
3410    End
3411  
3412    ; ***DESIGN parameters ***
3413    DisplayName      = OBJECT:CarpetBomb
3414    Side = America
3415    EditorSorting   = SYSTEM
3416    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
3417    VisionRange = 300.0  
3418    ArmorSet
3419      Conditions      = None
3420      Armor           = ProjectileArmor
3421      DamageFX        = None
3422    End
3423  
3424    ; *** AUDIO Parameters ***
3425    SoundFallingFromPlane = DaisyCutterWeapon
3426  
3427    ; *** ENGINEERING Parameters ***
3428    KindOf            = PROJECTILE
3429    Body = ActiveBody ModuleTag_02
3430      MaxHealth       = 100.0
3431      InitialHealth   = 100.0
3432    End
3433  
3434    Behavior = AIUpdateInterface ModuleTag_03
3435    End
3436    Locomotor = SET_NORMAL None
3437  
3438    Behavior = PhysicsBehavior ModuleTag_04
3439  
3440      Mass                  = 75.0
3441      AerodynamicFriction   = 1     ; this is now friction-per-sec
3442      ForwardFriction       = 33    ; this is now friction-per-sec
3443      CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
3444    End
3445  
3446    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
3447      DeathWeapon   = CarpetBombWeapon
3448      StartsActive  = Yes
3449    End
3450  
3451    Behavior = HeightDieUpdate ModuleTag_06
3452      TargetHeight = 1.0
3453      TargetHeightIncludesStructures = No
3454    End
3455  
3456    Behavior = SpecialPowerCompletionDie ModuleTag_07
3457      SpecialPowerTemplate = SuperweaponCarpetBomb
3458    End
3459  
3460    Behavior = FXListDie ModuleTag_08
3461      DeathFX = FX_CarpetBomb
3462    End
3463    Behavior = DestroyDie ModuleTag_09
3464      ;nothing
3465    End
3466  
3467  End
3468  
3469  ;------------------------------------------------------------------------------
3470  Object AuroraBomb
3471  
3472    ; *** ART Parameters ***
3473    Draw = W3DModelDraw ModuleTag_01
3474      DefaultConditionState
3475        Model = UVScorpion_m
3476      End
3477    End
3478  
3479    ; ***DESIGN parameters ***
3480    Side = America
3481    EditorSorting     = SYSTEM
3482    ArmorSet
3483      Conditions      = None
3484      Armor           = ProjectileArmor
3485      DamageFX        = None
3486    End
3487    VisionRange       = 0.0  
3488  
3489    ; *** AUDIO Parameters ***
3490  
3491    ; *** ENGINEERING Parameters ***
3492    KindOf            = PROJECTILE
3493    Body              = ActiveBody ModuleTag_02
3494      MaxHealth       = 100.0
3495      InitialHealth   = 100.0
3496    End
3497  
3498    Behavior              = PhysicsBehavior ModuleTag_03
3499      Mass                = 75.0
3500      AerodynamicFriction = 2     ; this is now friction-per-sec
3501      ForwardFriction     = 2     ; this is now friction-per-sec
3502      CenterOfMassOffset  = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
3503    End
3504  
3505    ; it may seem odd to have a "bomb" with a Locomotor, especially a Thrust locomotor,
3506    ; but there's a good reason: the Aurora moves so freakin' fast that it's really
3507    ; hard to (1) find a reliable drop location, and (2) actually get it close enough to
3508    ; that location. So we cheat: just get fairly close, then let the "bomb" do a little (subtle)
3509    ; navigation on the way down. This works pretty well and actually looks much better
3510    ; than you might think. (srj)
3511    Behavior = MissileAIUpdate ModuleTag_04
3512      TryToFollowTarget   = No 
3513      FuelLifetime        = 0
3514      IgnitionDelay       = 0
3515      InitialVelocity     = 0                ; in dist/sec
3516      DistanceToTravelBeforeTurning = 0
3517      DistanceToTargetBeforeDiving  = 0
3518    End
3519    Locomotor = SET_NORMAL AuroraBombLocomotor   ; yes, that's right.
3520  
3521    Geometry = Sphere
3522    GeometryIsSmall = Yes
3523    GeometryMajorRadius = 2.0
3524  
3525  End
3526  
3527  ;------------------------------------------------------------------------------
3528  ; this is the "standard" mine used for building upgrades
3529  Object ChinaStandardMine
3530  
3531    ; *** ART Parameters ***
3532    Draw = W3DModelDraw ModuleTag_01
3533      OkToChangeModelColor = Yes
3534      ; NOTE: ParticleSysBone doesn't work correctly with DefaultConditionState!
3535      ; fix someday! (srj)
3536      ConditionState = NONE
3537        Model           = EXAMineGroup
3538        ParticleSysBone = Mine01 MineFX
3539        ParticleSysBone = Mine02 MineFX
3540        ParticleSysBone = Mine03 MineFX
3541        ParticleSysBone = Mine04 MineFX
3542        ParticleSysBone = Mine05 MineFX
3543        ParticleSysBone = Mine06 MineFX
3544        ParticleSysBone = Mine07 MineFX
3545        ParticleSysBone = Mine08 MineFX
3546      End
3547      ConditionState = RUBBLE
3548        Model = None
3549      End
3550    End
3551  
3552    ; ***DESIGN parameters ***
3553    DisplayName       = OBJECT:StructureMine
3554    EditorSorting     = MISC_MAN_MADE
3555    KindOf            = STICK_TO_TERRAIN_SLOPE IMMOBILE MINE NO_HEAL_ICON
3556    ArmorSet
3557      Conditions      = None
3558      Armor           = MineArmor
3559      DamageFX        = None
3560    End
3561  
3562    ; *** ENGINEERING Parameters ***  
3563    Body = ActiveBody ModuleTag_02
3564      MaxHealth       = 100.0
3565      InitialHealth   = 100.0
3566    End
3567    
3568    Behavior = StealthUpdate ModuleTag_03
3569      StealthDelay                = 0 ; msec
3570      StealthForbiddenConditions  = NONE
3571      FriendlyOpacityMin          = 0.0%
3572      FriendlyOpacityMax          = 0.0%
3573      InnateStealth               = Yes
3574      OrderIdleEnemiesToAttackMeUponReveal  = No
3575    End
3576  
3577    ; this is a misleading name, since it's really single-Mine Behavior...
3578    Behavior = MinefieldBehavior     ModuleTag_04
3579      DetonationWeapon            = StructureMineWeapon        ; what happens when we detonate
3580      DetonatedBy                 = ENEMIES NEUTRAL
3581      ; we no longer want the "scoot" behavior. it looks funky with current art. (srj)
3582      ;ScootFromStartingPointTime  = 500
3583      RepeatDetonateMoveThresh    = 5.0
3584      NumVirtualMines             = 8
3585      Regenerates                 = Yes            ; Standard mines DO regenerate.
3586      StopsRegenAfterCreatorDies  = Yes
3587      DegenPercentPerSecondAfterCreatorDies = 3.33%  ; take about 30 seconds to die.
3588    End
3589  
3590    ; Standard mines DO heal.
3591    Behavior = AutoHealBehavior ModuleTag_05
3592      StartsActive      = Yes
3593      HealingAmount     = 2
3594      HealingDelay      = 5000 ; msec
3595      StartHealingDelay = 15000 ; wait this long after we are damaged to start healing
3596    End
3597  
3598    Geometry            = CYLINDER
3599    GeometryMajorRadius = 30.0
3600    GeometryHeight      = 1.0
3601    GeometryIsSmall     = No
3602    
3603  End
3604  
3605  ;------------------------------------------------------------------------------
3606  Object ChinaClusterMine
3607  
3608    ; *** ART Parameters ***
3609    Draw = W3DModelDraw ModuleTag_01
3610      OkToChangeModelColor = Yes
3611      ; NOTE: ParticleSysBone doesn't work correctly with DefaultConditionState!
3612      ; fix someday! (srj)
3613      ConditionState = NONE
3614        Model = EXAMineGroup
3615        ParticleSysBone = Mine01 MineFX
3616        ParticleSysBone = Mine02 MineFX
3617        ParticleSysBone = Mine03 MineFX
3618        ParticleSysBone = Mine04 MineFX
3619        ParticleSysBone = Mine05 MineFX
3620        ParticleSysBone = Mine06 MineFX
3621        ParticleSysBone = Mine07 MineFX
3622        ParticleSysBone = Mine08 MineFX
3623      End
3624      ConditionState = RUBBLE
3625        Model = None
3626      End
3627    End
3628  
3629    ; ***DESIGN parameters ***
3630    DisplayName       = OBJECT:ClusterMine
3631    EditorSorting     = MISC_MAN_MADE
3632    KindOf            = STICK_TO_TERRAIN_SLOPE IMMOBILE MINE NO_HEAL_ICON
3633    ArmorSet
3634      Conditions      = None
3635      Armor           = MineArmor
3636      DamageFX        = None
3637    End
3638  
3639    ; *** ENGINEERING Parameters ***  
3640    Body = ActiveBody ModuleTag_02
3641      MaxHealth       = 100.0
3642      InitialHealth   = 100.0
3643    End
3644    
3645    Behavior = StealthUpdate ModuleTag_03
3646      StealthDelay                = 0                  ; msec
3647      StealthForbiddenConditions  = NONE
3648      FriendlyOpacityMin          = 0.0%
3649      FriendlyOpacityMax          = 0.0%
3650      InnateStealth               = Yes
3651      OrderIdleEnemiesToAttackMeUponReveal  = No
3652    End
3653  
3654    ; this is a misleading name, since it's really single-Mine Behavior...
3655    Behavior = MinefieldBehavior     ModuleTag_04
3656      DetonationWeapon            = ClusterMineWeapon        ; what happens when we detonate
3657      DetonatedBy                 = ENEMIES NEUTRAL
3658      ScootFromStartingPointTime  = 1000
3659      RepeatDetonateMoveThresh    = 5.0
3660      NumVirtualMines             = 8
3661      Regenerates                 = No            ; Cluster mines do not regenerate.
3662    End
3663  
3664  ; Cluster mines do not heal.
3665  ;  Behavior = AutoHealBehavior ModuleTag_05
3666  ;    StartsActive      = Yes
3667  ;    HealingAmount     = 2
3668  ;    HealingDelay      = 1000 ; msec
3669  ;    StartHealingDelay = 15000 ; wait this long after we are damaged to start healing
3670  ;  End
3671  
3672    Geometry            = CYLINDER
3673    GeometryMajorRadius = 30.0
3674    GeometryHeight      = 1.0
3675    GeometryIsSmall     = No
3676    
3677  End
3678  
3679  ;------------------------------------------------------------------------------
3680  Object ClusterMinesBomb
3681  
3682    ; *** ART Parameters ***
3683    Draw = W3DModelDraw ModuleTag_01
3684      OkToChangeModelColor = Yes
3685      DefaultConditionState
3686        Model         = EXAMine_A
3687      End
3688    End
3689  
3690    ; ***DESIGN parameters ***
3691    DisplayName           = OBJECT:ClusterMinesBomb
3692    Side                  = China
3693    EditorSorting         = SYSTEM
3694    TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
3695    VisionRange           = 0
3696    ArmorSet
3697      Conditions      = None
3698      Armor           = ProjectileArmor
3699      DamageFX        = None
3700    End
3701  
3702    ; *** AUDIO Parameters ***
3703    
3704    ; *** ENGINEERING Parameters ***
3705    KindOf            = PROJECTILE  
3706    Body = ActiveBody ModuleTag_02
3707      MaxHealth       = 100.0
3708      InitialHealth   = 100.0
3709    End
3710  
3711    ; alas, this DOES need ai...
3712    Behavior = AIUpdateInterface ModuleTag_03
3713    End
3714  
3715    Locomotor = SET_NORMAL None
3716  
3717    Behavior = PhysicsBehavior ModuleTag_04
3718      Mass                  = 75.0
3719      AerodynamicFriction   = 1     ; this is now friction-per-sec
3720      ForwardFriction       = 33    ; this is now friction-per-sec
3721      CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
3722    End
3723  
3724    Behavior = GenerateMinefieldBehavior ModuleTag_05
3725      MineName                = ChinaClusterMine
3726      DistanceAroundObject    = 80
3727      GenerateOnlyOnDeath     = Yes
3728      SmartBorder             = Yes
3729      SmartBorderSkipInterior = No
3730      AlwaysCircular          = Yes
3731      GenerationFX            = WeaponFX_ClusterMineImpact
3732    End
3733  
3734  
3735    Behavior = HeightDieUpdate ModuleTag_06
3736      TargetHeight = 60.0
3737      TargetHeightIncludesStructures = No
3738    End
3739  
3740    Behavior = DestroyDie ModuleTag_07
3741      ;nothing
3742    End
3743  
3744    Geometry = SPHERE                      ;Collision geometry
3745    GeometryMajorRadius = 1.0              ;Collision major radius
3746    GeometryMinorRadius = 1.0              ;Collision minor radius
3747    GeometryHeight = 1.0                   ;Height for geometry
3748    GeometryIsSmall = Yes                  ;Is small geometry
3749  
3750  End
3751  
3752  
3753  ;------------------------------------------------------------------------------
3754  Object EMPPulseBomb
3755  
3756    ; *** ART Parameters ***
3757    Draw = W3DModelDraw ModuleTag_01
3758      OkToChangeModelColor = Yes
3759      DefaultConditionState
3760        Model         = EXAMine_A
3761      End
3762    End
3763  
3764    ; ***DESIGN parameters ***
3765    DisplayName           = OBJECT:EMPPulseBomb
3766    Side                  = China
3767    EditorSorting         = SYSTEM
3768    TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
3769    VisionRange           = 0
3770    ArmorSet
3771      Conditions      = None
3772      Armor           = ProjectileArmor
3773      DamageFX        = None
3774    End
3775  
3776    ; *** AUDIO Parameters ***
3777    
3778    ; *** ENGINEERING Parameters ***
3779    KindOf            = PROJECTILE  
3780    Body = ActiveBody ModuleTag_02
3781      MaxHealth       = 100.0
3782      InitialHealth   = 100.0
3783    End
3784  
3785    ; alas, this DOES need ai...
3786    Behavior = AIUpdateInterface ModuleTag_03
3787    End
3788  
3789    Locomotor = SET_NORMAL None
3790  
3791    Behavior = PhysicsBehavior ModuleTag_04
3792      Mass                  = 75.0
3793      AerodynamicFriction   = 1     ; this is now friction-per-sec
3794      ForwardFriction       = 33    ; this is now friction-per-sec
3795      CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
3796    End
3797  
3798  
3799    Behavior = HeightDieUpdate ModuleTag_05
3800      TargetHeight = 15.0
3801      TargetHeightIncludesStructures = No
3802    End
3803  
3804    Behavior = CreateObjectDie ModuleTag_06
3805      CreationList = OCL_EMPPulseEffectSpheroids
3806    End
3807  
3808    Behavior = FXListDie ModuleTag_07
3809      DeathFX = WeaponFX_EMPPulseImpact
3810      OrientToObject = No
3811    End
3812  
3813    Behavior = DestroyDie ModuleTag_08
3814      ;nothing
3815    End
3816  
3817    Geometry = SPHERE                      ;Collision geometry
3818    GeometryMajorRadius = 1.0              ;Collision major radius
3819    GeometryMinorRadius = 1.0              ;Collision minor radius
3820    GeometryHeight = 1.0                   ;Height for geometry
3821    GeometryIsSmall = Yes                  ;Is small geometry
3822  
3823  End
3824  
3825  
3826  
3827  ;------------------------------------------------------------------------------
3828  Object BlackMarketNuke
3829  
3830    ; *** ART Parameters ***
3831    Draw = W3DModelDraw ModuleTag_01
3832      OkToChangeModelColor = Yes
3833      DefaultConditionState
3834        Model = AVBomber_B
3835      End
3836    End
3837  
3838    ; ***DESIGN parameters ***
3839    DisplayName         = OBJECT:BlackMarketNuke
3840    Side                = GLA
3841    EditorSorting       = SYSTEM
3842    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
3843    ArmorSet
3844      Conditions        = None
3845      Armor             = ProjectileArmor
3846      DamageFX          = None
3847    End
3848  
3849    ; *** AUDIO Parameters ***
3850    
3851    ; *** ENGINEERING Parameters ***
3852    KindOf            = PROJECTILE
3853    Body = ActiveBody ModuleTag_02
3854      MaxHealth       = 100.0
3855      InitialHealth   = 100.0
3856    End
3857    
3858    Behavior = AIUpdateInterface ModuleTag_03
3859    End
3860  
3861    Locomotor = SET_NORMAL None
3862  
3863    Behavior = PhysicsBehavior ModuleTag_04
3864      Mass                  = 75.0
3865      AerodynamicFriction   = 1     ; this is now friction-per-sec
3866      ForwardFriction       = 33    ; this is now friction-per-sec
3867      CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
3868    End
3869  
3870    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
3871      DeathWeapon   = BlackMarketNukeWeapon
3872      StartsActive  = Yes
3873    End
3874  
3875    Behavior = HeightDieUpdate ModuleTag_06
3876      TargetHeight = 1.0
3877      TargetHeightIncludesStructures = No
3878    End
3879  
3880    Behavior = SpecialPowerCompletionDie ModuleTag_07
3881      SpecialPowerTemplate = SuperweaponBlackMarketNuke
3882    End
3883  
3884    Behavior = DestroyDie ModuleTag_08
3885      ;nothing
3886    End
3887  
3888    Behavior = FXListDie ModuleTag_09
3889      DeathFX = FX_NukeGLA
3890      OrientToObject = No
3891    End
3892  
3893    Geometry = Sphere
3894    GeometryIsSmall = Yes
3895    GeometryMajorRadius = 12.0
3896  
3897  End
3898  
3899  ;------------------------------------------------------------------------------
3900  Object AnthraxBomb
3901  
3902    ; *** ART Parameters ***
3903    Draw = W3DModelDraw ModuleTag_01
3904      OkToChangeModelColor = Yes
3905      DefaultConditionState
3906        Model = AVBomber_B
3907      End
3908    End
3909  
3910    ; ***DESIGN parameters ***
3911    DisplayName         = OBJECT:AnthraxBomb
3912    Side                = GLA
3913    EditorSorting       = SYSTEM
3914    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
3915    VisionRange         = 300.0  
3916    ShroudClearingRange = 0
3917    ArmorSet
3918      Conditions      = None
3919      Armor           = ProjectileArmor
3920      DamageFX        = None
3921    End
3922  
3923    ; *** AUDIO Parameters ***
3924    SoundFallingFromPlane = DaisyCutterWeapon
3925      
3926    ; *** ENGINEERING Parameters ***
3927    KindOf            = PROJECTILE
3928    Body = ActiveBody ModuleTag_02
3929      MaxHealth       = 100.0
3930      InitialHealth   = 100.0
3931    End
3932    
3933    Behavior = AIUpdateInterface ModuleTag_03
3934    End
3935    Locomotor = SET_NORMAL None
3936  
3937    Behavior = PhysicsBehavior ModuleTag_04
3938      Mass                  = 75.0
3939      AerodynamicFriction   = 1  ; this is now friction-per-sec
3940      ForwardFriction       = 33     ; this is now friction-per-sec
3941      CenterOfMassOffset    = 2  ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
3942    End
3943  
3944    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
3945      DeathWeapon   = AnthraxBombWeapon
3946      StartsActive  = Yes
3947    End
3948  
3949    Behavior = HeightDieUpdate ModuleTag_06
3950      TargetHeight = 40.0
3951      TargetHeightIncludesStructures = No
3952    End
3953  
3954    Behavior = SpecialPowerCompletionDie ModuleTag_07
3955      SpecialPowerTemplate = SuperweaponAnthraxBomb
3956    End
3957    Behavior = DestroyDie ModuleTag_08
3958      ;nothing
3959    End
3960  
3961     Behavior = FXListDie ModuleTag_09
3962      DeathFX = FX_AnthraxBomb
3963    End
3964  
3965  ;  Geometry = Sphere
3966   ; GeometryIsSmall = Yes
3967    ;GeometryMajorRadius = 12.0
3968  
3969  End
3970  
3971  ;------------------------------------------------------------------------------
3972  Object DaisyCutterBomb
3973  
3974    ; *** ART Parameters ***
3975    Draw = W3DModelDraw ModuleTag_01
3976      OkToChangeModelColor = Yes
3977      DefaultConditionState
3978        Model = AVBomber_B
3979      End
3980    End
3981  
3982    ; ***DESIGN parameters ***
3983    DisplayName         = OBJECT:DaisyCutterBomb
3984    EditorSorting       = SYSTEM
3985    TransportSlotCount  = 10                 ;how many "slots" we take in a transport (0 == not transportable)
3986    VisionRange         = 300.0  
3987    ShroudClearingRange = 0
3988    ArmorSet
3989      Conditions      = None
3990      Armor           = ProjectileArmor
3991      DamageFX        = None
3992    End
3993  
3994    ; *** AUDIO Parameters ***
3995    SoundFallingFromPlane = DaisyCutterWeapon
3996    
3997    ; *** ENGINEERING Parameters ***
3998    KindOf            = PROJECTILE
3999    Body = ActiveBody ModuleTag_02
4000      MaxHealth       = 100.0
4001      InitialHealth   = 100.0
4002    End
4003  
4004    Behavior = CreateObjectDie ModuleTag_03
4005      CreationList = OCL_DaisyCutterExplode
4006    End
4007    Behavior = FXListDie ModuleTag_04
4008      DeathFX = FX_DaisyCutterExplode
4009    End
4010    Behavior = DestroyDie ModuleTag_05
4011      ;nothing
4012    End
4013       
4014    Behavior = AIUpdateInterface ModuleTag_06
4015    End
4016    Locomotor = SET_NORMAL None
4017    Behavior = PhysicsBehavior ModuleTag_07
4018      Mass                = 75.0
4019      AerodynamicFriction = 1  ; this is now friction-per-sec
4020      ForwardFriction     = 33     ; this is now friction-per-sec
4021      CenterOfMassOffset  = 2  ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
4022    End
4023    Behavior = HeightDieUpdate ModuleTag_08
4024      TargetHeight = 50.0
4025      TargetHeightIncludesStructures = Yes
4026    End
4027  
4028    Behavior = SpecialPowerCompletionDie ModuleTag_09
4029      SpecialPowerTemplate = SuperweaponDaisyCutter
4030    End
4031  
4032    Geometry = Sphere
4033    GeometryIsSmall = Yes
4034    GeometryMajorRadius = 12.0
4035  
4036  End
4037  
4038  ;------------------------------------------------------------------------------
4039  Object DaisyCutterGas
4040  
4041    ; *** ART Parameters ***
4042  ;  Draw = W3DModelDraw
4043  ;;    ConditionState      = NONE
4044  ;      Model             = PMDumpst04
4045  ;    End
4046  ;  End
4047  
4048    ; *** DESIGN Parameters ***
4049  
4050    ; *** ENGINEERING Parameters ***
4051    KindOf = IMMOBILE
4052    Body                  = ActiveBody ModuleTag_01
4053      MaxHealth           = 1.0
4054      InitialHealth       = 1.0
4055    End
4056  
4057    Behavior = PhysicsBehavior ModuleTag_02
4058      Mass                = 150.0
4059      AerodynamicFriction = 7  ; this is now friction-per-sec
4060      ForwardFriction     = 200   ; this is now friction-per-sec
4061    End
4062    Behavior = HeightDieUpdate ModuleTag_03
4063      TargetHeight                     = 40.0
4064      TargetHeightIncludesStructures   = Yes
4065      DestroyAttachedParticlesAtHeight = 41.0   ; Hack, todo remove this
4066    End
4067    Behavior = SlowDeathBehavior ModuleTag_04
4068      DestructionDelay        = 1000
4069      DestructionDelayVariance = 100
4070      FX                  = INITIAL FX_DaisyCutterIgnite
4071      FX                  = FINAL   FX_DaisyCutterFinalExplosion
4072      Weapon              = MIDPOINT   DaisyCutterFlameWeapon    ; Just a spot of flame to light trees on fire
4073      Weapon              = FINAL   DaisyCutterDetonationWeapon
4074    End
4075  
4076  End
4077  
4078  ;------------------------------------------------------------------------------
4079  Object NeutronMissile
4080  
4081    ; *** ART Parameters ***
4082    Draw               = W3DModelDraw ModuleTag_01
4083      OkToChangeModelColor = Yes
4084      ConditionState   = NONE
4085        Model          = NBNRocket
4086      End
4087      ConditionState   = DAMAGED REALLYDAMAGED RUBBLE
4088        Model          = NONE
4089      End
4090      
4091    End
4092  
4093    ; ***DESIGN parameters ***
4094    DisplayName        = OBJECT:NeutronMissile
4095    KindOf             = UNATTACKABLE
4096    EditorSorting      = SYSTEM
4097    VisionRange = 300.0  
4098    ShroudClearingRange = 0
4099    TransportSlotCount = 10
4100    ArmorSet
4101      Conditions       = None
4102      Armor            = ProjectileArmor
4103      DamageFX         = None
4104    End
4105  
4106    ; *** AUDIO Parameters ***
4107    ; SoundFallingFromPlane = DaisyCutterWeapon
4108      
4109    ; *** ENGINEERING Parameters ***
4110    Body = ActiveBody ModuleTag_02
4111      MaxHealth        = 99999999.0
4112      InitialHealth    = 99999999.0
4113    End
4114  
4115    Behavior = NeutronMissileUpdate ModuleTag_03
4116      DistanceToTravelBeforeTurning = 300       ; goes straight up a long ways first
4117      MaxTurnRate = 7200                        ; huge, since it turns off-camera
4118      ForwardDamping = 0.1
4119      RelativeSpeed = 2.0
4120      LaunchFX = FX_NeutronMissileLaunch
4121      IgnitionFX = FX_NeutronMissileIgnition
4122      TargetFromDirectlyAbove = 500      ; aim for an intermed spot directly above the target, so we come straight down onto it
4123      SpecialAccelFactor = 1
4124      SpecialSpeedTime = 1500
4125      SpecialSpeedHeight = 160
4126      SpecialJitterDistance = 0.4
4127      DeliveryDecalRadius = 210
4128      DeliveryDecal
4129        Texture           = SCCNuclearMissile_China
4130        Style             = SHADOW_ALPHA_DECAL
4131        OpacityMin        = 25%
4132        OpacityMax        = 50%
4133        OpacityThrobTime  = 500
4134        Color             = R:255 G:0 B:0 A:255 
4135        OnlyVisibleToOwningPlayer = Yes
4136      End
4137    End
4138  
4139    Behavior = HeightDieUpdate ModuleTag_04
4140      TargetHeight        = 100.0
4141      TargetHeightIncludesStructures = No
4142      OnlyWhenMovingDown  = Yes
4143      SnapToGroundOnDeath = Yes
4144      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
4145    End
4146  
4147    Behavior = SpecialPowerCompletionDie ModuleTag_05
4148      SpecialPowerTemplate = SuperweaponNeutronMissile
4149    End
4150  
4151    Behavior = NeutronMissileSlowDeathBehavior ModuleTag_06
4152      DestructionDelay    = 3501
4153      ScorchMarkSize      = 320
4154      FXList              = FX_Nuke
4155      
4156      Blast1Enabled       = Yes
4157      Blast1Delay         = 580     ;in milliseconds
4158      Blast1ScorchDelay   = 100     ;in milliseconds
4159      Blast1InnerRadius   = 60.0    ;objects inside this get the full damage
4160      Blast1OuterRadius   = 60.0    ;objects inside this get some of the full damage
4161      Blast1MaxDamage     = 0.0     ;damage within inner radius of blast
4162      Blast1MinDamage     = 0.0     ;always do at least this much damage to objects
4163      Blast1ToppleSpeed   = 0.5     ;higher #'s topple faster
4164      Blast1PushForce     = 10.0    ;higher #'s push more
4165      
4166      Blast2Enabled       = Yes
4167      Blast2Delay         = 660    ;in milliseconds
4168      Blast2ScorchDelay   = 180     ;in milliseconds
4169      Blast2InnerRadius   = 90.0    ;objects inside this get the full damage
4170      Blast2OuterRadius   = 90.0    ;objects inside this get some of the full damage
4171      Blast2MaxDamage     = 0.0     ;damage within inner radius of blast
4172      Blast2MinDamage     = 0.0     ;always do at least this much damage to objects
4173      Blast2ToppleSpeed   = 0.45    ;higher #'s topple faster
4174      Blast2PushForce     = 8.0     ;higher #'s push more
4175      
4176      Blast3Enabled       = Yes
4177      Blast3Delay         = 720    ;in milliseconds
4178      Blast3ScorchDelay   = 260     ;in milliseconds
4179      Blast3InnerRadius   = 120.0   ;objects inside this get the full damage
4180      Blast3OuterRadius   = 120.0   ;objects inside this get some of the full damage
4181      Blast3MaxDamage     = 0.0     ;damage within inner radius of blast
4182      Blast3MinDamage     = 0.0     ;always do at least this much damage to objects
4183      Blast3ToppleSpeed   = 0.42    ;higher #'s topple faster
4184      Blast3PushForce     = 6.0     ;higher #'s push more
4185  
4186      Blast4Enabled       = Yes
4187      Blast4Delay         = 850    ;in milliseconds
4188      Blast4ScorchDelay   = 340     ;in milliseconds
4189      Blast4InnerRadius   = 150.0   ;objects inside this get the full damage
4190      Blast4OuterRadius   = 150.0   ;objects inside this get some of the full damage
4191      Blast4MaxDamage     = 0.0     ;damage within inner radius of blast
4192      Blast4MinDamage     = 0.0     ;always do at least this much damage to objects
4193      Blast4ToppleSpeed   = 0.40    ;higher #'s topple faster
4194      Blast4PushForce     = 6.0     ;higher #'s push more
4195  
4196      Blast5Enabled       = Yes
4197      Blast5Delay         = 1000    ;in milliseconds
4198      Blast5ScorchDelay   = 420     ;in milliseconds
4199      Blast5InnerRadius   = 180.0   ;objects inside this get the full damage
4200      Blast5OuterRadius   = 180.0   ;objects inside this get some of the full damage
4201      Blast5MaxDamage     = 0.0     ;damage within inner radius of blast
4202      Blast5MinDamage     = 0.0     ;always do at least this much damage to objects
4203      Blast5ToppleSpeed   = 0.38    ;higher #'s topple faster
4204      Blast5PushForce     = 6.0     ;higher #'s push more
4205      
4206      Blast6Enabled       = Yes
4207      Blast6Delay         = 1180    ;in milliseconds
4208      Blast6ScorchDelay   = 500     ;in milliseconds
4209      Blast6InnerRadius   = 60.0    ;objects inside this get the full damage
4210      Blast6OuterRadius   = 210.0   ;objects inside this get some of the full damage
4211      Blast6MaxDamage     = 3500.0  ;damage within inner radius of blast
4212      Blast6MinDamage     = 300.0   ;always do at least this much damage to objects
4213      Blast6ToppleSpeed   = 0.35    ;higher #'s topple faster
4214      Blast6PushForce     = 4.0     ;higher #'s push more
4215  
4216      Blast7Enabled       = Yes
4217      Blast7Delay         = 999999  ;in milliseconds, don't do the damage wave
4218      Blast7ScorchDelay   = 620     ;in milliseconds
4219      Blast7OuterRadius   = 210.0   ;objects inside this get some of the full damage
4220  
4221      Blast8Enabled       = Yes
4222      Blast8Delay         = 999999  ;in milliseconds, don't do the damage wave    
4223      Blast8ScorchDelay   = 700     ;in milliseconds
4224      Blast8OuterRadius   = 210.0   ;objects inside this get some of the full damage
4225  
4226      Blast9Enabled       = Yes
4227      Blast9Delay         = 999999  ;in milliseconds, don't do the damage wave    
4228      Blast9ScorchDelay   = 800     ;in milliseconds
4229      Blast9OuterRadius   = 210.0   ;objects inside this get some of the full damage
4230      
4231      OCL            = MIDPOINT   OCL_NukeRadiationField
4232    End
4233  
4234    Geometry = CYLINDER
4235    GeometryIsSmall = Yes
4236    GeometryMajorRadius = 7.0
4237    GeometryHeight = 60.0
4238  
4239  End
4240  
4241  ;------------------------------------------------------------------------------
4242  Object CargoTruckNuke
4243  
4244    ; ***DESIGN parameters ***
4245    DisplayName        = OBJECT:NeutronMissile
4246    EditorSorting      = SYSTEM
4247    VisionRange = 300.0  
4248    ShroudClearingRange = 0
4249    ArmorSet
4250      Conditions       = None
4251      Armor            = ProjectileArmor
4252      DamageFX         = None
4253    End
4254  
4255    ; *** AUDIO Parameters ***
4256    ; SoundFallingFromPlane = DaisyCutterWeapon
4257      
4258    ; *** ENGINEERING Parameters ***
4259    Body = ActiveBody ModuleTag_01
4260      MaxHealth        = 99999999.0
4261      InitialHealth    = 99999999.0
4262    End
4263  
4264  
4265    ;The lifetime delays the explosion with enough time to play an audio cue.
4266    ;NOTE: The lifetime update is set in the ObjectCreationList that creates
4267    ;      this object!!!
4268    Behavior = LifetimeUpdate ModuleTag_02
4269      MinLifetime = 3000   ; min lifetime in msec
4270      MaxLifetime = 3000   ; max lifetime in msec
4271    End
4272  
4273    Behavior = NeutronMissileSlowDeathBehavior ModuleTag_03
4274      DestructionDelay = 3501
4275      ScorchMarkSize      = 320
4276      FXList              = FX_Nuke
4277      
4278      Blast1Enabled       = Yes
4279      Blast1Delay         = 580     ;in milliseconds
4280      Blast1ScorchDelay   = 100     ;in milliseconds
4281      Blast1InnerRadius   = 60.0    ;objects inside this get the full damage
4282      Blast1OuterRadius   = 60.0    ;objects inside this get some of the full damage
4283      Blast1MaxDamage     = 0.0     ;damage within inner radius of blast
4284      Blast1MinDamage     = 0.0     ;always do at least this much damage to objects
4285      Blast1ToppleSpeed   = 0.5     ;higher #'s topple faster
4286      Blast1PushForce     = 10.0    ;higher #'s push more
4287      
4288      Blast2Enabled       = Yes
4289      Blast2Delay         = 660    ;in milliseconds
4290      Blast2ScorchDelay   = 180     ;in milliseconds
4291      Blast2InnerRadius   = 90.0    ;objects inside this get the full damage
4292      Blast2OuterRadius   = 90.0    ;objects inside this get some of the full damage
4293      Blast2MaxDamage     = 0.0     ;damage within inner radius of blast
4294      Blast2MinDamage     = 0.0     ;always do at least this much damage to objects
4295      Blast2ToppleSpeed   = 0.45    ;higher #'s topple faster
4296      Blast2PushForce     = 8.0     ;higher #'s push more
4297      
4298      Blast3Enabled       = Yes
4299      Blast3Delay         = 720    ;in milliseconds
4300      Blast3ScorchDelay   = 260     ;in milliseconds
4301      Blast3InnerRadius   = 120.0   ;objects inside this get the full damage
4302      Blast3OuterRadius   = 120.0   ;objects inside this get some of the full damage
4303      Blast3MaxDamage     = 0.0     ;damage within inner radius of blast
4304      Blast3MinDamage     = 0.0     ;always do at least this much damage to objects
4305      Blast3ToppleSpeed   = 0.42    ;higher #'s topple faster
4306      Blast3PushForce     = 6.0     ;higher #'s push more
4307  
4308      Blast4Enabled       = Yes
4309      Blast4Delay         = 850    ;in milliseconds
4310      Blast4ScorchDelay   = 340     ;in milliseconds
4311      Blast4InnerRadius   = 150.0   ;objects inside this get the full damage
4312      Blast4OuterRadius   = 150.0   ;objects inside this get some of the full damage
4313      Blast4MaxDamage     = 0.0     ;damage within inner radius of blast
4314      Blast4MinDamage     = 0.0     ;always do at least this much damage to objects
4315      Blast4ToppleSpeed   = 0.40    ;higher #'s topple faster
4316      Blast4PushForce     = 6.0     ;higher #'s push more
4317  
4318      Blast5Enabled       = Yes
4319      Blast5Delay         = 1000    ;in milliseconds
4320      Blast5ScorchDelay   = 420     ;in milliseconds
4321      Blast5InnerRadius   = 180.0   ;objects inside this get the full damage
4322      Blast5OuterRadius   = 180.0   ;objects inside this get some of the full damage
4323      Blast5MaxDamage     = 0.0     ;damage within inner radius of blast
4324      Blast5MinDamage     = 0.0     ;always do at least this much damage to objects
4325      Blast5ToppleSpeed   = 0.38    ;higher #'s topple faster
4326      Blast5PushForce     = 6.0     ;higher #'s push more
4327      
4328      Blast6Enabled       = Yes
4329      Blast6Delay         = 1180    ;in milliseconds
4330      Blast6ScorchDelay   = 500     ;in milliseconds
4331      Blast6InnerRadius   = 60.0    ;objects inside this get the full damage
4332      Blast6OuterRadius   = 210.0   ;objects inside this get some of the full damage
4333      Blast6MaxDamage     = 3500.0  ;damage within inner radius of blast
4334      Blast6MinDamage     = 200.0   ;always do at least this much damage to objects
4335      Blast6ToppleSpeed   = 0.35    ;higher #'s topple faster
4336      Blast6PushForce     = 4.0     ;higher #'s push more
4337  
4338      Blast7Enabled       = Yes
4339      Blast7Delay         = 999999  ;in milliseconds, don't do the damage wave
4340      Blast7ScorchDelay   = 620     ;in milliseconds
4341      Blast7OuterRadius   = 210.0   ;objects inside this get some of the full damage
4342  
4343      Blast8Enabled       = Yes
4344      Blast8Delay         = 999999  ;in milliseconds, don't do the damage wave    
4345      Blast8ScorchDelay   = 700     ;in milliseconds
4346      Blast8OuterRadius   = 210.0   ;objects inside this get some of the full damage
4347  
4348      Blast9Enabled       = Yes
4349      Blast9Delay         = 999999  ;in milliseconds, don't do the damage wave    
4350      Blast9ScorchDelay   = 800     ;in milliseconds
4351      Blast9OuterRadius   = 210.0   ;objects inside this get some of the full damage
4352      
4353    End
4354  
4355    Geometry = Cylinder
4356    GeometryIsSmall = Yes
4357    GeometryMajorRadius = 7.0
4358    GeometryHeight = 60.0
4359  End
4360  
4361  ;------------------------------------------------------------------------------
4362  Object ScudStormMissile
4363  
4364    ; *** ART Parameters ***
4365    Draw               = W3DModelDraw ModuleTag_01
4366      OkToChangeModelColor = Yes
4367      DefaultConditionState
4368        Model          = UBScudStrm_M
4369      End
4370      ConditionState   = DAMAGED REALLYDAMAGED RUBBLE
4371        Model          = NONE
4372      End
4373      
4374    End
4375  
4376    ; ***DESIGN parameters ***
4377    KindOf = PROJECTILE ;BALLISTIC_MISSILE
4378    EditorSorting       = SYSTEM
4379    VisionRange         = 300.0  
4380    ShroudClearingRange = 0
4381    TransportSlotCount  = 10
4382    ArmorSet
4383      Conditions       = None
4384      Armor            = ProjectileArmor
4385      DamageFX         = None
4386    End
4387  
4388    ; *** AUDIO Parameters ***
4389    ; SoundFallingFromPlane = DaisyCutterWeapon
4390      
4391    ; *** ENGINEERING Parameters ***
4392    Body = ActiveBody ModuleTag_02
4393      MaxHealth        = 10000.0
4394      InitialHealth    = 10000.0
4395    End
4396  
4397    Behavior = PhysicsBehavior ModuleTag_03
4398      Mass = 500.0
4399    End
4400  
4401    Behavior = MissileAIUpdate ModuleTag_04
4402      TryToFollowTarget             = No 
4403      FuelLifetime                  = 0 ; zero is infinite
4404      InitialVelocity               = 0                ; in dist/sec
4405      IgnitionFX                    = FX_ScudStormIgnition
4406      DistanceToTravelBeforeTurning = 500
4407      DistanceToTargetBeforeDiving  = 200 ; When I hit this close to target, I ignore PreferredHeight.
4408    End
4409    Locomotor = SET_NORMAL SCUDStormMissileLocomotor
4410  
4411    Behavior = HeightDieUpdate ModuleTag_05
4412      TargetHeight                    = 15.0
4413      TargetHeightIncludesStructures  = No
4414      OnlyWhenMovingDown              = Yes
4415      SnapToGroundOnDeath             = Yes
4416      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
4417    End
4418  
4419    Behavior = DestroyDie ModuleTag_06
4420      ;nothing
4421    End
4422  
4423    Behavior = SpecialPowerCompletionDie ModuleTag_07
4424      SpecialPowerTemplate = SuperweaponScudStorm
4425    End
4426  
4427    Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
4428      DeathWeapon   = ScudStormDamageWeapon
4429      StartsActive  = Yes
4430      ConflictsWith = Upgrade_GLAAnthraxBeta      
4431    End
4432  
4433    Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
4434      DeathWeapon   = ScudStormDamageWeaponUpgraded
4435      StartsActive  = No                      ; turned on by upgrade
4436      TriggeredBy   = Upgrade_GLAAnthraxBeta         
4437    End
4438  
4439  
4440    Geometry = Cylinder
4441    GeometryIsSmall = Yes
4442    GeometryMajorRadius = 7.0
4443    GeometryHeight = 30.0
4444  
4445  End
4446  
4447  ;------------------------------------------------------------------------------
4448  Object AmericaJetAurora
4449  
4450    ; *** ART Parameters ***
4451    SelectPortrait         = T17
4452    ButtonImage            = T17
4453    
4454    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
4455    ;UpgradeCameo2 = NONE
4456    ;UpgradeCameo3 = NONE
4457    ;UpgradeCameo4 = NONE
4458    ;UpgradeCameo5 = NONE
4459    
4460    Draw = W3DModelDraw ModuleTag_01
4461  
4462      DefaultConditionState
4463        Model               = avf16
4464        HideSubObject       = BurnerFX03 BurnerFX04
4465        WeaponLaunchBone = PRIMARY WeaponA
4466      End
4467  
4468      ConditionState        = JETEXHAUST
4469        ; exhaust
4470        ParticleSysBone     = Wingtip01 JetContrail
4471        ParticleSysBone     = Wingtip02 JetContrail
4472      End
4473  
4474      ConditionState        = JETEXHAUST JETAFTERBURNER
4475        ; exhaust
4476        ParticleSysBone     = Wingtip01 JetContrail
4477        ParticleSysBone     = Wingtip02 JetContrail
4478        ; afterburner
4479        ShowSubObject       = BurnerFX03 BurnerFX04
4480        ParticleSysBone     = Engine01 JetLenzflare
4481        ParticleSysBone     = Engine02 JetLenzflare
4482      End
4483  
4484      ConditionState        = REALLYDAMAGED
4485        Model               = avf16
4486        ; damage
4487        ParticleSysBone     = Smoke01 JetSmoke
4488        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
4489      End
4490      
4491      ConditionState        = REALLYDAMAGED JETEXHAUST
4492        Model               = avf16
4493        ; damage
4494        ParticleSysBone     = Smoke01 JetSmoke
4495        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
4496        ; exhaust
4497        ParticleSysBone     = Wingtip01 JetContrail
4498        ParticleSysBone     = Wingtip02 JetContrail
4499      End
4500  
4501      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
4502        Model               = avf16
4503        ; damage
4504        ParticleSysBone     = Smoke01 JetSmoke
4505        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
4506        ; afterburner
4507        ShowSubObject       = BurnerFX03 BurnerFX04
4508        ParticleSysBone     = Engine01 JetLenzflare
4509        ParticleSysBone     = Engine02 JetLenzflare
4510        ; exhaust
4511        ParticleSysBone     = Wingtip01 JetContrail
4512        ParticleSysBone     = Wingtip02 JetContrail
4513      End
4514  
4515      ConditionState        = RUBBLE
4516        Model               = avf16
4517        HideSubObject       = None 
4518        ShowSubObject       = None
4519      End
4520  
4521      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
4522        Model               = avf16
4523        ;HideSubObject is needed cause there're inherited from default condition state      
4524        HideSubObject       = None 
4525        ShowSubObject       = None
4526        ParticleSysBone     = Engine01 JetExhaust
4527        ParticleSysBone     = Engine02 JetExhaust
4528        ; exhaust
4529        ParticleSysBone     = Wingtip01 JetContrail
4530        ParticleSysBone     = Wingtip02 JetContrail
4531      End
4532  
4533      OkToChangeModelColor = Yes
4534    End
4535  
4536    ; ***DESIGN parameters ***
4537    DisplayName         = OBJECT:Aurora
4538    EditorSorting       = VEHICLE
4539    Side                = America
4540    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
4541    VisionRange         = 300.0 
4542    ShroudClearingRange = 400
4543    Prerequisites
4544      Object = AmericaAirfield    
4545    End
4546    BuildCost           = 900
4547    BuildTime           = 14.0          ;in seconds     
4548    WeaponSet
4549      Conditions        = None 
4550      Weapon            = PRIMARY     f15Weapon
4551    End
4552    ArmorSet
4553      Conditions      = None
4554      Armor           = AirplaneArmor
4555      DamageFX        = None
4556    End
4557  
4558    ExperienceValue = 200 200 400 400   ;Experience point value at each level
4559    ExperienceRequired = 0 200 400 800  ;Experience points needed to gain each level
4560    IsTrainable = Yes                   ;Can gain experience
4561    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
4562    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
4563    CommandSet        = AmericaJetAuroraCommandSet
4564  
4565    ; *** AUDIO Parameters ***
4566    VoiceSelect = AuroraBomberVoiceSelect
4567    VoiceMove = AuroraBomberVoiceMove
4568    VoiceGuard = AuroraBomberVoiceMove
4569    VoiceAttack = AuroraBomberVoiceAttack
4570    SoundAmbient = AuroraBomberAmbientLoop
4571    SoundAmbientRubble    = NoSound
4572    SoundDie = AuroraBomberVoiceFalling
4573    UnitSpecificSounds
4574      VoiceCreate          = AuroraBomberVoiceCreate
4575      SoundEject           = PilotSoundEject
4576      VoiceEject           = PilotVoiceEject
4577      Afterburner          = RaptorAfterburner
4578      VoiceLowFuel         = AuroraBomberVoiceLowFuel
4579      VoiceGarrison        = AuroraBomberVoiceMove
4580    End
4581  
4582    ; *** ENGINEERING Parameters ***
4583    RadarPriority = UNIT
4584    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
4585    Body = ActiveBody ModuleTag_02
4586      MaxHealth       = 300.0
4587      InitialHealth   = 300.0
4588    End
4589  
4590    Behavior                          = JetSlowDeathBehavior ModuleTag_03
4591      FXOnGroundDeath                 = FX_JetOnGroundDeath
4592      OCLOnGroundDeath                = OCL_AuroraDeathFinalBlowUp
4593      DestructionDelay                = 99999999; destruction will happen when we
4594      RollRate                        = 0.2
4595      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
4596      PitchRate                       = 0.0
4597      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
4598      FXInitialDeath                  = FX_JetDeathInitial
4599      ;OCLInitialDeath                = None
4600      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
4601      FXSecondary                     = FX_JetDeathSecondary
4602      ;OCLSecondary                   = None
4603      FXHitGround                     = FX_JetDeathHitGround
4604      ;OCLHitGround                   = None
4605      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
4606      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
4607      OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
4608  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
4609    End
4610    Behavior = EjectPilotDie ModuleTag_04
4611      GroundCreationList = OCL_EjectPilotOnGround
4612      AirCreationList = OCL_EjectPilotViaParachute
4613      ExemptStatus = HIJACKED
4614      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
4615    End
4616  
4617    Behavior = PhysicsBehavior ModuleTag_05
4618      Mass = 500.0
4619    End
4620  
4621    Behavior = ExperienceScalarUpgrade ModuleTag_06
4622      TriggeredBy = Upgrade_AmericaAdvancedTraining
4623      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
4624    End
4625  
4626    Behavior = JetAIUpdate ModuleTag_07
4627      OutOfAmmoDamagePerSecond    = 10%    ; amount of damage to take per SEC (not per frame) when out of ammo
4628                                           ; note that it's expressed as a percent of max health, not an absolute
4629      TakeoffSpeedForMaxLift      = 100%   ; smaller numbers give more lift sooner when taking off
4630      TakeoffPause                = 500
4631      MinHeight                   = 5
4632      SneakyOffsetWhenAttacking   = -20.0  ; this is how far behind us people aim when we are in attack mode
4633      AttackLocomotorType         = SET_SUPERSONIC
4634      AttackLocomotorPersistTime  = 100    ; we start slowing down almost immediately
4635      AttackersMissPersistTime    = 2000   ; but remain untargetable fer a bit longer
4636      ReturnForAmmoLocomotorType  = SET_SLUGGISH
4637      ReturnToBaseIdleTime        = 10000         ; if idle for this long, return to base, even if not out of ammo
4638    End
4639    Locomotor = SET_NORMAL      AuroraJetLocomotor  
4640    Locomotor = SET_TAXIING     BasicJetTaxiLocomotor
4641  
4642    Behavior = FlammableUpdate ModuleTag_21
4643      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
4644      AflameDamageAmount = 3       ; taking this much damage...
4645      AflameDamageDelay = 500       ; this often.
4646    End
4647  
4648    Behavior                 = TransitionDamageFX ModuleTag_22
4649      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
4650      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
4651    End
4652  
4653  
4654    Geometry                 = Box
4655    GeometryIsSmall          = Yes
4656    GeometryMajorRadius      = 14.0
4657    GeometryMinorRadius      = 7.0
4658    GeometryHeight           = 5.0
4659    Shadow                   = SHADOW_VOLUME
4660    ShadowSizeX              = 89  ; minimum elevation angle above horizon. Used to limit shadow length
4661  
4662  End
4663  
4664  ;------------------------------------------------------------------------------
4665  Object AmericaJetAuroraMk2
4666  
4667    ; *** ART Parameters ***
4668    SelectPortrait         = SAAurora_L
4669    ButtonImage            = SAAurora
4670    
4671    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
4672    ;UpgradeCameo2 = NONE
4673    ;UpgradeCameo3 = NONE
4674    ;UpgradeCameo4 = NONE
4675    ;UpgradeCameo5 = NONE
4676    
4677    Draw = W3DModelDraw ModuleTag_01
4678  
4679      DefaultConditionState
4680        Model               = AVAurora
4681        HideSubObject       = BurnerFX03 BurnerFX04
4682        WeaponLaunchBone = PRIMARY WeaponA
4683      End
4684  
4685      ConditionState        = JETEXHAUST
4686        ; exhaust
4687        ParticleSysBone     = Wingtip01 JetContrail
4688        ParticleSysBone     = Wingtip02 JetContrail
4689      End
4690  
4691      ConditionState        = JETEXHAUST JETAFTERBURNER
4692        ; exhaust
4693        ParticleSysBone     = Wingtip01 JetContrail
4694        ParticleSysBone     = Wingtip02 JetContrail
4695        ; afterburner
4696        ShowSubObject       = BurnerFX03 BurnerFX04
4697        ParticleSysBone     = Engine01 JetLenzflare
4698        ParticleSysBone     = Engine02 JetLenzflare
4699      End
4700  
4701      ConditionState        = REALLYDAMAGED
4702        Model               = AVAurora_D
4703        ; damage
4704        ParticleSysBone     = Smoke01 JetSmoke
4705        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
4706      End
4707      
4708      ConditionState        = REALLYDAMAGED JETEXHAUST
4709        Model               = AVAurora_D
4710        ; damage
4711        ParticleSysBone     = Smoke01 JetSmoke
4712        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
4713        ; exhaust
4714        ParticleSysBone     = Wingtip01 JetContrail
4715        ParticleSysBone     = Wingtip02 JetContrail
4716      End
4717  
4718      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
4719        Model               = AVAurora_D
4720        ; damage
4721        ParticleSysBone     = Smoke01 JetSmoke
4722        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
4723        ; afterburner
4724        ShowSubObject       = BurnerFX03 BurnerFX04
4725        ParticleSysBone     = Engine01 JetLenzflare
4726        ParticleSysBone     = Engine02 JetLenzflare
4727        ; exhaust
4728        ParticleSysBone     = Wingtip01 JetContrail
4729        ParticleSysBone     = Wingtip02 JetContrail
4730      End
4731  
4732      ConditionState        = RUBBLE
4733        Model               = AVAurora_D1
4734        HideSubObject       = None 
4735        ShowSubObject       = None
4736      End
4737  
4738      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
4739        Model               = AVAurora_D1
4740        ;HideSubObject is needed cause there're inherited from default condition state      
4741        HideSubObject       = None 
4742        ShowSubObject       = None
4743        ParticleSysBone     = Engine01 JetExhaust
4744        ParticleSysBone     = Engine02 JetExhaust
4745        ; exhaust
4746        ParticleSysBone     = Wingtip01 JetContrail
4747        ParticleSysBone     = Wingtip02 JetContrail
4748      End
4749  
4750      OkToChangeModelColor = Yes
4751    End
4752  
4753    ; ***DESIGN parameters ***
4754    DisplayName         = OBJECT:Aurora
4755    EditorSorting       = VEHICLE
4756    Side                = America
4757    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
4758    VisionRange         = 180.0 
4759    ShroudClearingRange = 600
4760    Prerequisites
4761      Object = AmericaAirfield
4762      Object = AmericaStrategyCenter
4763    End
4764    BuildCost           = 2000
4765    BuildTime           = 25.0          ;in seconds     
4766    WeaponSet
4767      Conditions = None 
4768      Weapon = PRIMARY AuroraBombWeaponMk2
4769    End
4770    ArmorSet
4771      Conditions      = None
4772      Armor           = AirplaneArmor
4773      DamageFX        = None
4774    End
4775  
4776    ExperienceValue = 200 200 400 400   ;Experience point value at each level
4777    ExperienceRequired = 0 200 400 800  ;Experience points needed to gain each level
4778    IsTrainable = Yes                   ;Can gain experience
4779    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
4780    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
4781    CommandSet        = AmericaJetAuroraCommandSet
4782  
4783    ; *** AUDIO Parameters ***
4784    VoiceSelect = AuroraBomberVoiceSelect
4785    VoiceMove = AuroraBomberVoiceMove
4786    VoiceGuard = AuroraBomberVoiceMove
4787    VoiceAttack = AuroraBomberVoiceAttack
4788    SoundAmbient = AuroraBomberAmbientLoop
4789    SoundAmbientRubble    = NoSound
4790    SoundDie = AuroraBomberVoiceFalling
4791    UnitSpecificSounds
4792      VoiceCreate          = AuroraBomberVoiceCreate
4793      SoundEject           = PilotSoundEject
4794      VoiceEject           = PilotVoiceEject
4795      Afterburner          = RaptorAfterburner
4796      VoiceLowFuel         = AuroraBomberVoiceLowFuel
4797      VoiceGarrison        = AuroraBomberVoiceMove
4798    End
4799  
4800    ; *** ENGINEERING Parameters ***
4801    RadarPriority = UNIT
4802    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
4803    Body = ActiveBody ModuleTag_02
4804      MaxHealth       = 100.0
4805      InitialHealth   = 100.0
4806    End
4807  
4808    Behavior                          = JetSlowDeathBehavior ModuleTag_03
4809      FXOnGroundDeath                 = FX_JetOnGroundDeath
4810      OCLOnGroundDeath                = OCL_AuroraDeathFinalBlowUp
4811      DestructionDelay                = 99999999; destruction will happen when we
4812      RollRate                        = 0.2
4813      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
4814      PitchRate                       = 0.0
4815      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
4816      FXInitialDeath                  = FX_JetDeathInitial
4817      ;OCLInitialDeath                = None
4818      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
4819      FXSecondary                     = FX_JetDeathSecondary
4820      ;OCLSecondary                   = None
4821      FXHitGround                     = FX_JetDeathHitGround
4822      ;OCLHitGround                   = None
4823      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
4824      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
4825      OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
4826  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
4827    End
4828    Behavior = EjectPilotDie ModuleTag_04
4829      GroundCreationList = OCL_EjectPilotOnGround
4830      AirCreationList = OCL_EjectPilotViaParachute
4831      ExemptStatus = HIJACKED
4832      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
4833    End
4834  
4835    Behavior = PhysicsBehavior ModuleTag_05
4836      Mass = 500.0
4837    End
4838  
4839    Behavior = ExperienceScalarUpgrade ModuleTag_06
4840      TriggeredBy = Upgrade_AmericaAdvancedTraining
4841      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
4842    End
4843  
4844    Behavior = JetAIUpdate ModuleTag_07
4845      OutOfAmmoDamagePerSecond    = 10%    ; amount of damage to take per SEC (not per frame) when out of ammo
4846                                           ; note that it's expressed as a percent of max health, not an absolute
4847      TakeoffSpeedForMaxLift      = 100%   ; smaller numbers give more lift sooner when taking off
4848      TakeoffPause                = 500
4849      MinHeight                   = 5
4850      SneakyOffsetWhenAttacking   = -20.0  ; this is how far behind us people aim when we are in attack mode
4851      AttackLocomotorType         = SET_SUPERSONIC
4852      AttackLocomotorPersistTime  = 100    ; we start slowing down almost immediately
4853      AttackersMissPersistTime    = 2000   ; but remain untargetable fer a bit longer
4854      ReturnForAmmoLocomotorType  = SET_SLUGGISH
4855      ReturnToBaseIdleTime        = 10000         ; if idle for this long, return to base, even if not out of ammo
4856    End
4857    Locomotor = SET_NORMAL   RaptorJetLocomotor 
4858    Locomotor = SET_TAXIING     BasicJetTaxiLocomotor
4859  
4860    Behavior = FlammableUpdate ModuleTag_21
4861      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
4862      AflameDamageAmount = 3       ; taking this much damage...
4863      AflameDamageDelay = 500       ; this often.
4864    End
4865  
4866    Behavior                 = TransitionDamageFX ModuleTag_22
4867      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
4868      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
4869    End
4870  
4871  
4872    Geometry                 = Box
4873    GeometryIsSmall          = Yes
4874    GeometryMajorRadius      = 14.0
4875    GeometryMinorRadius      = 7.0
4876    GeometryHeight           = 5.0
4877    Shadow                   = SHADOW_VOLUME
4878    ShadowSizeX              = 89  ; minimum elevation angle above horizon. Used to limit shadow length
4879  
4880  End
4881  
4882  ;------------------------------------------------------------------------------
4883  Object AmericaJetStealthFighter
4884  
4885    ; *** ART Parameters ***
4886    SelectPortrait         = SAStealth_L
4887    ButtonImage            = SAStealth_L
4888    
4889    UpgradeCameo1 = Upgrade_AmericaLaserMissiles
4890    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
4891    ;UpgradeCameo3 = NONE
4892    ;UpgradeCameo4 = NONE
4893    ;UpgradeCameo5 = NONE
4894    
4895    Draw = W3DModelDraw ModuleTag_01
4896  
4897      DefaultConditionState
4898        Model                           = AVStealth
4899        HideSubObject                   = BurnerFX03 BurnerFX04
4900        WeaponLaunchBone  = PRIMARY WeaponA
4901      End
4902      
4903      ConditionState        = JETEXHAUST
4904        ParticleSysBone     = Wingtip01 JetContrail
4905        ParticleSysBone     = Wingtip02 JetContrail
4906      End
4907  
4908      ConditionState        = JETEXHAUST JETAFTERBURNER
4909        ; exhaust
4910        ParticleSysBone     = Wingtip01 JetContrail
4911        ParticleSysBone     = Wingtip02 JetContrail
4912        ; afterburners
4913        ShowSubObject       = BurnerFX03 BurnerFX04
4914        ParticleSysBone     = Engine01 JetLenzflare
4915        ParticleSysBone     = Engine02 JetLenzflare
4916      End
4917  
4918      ConditionState        = REALLYDAMAGED
4919        Model               = AVStealth_D
4920        ; damage
4921        ParticleSysBone     = Smoke01 JetSmoke
4922        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
4923      End
4924  
4925      ConditionState        = REALLYDAMAGED JETEXHAUST
4926        Model               = AVStealth_D
4927        ; damage
4928        ParticleSysBone     = Smoke01 JetSmoke
4929        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
4930        ; exhaust
4931        ParticleSysBone     = Wingtip01 JetContrail
4932        ParticleSysBone     = Wingtip02 JetContrail
4933      End
4934  
4935      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
4936        Model               = AVStealth_D
4937        ; damage
4938        ParticleSysBone     = Smoke01 JetSmoke
4939        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
4940        ; exhaust
4941        ParticleSysBone     = Wingtip01 JetContrail
4942        ParticleSysBone     = Wingtip02 JetContrail
4943        ; afterburners
4944        ShowSubObject       = BurnerFX03 BurnerFX04
4945        ParticleSysBone     = Engine01 JetLenzflare
4946        ParticleSysBone     = Engine02 JetLenzflare
4947      End
4948  
4949      ConditionState        = RUBBLE
4950        Model               = AVStealth_D1
4951        HideSubObject       = None 
4952        ShowSubObject       = None
4953      End
4954  
4955      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
4956        Model               = AVStealth_D1
4957        ;HideSubObject is needed cause there're inherited from default condition state      
4958        HideSubObject       = None 
4959        ShowSubObject       = None
4960        ParticleSysBone     = Engine01 JetExhaust
4961        ParticleSysBone     = Engine02 JetExhaust
4962        ParticleSysBone     = Wingtip01 JetContrail
4963        ParticleSysBone     = Wingtip02 JetContrail
4964      End
4965      
4966      OkToChangeModelColor = Yes
4967  
4968    End
4969  
4970    ; ***DESIGN parameters ***
4971    DisplayName           = OBJECT:StealthFighter
4972    EditorSorting         = VEHICLE
4973    Side                  = America
4974    TransportSlotCount    = 0                 ;how many "slots" we take in a transport (0 == not transportable)
4975    VisionRange           = 180.0 
4976    ShroudClearingRange   = 300.0
4977    Prerequisites
4978      Object = AmericaAirfield
4979      Science = SCIENCE_SpyDrone
4980    End
4981    WeaponSet
4982      Conditions = None 
4983      Weapon = PRIMARY StealthJetMissileWeapon
4984    End
4985    WeaponSet
4986      Conditions = PLAYER_UPGRADE
4987      Weapon = PRIMARY StealthJetLaserGuidedMissileWeapon
4988    End
4989    ArmorSet
4990      Conditions      = None
4991      Armor           = AirplaneArmor
4992      DamageFX        = None
4993    End
4994  
4995    BuildCost           = 1600
4996    BuildTime           = 25.0            ;in seconds  
4997    ExperienceValue     = 100 100 200 300 ;Experience point value at each level
4998    ExperienceRequired  = 0 200 300 600   ; Experience points needed to gain each level
4999    IsTrainable         = Yes             ;Can gain experience
5000    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
5001    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
5002    CommandSet = AmericaJetStealthFighterCommandSet
5003  
5004    ; *** AUDIO Parameters ***
5005    VoiceSelect     = StealthFighterVoiceSelect
5006    VoiceMove       = StealthFighterVoiceMove
5007    VoiceAttack     = StealthFighterVoiceAttack
5008    VoiceAttackAir  = StealthFighterVoiceAttackAir
5009    VoiceGuard      = StealthFighterVoiceAirPatrol
5010    SoundAmbient    = StealthFighterAmbientLoop
5011    SoundAmbientRubble    = NoSound
5012    SoundDie        = StealthFighterVoiceFalling
5013    SoundStealthOn  = StealthOn
5014    SoundStealthOff = StealthOff
5015    UnitSpecificSounds
5016      VoiceCreate   = StealthFighterVoiceCreate
5017      SoundEject    = PilotSoundEject
5018      VoiceEject    = PilotVoiceEject
5019      Afterburner   = RaptorAfterburner
5020      VoiceLowFuel  = AuroraBomberVoiceLowFuel
5021      VoiceGarrison = StealthFighterVoiceMove
5022    End
5023  
5024    ; *** ENGINEERING Parameters ***
5025    RadarPriority   = LOCAL_UNIT_ONLY
5026    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
5027    Body = ActiveBody ModuleTag_02
5028      MaxHealth       = 120.0
5029      InitialHealth   = 120.0
5030    End
5031  
5032    Behavior                          = JetSlowDeathBehavior ModuleTag_03
5033      FXOnGroundDeath                 = FX_JetOnGroundDeath
5034      OCLOnGroundDeath                = OCL_StealthDeathFinalBlowUp
5035      DestructionDelay                = 99999999; destruction will happen when we
5036      RollRate                        = 0.2
5037      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
5038      PitchRate                       = 0.0
5039      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
5040      FXInitialDeath                  = FX_JetDeathInitial
5041      ;OCLInitialDeath                = None
5042      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
5043      FXSecondary                     = FX_JetDeathSecondary
5044      ;OCLSecondary                   = None
5045      FXHitGround                     = FX_JetDeathHitGround
5046      ;OCLHitGround                   = None
5047      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
5048      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
5049      OCLFinalBlowUp                  = OCL_StealthDeathFinalBlowUp
5050  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
5051    End
5052    Behavior = EjectPilotDie ModuleTag_04
5053      GroundCreationList = OCL_EjectPilotOnGround
5054      AirCreationList = OCL_EjectPilotViaParachute
5055      ExemptStatus = HIJACKED
5056      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
5057    End
5058   
5059    Behavior = PhysicsBehavior ModuleTag_05
5060      Mass = 500.0
5061    End
5062  
5063    Behavior = JetAIUpdate ModuleTag_06
5064      OutOfAmmoDamagePerSecond = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
5065                                      ; note that it's expressed as a percent of max health, not an absolute
5066      TakeoffSpeedForMaxLift = 100%   ; smaller numbers give more lift sooner when taking off
5067      TakeoffPause           = 500
5068      MinHeight              = 5
5069      ReturnToBaseIdleTime   = 10000         ; if idle for this long, return to base, even if not out of ammo
5070    End
5071  
5072    Behavior = WeaponSetUpgrade ModuleTag_07
5073      TriggeredBy = Upgrade_AmericaLaserMissiles
5074    End
5075  
5076    Behavior = ExperienceScalarUpgrade ModuleTag_08
5077      TriggeredBy = Upgrade_AmericaAdvancedTraining
5078      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
5079    End
5080  
5081    Behavior = StealthUpdate ModuleTag_09
5082      StealthDelay                          = 1500 ; msec
5083      StealthForbiddenConditions            = FIRING_PRIMARY
5084      ; not currently used... but maybe someday? (srj)
5085      ;RevealDistanceFromTarget             = 0.0f
5086      FriendlyOpacityMin                    = 50.0%
5087      FriendlyOpacityMax                    = 100.0%
5088      InnateStealth                         = Yes
5089      OrderIdleEnemiesToAttackMeUponReveal  = Yes
5090    End
5091  
5092    Locomotor = SET_NORMAL StealthJetLocomotor
5093    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
5094  
5095    Behavior = FlammableUpdate ModuleTag_21
5096      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
5097      AflameDamageAmount = 3       ; taking this much damage...
5098      AflameDamageDelay = 500       ; this often.
5099    End
5100  
5101    Behavior                 = TransitionDamageFX ModuleTag_22
5102      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
5103      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
5104    End
5105  
5106  
5107    Geometry = Cylinder
5108    GeometryIsSmall = Yes
5109    GeometryMajorRadius = 7.0
5110    GeometryMinorRadius = 7.0
5111    GeometryHeight = 7.0
5112    Shadow = SHADOW_VOLUME
5113    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
5114  
5115  End
5116  
5117  ;------------------------------------------------------------------------------
5118  Object AmericaVehicleComanche
5119  
5120    ; *** ART Parameters ***
5121    SelectPortrait         = SACCommanche_L
5122    ButtonImage            = SACCommanche
5123    
5124    UpgradeCameo1 = Upgrade_GLACamouflage
5125    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
5126    ;UpgradeCameo3 = NONE
5127    ;UpgradeCameo4 = NONE
5128    ;UpgradeCameo5 = NONE
5129    
5130    Draw = W3DModelDraw ModuleTag_01
5131  
5132      DefaultConditionState
5133        Model                           = AVComanche
5134        HideSubObject                   = MissileUpgrade
5135        Animation                       = AVComanche.AVComanche
5136        AnimationMode                   = LOOP
5137        WeaponMuzzleFlash               = PRIMARY TurretFX
5138        WeaponFireFXBone                = PRIMARY Muzzle
5139        WeaponFireFXBone                = SECONDARY Muzzle
5140        WeaponLaunchBone  = SECONDARY Muzzle
5141      End
5142  
5143      ConditionState = REALLYDAMAGED
5144        Model                           = AVComanche_d
5145        Animation                       = AVComanche_d.AVComanche_d
5146        AnimationMode                   = LOOP
5147      End
5148  
5149      ConditionState = WEAPONSET_PLAYER_UPGRADE
5150        ShowSubObject                   = MissileUpgrade
5151        Animation                       = AVComanche.AVComanche
5152        AnimationMode                   = LOOP
5153        WeaponFireFXBone                = TERTIARY WeaponB
5154        WeaponLaunchBone  = TERTIARY WeaponB
5155      End
5156  
5157      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
5158        Model                           = AVComanche_d
5159        ShowSubObject                   = MissileUpgrade
5160        Animation                       = AVComanche_d.AVComanche_d
5161        AnimationMode                   = LOOP
5162        WeaponFireFXBone                = TERTIARY WeaponB
5163        WeaponLaunchBone  = TERTIARY WeaponB
5164      End
5165  
5166      ConditionState = RUBBLE
5167        Model                           = AVComanche_d
5168        Animation                       = AVComanche_d.AVComanche_d
5169        AnimationMode                   = LOOP
5170      End
5171  
5172      ConditionState = RUBBLE SPECIAL_DAMAGED
5173        Model                           = AVComanche_d
5174        HideSubObject                   = AVComanche_Prop
5175      End
5176  
5177      OkToChangeModelColor = Yes
5178    End
5179  
5180    ; ***DESIGN parameters ***
5181    DisplayName         = OBJECT:Comanche
5182    EditorSorting       = VEHICLE
5183    Side                = America
5184    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
5185    VisionRange         = 180.0 
5186    ShroudClearingRange = 600
5187    Prerequisites
5188      
5189    End
5190  
5191    WeaponSet
5192      Conditions          = None 
5193      ; -----
5194      Weapon              = PRIMARY     Comanche20mmCannonWeapon
5195      PreferredAgainst    = PRIMARY     INFANTRY
5196      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
5197      ; -----
5198      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
5199      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
5200      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
5201      ; -----
5202      Weapon              = TERTIARY    NONE
5203    End
5204    WeaponSet
5205      Conditions          = PLAYER_UPGRADE 
5206      ; -----
5207      Weapon              = PRIMARY     Comanche20mmCannonWeapon
5208      PreferredAgainst    = PRIMARY     INFANTRY
5209      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
5210      ; -----
5211      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
5212      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
5213      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
5214      ; -----
5215      Weapon              = TERTIARY    ComancheRocketPodWeapon
5216      AutoChooseSources   = TERTIARY    NONE
5217    End
5218    ArmorSet
5219      Conditions      = None
5220      Armor           = ComancheArmor
5221      DamageFX        = None
5222    End
5223    BuildCost           = 1500
5224    BuildTime           = 20              ; in seconds  
5225    ExperienceValue     = 50 50 100 200   ; Experience point value at each level
5226    ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
5227    IsTrainable         = Yes             ; Can gain experience
5228    CommandSet          = ChinaJetMIGCommandSet
5229  
5230    ; *** AUDIO Parameters ***
5231    VoiceSelect           = ComancheVoiceSelect
5232    VoiceMove             = ComancheVoiceMove
5233    VoiceGuard            = ComancheVoiceMove
5234    VoiceAttack           = ComancheVoiceAttack
5235    SoundAmbient          = ComancheAmbientLoop
5236    SoundAmbientRubble    = NoSound
5237    SoundDie              = ComancheVoiceFalling
5238    UnitSpecificSounds
5239      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
5240      VoiceCreate         = ComancheVoiceCreate
5241      SoundEject          = PilotSoundEject
5242      VoiceEject          = PilotVoiceEject
5243      Afterburner         = RaptorAfterburner
5244      VoiceGarrison       = ComancheVoiceMove
5245      TurretMoveStart     = NoSound
5246      TurretMoveLoop      = NoSound
5247      VoiceFireRocketPods = ComancheVoiceAttackRocket
5248    End
5249  
5250  
5251    ; *** ENGINEERING Parameters ***
5252    RadarPriority   = UNIT
5253    KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
5254  
5255    Behavior = WeaponSetUpgrade ModuleTag_02
5256      TriggeredBy = Upgrade_ComancheRocketPods
5257    End
5258    Behavior = ExperienceScalarUpgrade ModuleTag_03
5259      TriggeredBy = Upgrade_AmericaAdvancedTraining
5260      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
5261    End
5262  
5263    Body = ActiveBody ModuleTag_04
5264      MaxHealth       = 220.0
5265      InitialHealth   = 220.0
5266    End
5267  
5268    Behavior = FXListDie ModuleTag_05
5269      DeathFX = FX_HelicopterStartDeath
5270    End
5271  
5272    Behavior = JetAIUpdate ModuleTag_06
5273      MinHeight                     = 5
5274      NeedsRunway                   = No
5275      KeepsParkingSpaceWhenAirborne = No
5276      AutoAcquireEnemiesWhenIdle    = Yes
5277      ; note that comanches do not return to base when idle
5278      
5279      ; this is a bit of a trick... normally, units cannot move-and-fire at
5280      ; the same time. we need the comanche to be able to. so we give it
5281      ; a "turret" (invisible) and put the two main weapons on it, but with
5282      ; no turn rate. voila!
5283      Turret
5284        TurretTurnRate = 0      ; this "turret" does not turn
5285        TurretPitchRate = 0     ; nor does it pitch
5286        ControlledWeaponSlots = PRIMARY SECONDARY
5287      End
5288  
5289    End
5290    Locomotor = SET_NORMAL  ComancheLocomotor
5291    Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
5292  
5293    Behavior = PhysicsBehavior ModuleTag_07
5294      Mass = 50.0
5295    End
5296    Behavior = HelicopterSlowDeathBehavior ModuleTag_08
5297      DestructionDelay                = 99999999        ; the destruction delay
5298      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
5299      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
5300      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
5301      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
5302      SoundDeathLoop                  = ComancheDamagedLoop
5303      MinSelfSpin                     = 100                     ; in degrees per second
5304      MaxSelfSpin                     = 300                     ; in degrees per second
5305      SelfSpinUpdateDelay             = 100             ; in milliseconds
5306      SelfSpinUpdateAmount            = 10             ; in degrees   
5307      FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
5308      MinBladeFlyOffDelay             = 1500            ; in milliseconds
5309      MaxBladeFlyOffDelay             = 1500            ; in milliseconds
5310      AttachParticle                  = SootySmokeTrail
5311      AttachParticleBone              = Propeller02
5312      BladeObjectName                 = ComancheBlades
5313      BladeBoneName                   = Propeller01    
5314      ; Most things that eject pilots do so immediately upon death,
5315      ; via use of EjectPilotDie, but Helicopters are a special case...
5316      ; they need to do so after their blades are ejected. 
5317      OCLEjectPilot                   = OCL_EjectPilotViaParachute
5318      FXBlade                         = FX_HelicopterBladeExplosion
5319      OCLBlade                        = OCL_HelicopterBladeExplosion
5320      FXHitGround                     = FX_HelicopterHitGround
5321      OCLHitGround                    = OCL_HelicopterHitGround
5322      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
5323      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
5324      DelayFromGroundToFinalDeath     = 1500
5325      FinalRubbleObject               = ComancheRubbleHull
5326    End
5327  
5328    Behavior = TransitionDamageFX ModuleTag_09
5329      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
5330      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
5331    End
5332  
5333    Behavior = FlammableUpdate ModuleTag_21
5334      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
5335      AflameDamageAmount = 3       ; taking this much damage...
5336      AflameDamageDelay = 500       ; this often.
5337    End
5338  
5339      Behavior = StealthUpdate ModuleTag_07
5340      StealthDelay                = 2500 ; msec
5341      StealthForbiddenConditions  = ATTACKING USING_ABILITY
5342      MoveThresholdSpeed          = 3
5343      InnateStealth               = No ;Requires upgrade first
5344      OrderIdleEnemiesToAttackMeUponReveal  = Yes
5345    End
5346  
5347    Behavior = StealthUpgrade ModuleTag_08
5348      TriggeredBy = Upgrade_GLACamouflage
5349    End
5350    Geometry = BOX
5351    GeometryMajorRadius = 20.0
5352    GeometryMinorRadius = 3.0
5353    GeometryHeight = 25.0     
5354    GeometryIsSmall = No
5355    Shadow = SHADOW_VOLUME    
5356    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
5357  
5358  End
5359  
5360  ;------------------------------------------------------------------------------
5361  Object CINE_USA08_AmericaVehicleComanche
5362  
5363    ; *** ART Parameters ***
5364    SelectPortrait         = SACCommanche_L
5365    ButtonImage            = SACCommanche
5366    
5367    UpgradeCameo1 = Upgrade_ComancheRocketPods
5368    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
5369    ;UpgradeCameo3 = NONE
5370    ;UpgradeCameo4 = NONE
5371    ;UpgradeCameo5 = NONE
5372    
5373    Draw = W3DModelDraw ModuleTag_01
5374  
5375      DefaultConditionState
5376        Model                           = AVComanche
5377        HideSubObject                   = MissileUpgrade
5378        HideSubObject                   = TurretFX01
5379        Animation                       = AVComanche.AVComanche
5380        AnimationMode                   = LOOP
5381        WeaponMuzzleFlash               = PRIMARY TurretFX
5382        WeaponFireFXBone                = PRIMARY Muzzle
5383        WeaponFireFXBone                = SECONDARY Muzzle
5384        WeaponLaunchBone  = SECONDARY Muzzle
5385      End
5386  
5387      ConditionState = REALLYDAMAGED
5388        Model                           = AVComanche_d
5389        Animation                       = AVComanche_d.AVComanche_d
5390        AnimationMode                   = LOOP
5391      End
5392  
5393      ConditionState = WEAPONSET_PLAYER_UPGRADE
5394        ShowSubObject                   = MissileUpgrade
5395        Animation                       = AVComanche.AVComanche
5396        AnimationMode                   = LOOP
5397        WeaponFireFXBone                = TERTIARY WeaponB
5398        WeaponLaunchBone  = TERTIARY WeaponB
5399      End
5400  
5401      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
5402        Model                           = AVComanche_d
5403        ShowSubObject                   = MissileUpgrade
5404        Animation                       = AVComanche_d.AVComanche_d
5405        AnimationMode                   = LOOP
5406        WeaponFireFXBone                = TERTIARY WeaponB
5407        WeaponLaunchBone  = TERTIARY WeaponB
5408      End
5409  
5410      ConditionState = RUBBLE
5411        Model                           = AVComanche_d
5412        Animation                       = AVComanche_d.AVComanche_d
5413        AnimationMode                   = LOOP
5414      End
5415  
5416      ConditionState = RUBBLE SPECIAL_DAMAGED
5417        Model                           = AVComanche_d
5418        HideSubObject                   = AVComanche_Prop
5419      End
5420  
5421      OkToChangeModelColor = Yes
5422    End
5423  
5424    ; ***DESIGN parameters ***
5425    DisplayName         = OBJECT:Comanche
5426    EditorSorting       = VEHICLE
5427    Side                = America
5428    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
5429    VisionRange         = 400.0 
5430    ShroudClearingRange = 600
5431    Prerequisites
5432      Object            = AmericaAirfield
5433    End
5434  
5435    WeaponSet
5436      Conditions          = None 
5437      ; -----
5438      Weapon              = PRIMARY     Comanche20mmCannonWeapon
5439      PreferredAgainst    = PRIMARY     INFANTRY
5440      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
5441      ; -----
5442      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
5443      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
5444      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
5445      ; -----
5446      Weapon              = TERTIARY    NONE
5447    End
5448    WeaponSet
5449      Conditions          = PLAYER_UPGRADE 
5450      ; -----
5451      Weapon              = PRIMARY     Comanche20mmCannonWeapon
5452      PreferredAgainst    = PRIMARY     INFANTRY
5453      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
5454      ; -----
5455      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
5456      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
5457      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
5458      ; -----
5459      Weapon              = TERTIARY    ComancheRocketPodWeapon
5460      AutoChooseSources   = TERTIARY    NONE
5461    End
5462    ArmorSet
5463      Conditions      = None
5464      Armor           = ComancheArmor
5465      DamageFX        = None
5466    End
5467    BuildCost           = 1500
5468    BuildTime           = 20              ; in seconds  
5469    ExperienceValue     = 50 50 100 200   ; Experience point value at each level
5470    ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
5471    IsTrainable         = Yes             ; Can gain experience
5472    CommandSet          = AmericaVehicleComancheCommandSet
5473  
5474    ; *** AUDIO Parameters ***
5475    VoiceSelect           = ComancheVoiceSelect
5476    VoiceMove             = ComancheVoiceMove
5477    VoiceGuard            = ComancheVoiceMove
5478    VoiceAttack           = ComancheVoiceAttack
5479    SoundAmbient          = ComancheAmbientLoop
5480    SoundAmbientRubble    = NoSound
5481    SoundDie              = ComancheVoiceFalling
5482    UnitSpecificSounds
5483      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
5484      VoiceCreate         = ComancheVoiceCreate
5485      SoundEject          = PilotSoundEject
5486      VoiceEject          = PilotVoiceEject
5487      Afterburner         = RaptorAfterburner
5488      VoiceGarrison       = ComancheVoiceMove
5489      TurretMoveStart     = NoSound
5490      TurretMoveLoop      = NoSound
5491      VoiceFireRocketPods = ComancheVoiceAttackRocket
5492    End
5493  
5494  
5495    ; *** ENGINEERING Parameters ***
5496    RadarPriority   = UNIT
5497    KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
5498  
5499    Behavior = WeaponSetUpgrade ModuleTag_02
5500      TriggeredBy = Upgrade_ComancheRocketPods
5501    End
5502    Behavior = ExperienceScalarUpgrade ModuleTag_03
5503      TriggeredBy = Upgrade_AmericaAdvancedTraining
5504      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
5505    End
5506  
5507    Body = ActiveBody ModuleTag_04
5508      MaxHealth       = 220.0
5509      InitialHealth   = 220.0
5510    End
5511  
5512    Behavior = FXListDie ModuleTag_05
5513      DeathFX = FX_HelicopterStartDeath
5514    End
5515  
5516    Behavior = JetAIUpdate ModuleTag_06
5517      MinHeight                     = 5
5518      NeedsRunway                   = No
5519      KeepsParkingSpaceWhenAirborne = No
5520      AutoAcquireEnemiesWhenIdle    = Yes
5521      ; note that comanches do not return to base when idle
5522      
5523      ; this is a bit of a trick... normally, units cannot move-and-fire at
5524      ; the same time. we need the comanche to be able to. so we give it
5525      ; a "turret" (invisible) and put the two main weapons on it, but with
5526      ; no turn rate. voila!
5527      Turret
5528        TurretTurnRate = 0      ; this "turret" does not turn
5529        TurretPitchRate = 0     ; nor does it pitch
5530        ControlledWeaponSlots = PRIMARY SECONDARY
5531      End
5532  
5533    End
5534    Locomotor = SET_NORMAL  CINE_USA08_ComancheLocomotor
5535    Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
5536  
5537    Behavior = PhysicsBehavior ModuleTag_07
5538      Mass = 50.0
5539    End
5540    Behavior = HelicopterSlowDeathBehavior ModuleTag_08
5541      DestructionDelay                = 99999999        ; the destruction delay
5542      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
5543      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
5544      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
5545      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
5546      SoundDeathLoop                  = ComancheDamagedLoop
5547      MinSelfSpin                     = 100                     ; in degrees per second
5548      MaxSelfSpin                     = 300                     ; in degrees per second
5549      SelfSpinUpdateDelay             = 100             ; in milliseconds
5550      SelfSpinUpdateAmount            = 10             ; in degrees   
5551      FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
5552      MinBladeFlyOffDelay             = 1500            ; in milliseconds
5553      MaxBladeFlyOffDelay             = 1500            ; in milliseconds
5554      AttachParticle                  = SootySmokeTrail
5555      AttachParticleBone              = Propeller02
5556      BladeObjectName                 = ComancheBlades
5557      BladeBoneName                   = Propeller01    
5558      ; Most things that eject pilots do so immediately upon death,
5559      ; via use of EjectPilotDie, but Helicopters are a special case...
5560      ; they need to do so after their blades are ejected. 
5561      OCLEjectPilot                   = OCL_EjectPilotViaParachute
5562      FXBlade                         = FX_HelicopterBladeExplosion
5563      OCLBlade                        = OCL_HelicopterBladeExplosion
5564      FXHitGround                     = FX_HelicopterHitGround
5565      OCLHitGround                    = OCL_HelicopterHitGround
5566      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
5567      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
5568      DelayFromGroundToFinalDeath     = 1500
5569      FinalRubbleObject               = ComancheRubbleHull
5570    End
5571  
5572    Behavior = TransitionDamageFX ModuleTag_09
5573      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
5574      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
5575    End
5576  
5577    Behavior = FlammableUpdate ModuleTag_21
5578      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
5579      AflameDamageAmount = 3       ; taking this much damage...
5580      AflameDamageDelay = 500       ; this often.
5581    End
5582  
5583    Geometry = BOX
5584    GeometryMajorRadius = 20.0
5585    GeometryMinorRadius = 3.0
5586    GeometryHeight = 25.0     
5587    GeometryIsSmall = No
5588    Shadow = SHADOW_VOLUME    
5589    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
5590  
5591  End
5592  
5593  ;------------------------------------------------------------------------------
5594  Object ComancheBlades
5595  
5596    ; *** ART Parameters ***
5597    Draw = W3DModelDraw ModuleTag_01
5598      DefaultConditionState
5599        Model = AVComanche_D2
5600        Animation = AVComanche_D2.AVComanche_D2
5601        AnimationMode = LOOP
5602      End
5603    End
5604  
5605    ; ***DESIGN parameters ***
5606    DisplayName      = OBJECT:Comanche
5607    Side = America
5608  
5609    ; *** ENGINEERING Parameters ***
5610    KindOf = PRELOAD IMMOBILE
5611  
5612    Behavior = PhysicsBehavior ModuleTag_02
5613      AllowBouncing = Yes
5614    End
5615    Behavior = LifetimeUpdate ModuleTag_03
5616      MinLifetime = 1000   ; min lifetime in msec
5617      MaxLifetime = 1000   ; max lifetime in msec
5618    End
5619  
5620  End
5621  
5622  ;------------------------------------------------------------------------------
5623  Object ComancheRubbleHull
5624  
5625    ; *** ART Parameters ***
5626    Draw = W3DModelDraw ModuleTag_01
5627      DefaultConditionState
5628        Model        = AVComanche_D1
5629      End
5630    End
5631  
5632    ; ***DESIGN parameters ***
5633    DisplayName      = OBJECT:ComancheHull
5634    Side = America
5635  
5636    ; *** ENGINEERING Parameters ***
5637    KindOf = IMMOBILE NO_COLLIDE HULK
5638  
5639    Behavior = PhysicsBehavior ModuleTag_02
5640      Mass           = 25.0
5641      AllowBouncing  = Yes
5642    End
5643  
5644    Behavior = LifetimeUpdate ModuleTag_03
5645      MinLifetime    = 3000   ; min lifetime in msec
5646      MaxLifetime    = 3000   ; max lifetime in msec
5647    End
5648  
5649    Behavior = SlowDeathBehavior ModuleTag_05
5650      SinkDelay        = 3000
5651      SinkRate         = 4     ; in Dist/Sec
5652      DestructionDelay = 10000
5653    End
5654  
5655  
5656  End
5657  
5658  ;------------------------------------------------------------------------------
5659  Object CINE_ComancheRubbleHull
5660  
5661    ; *** ART Parameters ***
5662    Draw = W3DModelDraw ModuleTag_01
5663      DefaultConditionState
5664        Model        = AVComanche_D1
5665      End
5666    End
5667  
5668    ; ***DESIGN parameters ***
5669    DisplayName      = OBJECT:ComancheHull
5670    Side = America
5671  
5672    ; *** ENGINEERING Parameters ***
5673    KindOf = IMMOBILE
5674  
5675    Behavior = PhysicsBehavior ModuleTag_02
5676      Mass           = 25.0
5677      AllowBouncing  = Yes
5678    End
5679  
5680  End
5681  
5682  
5683  ;------------------------------------------------------------------------------
5684  Object ChinookRubbleHull
5685  
5686    ; *** ART Parameters ***
5687    Draw = W3DModelDraw ModuleTag_01
5688      DefaultConditionState
5689        Model        = AVChinook_D1
5690      End
5691    End
5692  
5693    ; ***DESIGN parameters ***
5694    DisplayName      = OBJECT:ComancheHull
5695    Side = America
5696  
5697    ; *** ENGINEERING Parameters ***
5698    KindOf = IMMOBILE NO_COLLIDE HULK
5699  
5700    Behavior = PhysicsBehavior ModuleTag_02
5701      Mass           = 25.0
5702      AllowBouncing  = Yes
5703    End
5704    Behavior = LifetimeUpdate ModuleTag_03
5705      MinLifetime    = 100000   ; min lifetime in msec
5706      MaxLifetime    = 100000   ; max lifetime in msec
5707    End
5708  
5709  End
5710  
5711  
5712  ;------------------------------------------------------------------------------
5713  Object ChinaJetMIG
5714  
5715    ; *** ART Parameters ***
5716    SelectPortrait         = SNMig_L
5717    ButtonImage            = SNMig
5718    
5719    UpgradeCameo1 = Upgrade_ChinaAircraftArmor
5720    UpgradeCameo2 = Upgrade_ChinaBlackNapalm
5721    ;UpgradeCameo3 = NONE
5722    ;UpgradeCameo4 = NONE
5723    ;UpgradeCameo5 = NONE
5724    
5725    Draw = W3DModelDraw ModuleTag_01
5726  
5727      OkToChangeModelColor = Yes
5728  
5729      DefaultConditionState
5730        Model               = NVMIG
5731        HideSubObject       = BurnerFX01 BurnerFX02
5732        WeaponLaunchBone    = PRIMARY WeaponA
5733      End
5734  
5735      ConditionState        = JETEXHAUST
5736        ParticleSysBone     = Wingtip01 JetContrail
5737        ParticleSysBone     = Wingtip02 JetContrail
5738      End
5739  
5740      ConditionState       = JETEXHAUST JETAFTERBURNER
5741        ShowSubObject      = BurnerFX01 BurnerFX02
5742        ParticleSysBone     = Exhaust01 JetExhaust
5743        ParticleSysBone     = Exhaust02 JetExhaust
5744        ParticleSysBone     = Wingtip01 JetContrail
5745        ParticleSysBone     = Wingtip02 JetContrail
5746      End
5747  
5748      ConditionState        = REALLYDAMAGED
5749        Model               = NVMIG
5750        ParticleSysBone     = Wingtip01 JetContrail
5751        ParticleSysBone     = Wingtip02 JetContrail
5752      End
5753  
5754      ConditionState        = RUBBLE
5755        Model               = NVMIG
5756      End
5757  
5758      ConditionState        = REALLYDAMAGED JETEXHAUST
5759        Model               = NVMIG
5760        ParticleSysBone     = Wingtip01 JetContrail
5761        ParticleSysBone     = Wingtip02 JetContrail
5762      End
5763  
5764      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
5765        Model               = NVMIG
5766        ShowSubObject       = BurnerFX01 BurnerFX02
5767        ParticleSysBone     = Engine01 JetExhaust
5768        ParticleSysBone     = Engine02 JetExhaust
5769        ParticleSysBone     = Wingtip01 JetContrail
5770        ParticleSysBone     = Wingtip02 JetContrail
5771      End
5772  
5773      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
5774        ; @todo srj -- model missing
5775        ;Model              = NVMIG
5776        Model               = NVMIG
5777        ;HideSubObject is needed cause there're inherited from default condition state      
5778        HideSubObject       = None 
5779        ShowSubObject       = None
5780        ParticleSysBone     = Engine01 JetExhaust
5781        ParticleSysBone     = Engine02 JetExhaust
5782        ParticleSysBone     = Wingtip01 JetContrail
5783        ParticleSysBone     = Wingtip02 JetContrail
5784      End
5785  
5786    End
5787  
5788    ; ***DESIGN parameters ***
5789    DisplayName             = OBJECT:MIG
5790    EditorSorting           = VEHICLE
5791    Side                    = China
5792    TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
5793    VisionRange             = 200.0 
5794    ShroudClearingRange     = 300.0
5795  
5796    Prerequisites
5797      Object                = ChinaAirfield
5798    End
5799  
5800    WeaponSet
5801      Conditions        = None 
5802      Weapon            = PRIMARY     NapalmMissileWeapon
5803      AutoChooseSources = PRIMARY     NONE
5804    End
5805    WeaponSet
5806      Conditions = PLAYER_UPGRADE 
5807      Weapon            = PRIMARY     BlackNapalmMissileWeapon
5808      AutoChooseSources = PRIMARY     NONE
5809    End
5810  
5811    ArmorSet
5812      Conditions           = None
5813      Armor                = AirplaneArmor
5814      DamageFX             = None
5815    End
5816  
5817    BuildCost               = 1000
5818    BuildTime               = 10   
5819    ExperienceValue         = 50 50 100 150   ;Experience point value at each level
5820    ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
5821    IsTrainable = Yes             ;Can gain experience
5822    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
5823    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
5824    CommandSet             = ChinaJetMIGCommandSet
5825  
5826    ; *** AUDIO Parameters ***
5827    VoiceSelect             = MigVoiceSelect
5828    VoiceMove               = MigVoiceMove
5829    VoiceAttack             = MigVoiceAttack
5830    VoiceAttackAir          = MigVoiceAttackAir
5831    VoiceGuard              = MigVoiceAirPatrol
5832    SoundAmbient            = MigAmbientLoop
5833    SoundDie                = MigVoiceFalling
5834    UnitSpecificSounds
5835      VoiceCreate           = MigVoiceCreate
5836      Afterburner           = RaptorAfterburner
5837      VoiceGarrison         = MigVoiceMove
5838    End
5839  
5840    ; *** ENGINEERING Parameters ***
5841    RadarPriority          = UNIT
5842    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
5843    Body                   = ActiveBody ModuleTag_02
5844      MaxHealth            = 160.0
5845      InitialHealth        = 160.0
5846    End
5847  
5848    Behavior                          = JetSlowDeathBehavior ModuleTag_03
5849      FXOnGroundDeath                 = FX_JetOnGroundDeath
5850      OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp
5851      DestructionDelay                = 99999999  ; destruction will happen when we
5852      RollRate                        = 0.2
5853      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
5854      PitchRate                       = 0.0
5855      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
5856      FXInitialDeath                  = FX_JetDeathInitial
5857      OCLInitialDeath                 = OCL_MIGDeathInitial
5858      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
5859      FXSecondary                     = FX_JetDeathSecondary
5860      OCLSecondary                    = OCL_MIGDeathSecondary
5861      FXHitGround                     = FX_JetDeathHitGround
5862      OCLHitGround                    = OCL_MIGDeathHitGround
5863      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
5864      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
5865      OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp
5866    End
5867  
5868    Behavior = WeaponSetUpgrade ModuleTag_04
5869      TriggeredBy = Upgrade_ChinaBlackNapalm
5870    End
5871  
5872    Behavior = PhysicsBehavior ModuleTag_05
5873      Mass = 500.0
5874    End
5875  
5876    Behavior = JetAIUpdate ModuleTag_06
5877      OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
5878                                          ; note that it's expressed as a percent of max health, not an absolute
5879      TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
5880      TakeoffPause              = 500
5881      MinHeight                 = 5
5882      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
5883    End
5884  
5885    Locomotor = SET_NORMAL MIGLocomotor
5886    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
5887  
5888  
5889    Behavior = FlammableUpdate ModuleTag_08
5890      AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
5891      AflameDamageAmount = 3       ; taking this much damage...
5892      AflameDamageDelay = 500      ; this often.
5893    End
5894  
5895    Behavior                       = TransitionDamageFX ModuleTag_09
5896      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
5897      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
5898    End
5899  
5900    Behavior        = MaxHealthUpgrade ModuleTag_10
5901      TriggeredBy   = Upgrade_ChinaAircraftArmor
5902      AddMaxHealth  = 40.0
5903      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
5904    End
5905  
5906  
5907  
5908    Geometry                 = Box
5909    GeometryIsSmall          = Yes
5910    GeometryMajorRadius      = 14.0
5911    GeometryMinorRadius      = 7.0
5912    GeometryHeight           = 5.0
5913    Shadow                   = SHADOW_VOLUME
5914    
5915    Shadow = SHADOW_VOLUME
5916    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
5917  
5918  End
5919  
5920  
5921  ;------------------------------------------------------------------------------
5922  ;This is the MIG as it's crashing
5923  ;------------------------------------------------------------------------------
5924  Object ChinaJetMIGHulk
5925    ; *** ART Parameters ***
5926    Draw                = W3DModelDraw ModuleTag_01
5927      DefaultConditionState
5928        Model           = NVMIG_D1
5929      End
5930    End
5931  
5932    ; ***DESIGN parameters ***
5933    EditorSorting       = DEBRIS
5934  
5935    ; *** ENGINEERING Parameters ***
5936    KindOf              =  NO_COLLIDE HULK
5937  
5938    Behavior                  = PhysicsBehavior ModuleTag_03
5939      Mass                    = 2.0
5940      AllowBouncing           = No
5941      KillWhenRestingOnGround = Yes
5942    End
5943  
5944    Behavior = LifetimeUpdate ModuleTag_04
5945      MinLifetime = 1500   ; min lifetime in msec
5946      MaxLifetime = 1600   ; max lifetime in msec
5947    End
5948  
5949    Behavior = SlowDeathBehavior ModuleTag_05
5950      SinkDelay        = 1500
5951      SinkRate            = 2     ; in Dist/Sec
5952      DestructionDelay = 8000
5953    End
5954  
5955  End
5956  
5957  
5958  ;------------------------------------------------------------------------------
5959  Object NapalmMissile
5960  
5961    ; *** ART Parameters ***
5962    Draw = W3DModelDraw ModuleTag_01
5963      OkToChangeModelColor = Yes
5964      DefaultConditionState
5965        Model = AVRaptor_M
5966      End
5967    End
5968  
5969    ; ***DESIGN parameters ***
5970    DisplayName         = OBJECT:Missile
5971    EditorSorting       = SYSTEM
5972    VisionRange         = 0.0  ; Projectiles can't see, but superweapons *may need to*
5973    TransportSlotCount  = 1    ; since Napalm Strike carries us as payload, not weapon
5974    ArmorSet
5975      Conditions      = None
5976      Armor           = ProjectileArmor
5977      DamageFX        = None
5978    End
5979  
5980    ; *** ENGINEERING Parameters ***
5981    KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
5982    Body = ActiveBody ModuleTag_02
5983      MaxHealth       = 100.0
5984      InitialHealth   = 100.0
5985    End
5986  
5987  ; ---- begin Projectile death behaviors
5988    Behavior = InstantDeathBehavior DeathModuleTag_01
5989      DeathTypes = NONE +DETONATED
5990      ; we detonated normally.
5991      ; no FX, just quiet destroy ourselves
5992    End
5993    Behavior = InstantDeathBehavior DeathModuleTag_02
5994      DeathTypes = NONE +LASERED
5995      ; shot down by laser.
5996      FX         = FX_GenericMissileDisintegrate
5997      OCL        = OCL_GenericMissileDisintegrate
5998    End
5999    Behavior = InstantDeathBehavior DeathModuleTag_03
6000      DeathTypes = ALL -LASERED -DETONATED
6001      ; shot down by nonlaser.
6002      FX         = FX_GenericMissileDeath
6003    End
6004  ; ---- end Projectile death behaviors
6005  
6006    Behavior = PhysicsBehavior ModuleTag_06
6007      Mass = 1
6008    End
6009    Behavior = MissileAIUpdate ModuleTag_07
6010      TryToFollowTarget   = Yes 
6011      FuelLifetime        = 10000
6012      InitialVelocity     = 75                ; in dist/sec
6013      IgnitionDelay       = 30
6014      IgnitionFX          = FX_NapalmMissileIgnition
6015    End
6016    Locomotor = SET_NORMAL NapalmMissileLocomotor
6017  
6018    Geometry = Sphere
6019    GeometryIsSmall = Yes
6020    GeometryMajorRadius = 1.0
6021  
6022  End
6023  
6024  ;------------------------------------------------------------------------------
6025  Object ChinaJetMIGNapalmStriker
6026  
6027    ; *** ART Parameters ***
6028    Draw = W3DModelDraw ModuleTag_01
6029  
6030      DefaultConditionState
6031        Model = Su-Cinema
6032        WeaponLaunchBone    = PRIMARY Weapon
6033        ParticleSysBone     = Smoke01 JetExhaust
6034        ParticleSysBone     = Smoke02 JetExhaust
6035        HideSubObject       = BurnerFX01 BurnerFX02
6036      End
6037      ConditionState = REALLYDAMAGED
6038        Model = Su-Cinema
6039      End
6040      AliasConditionState = RUBBLE
6041  
6042      OkToChangeModelColor = Yes
6043    End
6044  
6045    ; ***DESIGN parameters ***
6046    DisplayName         = OBJECT:MIG
6047    EditorSorting       = SYSTEM
6048    Side                = China
6049    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
6050    VisionRange         = 300.0 
6051    ShroudClearingRange = 300
6052    Prerequisites
6053      Object = ChinaAirfield
6054    End
6055    WeaponSet
6056      Conditions        = None 
6057      Weapon            = PRIMARY   BlackNapalmMissileWeapon
6058    End
6059    ArmorSet
6060      Conditions      = None
6061      Armor           = AirplaneArmor
6062      DamageFX        = None
6063    End
6064    CommandSet        = ChinaJetMIGCommandSet
6065  
6066    ; *** AUDIO Parameters ***
6067    SoundAmbient = F15MoveLoop
6068    SoundAmbientRubble    = NoSound
6069  
6070    ; *** ENGINEERING Parameters ***
6071    RadarPriority = UNIT 
6072    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE AIRCRAFT IGNORED_IN_GUI
6073  
6074    Body = ActiveBody ModuleTag_02
6075      MaxHealth       = 200.0
6076      InitialHealth   = 200.0
6077    End
6078  
6079    Behavior = SpecialPowerCompletionDie ModuleTag_03
6080      SpecialPowerTemplate = SuperweaponNapalmStrike
6081    End
6082  
6083    Behavior                          = JetSlowDeathBehavior ModuleTag_04
6084      DestructionDelay                = 99999999; destruction will happen when we
6085      RollRate                        = 0.2
6086      RollRateDelta                   = 100%     ;each frame, rollrate = rollrate * rollrateDelta
6087      PitchRate                       = 0.0
6088      FallHowFast                     = 110.0%   ;Bigger is faster (can be over 100%,it's a fraction of gravity)
6089      FXInitialDeath                  = FX_JetDeathInitial
6090      OCLInitialDeath                 = OCL_MIGDeathInitial
6091      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
6092      FXSecondary                     = FX_JetDeathSecondary
6093      OCLSecondary                    = OCL_MIGDeathSecondary
6094      FXHitGround                     = FX_JetDeathHitGround
6095      OCLHitGround                    = OCL_MIGDeathHitGround
6096      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
6097      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
6098      OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp
6099    End
6100  
6101    Behavior = DeliverPayloadAIUpdate ModuleTag_06
6102      DoorDelay = 0
6103    End
6104    Locomotor = SET_NORMAL MIGLocomotor
6105  
6106    Behavior = WeaponSetUpgrade ModuleTag_07
6107      TriggeredBy = Upgrade_ChinaBlackNapalm
6108    End
6109  
6110    Behavior = TransportContain ModuleTag_08
6111      Slots = 100                     ; hey, it's a BIG transport
6112      ScatterNearbyOnExit = No
6113      OrientLikeContainerOnExit = Yes
6114      KeepContainerVelocityOnExit = Yes
6115      ExitPitchRate = 30
6116      ExitBone = Weapon
6117      AllowInsideKindOf  = PROJECTILE
6118      DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
6119      NumberOfExitPaths = 0
6120      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
6121    End
6122  
6123    Behavior = PhysicsBehavior ModuleTag_09
6124      Mass = 500.0
6125    End
6126  
6127    Behavior = FlammableUpdate ModuleTag_21
6128      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
6129      AflameDamageAmount = 3       ; taking this much damage...
6130      AflameDamageDelay = 500       ; this often.
6131    End
6132  
6133  
6134    Geometry = Cylinder
6135    GeometryIsSmall = Yes
6136    GeometryMajorRadius = 7.0
6137    GeometryMinorRadius = 7.0
6138    GeometryHeight = 7.0
6139    
6140    Shadow = SHADOW_VOLUME
6141    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
6142  
6143  End
6144  
6145  ;------------------------------------------------------------------------------
6146  Object ChinaJetMIG_CinematicVersion
6147  
6148    ; *** ART Parameters ***
6149    SelectPortrait         = SNMig_L
6150    ButtonImage            = SNMig
6151    
6152    UpgradeCameo1 = Upgrade_ChinaAircraftArmor
6153    UpgradeCameo2 = Upgrade_ChinaBlackNapalm
6154    ;UpgradeCameo3 = NONE
6155    ;UpgradeCameo4 = NONE
6156    ;UpgradeCameo5 = NONE
6157    
6158    Draw = W3DModelDraw ModuleTag_01
6159  
6160      OkToChangeModelColor = Yes
6161  
6162      DefaultConditionState
6163        Model               = NVMIG
6164        HideSubObject       = BurnerFX01 BurnerFX02
6165        WeaponLaunchBone    = PRIMARY WeaponA
6166      End
6167  
6168      ConditionState        = JETEXHAUST
6169        ParticleSysBone     = Wingtip01 JetContrail
6170        ParticleSysBone     = Wingtip02 JetContrail
6171      End
6172  
6173      ConditionState       = JETEXHAUST JETAFTERBURNER
6174        ShowSubObject      = BurnerFX01 BurnerFX02
6175        ParticleSysBone     = Exhaust01 JetExhaust
6176        ParticleSysBone     = Exhaust02 JetExhaust
6177        ParticleSysBone     = Wingtip01 JetContrail
6178        ParticleSysBone     = Wingtip02 JetContrail
6179      End
6180  
6181      ConditionState        = REALLYDAMAGED
6182        Model               = NVMIG_D
6183        ParticleSysBone     = Wingtip01 JetContrail
6184        ParticleSysBone     = Wingtip02 JetContrail
6185      End
6186  
6187      ConditionState        = RUBBLE
6188        Model               = NVMIG_D
6189      End
6190  
6191      ConditionState        = REALLYDAMAGED JETEXHAUST
6192        Model               = NVMIG_D
6193        ParticleSysBone     = Wingtip01 JetContrail
6194        ParticleSysBone     = Wingtip02 JetContrail
6195      End
6196  
6197      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
6198        Model               = NVMIG_D
6199        ShowSubObject       = BurnerFX01 BurnerFX02
6200        ParticleSysBone     = Engine01 JetExhaust
6201        ParticleSysBone     = Engine02 JetExhaust
6202        ParticleSysBone     = Wingtip01 JetContrail
6203        ParticleSysBone     = Wingtip02 JetContrail
6204      End
6205  
6206      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
6207        ; @todo srj -- model missing
6208        ;Model              = NVMIG_D1B
6209        Model               = NVMIG_D
6210        ;HideSubObject is needed cause there're inherited from default condition state      
6211        HideSubObject       = None 
6212        ShowSubObject       = None
6213        ParticleSysBone     = Engine01 JetExhaust
6214        ParticleSysBone     = Engine02 JetExhaust
6215        ParticleSysBone     = Wingtip01 JetContrail
6216        ParticleSysBone     = Wingtip02 JetContrail
6217      End
6218  
6219    End
6220  
6221    ; ***DESIGN parameters ***
6222    DisplayName             = OBJECT:MIG
6223    EditorSorting           = VEHICLE
6224    Side                    = China
6225    TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
6226    VisionRange             = 300.0 
6227    ShroudClearingRange     = 300.0
6228  
6229    Prerequisites
6230      Object                = ChinaAirfield
6231    End
6232  
6233    WeaponSet
6234      Conditions        = None 
6235      Weapon            = PRIMARY     NapalmMissileWeapon
6236      AutoChooseSources = PRIMARY     NONE
6237    End
6238    WeaponSet
6239      Conditions = PLAYER_UPGRADE 
6240      Weapon            = PRIMARY     BlackNapalmMissileWeapon
6241      AutoChooseSources = PRIMARY     NONE
6242    End
6243  
6244    ArmorSet
6245      Conditions           = None
6246      Armor                = AirplaneArmor
6247      DamageFX             = None
6248    End
6249  
6250    BuildCost               = 1200
6251    BuildTime               = 15   
6252    ExperienceValue         = 50 50 100 150   ;Experience point value at each level
6253    ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
6254    IsTrainable = Yes             ;Can gain experience
6255    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
6256    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
6257    CommandSet             = ChinaJetMIGCommandSet
6258  
6259    ; *** AUDIO Parameters ***
6260    VoiceSelect             = MigVoiceSelect
6261    VoiceMove               = MigVoiceMove
6262    VoiceAttack             = MigVoiceAttack
6263    VoiceAttackAir          = MigVoiceAttackAir
6264    VoiceGuard              = MigVoiceAirPatrol
6265    SoundMoveLoop           = MigAmbientLoop  ; don't want sound while sitting at airfield
6266    SoundAmbient            = NoSound
6267    SoundAmbientRubble      = NoSound
6268    SoundDie                = MigVoiceFalling
6269    UnitSpecificSounds
6270      VoiceCreate           = MigVoiceCreate
6271      Afterburner           = RaptorAfterburner
6272      VoiceGarrison         = MigVoiceMove
6273    End
6274  
6275    ; *** ENGINEERING Parameters ***
6276    RadarPriority          = UNIT
6277    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
6278    Body                   = ActiveBody ModuleTag_02
6279      MaxHealth            = 160.0
6280      InitialHealth        = 160.0
6281    End
6282  
6283    Behavior                          = JetSlowDeathBehavior ModuleTag_03
6284      FXOnGroundDeath                 = FX_JetOnGroundDeath
6285      OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp_CinematicVersion
6286      DestructionDelay                = 99999999  ; destruction will happen when we
6287      RollRate                        = 0.2
6288      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
6289      PitchRate                       = 0.0
6290      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
6291      FXInitialDeath                  = FX_JetDeathInitial
6292      OCLInitialDeath                 = OCL_MIGDeathInitial
6293      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
6294      FXSecondary                     = FX_JetDeathSecondary
6295      OCLSecondary                    = OCL_MIGDeathSecondary
6296      FXHitGround                     = FX_JetDeathHitGround
6297      OCLHitGround                    = OCL_MIGDeathHitGround
6298      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
6299      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp_CinematicVersion
6300      OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp_CinematicVersion
6301    End
6302  
6303    Behavior = WeaponSetUpgrade ModuleTag_04
6304      TriggeredBy = Upgrade_ChinaBlackNapalm
6305    End
6306  
6307    Behavior = PhysicsBehavior ModuleTag_05
6308      Mass = 500.0
6309    End
6310  
6311    Behavior = JetAIUpdate ModuleTag_06
6312      OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
6313                                          ; note that it's expressed as a percent of max health, not an absolute
6314      TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
6315      TakeoffPause              = 500
6316      MinHeight                 = 5
6317      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
6318    End
6319  
6320    Locomotor = SET_NORMAL MIGLocomotor
6321    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
6322  
6323  
6324    Behavior = FlammableUpdate ModuleTag_08
6325      AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
6326      AflameDamageAmount = 3       ; taking this much damage...
6327      AflameDamageDelay = 500      ; this often.
6328    End
6329  
6330    Behavior                       = TransitionDamageFX ModuleTag_09
6331      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
6332      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
6333    End
6334  
6335    Behavior        = MaxHealthUpgrade ModuleTag_10
6336      TriggeredBy   = Upgrade_ChinaAircraftArmor
6337      AddMaxHealth  = 40.0
6338      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
6339    End
6340  
6341  
6342  
6343    Geometry                 = Box
6344    GeometryIsSmall          = Yes
6345    GeometryMajorRadius      = 14.0
6346    GeometryMinorRadius      = 7.0
6347    GeometryHeight           = 5.0
6348    Shadow                   = SHADOW_VOLUME
6349    
6350    Shadow = SHADOW_VOLUME
6351    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
6352  
6353  End
6354  
6355  ;------------------------------------------------------------------------------
6356  Object AmericaInfantryRanger
6357  
6358    ; *** ART Parameters ***
6359    SelectPortrait          = SARanger_L
6360    ButtonImage            = SARanger
6361    
6362    UpgradeCameo1 = Upgrade_AmericaRangerFlashBangGrenade
6363    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
6364    UpgradeCameo3 = Upgrade_InfantryCaptureBuilding
6365    ;UpgradeCameo4 = NONE
6366    ;UpgradeCameo5 = NONE
6367    
6368    Draw = W3DModelDraw ModuleTag_01
6369  
6370      OkToChangeModelColor = Yes
6371  
6372      ; this says "we don't use these condition states at all, so completely
6373      ; ignore them for purposes of matchmaking"... this is useful to help
6374      ; reduce the number of AliasConditionState clauses you must add in
6375      ; order to avoid ambiguity in some cases.
6376      IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
6377  
6378      ; --- Idle
6379      DefaultConditionState
6380        Model             = AIRngr_SKN
6381        IdleAnimation     = AIRngr_SKL.AIRngr_STA 0 35
6382        IdleAnimation     = AIRngr_SKL.AIRngr_IDA
6383        IdleAnimation     = AIRngr_SKL.AIRngr_IDB
6384        AnimationMode     = ONCE
6385        WeaponFireFXBone  = PRIMARY Muzzle
6386        WeaponMuzzleFlash = PRIMARY MuzzleFX
6387        WeaponFireFXBone  = SECONDARY Muzzle
6388        WeaponLaunchBone  = SECONDARY Muzzle
6389        TransitionKey     = TRANS_Stand
6390  
6391      End
6392  
6393      ConditionState      = REALLYDAMAGED
6394        IdleAnimation     = AIRngr_SKL.AIRngr_STB 0 35
6395        IdleAnimation     = AIRngr_SKL.AIRngr_IDC
6396        IdleAnimation     = AIRngr_SKL.AIRngr_IDD
6397        AnimationMode     = ONCE
6398        TransitionKey     = TRANS_StandInjured
6399      End
6400  
6401      TransitionState     = TRANS_Stand TRANS_StandInjured
6402        Animation         = AIRngr_SKL.AIRngr_SA2SB
6403        AnimationMode     = ONCE
6404      End
6405  
6406      ; --- attacking (Machine Gun)
6407      ConditionState      = USING_WEAPON_A
6408        Animation         = AIRngr_SKL.AIRngr_ATA
6409        AnimationMode     = LOOP
6410        TransitionKey     = TRANS_FiringA
6411      End
6412  
6413      ConditionState      = USING_WEAPON_A REALLYDAMAGED
6414        Animation         = AIRngr_SKL.AIRngr_ATA2
6415        AnimationMode     = LOOP
6416        TransitionKey     = TRANS_FiringAInjured
6417      End
6418  
6419      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
6420        Animation         = AIRngr_SKL.AIRngr_A2WAA
6421        AnimationMode     = ONCE
6422      End
6423  
6424      TransitionState     = TRANS_Stand TRANS_FiringA
6425        Animation         = AIRngr_SKL.AIRngr_ATAST
6426        AnimationMode     = ONCE
6427        AnimationSpeedFactorRange = 4 4
6428      End
6429  
6430      TransitionState     = TRANS_FiringA TRANS_Stand
6431        Animation         = AIRngr_SKL.AIRngr_ATAED
6432        AnimationMode     = ONCE
6433        AnimationSpeedFactorRange = 4 4
6434      End
6435  
6436      TransitionState     = TRANS_StandInjured TRANS_FiringAInjured
6437        Animation         = AIRngr_SKL.AIRngr_S2WAA
6438        AnimationMode     = ONCE
6439        AnimationSpeedFactorRange = 4 4
6440      End
6441  
6442      TransitionState     = TRANS_FiringAInjured TRANS_StandInjured
6443        Animation         = AIRngr_SKL.AIRngr_WAA2S
6444        AnimationMode     = ONCE
6445        AnimationSpeedFactorRange = 4 4
6446      End
6447      
6448      TransitionState     = TRANS_Stand TRANS_Move
6449        Animation         = AIRngr_SKL.AIRngr_STA2RNA
6450        AnimationMode     = ONCE
6451      End
6452  
6453      ; --- attacking (Grenade Launcher)
6454      ConditionState      = PREATTACK_B 
6455        Animation         = AIRngr_SKL.AIRngr_ATBA
6456        AnimationMode     = ONCE
6457        TransitionKey     = TRANS_FiringB
6458      End
6459      AliasConditionState = PREATTACK_B MOVING
6460      AliasConditionState = PREATTACK_B FIRING_B
6461      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
6462  
6463      ConditionState      = FIRING_B
6464        Animation         = AIRngr_SKL.AIRngr_ATBB
6465        AnimationMode     = ONCE
6466        TransitionKey     = TRANS_FiringB
6467      End
6468  
6469      ConditionState      = BETWEEN_FIRING_SHOTS_B
6470        Animation         = AIRngr_SKL.AIRngr_ATBB
6471        AnimationMode     = MANUAL
6472        Flags             = START_FRAME_LAST
6473        TransitionKey     = TRANS_FiringB
6474        WaitForStateToFinishIfPossible = TRANS_FiringB
6475      End
6476      AliasConditionState = RELOADING_B
6477  
6478      TransitionState     = TRANS_Stand TRANS_FiringB
6479        Animation         = AIRngr_SKL.AIRngr_ATBST1
6480        AnimationMode     = ONCE
6481      End
6482  
6483      TransitionState     = TRANS_FiringB TRANS_Stand
6484        Animation         = AIRngr_SKL.AIRngr_ATBST2
6485        AnimationMode     = ONCE
6486      End
6487  
6488      ConditionState      = PREATTACK_B REALLYDAMAGED
6489        Animation         = AIRngr_SKL.AIRngr_ATB2A
6490        AnimationMode     = ONCE
6491        TransitionKey     = TRANS_FiringBInjured
6492      End
6493      AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
6494      AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
6495      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
6496  
6497      ConditionState      = FIRING_B REALLYDAMAGED
6498        Animation         = AIRngr_SKL.AIRngr_ATB2B
6499        AnimationMode     = ONCE
6500        TransitionKey     = TRANS_FiringBInjured
6501      End
6502  
6503      ConditionState      = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
6504        Animation         = AIRngr_SKL.AIRngr_ATB2B
6505        AnimationMode     = MANUAL
6506        Flags             = START_FRAME_LAST
6507        TransitionKey     = TRANS_FiringBInjured
6508        WaitForStateToFinishIfPossible = TRANS_FiringBInjured
6509      End
6510      AliasConditionState = RELOADING_B REALLYDAMAGED
6511  
6512      TransitionState     = TRANS_StandInjured TRANS_FiringBInjured
6513        Animation         = AIRngr_SKL.AIRngr_ATB2ST1
6514        AnimationMode     = ONCE
6515      End
6516  
6517      TransitionState     = TRANS_FiringBInjured TRANS_StandInjured
6518        Animation         = AIRngr_SKL.AIRngr_ATB2ST2
6519        AnimationMode     = ONCE
6520      End
6521  
6522      ; -- cross-attack transitions
6523  
6524      TransitionState     = TRANS_FiringA TRANS_FiringB
6525        Animation         = AIRngr_SKL.AIRngr_ATA2AB
6526        AnimationMode     = ONCE
6527        AnimationSpeedFactorRange = 4 4
6528      End
6529  
6530      TransitionState     = TRANS_FiringB TRANS_FiringA
6531        Animation         = AIRngr_SKL.AIRngr_ATA2AB
6532        AnimationMode     = ONCE_BACKWARDS
6533        AnimationSpeedFactorRange = 4 4
6534      End
6535  
6536  
6537      ; --- moving
6538      ConditionState      = MOVING
6539        Animation         = AIRngr_SKL.AIRngr_RNA 30
6540        AnimationMode     = LOOP
6541        Flags             = RANDOMSTART
6542        TransitionKey     = TRANS_Move
6543        ParticleSysBone   = None InfantryDustTrails
6544      End
6545      AliasConditionState = MOVING ATTACKING
6546  
6547      ConditionState      = MOVING REALLYDAMAGED
6548        Animation         = AIRngr_SKL.AIRngr_RNB 30
6549        AnimationMode     = LOOP
6550        Flags             = RANDOMSTART
6551        TransitionKey     = TRANS_Move
6552      End
6553      AliasConditionState = MOVING REALLYDAMAGED ATTACKING
6554      
6555      ; --- dying anims
6556      ConditionState      = DYING
6557        Animation         = AIRngr_SKL.AIRngr_DTA
6558        Animation         = AIRngr_SKL.AIRngr_DTB
6559        AnimationMode     = ONCE
6560        TransitionKey     = None
6561      End
6562  
6563      TransitionState     = TRANS_Dying TRANS_Flailing
6564        Animation         = AIRngr_SKL.AIRngr_ADTF1
6565        AnimationMode     = ONCE
6566      End
6567  
6568      ConditionState      = DYING EXPLODED_FLAILING
6569        Animation         = AIRngr_SKL.AIRngr_ADTF2
6570        AnimationMode     = LOOP
6571        TransitionKey     = TRANS_Flailing
6572      End
6573  
6574      ConditionState      = DYING EXPLODED_BOUNCING
6575        Animation         = AIRngr_SKL.AIRngr_ADTF3
6576        AnimationMode     = ONCE
6577        TransitionKey     = None
6578      End
6579      AliasConditionState = DYING SPLATTED
6580  
6581      ; --- cheering
6582      ConditionState      = SPECIAL_CHEERING
6583        Animation         = AIRngr_SKL.AIRngr_CHA
6584        AnimationMode     = LOOP
6585      End
6586  
6587      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
6588        Animation         = AIRngr_SKL.AIRngr_CHB
6589        AnimationMode     = LOOP
6590      End
6591  
6592      ; ----- PARACHUTING ANIMATIONS
6593      ConditionState      = FREEFALL
6594        Animation         = AIRngr_SKL.AIRngr_PFL
6595        AnimationMode     = LOOP
6596        TransitionKey     = TRANS_Falling
6597      End
6598      AliasConditionState = FREEFALL REALLYDAMAGED
6599      AliasConditionState = FREEFALL DYING
6600      ConditionState      = PARACHUTING
6601        Animation         = AIRngr_SKL.AIRngr_PHG
6602        AnimationMode     = LOOP
6603        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
6604        TransitionKey     = TRANS_Chute
6605      End
6606      AliasConditionState = PARACHUTING REALLYDAMAGED
6607      AliasConditionState = PARACHUTING DYING
6608      TransitionState     = TRANS_Falling TRANS_Chute
6609        Animation         = AIRngr_SKL.AIRngr_POP
6610        AnimationMode     = ONCE
6611        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
6612      End
6613      TransitionState     = TRANS_Chute TRANS_Stand
6614        Animation         = AIRngr_SKL.AIRngr_PTD
6615        AnimationMode     = ONCE
6616      End
6617      TransitionState     = TRANS_Chute TRANS_StandInjured
6618        Animation         = AIRngr_SKL.AIRngr_PTD
6619        AnimationMode     = ONCE
6620      End
6621  
6622      ; ------- Bldg-capture
6623  
6624      ConditionState      = UNPACKING
6625        Model             = AIRngr_F_SKN
6626        Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
6627        AnimationMode     = ONCE
6628      End
6629      AliasConditionState = UNPACKING REALLYDAMAGED
6630  
6631  
6632      ConditionState      = RAISING_FLAG
6633        Model             = AIRngr_F_SKN
6634        Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
6635        AnimationMode     = ONCE
6636        TransitionKey     = TRANS_Raising
6637      End
6638      AliasConditionState = RAISING_FLAG REALLYDAMAGED
6639  
6640      ConditionState      = PACKING
6641        Model             = AIRngr_F_SKN
6642        Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
6643        AnimationMode     = ONCE_BACKWARDS
6644        Flags             = START_FRAME_LAST
6645        TransitionKey     = TRANS_Packing
6646      End
6647      AliasConditionState = PACKING REALLYDAMAGED
6648  
6649      TransitionState     = TRANS_Raising TRANS_Packing
6650        Model             = AIRngr_F_SKN
6651        Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
6652        AnimationMode     = ONCE_BACKWARDS
6653        Flags             = START_FRAME_LAST
6654      End
6655  
6656      ; --- RAPPELLING ANIMATIONS
6657      ConditionState      = RAPPELLING
6658        Animation         = AIRngr_SKL.AIRngr_RPL1 ;30
6659        AnimationMode     = LOOP
6660        Flags             = RANDOMSTART
6661        TransitionKey     = TRANS_Rappelling
6662      End
6663      AliasConditionState = MOVING RAPPELLING
6664  
6665      TransitionState     = TRANS_Rappelling TRANS_Stand
6666        Animation         = AIRngr_SKL.AIRngr_RPL2
6667        AnimationMode     = ONCE
6668      End
6669  
6670      TransitionState     = TRANS_Rappelling TRANS_StandInjured
6671        Animation         = AIRngr_SKL.AIRngr_RPL2
6672        AnimationMode     = ONCE
6673      End
6674  
6675    End
6676  
6677    ; ***DESIGN parameters ***
6678    DisplayName         = OBJECT:Ranger
6679    Side                = America
6680    EditorSorting       = INFANTRY
6681    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
6682    
6683    WeaponSet
6684      Conditions = None 
6685      Weapon = PRIMARY RangerAdvancedCombatRifle
6686    End
6687    WeaponSet
6688      Conditions = PLAYER_UPGRADE 
6689      Weapon = PRIMARY RangerAdvancedCombatRifle
6690      Weapon = SECONDARY RangerFlashBangGrenadeWeapon
6691      AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
6692      AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
6693    End
6694    ArmorSet
6695      Conditions      = None
6696      Armor           = HumanArmor
6697      DamageFX        = InfantryDamageFX
6698    End
6699  
6700    VisionRange = 100
6701    ShroudClearingRange = 400
6702    Prerequisites
6703      Object = AmericaBarracks
6704    End
6705    BuildCost = 225
6706    BuildTime = 5.0          ;in seconds  
6707    
6708    ExperienceValue = 20 20 40 60    ;Experience point value at each level
6709    ExperienceRequired = 0 40 60 120  ;Experience points needed to gain each level
6710    IsTrainable = Yes             ;Can gain experience
6711    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
6712    CommandSet          = AmericaInfantryRangerCommandSet
6713  
6714    ; *** AUDIO Parameters ***
6715    VoiceSelect = RangerVoiceSelect
6716    VoiceMove = RangerVoiceMove
6717    VoiceGuard = RangerVoiceMove
6718    VoiceAttack = RangerVoiceAttack
6719    SoundDie = RangerVoiceDie
6720    VoiceFear = RangerVoiceFear
6721    VoiceTaskComplete = RangerVoiceCaptureComplete
6722  
6723    UnitSpecificSounds
6724      VoiceEnter = RangerVoiceMove
6725      VoiceEnterHostile = RangerVoiceMove
6726      VoiceGarrison = RangerVoiceGarrison
6727      VoiceCreate         = RangerVoiceCreate
6728      VoiceSubdue         = RangerVoiceSubdue
6729      VoiceClearBuilding  = RangerVoiceClearBuilding
6730      VoiceGetHealed      = RangerVoiceMove
6731      VoicePrimaryWeaponMode = RangerVoiceModeGun
6732      VoiceSecondaryWeaponMode = RangerVoiceModeFlashBang
6733    End
6734  
6735    UnitSpecificFX
6736      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
6737      CombatDropKillFX = FX_RangerCombatDropKill
6738    End
6739  
6740    ; *** ENGINEERING Parameters ***
6741    RadarPriority = UNIT
6742    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY CAN_RAPPEL SCORE
6743  
6744    Behavior = CommandButtonHuntUpdate ModuleTag_02
6745    End
6746  
6747    Body = ActiveBody ModuleTag_03
6748      MaxHealth       = 180.0
6749      InitialHealth   = 180.0
6750    End
6751  
6752    Behavior = ExperienceScalarUpgrade ModuleTag_04
6753      TriggeredBy = Upgrade_AmericaAdvancedTraining
6754      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
6755    End
6756  
6757    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
6758      ScanRate = 1000 ; once a second.
6759      ScanRange = 300 ;
6760      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
6761      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
6762    End
6763  
6764    Behavior = AIUpdateInterface ModuleTag_06
6765      AutoAcquireEnemiesWhenIdle = Yes
6766    End
6767    Locomotor = SET_NORMAL BasicHumanLocomotor
6768  
6769    Behavior = PhysicsBehavior ModuleTag_07
6770      Mass = 5.0
6771    End
6772  
6773    Behavior = ProductionUpdate ModuleTag_08
6774      ; nothing
6775    End
6776  
6777    Behavior = CommandButtonHuntUpdate  ModuleTag_09 ; allows use of command button hunt script with this unit. 
6778    End
6779  
6780    Behavior = WeaponSetUpgrade ModuleTag_10
6781      TriggeredBy = Upgrade_AmericaRangerFlashBangGrenade
6782    End
6783  
6784  
6785  ; --- begin Death modules ---
6786    Behavior = SlowDeathBehavior ModuleTag_Death01
6787      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
6788      SinkDelay           = 50000
6789      SinkRate            = 0.5     ; in Dist/Sec
6790      DestructionDelay    = 8000000
6791      FX                  = INITIAL FX_GIDie
6792    End
6793    Behavior = SlowDeathBehavior ModuleTag_Death02
6794      DeathTypes          = NONE +CRUSHED +SPLATTED
6795      SinkDelay           = 50000
6796      SinkRate            = 0.5     ; in Dist/Sec
6797      DestructionDelay    = 8000000
6798      FX                  = INITIAL FX_GIDieCrushed
6799    End
6800    Behavior = SlowDeathBehavior ModuleTag_Death03
6801      DeathTypes          = NONE +EXPLODED
6802      SinkDelay           = 50000
6803      SinkRate            = 0.5     ; in Dist/Sec
6804      DestructionDelay    = 8000000
6805      FX                  = INITIAL FX_GIDie
6806      FlingForce          = 8
6807      FlingForceVariance  = 3
6808      FlingPitch          = 60
6809      FlingPitchVariance  = 10
6810    End
6811    Behavior = SlowDeathBehavior ModuleTag_Death04
6812      DeathTypes          = NONE +BURNED
6813      DestructionDelay    = 0
6814      FX                  = INITIAL FX_GIDie
6815      OCL                 = INITIAL OCL_FlamingInfantry
6816    End
6817    Behavior = SlowDeathBehavior ModuleTag_Death05
6818      DeathTypes          = NONE +POISONED
6819      DestructionDelay    = 0
6820      FX                  = INITIAL FX_GIDie
6821      OCL                 = INITIAL OCL_ToxicInfantry
6822    End
6823    
6824    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
6825      DeathTypes          = NONE +POISONED_BETA
6826      DestructionDelay    = 0
6827      FX                  = INITIAL FX_GIDie
6828      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
6829    End
6830  ; --- end Death modules ---
6831  
6832    Behavior = SquishCollide ModuleTag_12
6833      ;nothing
6834    End
6835  
6836    Behavior = PoisonedBehavior ModuleTag_17
6837      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
6838      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
6839    End
6840   
6841    Behavior = SpecialAbility ModuleTag_18
6842      SpecialPowerTemplate      = SpecialAbilityRangerCaptureBuilding
6843      UpdateModuleStartsAttack  = Yes
6844      StartsPaused              = Yes ; Unpaused by upgrade module
6845      InitiateSound         = RangerVoiceCapture
6846    End
6847    Behavior = SpecialAbilityUpdate ModuleTag_19
6848      SpecialPowerTemplate  = SpecialAbilityRangerCaptureBuilding
6849      StartAbilityRange  = 5.0
6850      UnpackTime            = 3000  ; (changing this will scale anim speed)
6851      PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
6852      PackTime              = 2000  ; (changing this will scale anim speed)
6853      DoCaptureFX           = Yes
6854      AwardXPForTriggering  = 15
6855      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
6856    End
6857  
6858    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_20
6859      SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
6860      TriggeredBy = Upgrade_InfantryCaptureBuilding
6861    End
6862  
6863    Geometry = CYLINDER
6864    Scale = 0.95                           ;Scaling
6865    GeometryMajorRadius = 1.0
6866    GeometryMinorRadius = 1.0
6867    GeometryHeight = 8.0
6868  
6869    GeometryIsSmall = Yes
6870    Shadow = SHADOW_DECAL
6871    ShadowSizeX = 9;
6872    ShadowSizeY = 9;
6873    ShadowTexture = ShadowI;
6874    BuildCompletion = APPEARS_AT_RALLY_POINT
6875  
6876  End
6877  
6878  ;------------------------------------------------------------------------------
6879  Object CINE_AmericaInfantryRanger
6880  
6881    ; *** ART Parameters ***
6882    SelectPortrait          = SARanger_L
6883    ButtonImage            = SARanger
6884    
6885    UpgradeCameo1 = Upgrade_AmericaRangerFlashBangGrenade
6886    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
6887    ;UpgradeCameo3 = NONE
6888    ;UpgradeCameo4 = NONE
6889    ;UpgradeCameo5 = NONE
6890    
6891    Draw = W3DModelDraw ModuleTag_01
6892      OkToChangeModelColor = Yes
6893  
6894      ; --- Idle
6895      DefaultConditionState
6896        Model             = AIRngr_SKN
6897        IdleAnimation     = AIRngr_SKL.AIRngr_STA 0 35
6898        IdleAnimation     = AIRngr_SKL.AIRngr_IDA
6899        IdleAnimation     = AIRngr_SKL.AIRngr_IDB
6900        AnimationMode     = ONCE
6901        WeaponFireFXBone  = PRIMARY Muzzle
6902        WeaponMuzzleFlash = PRIMARY MuzzleFX
6903        WeaponFireFXBone  = SECONDARY Muzzle
6904        WeaponLaunchBone  = SECONDARY Muzzle
6905        TransitionKey     = TRANS_Stand
6906      End
6907  
6908      ConditionState      = REALLYDAMAGED
6909        IdleAnimation     = AIRngr_SKL.AIRngr_STB 0 35
6910        IdleAnimation     = AIRngr_SKL.AIRngr_IDC
6911        IdleAnimation     = AIRngr_SKL.AIRngr_IDD
6912        AnimationMode     = ONCE
6913        TransitionKey     = TRANS_StandInjured
6914      End
6915  
6916      TransitionState     = TRANS_Stand TRANS_StandInjured
6917        Animation         = AIRngr_SKL.AIRngr_SA2SB
6918        AnimationMode     = ONCE
6919      End
6920  
6921      ; --- attacking (Machine Gun)
6922      ConditionState      = FIRING_A
6923        Animation         = AIRngr_SKL.AIRngr_ATA
6924        AnimationMode     = LOOP
6925        TransitionKey     = TRANS_FiringA
6926      End
6927      AliasConditionState = BETWEEN_FIRING_SHOTS_A
6928      AliasConditionState = RELOADING_A
6929  
6930      ConditionState      = FIRING_A REALLYDAMAGED
6931        Animation         = AIRngr_SKL.AIRngr_ATA2
6932        AnimationMode     = LOOP
6933        TransitionKey     = TRANS_FiringAInjured
6934      End
6935      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
6936      AliasConditionState = RELOADING_A REALLYDAMAGED
6937      AliasConditionState = MOVING FIRING_A
6938      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
6939      AliasConditionState = MOVING RELOADING_A
6940  
6941      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
6942        Animation         = AIRngr_SKL.AIRngr_A2WAA
6943        AnimationMode     = ONCE
6944      End
6945  
6946      TransitionState     = TRANS_Stand TRANS_FiringA
6947        Animation         = AIRngr_SKL.AIRngr_ATAST
6948        AnimationMode     = ONCE
6949        AnimationSpeedFactorRange = 4 4
6950      End
6951  
6952      TransitionState     = TRANS_FiringA TRANS_Stand
6953        Animation         = AIRngr_SKL.AIRngr_ATAED
6954        AnimationMode     = ONCE
6955        AnimationSpeedFactorRange = 4 4
6956      End
6957  
6958      TransitionState     = TRANS_StandInjured TRANS_FiringAInjured
6959        Animation         = AIRngr_SKL.AIRngr_S2WAA
6960        AnimationMode     = ONCE
6961        AnimationSpeedFactorRange = 4 4
6962      End
6963  
6964      TransitionState     = TRANS_FiringAInjured TRANS_StandInjured
6965        Animation         = AIRngr_SKL.AIRngr_WAA2S
6966        AnimationMode     = ONCE
6967        AnimationSpeedFactorRange = 4 4
6968      End
6969  
6970      ; --- attacking (Grenade Launcher)
6971      ConditionState      = PREATTACK_B 
6972        Animation         = AIRngr_SKL.AIRngr_ATBA
6973        AnimationMode     = ONCE
6974        TransitionKey     = TRANS_FiringB
6975      End
6976      AliasConditionState = PREATTACK_B MOVING
6977      AliasConditionState = PREATTACK_B FIRING_B
6978      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
6979  
6980      ConditionState      = FIRING_B
6981        Animation         = AIRngr_SKL.AIRngr_ATBB
6982        AnimationMode     = ONCE
6983  
6984        TransitionKey     = TRANS_FiringB
6985      End
6986  
6987      ConditionState      = BETWEEN_FIRING_SHOTS_B
6988        Animation         = AIRngr_SKL.AIRngr_ATBB
6989        AnimationMode     = MANUAL
6990        Flags             = START_FRAME_LAST
6991        TransitionKey     = TRANS_FiringB
6992        WaitForStateToFinishIfPossible = TRANS_FiringB
6993      End
6994      AliasConditionState = RELOADING_B
6995  
6996      TransitionState     = TRANS_Stand TRANS_FiringB
6997        Animation         = AIRngr_SKL.AIRngr_ATBST1
6998        AnimationMode     = ONCE
6999      End
7000  
7001      TransitionState     = TRANS_FiringB TRANS_Stand
7002        Animation         = AIRngr_SKL.AIRngr_ATBST2
7003        AnimationMode     = ONCE
7004      End
7005  
7006      ConditionState      = PREATTACK_B REALLYDAMAGED
7007        Animation         = AIRngr_SKL.AIRngr_ATB2A
7008        AnimationMode     = ONCE
7009        TransitionKey     = TRANS_FiringBInjured
7010      End
7011      AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
7012      AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
7013      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
7014  
7015      ConditionState      = FIRING_B REALLYDAMAGED
7016        Animation         = AIRngr_SKL.AIRngr_ATB2B
7017        AnimationMode     = ONCE
7018        TransitionKey     = TRANS_FiringBInjured
7019      End
7020  
7021      ConditionState      = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
7022        Animation         = AIRngr_SKL.AIRngr_ATB2B
7023        AnimationMode     = MANUAL
7024        Flags             = START_FRAME_LAST
7025        TransitionKey     = TRANS_FiringBInjured
7026        WaitForStateToFinishIfPossible = TRANS_FiringBInjured
7027      End
7028      AliasConditionState = RELOADING_B REALLYDAMAGED
7029  
7030      TransitionState     = TRANS_StandInjured TRANS_FiringBInjured
7031        Animation         = AIRngr_SKL.AIRngr_ATB2ST1
7032        AnimationMode     = ONCE
7033      End
7034  
7035      TransitionState     = TRANS_FiringBInjured TRANS_StandInjured
7036        Animation         = AIRngr_SKL.AIRngr_ATB2ST2
7037        AnimationMode     = ONCE
7038      End
7039  
7040      ; -- cross-attack transitions
7041  
7042      TransitionState     = TRANS_FiringA TRANS_FiringB
7043        Animation         = AIRngr_SKL.AIRngr_ATA2AB
7044        AnimationMode     = ONCE
7045        AnimationSpeedFactorRange = 4 4
7046      End
7047  
7048      TransitionState     = TRANS_FiringB TRANS_FiringA
7049        Animation         = AIRngr_SKL.AIRngr_ATA2AB
7050        AnimationMode     = ONCE_BACKWARDS
7051        AnimationSpeedFactorRange = 4 4
7052      End
7053  
7054  
7055      ; --- moving
7056      ConditionState      = MOVING
7057        Animation         = AIRngr_SKL.AIRngr_RNA 40
7058        AnimationMode     = LOOP
7059        Flags             = RANDOMSTART
7060        TransitionKey     = None
7061        ParticleSysBone   = None InfantryDustTrails
7062      End
7063  
7064      ConditionState      = MOVING REALLYDAMAGED
7065        Animation         = AIRngr_SKL.AIRngr_RNB 30
7066        AnimationMode     = LOOP
7067        Flags             = RANDOMSTART
7068        TransitionKey     = None
7069      End
7070      
7071      ; --- dying anims
7072      ConditionState      = DYING
7073        Animation         = AIRngr_SKL.AIRngr_DTA
7074        Animation         = AIRngr_SKL.AIRngr_DTB
7075        AnimationMode     = ONCE
7076        TransitionKey     = None
7077      End
7078  
7079      TransitionState     = TRANS_Dying TRANS_Flailing
7080        Animation         = AIRngr_SKL.AIRngr_ADTF1
7081        AnimationMode     = ONCE
7082      End
7083  
7084      ConditionState      = DYING EXPLODED_FLAILING
7085        Animation         = AIRngr_SKL.AIRngr_ADTF2
7086        AnimationMode     = LOOP
7087        TransitionKey     = TRANS_Flailing
7088      End
7089  
7090      ConditionState      = DYING EXPLODED_BOUNCING
7091        Animation         = AIRngr_SKL.AIRngr_ADTF3
7092        AnimationMode     = ONCE
7093        TransitionKey     = None
7094      End
7095      AliasConditionState = DYING SPLATTED
7096  
7097      ; --- cheering
7098      ConditionState      = SPECIAL_CHEERING
7099        Animation         = AIRngr_SKL.AIRngr_CHA
7100        AnimationMode     = LOOP
7101      End
7102  
7103      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
7104        Animation         = AIRngr_SKL.AIRngr_CHB
7105        AnimationMode     = LOOP
7106      End
7107  
7108      ; ----- PARACHUTING ANIMATIONS
7109      ConditionState      = FREEFALL
7110        Animation         = AIRngr_SKL.AIRngr_PFL
7111        AnimationMode     = LOOP
7112        TransitionKey     = TRANS_Falling
7113      End
7114      AliasConditionState = FREEFALL REALLYDAMAGED
7115      AliasConditionState = FREEFALL DYING
7116      ConditionState      = PARACHUTING
7117        Animation         = AIRngr_SKL.AIRngr_PHG
7118        AnimationMode     = LOOP
7119        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
7120        TransitionKey     = TRANS_Chute
7121      End
7122      AliasConditionState = PARACHUTING REALLYDAMAGED
7123      AliasConditionState = PARACHUTING DYING
7124      TransitionState     = TRANS_Falling TRANS_Chute
7125        Animation         = AIRngr_SKL.AIRngr_POP
7126        AnimationMode     = ONCE
7127        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
7128      End
7129      TransitionState     = TRANS_Chute TRANS_Stand
7130        Animation         = AIRngr_SKL.AIRngr_PTD
7131        AnimationMode     = ONCE
7132      End
7133      TransitionState     = TRANS_Chute TRANS_StandInjured
7134        Animation         = AIRngr_SKL.AIRngr_PTD
7135        AnimationMode     = ONCE
7136      End
7137  
7138      ; ------- Bldg-capture
7139  
7140      ConditionState      = UNPACKING
7141        Model             = AIRngr_F_SKN
7142        Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
7143        AnimationMode     = ONCE
7144      End
7145      AliasConditionState = UNPACKING REALLYDAMAGED
7146  
7147  
7148      ConditionState      = RAISING_FLAG
7149        Model             = AIRngr_F_SKN
7150        Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
7151        AnimationMode     = ONCE
7152        TransitionKey     = TRANS_Raising
7153      End
7154      AliasConditionState = RAISING_FLAG REALLYDAMAGED
7155  
7156      ConditionState      = PACKING
7157        Model             = AIRngr_F_SKN
7158        Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
7159        AnimationMode     = ONCE_BACKWARDS
7160        Flags             = START_FRAME_LAST
7161        TransitionKey     = TRANS_Packing
7162      End
7163      AliasConditionState = PACKING REALLYDAMAGED
7164  
7165      TransitionState     = TRANS_Raising TRANS_Packing
7166        Model             = AIRngr_F_SKN
7167        Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
7168        AnimationMode     = ONCE_BACKWARDS
7169        Flags             = START_FRAME_LAST
7170      End
7171  
7172      ; --- RAPPELLING ANIMATIONS
7173      ConditionState      = RAPPELLING
7174        Animation         = AIRngr_SKL.AIRngr_RPL1 ;30
7175        AnimationMode     = LOOP
7176        Flags             = RANDOMSTART
7177        TransitionKey     = TRANS_Rappelling
7178      End
7179      AliasConditionState = MOVING RAPPELLING
7180  
7181      TransitionState     = TRANS_Rappelling TRANS_Stand
7182        Animation         = AIRngr_SKL.AIRngr_RPL2
7183        AnimationMode     = ONCE
7184      End
7185  
7186      TransitionState     = TRANS_Rappelling TRANS_StandInjured
7187        Animation         = AIRngr_SKL.AIRngr_RPL2
7188        AnimationMode     = ONCE
7189      End
7190  
7191    End
7192  
7193    ; ***DESIGN parameters ***
7194    DisplayName         = OBJECT:Ranger
7195    Side                = America
7196    EditorSorting       = INFANTRY
7197    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
7198    
7199    WeaponSet
7200      Conditions = None 
7201      Weapon = PRIMARY CINE_RangerAdvancedCombatRifle
7202    End
7203    WeaponSet
7204      Conditions = PLAYER_UPGRADE 
7205      Weapon = PRIMARY RangerAdvancedCombatRifle
7206      Weapon = SECONDARY RangerFlashBangGrenadeWeapon
7207      AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
7208      AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
7209    End
7210    ArmorSet
7211      Conditions      = None
7212      Armor           = HumanArmor
7213      DamageFX        = InfantryDamageFX
7214    End
7215  
7216    VisionRange = 100
7217    ShroudClearingRange = 400
7218    Prerequisites
7219      Object = AmericaBarracks
7220    End
7221    BuildCost = 225
7222    BuildTime = 5.0          ;in seconds  
7223    
7224    ExperienceValue = 20 20 40 60    ;Experience point value at each level
7225    ExperienceRequired = 0 20 40 60 120  ;Experience points needed to gain each level
7226    IsTrainable = Yes             ;Can gain experience
7227    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
7228    CommandSet          = AmericaInfantryRangerCommandSet
7229  
7230    ; *** AUDIO Parameters ***
7231    VoiceSelect = RangerVoiceSelect
7232    VoiceMove = RangerVoiceMove
7233    VoiceGuard = RangerVoiceMove
7234    VoiceAttack = RangerVoiceAttack
7235    SoundDie = RangerVoiceDie
7236    VoiceFear = RangerVoiceFear
7237    VoiceTaskComplete = RangerVoiceCaptureComplete
7238  
7239    UnitSpecificSounds
7240      VoiceEnter = RangerVoiceMove
7241      VoiceEnterHostile = RangerVoiceMove
7242      VoiceGarrison = RangerVoiceGarrison
7243      VoiceCreate         = RangerVoiceCreate
7244      VoiceSubdue         = RangerVoiceSubdue
7245      VoiceClearBuilding  = RangerVoiceClearBuilding
7246      VoiceGetHealed      = RangerVoiceMove
7247    End
7248  
7249    UnitSpecificFX
7250      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
7251      CombatDropKillFX = FX_RangerCombatDropKill
7252    End
7253  
7254    ; *** ENGINEERING Parameters ***
7255    RadarPriority = UNIT
7256    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY CAN_RAPPEL SCORE
7257  
7258    Behavior = CommandButtonHuntUpdate ModuleTag_02
7259    End
7260  
7261    Body = ActiveBody ModuleTag_03
7262      MaxHealth       = 180.0
7263      InitialHealth   = 180.0
7264    End
7265  
7266    Behavior = ExperienceScalarUpgrade ModuleTag_04
7267      TriggeredBy = Upgrade_AmericaAdvancedTraining
7268      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
7269    End
7270  
7271    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
7272      ScanRate = 1000 ; once a second.
7273      ScanRange = 300 ;
7274      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
7275      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
7276    End
7277  
7278    Behavior = AIUpdateInterface ModuleTag_06
7279      AutoAcquireEnemiesWhenIdle = Yes
7280    End
7281    Locomotor = SET_NORMAL BasicHumanLocomotor
7282  
7283    Behavior = PhysicsBehavior ModuleTag_07
7284      Mass = 5.0
7285    End
7286  
7287    Behavior = ProductionUpdate ModuleTag_08
7288      ; nothing
7289    End
7290  
7291    Behavior = CommandButtonHuntUpdate  ModuleTag_09 ; allows use of command button hunt script with this unit. 
7292    End
7293  
7294    Behavior = WeaponSetUpgrade ModuleTag_10
7295      TriggeredBy = Upgrade_AmericaRangerFlashBangGrenade
7296    End
7297  
7298  
7299  ; --- begin Death modules ---
7300    Behavior = SlowDeathBehavior ModuleTag_Death01
7301      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
7302      SinkDelay           = 3000
7303      SinkRate            = 0.5     ; in Dist/Sec
7304      DestructionDelay    = 8000
7305      FX                  = INITIAL FX_GIDie
7306    End
7307    Behavior = SlowDeathBehavior ModuleTag_Death02
7308      DeathTypes          = NONE +CRUSHED +SPLATTED
7309      SinkDelay           = 3000
7310      SinkRate            = 0.5     ; in Dist/Sec
7311      DestructionDelay    = 8000
7312      FX                  = INITIAL FX_GIDieCrushed
7313    End
7314    Behavior = SlowDeathBehavior ModuleTag_Death03
7315      DeathTypes          = NONE +EXPLODED
7316      SinkDelay           = 3000
7317      SinkRate            = 0.5     ; in Dist/Sec
7318      DestructionDelay    = 8000
7319      FX                  = INITIAL FX_GIDie
7320      FlingForce          = 8
7321      FlingForceVariance  = 3
7322      FlingPitch          = 60
7323      FlingPitchVariance  = 10
7324    End
7325    Behavior = SlowDeathBehavior ModuleTag_Death04
7326      DeathTypes          = NONE +BURNED
7327      DestructionDelay    = 0
7328      FX                  = INITIAL FX_GIDie
7329      OCL                 = INITIAL OCL_FlamingInfantry
7330    End
7331    Behavior = SlowDeathBehavior ModuleTag_Death05
7332      DeathTypes          = NONE +POISONED
7333      DestructionDelay    = 0
7334      FX                  = INITIAL FX_GIDie
7335      OCL                 = INITIAL OCL_ToxicInfantry
7336    End
7337    
7338    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
7339      DeathTypes          = NONE +POISONED_BETA
7340      DestructionDelay    = 0
7341      FX                  = INITIAL FX_GIDie
7342      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
7343    End
7344  ; --- end Death modules ---
7345  
7346    Behavior = SquishCollide ModuleTag_12
7347      ;nothing
7348    End
7349  
7350    Behavior = PoisonedBehavior ModuleTag_17
7351      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
7352      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
7353    End
7354   
7355    Behavior = SpecialAbility ModuleTag_18
7356      SpecialPowerTemplate      = SpecialAbilityRangerCaptureBuilding
7357      UpdateModuleStartsAttack  = Yes
7358      StartsPaused              = Yes ; Unpaused by upgrade module
7359      InitiateSound         = RangerVoiceCapture
7360    End
7361    Behavior = SpecialAbilityUpdate ModuleTag_19
7362      SpecialPowerTemplate  = SpecialAbilityRangerCaptureBuilding
7363      StartAbilityRange  = 5.0
7364      UnpackTime            = 3000  ; (changing this will scale anim speed)
7365      PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
7366      PackTime              = 2000  ; (changing this will scale anim speed)
7367      DoCaptureFX           = Yes
7368    End
7369  
7370    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_20
7371      SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
7372      TriggeredBy = Upgrade_InfantryCaptureBuilding
7373    End
7374  
7375  
7376    Geometry = CYLINDER
7377    Scale = 0.95                            ;Scaling
7378    GeometryMajorRadius = 1.0
7379    GeometryMinorRadius = 1.0
7380    GeometryHeight = 8.0
7381  
7382    GeometryIsSmall = Yes
7383    Shadow = SHADOW_DECAL
7384    ShadowSizeX = 9;
7385    ShadowSizeY = 9;
7386    ShadowTexture = ShadowI;
7387    BuildCompletion = APPEARS_AT_RALLY_POINT
7388  
7389  End
7390  
7391  ;------------------------------------------------------------------------------
7392  Object AmericaInfantryMissileDefender
7393  
7394    ; *** ART Parameters ***
7395    SelectPortrait         = SAMissleDefender_L
7396    ButtonImage            = SAMissleDefender
7397    
7398    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
7399    ;UpgradeCameo2 = NONE
7400    ;UpgradeCameo3 = NONE
7401    ;UpgradeCameo4 = NONE
7402    ;UpgradeCameo5 = NONE
7403    
7404    Draw = W3DModelDraw ModuleTag_01
7405      OkToChangeModelColor = Yes
7406  
7407      ;***NOTE***
7408      ;A little history -- the MissileDefender now uses the assets of the TankHunter. 
7409      ;The TH uses assets of the GLA tunnel defender, and the TD uses assets of the NEW
7410      ;MD. It was a design/art/code decision because the new missile defender animations
7411      ;don't suit that of a mobile/offensive unit with packing and unpacking.
7412  
7413      DefaultConditionState
7414        Model             = NITHNT_SKN
7415        IdleAnimation     = NITHNT_SKL.NITHNT_STA 0 30
7416        IdleAnimation     = NITHNT_SKL.NITHNT_IDA
7417        IdleAnimation     = NITHNT_SKL.NITHNT_IDB
7418        AnimationMode     = ONCE
7419        AnimationSpeedFactorRange = 0.8 1.2
7420        TransitionKey     = TRANS_Stand
7421        WeaponMuzzleFlash = PRIMARY MuzzleFX
7422        WeaponFireFXBone  = PRIMARY Muzzle
7423        WeaponLaunchBone  = PRIMARY Muzzle
7424        WeaponLaunchBone  = SECONDARY Muzzle
7425  
7426      End
7427      AliasConditionState = REALLYDAMAGED
7428  
7429      ConditionState      = FIRING_A 
7430        Animation         = NITHNT_SKL.NITHNT_ATA 
7431        AnimationMode     = ONCE
7432        TransitionKey     = TRANS_START_FIRING
7433      End
7434      AliasConditionState = FIRING_A REALLYDAMAGED
7435  
7436      ConditionState      = BETWEEN_FIRING_SHOTS_A
7437        Animation         = NITHNT_SKL.NITHNT_STA
7438        AnimationMode     = ONCE
7439        ; this is basically a trick: this guy has a nontrivial animation for firing,
7440        ; and a long recycle time between shots. we want him to finish his fire animation
7441        ; (unless he's ordered to do something else), so this is just a handy trick that
7442        ; says, "if the previous state had this transition key, allow it to finish before
7443        ; switching to us, if possible".
7444        WaitForStateToFinishIfPossible = TRANS_START_FIRING
7445      End
7446      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
7447  
7448      ConditionState      = MOVING
7449        Animation         = NITHNT_SKL.NITHNT_RNA 20
7450        AnimationMode     = LOOP
7451        Flags             = RANDOMSTART
7452        TransitionKey     = None
7453        ParticleSysBone   = None InfantryDustTrails
7454      End
7455      AliasConditionState = MOVING REALLYDAMAGED
7456  
7457      ConditionState      = RELOADING_A
7458        Animation         = NITHNT_SKL.NITHNT_ATA 10
7459        AnimationMode     = ONCE
7460        ;WeaponLaunchBone = PRIMARY WeaponA
7461      End
7462      AliasConditionState = MOVING RELOADING_A
7463      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
7464  
7465      ConditionState      = DYING
7466        Animation         = NITHNT_SKL.NITHNT_DTA
7467        Animation         = NITHNT_SKL.NITHNT_DTB
7468        AnimationSpeedFactorRange = 0.9 1.25
7469        AnimationMode     = ONCE
7470        TransitionKey     = TRANS_Dying
7471      End
7472  
7473      TransitionState     = TRANS_Dying TRANS_Flailing
7474        Animation         = NITHNT_SKL.NITHNT_ADTA1
7475        AnimationMode     = ONCE
7476      End
7477  
7478      ConditionState      = DYING EXPLODED_FLAILING
7479        Animation         = NITHNT_SKL.NITHNT_ADTA2
7480        AnimationMode     = LOOP
7481        TransitionKey     = TRANS_Flailing
7482      End
7483  
7484      ConditionState      = DYING EXPLODED_BOUNCING
7485        Animation         = NITHNT_SKL.NITHNT_ADTA3
7486        AnimationMode     = ONCE
7487        TransitionKey     = None
7488      End
7489  
7490      ;PARACHUTING ANIMATIONS
7491      ConditionState      = FREEFALL
7492        Animation         = NITHNT_SKL.NITHNT_PFL
7493        AnimationMode     = LOOP
7494        TransitionKey     = TRANS_Falling
7495      End
7496      AliasConditionState = FREEFALL REALLYDAMAGED
7497      AliasConditionState = FREEFALL DYING
7498  
7499      ConditionState      = PARACHUTING
7500        Animation         = NITHNT_SKL.NITHNT_PHG
7501        AnimationMode     = LOOP
7502        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
7503        TransitionKey     = TRANS_Chute
7504      End
7505      AliasConditionState = PARACHUTING REALLYDAMAGED
7506      AliasConditionState = PARACHUTING DYING
7507  
7508      TransitionState     = TRANS_Falling TRANS_Chute
7509        Animation         = NITHNT_SKL.NITHNT_POP
7510        AnimationMode     = ONCE
7511        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
7512      End
7513  
7514      TransitionState     = TRANS_Chute TRANS_Stand
7515        Animation         = NITHNT_SKL.NITHNT_PTD
7516        AnimationMode     = ONCE
7517      End
7518  
7519    End
7520  
7521    ; ***DESIGN parameters ***
7522    DisplayName         = OBJECT:MissileTeam
7523    Side                = America
7524    EditorSorting       = INFANTRY
7525    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
7526    
7527    WeaponSet
7528      Conditions = None 
7529      Weapon = PRIMARY    MissileDefenderMissileWeapon 
7530      Weapon = SECONDARY  MissileDefenderLaserGuidedMissileWeapon ;Controlled by special ability
7531      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
7532      AutoChooseSources = SECONDARY NONE
7533    End
7534    ArmorSet
7535      Conditions      = None
7536      Armor           = HumanArmor
7537      DamageFX        = InfantryDamageFX
7538    End
7539  
7540    VisionRange = 150
7541    ShroudClearingRange = 300
7542    Prerequisites
7543      Object = AmericaBarracks
7544  
7545    End
7546    BuildCost = 300
7547    BuildTime = 5.0          ;in seconds  
7548    
7549   ExperienceValue = 20 20 40 60    ;Experience point value at each level
7550    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each 
7551    IsTrainable = Yes             ;Can gain experience
7552    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
7553    CommandSet          = AmericaInfantryMissileDefenderCommandSet
7554  
7555    ; *** AUDIO Parameters ***
7556    VoiceSelect = MissileDefenderVoiceSelect
7557    VoiceMove = MissileDefenderVoiceMove
7558    VoiceGuard = MissileDefenderVoiceMove
7559    VoiceAttack = MissileDefenderVoiceAttack
7560    VoiceAttackAir = MissileDefenderVoiceAttack
7561    SoundDie = MissileDefenderVoiceDie
7562    SoundDieFire = DieByFireUSA
7563    SoundDieToxin = DieByToxinUSA
7564    VoiceFear = MissileDefenderVoiceFear
7565    
7566    UnitSpecificSounds
7567    VoiceGarrison = MissileDefenderVoiceGarrison
7568      VoiceCreate          = MissileDefenderVoiceCreate
7569      VoiceEnter = MissileDefenderVoiceMove
7570      VoiceGetHealed      = MissileDefenderVoiceMove
7571    End
7572  
7573    ; *** ENGINEERING Parameters ***
7574    RadarPriority = UNIT
7575    KindOf = PRELOAD SELECTABLE CAN_ATTACK  ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
7576  
7577    Body = ActiveBody ModuleTag_02
7578      MaxHealth       = 100.0
7579      InitialHealth   = 100.0
7580    End
7581  
7582    Behavior = ExperienceScalarUpgrade ModuleTag_03
7583      TriggeredBy = Upgrade_AmericaAdvancedTraining
7584      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
7585    End
7586  
7587    Behavior = AIUpdateInterface ModuleTag_04
7588      AutoAcquireEnemiesWhenIdle = Yes
7589    End
7590  
7591    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
7592      ScanRate = 1000 ; once a second.
7593      ScanRange = 300 ;
7594      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
7595      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
7596    End
7597  
7598    Locomotor = SET_NORMAL MissileDefenderLocomotor
7599  
7600    Behavior = PhysicsBehavior ModuleTag_06
7601      Mass = 5.0
7602    End
7603  
7604    Behavior = SpecialAbility ModuleTag_08
7605      SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles
7606      UpdateModuleStartsAttack = Yes
7607      InitiateSound = MissileDefenderVoiceAttackLaser
7608    End
7609    Behavior = SpecialAbilityUpdate ModuleTag_09
7610      SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles
7611      StartAbilityRange = 200.0
7612      AbilityAbortRange = 250.0 ;If the target moves outside this range, abort.
7613      PreparationTime = 1000
7614      PersistentPrepTime = 500
7615      SpecialObject = LaserBeam
7616      SpecialObjectAttachToBone = Muzzle01
7617    End
7618   
7619    Behavior = SquishCollide ModuleTag_10
7620      ;nothing
7621    End
7622  
7623  
7624  ; --- begin Death modules ---
7625    Behavior = SlowDeathBehavior ModuleTag_Death01
7626      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
7627      SinkDelay           = 50000
7628      SinkRate            = 0.5     ; in Dist/Sec
7629      DestructionDelay    = 8000000
7630      FX                  = INITIAL FX_GIDie
7631    End
7632    Behavior = SlowDeathBehavior ModuleTag_Death02
7633      DeathTypes          = NONE +CRUSHED +SPLATTED
7634      SinkDelay           = 50000
7635      SinkRate            = 0.5     ; in Dist/Sec
7636      DestructionDelay    = 8000000
7637      FX                  = INITIAL FX_GIDieCrushed
7638    End
7639    Behavior = SlowDeathBehavior ModuleTag_Death03
7640      DeathTypes          = NONE +EXPLODED
7641      SinkDelay           = 50000
7642      SinkRate            = 0.5     ; in Dist/Sec
7643      DestructionDelay    = 8000000
7644      FX                  = INITIAL FX_GIDie
7645      FlingForce          = 8
7646      FlingForceVariance  = 3
7647      FlingPitch          = 60
7648      FlingPitchVariance  = 10
7649    End
7650    Behavior = SlowDeathBehavior ModuleTag_Death04
7651      DeathTypes          = NONE +BURNED
7652      DestructionDelay    = 0
7653      FX                  = INITIAL FX_GIDie
7654      OCL                 = INITIAL OCL_FlamingInfantry
7655    End
7656    Behavior = SlowDeathBehavior ModuleTag_Death05
7657      DeathTypes          = NONE +POISONED
7658      DestructionDelay    = 0
7659      FX                  = INITIAL FX_GIDie
7660      OCL                 = INITIAL OCL_ToxicInfantry
7661    End
7662    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
7663      DeathTypes          = NONE +POISONED_BETA
7664      DestructionDelay    = 0
7665      FX                  = INITIAL FX_GIDie
7666      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
7667    End
7668  ; --- end Death modules ---
7669  
7670    Behavior = PoisonedBehavior ModuleTag_13
7671      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
7672      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
7673    End
7674   
7675    Geometry = CYLINDER
7676    Scale = 0.95                            ;Scaling
7677    GeometryMajorRadius = 1.0
7678    GeometryMinorRadius = 1.0
7679    GeometryHeight = 8.0
7680    GeometryIsSmall = Yes
7681    Shadow = SHADOW_DECAL
7682    ShadowSizeX = 9;
7683    ShadowSizeY = 9;
7684    ShadowTexture = ShadowI;
7685    BuildCompletion = APPEARS_AT_RALLY_POINT
7686  
7687  End
7688  
7689  ;------------------------------------------------------------------------------
7690  ; @todo -- this entire unit is "first pass only" and needs lots of specialization
7691  Object AmericaInfantryPilot
7692  
7693    ; *** ART Parameters ***
7694    SelectPortrait         = SAPilot_L
7695    ButtonImage            = SAPilot
7696    
7697    ;UpgradeCameo1 = NONE
7698    ;UpgradeCameo2 = NONE
7699    ;UpgradeCameo3 = NONE
7700    ;UpgradeCameo4 = NONE
7701    ;UpgradeCameo5 = NONE
7702    
7703    Draw = W3DModelDraw ModuleTag_01
7704      OkToChangeModelColor = Yes
7705  
7706      DefaultConditionState
7707        Model = AIRPlt_SKN
7708        IdleAnimation = AIRPlt_SKL.AIRPlt_STA 0 20
7709        IdleAnimation = AIRPlt_SKL.AIRPlt_IDA 
7710        IdleAnimation = AIRPlt_SKL.AIRPlt_IDB 
7711        AnimationMode = ONCE
7712        TransitionKey = TRANS_Stand
7713      End
7714  
7715      ConditionState = FREEFALL
7716        Animation = AIRPlt_SKL.AIRPLT_PFL
7717        AnimationMode = ONCE
7718        TransitionKey = TRANS_Falling
7719      End
7720      AliasConditionState = FREEFALL DYING
7721  
7722      ConditionState = PARACHUTING
7723        Animation = AIRPlt_SKL.AIRPlt_PHG
7724        AnimationMode = LOOP
7725        TransitionKey = TRANS_Chute
7726        WaitForStateToFinishIfPossible = TRANS_Falling
7727      End
7728      AliasConditionState = PARACHUTING DYING
7729  
7730      ConditionState = MOVING
7731        Animation = AIRPlt_SKL.AIRPlt_RNA 
7732        AnimationMode = LOOP
7733        TransitionKey = TRANS_Stand
7734        ParticleSysBone     = None InfantryDustTrails
7735      End
7736      
7737  
7738      ConditionState = DYING
7739        Animation = AIRPlt_SKL.AIRPlt_DTA 
7740        Animation = AIRPlt_SKL.AIRPlt_DTB 
7741        AnimationMode = ONCE
7742        TransitionKey = TRANS_Dying
7743      End
7744  
7745      TransitionState = TRANS_Dying TRANS_Flailing
7746        Animation = AIRPlt_SKL.AIRPlt_ADTE1
7747        AnimationMode = ONCE
7748      End
7749  
7750      ConditionState = DYING EXPLODED_FLAILING
7751        Animation = AIRPlt_SKL.AIRPlt_ADTE2
7752        AnimationMode = LOOP
7753        TransitionKey = TRANS_Flailing
7754      End
7755  
7756      ConditionState = DYING EXPLODED_BOUNCING
7757        Animation = AIRPlt_SKL.AIRPlt_ADTE3
7758        AnimationMode = ONCE
7759        TransitionKey = None
7760      End
7761  
7762      ConditionState = SPECIAL_CHEERING
7763        Animation = AIRPLT_SKL.AIRPLT_CHA
7764        AnimationMode = LOOP
7765      End
7766  
7767      ;@TODO -- MISSING ANIMATION FILE
7768      ;TransitionState = TRANS_Falling TRANS_Chute
7769      ;  Animation = AIRPLT_SKL.AIRPLT_POP
7770      ;  AnimationMode = ONCE
7771      ;  Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
7772      ;End
7773      
7774      TransitionState = TRANS_Chute TRANS_Stand
7775        Animation = AIRPlt_SKL.AIRPlt_PTD
7776        AnimationMode = ONCE
7777      End
7778  
7779    End
7780  
7781    ; ***DESIGN parameters ***
7782    DisplayName = OBJECT:Pilot
7783    Side = America
7784    EditorSorting = INFANTRY
7785    TransportSlotCount = 1               ;how many "slots" we take in a transport (0 == not transportable)
7786    ExperienceValue    = 10 10 10 10 ;Experience point value at each level
7787    ExperienceRequired =  0 1 2 3 ;Experience points needed to gain each level
7788    IsTrainable     = Yes  ;Can gain experience
7789    CommandSet = AmericaInfantryPilotCommandSet
7790  
7791    ArmorSet
7792      Conditions      = None
7793      Armor           = HumanArmor
7794      DamageFX        = InfantryDamageFX
7795    End
7796  
7797    VisionRange = 150
7798    ShroudClearingRange = 300
7799    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
7800  
7801    ; *** AUDIO Parameters ***
7802    VoiceSelect = PilotVoiceSelect
7803    VoiceMove = PilotVoiceMove
7804    VoiceAttack = PilotVoiceMove
7805    SoundDie = PilotVoiceDie
7806    SoundDieFire = DieByFireUSA
7807    SoundDieToxin = DieByToxinUSA
7808    VoiceGarrison = PilotVoiceGarrison
7809    VoiceFear = PilotVoiceFear
7810    UnitSpecificSounds
7811      VoiceEnter = PilotVoiceEnter
7812      VoiceEnterHostile     = PilotVoiceEnter
7813      VoiceGetHealed      = PilotVoiceMove
7814    End
7815  
7816    ; *** ENGINEERING Parameters ***
7817    RadarPriority = UNIT
7818    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY NO_GARRISON SCORE IGNORES_SELECT_ALL
7819  
7820    Behavior = VeterancyGainCreate ModuleTag_02
7821      ; omit the "ScienceRequired" so that this upgrade always occurs.
7822      ; Pilots should never (repeat, never) be less than VETERAN status.
7823      StartingLevel = VETERAN
7824    End
7825  
7826    Behavior = VeterancyCrateCollide       ModuleTag_03
7827      RequiredKindOf = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
7828      ForbiddenKindOf = DOZER       ; but not to TRANSPORTs or DOZERs!
7829      EffectRange = 0               ; 0=="affect only the thing you collide with"
7830      AddsOwnerVeterancy = Yes      ; we add our own veterancy to the target (rather than just +1 level)
7831      IsPilot = Yes                 ; set the pilot flag because it's different than the veterancy crate and has extra checking
7832    End
7833  
7834    Body = ActiveBody ModuleTag_04
7835      MaxHealth       = 100.0
7836      InitialHealth   = 100.0
7837    End
7838  
7839    Behavior = AIUpdateInterface ModuleTag_05
7840      AutoAcquireEnemiesWhenIdle = Yes
7841    End
7842  
7843    Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
7844      ScanRate = 1000 ; once a second.
7845      ScanRange = 300 ;
7846      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
7847      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
7848    End
7849  
7850    Behavior = PilotFindVehicleUpdate   ModuleTag_07 ; This update will have the unit go to a vehicle. jba 
7851      ScanRate = 1000 ; once a second.
7852      ScanRange = 300 ;
7853      MinHealth = 0.5 ;  don't enter a vehicle less than 50% healthy.
7854    End
7855  
7856    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
7857    Locomotor = SET_NORMAL_UPGRADED BasicHumanLocomotorPlus25
7858  
7859    Behavior = PhysicsBehavior ModuleTag_08
7860      Mass = 5.0
7861    End
7862  
7863    Behavior = LocomotorSetUpgrade ModuleTag_10
7864      TriggeredBy = Upgrade_Veterancy_HEROIC
7865    End
7866  
7867    Behavior = SquishCollide ModuleTag_11
7868      ;nothing
7869    End
7870  
7871  
7872  ; --- begin Death modules ---
7873    Behavior = SlowDeathBehavior ModuleTag_Death01
7874      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
7875      SinkDelay           = 3000
7876      SinkRate            = 0.5     ; in Dist/Sec
7877      DestructionDelay    = 8000
7878      FX                  = INITIAL FX_GIDie
7879    End
7880    Behavior = SlowDeathBehavior ModuleTag_Death02
7881      DeathTypes          = NONE +CRUSHED +SPLATTED
7882      SinkDelay           = 3000
7883      SinkRate            = 0.5     ; in Dist/Sec
7884      DestructionDelay    = 8000
7885      FX                  = INITIAL FX_GIDieCrushed
7886    End
7887    Behavior = SlowDeathBehavior ModuleTag_Death03
7888      DeathTypes          = NONE +EXPLODED
7889      SinkDelay           = 3000
7890      SinkRate            = 0.5     ; in Dist/Sec
7891      DestructionDelay    = 8000
7892      FX                  = INITIAL FX_GIDie
7893      FlingForce          = 8
7894      FlingForceVariance  = 3
7895      FlingPitch          = 60
7896      FlingPitchVariance  = 10
7897    End
7898    Behavior = SlowDeathBehavior ModuleTag_Death04
7899      DeathTypes          = NONE +BURNED
7900      DestructionDelay    = 0
7901      FX                  = INITIAL FX_GIDie
7902      OCL                 = INITIAL OCL_FlamingInfantry
7903    End
7904    Behavior = SlowDeathBehavior ModuleTag_Death05
7905      DeathTypes          = NONE +POISONED
7906      DestructionDelay    = 0
7907      FX                  = INITIAL FX_GIDie
7908      OCL                 = INITIAL OCL_ToxicInfantry
7909    End
7910    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
7911      DeathTypes          = NONE +POISONED_BETA
7912      DestructionDelay    = 0
7913      FX                  = INITIAL FX_GIDie
7914      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
7915    End
7916  ; --- end Death modules ---
7917  
7918    Behavior = PoisonedBehavior ModuleTag_14
7919      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
7920      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
7921    End
7922   
7923    Geometry = CYLINDER
7924    Scale = 0.95                            ;Scaling
7925    GeometryMajorRadius = 1.0
7926    GeometryMinorRadius = 1.0
7927    GeometryHeight = 8.0
7928    GeometryIsSmall = Yes
7929    Shadow = SHADOW_DECAL
7930    ShadowSizeX = 9;
7931    ShadowSizeY = 9;
7932    ShadowTexture = ShadowI;
7933    BuildCompletion = APPEARS_AT_RALLY_POINT
7934  
7935  End
7936  
7937  ;------------------------------------------------------------------------------
7938  Object AmericaInfantryPathfinder
7939  
7940      ; *** ART Parameters ***
7941    SelectPortrait         = SAPathfinder1_L
7942    ButtonImage            = SAPathfinder1
7943    
7944    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
7945    ;UpgradeCameo2 = NONE
7946    ;UpgradeCameo3 = NONE
7947    ;UpgradeCameo4 = NONE
7948    ;UpgradeCameo5 = NONE
7949    
7950    Draw = W3DModelDraw ModuleTag_01
7951  
7952      OkToChangeModelColor = Yes
7953  
7954      DefaultConditionState
7955        Model = AIPFDR_SKN
7956        IdleAnimation = AIPFDR_SKL.AIPFDR_STA 
7957        IdleAnimation = AIPFDR_SKL.AIPFDR_IDA
7958        AnimationMode = ONCE
7959        WeaponFireFXBone = PRIMARY Muzzle
7960        WeaponMuzzleFlash = PRIMARY MuzzleFX
7961        TransitionKey = TRANS_Standing
7962      End
7963      AliasConditionState = REALLYDAMAGED
7964  
7965      ConditionState = MOVING
7966        Animation = AIPFDR_SKL.AIPFDR_RNA 25
7967        AnimationMode = LOOP
7968        Flags = RANDOMSTART
7969        TransitionKey = TRANS_Standing
7970        ParticleSysBone   = None InfantryDustTrails
7971      End
7972      AliasConditionState = MOVING REALLYDAMAGED
7973  
7974      ConditionState  = FIRING_A 
7975        Animation     = AIPFDR_SKL.AIPFDR_ATB                 ; recoil in standing position
7976        AnimationMode = ONCE
7977        TransitionKey = TRANS_FiringA
7978      End
7979      AliasConditionState = FIRING_A MOVING
7980      AliasConditionState = FIRING_A MOVING REALLYDAMAGED
7981      AliasConditionState = FIRING_A REALLYDAMAGED
7982  
7983      ConditionState  = BETWEEN_FIRING_SHOTS_A
7984        Animation     = AIPFDR_SKL.AIPFDR_ATBST               ; motionless in standing position
7985        AnimationMode = ONCE
7986        WaitForStateToFinishIfPossible = TRANS_FiringA
7987      End
7988      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
7989      AliasConditionState = RELOADING_A
7990      AliasConditionState = RELOADING_A REALLYDAMAGED
7991  
7992      ConditionState = DYING
7993        Animation = AIPFDR_SKL.AIPFDR_DTA
7994        AnimationMode = ONCE
7995        TransitionKey = TRANS_Dying
7996      End
7997      
7998      TransitionState = TRANS_Dying TRANS_Flailing
7999        Animation = AIPFDR_SKL.AIPFDR_ADTA1
8000        AnimationMode = ONCE
8001      End
8002  
8003      ConditionState = DYING EXPLODED_FLAILING
8004        Animation = AIPFDR_SKL.AIPFDR_ADTA2
8005        AnimationMode = LOOP
8006        TransitionKey = TRANS_Flailing
8007      End
8008  
8009      ConditionState = DYING EXPLODED_BOUNCING
8010        Animation = AIPFDR_SKL.AIPFDR_ADTA3
8011        AnimationMode = ONCE
8012        TransitionKey = None
8013      End
8014  
8015      ConditionState = FREEFALL
8016        Animation = AIPFDR_SKL.AIPFDR_PFL
8017        AnimationMode = LOOP
8018        TransitionKey = TRANS_Falling
8019      End
8020      AliasConditionState = FREEFALL DYING
8021  
8022      ConditionState = PARACHUTING
8023        Animation = AIPFDR_SKL.AIPFDR_PHG
8024        AnimationMode = LOOP
8025        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
8026        ;our bone positions should come from the last frame, rather than the first
8027        TransitionKey = TRANS_Chute
8028      End
8029      AliasConditionState = PARACHUTING DYING
8030  
8031  
8032      TransitionState = TRANS_Falling TRANS_Chute
8033        Animation = AIPFDR_SKL.AIPFDR_POP
8034        AnimationMode = ONCE
8035        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
8036        ;our bone positions should come from the last frame, rather than the first
8037      End
8038  
8039      TransitionState = TRANS_Chute TRANS_Standing
8040        Animation = AIPFDR_SKL.AIPFDR_PTD
8041        AnimationMode = ONCE
8042      End
8043    End
8044  
8045    
8046    ; ***DESIGN parameters ***
8047    DisplayName      = OBJECT:Pathfinder
8048    Side = America
8049    EditorSorting = INFANTRY
8050    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
8051    
8052    WeaponSet
8053      Conditions = None 
8054      Weapon = PRIMARY USAPathfinderSniperRifle
8055    End
8056    ArmorSet
8057      Conditions      = None
8058      Armor           = HumanArmor
8059      DamageFX        = InfantryDamageFX
8060    End
8061  
8062    VisionRange = 200
8063    ShroudClearingRange = 400
8064    Prerequisites
8065      Object = AmericaBarracks
8066      Science = SCIENCE_Pathfinder
8067    End
8068    BuildCost = 600
8069    BuildTime = 10.0          ;in seconds  
8070    
8071    ExperienceValue = 40 40 60 80    ;Experience point value at each level
8072    ExperienceRequired = 0 50 100 200  ;Experience points needed to gain each level
8073    IsTrainable = Yes             ;Can gain experience
8074    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
8075    CommandSet      = AmericaInfantryPathfinderCommandSet
8076  
8077    ; *** AUDIO Parameters ***
8078    VoiceSelect = PathfinderVoiceSelect
8079    VoiceMove = PathfinderVoiceMove
8080    VoiceGuard = PathfinderVoiceMove
8081    VoiceAttack = PathfinderVoiceAttack
8082    SoundDie = PathfinderVoiceDie
8083    SoundDieFire = DieByFireUSA
8084    SoundDieToxin = DieByToxinUSA
8085    VoiceFear = PathfinderVoiceFear
8086    SoundStealthOn = StealthOn
8087    SoundStealthOff = StealthOff
8088    VoiceFear = PathfinderVoiceFear
8089    
8090    UnitSpecificSounds
8091      VoiceCreate          = PathfinderVoiceCreate
8092      VoiceGarrison = PathfinderVoiceGarrison
8093      VoiceEnter = PathfinderVoiceMove
8094      VoiceEnterHostile =  PathfinderVoiceMove
8095      VoiceGetHealed      = PathfinderVoiceMove
8096    End
8097  
8098    ; *** ENGINEERING Parameters ***
8099    RadarPriority = UNIT
8100    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY STEALTH_GARRISON SCORE
8101  
8102    Body = ActiveBody ModuleTag_02
8103      MaxHealth       = 120.0
8104      InitialHealth   = 120.0
8105    End
8106  
8107    Behavior = AIUpdateInterface ModuleTag_03
8108      AutoAcquireEnemiesWhenIdle = Yes Stealthed
8109      MoodAttackCheckRate        = 250
8110    End
8111  
8112    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
8113      ScanRate = 1000 ; once a second.
8114      ScanRange = 300 ;
8115      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
8116      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
8117    End
8118  
8119    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
8120  
8121    Behavior = ExperienceScalarUpgrade ModuleTag_05
8122      TriggeredBy = Upgrade_AmericaAdvancedTraining
8123      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
8124    End
8125  
8126    Behavior = PhysicsBehavior ModuleTag_06
8127      Mass = 5.0
8128    End
8129    Behavior = StealthDetectorUpdate ModuleTag_08
8130      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
8131      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
8132      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
8133      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
8134    End
8135    Behavior = StealthUpdate ModuleTag_09
8136      StealthDelay                = 0           ; msec
8137      StealthForbiddenConditions  = MOVING ; stays stealthy while attacking
8138      FriendlyOpacityMin          = 30.0%
8139      FriendlyOpacityMax          = 80.0%
8140      PulseFrequency              = 500   ; msec
8141      MoveThresholdSpeed          = 3
8142      InnateStealth               = Yes
8143      OrderIdleEnemiesToAttackMeUponReveal  = Yes
8144    End
8145   
8146    Behavior = SquishCollide ModuleTag_10
8147      ;nothing
8148    End
8149  
8150  
8151  ; --- begin Death modules ---
8152    Behavior = SlowDeathBehavior ModuleTag_Death01
8153      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
8154      SinkDelay           = 50000
8155      SinkRate            = 0.5     ; in Dist/Sec
8156      DestructionDelay    = 8000000
8157      FX                  = INITIAL FX_GIDie
8158    End
8159    Behavior = SlowDeathBehavior ModuleTag_Death02
8160      DeathTypes          = NONE +CRUSHED +SPLATTED
8161      SinkDelay           = 50000
8162      SinkRate            = 0.5     ; in Dist/Sec
8163      DestructionDelay    = 8000000
8164      FX                  = INITIAL FX_GIDieCrushed
8165    End
8166    Behavior = SlowDeathBehavior ModuleTag_Death03
8167      DeathTypes          = NONE +EXPLODED
8168      SinkDelay           = 50000
8169      SinkRate            = 0.5     ; in Dist/Sec
8170      DestructionDelay    = 8000000
8171      FX                  = INITIAL FX_GIDie
8172      FlingForce          = 8
8173      FlingForceVariance  = 3
8174      FlingPitch          = 60
8175      FlingPitchVariance  = 10
8176    End
8177    Behavior = SlowDeathBehavior ModuleTag_Death04
8178      DeathTypes          = NONE +BURNED
8179      DestructionDelay    = 0
8180      FX                  = INITIAL FX_GIDie
8181      OCL                 = INITIAL OCL_FlamingInfantry
8182    End
8183    Behavior = SlowDeathBehavior ModuleTag_Death05
8184      DeathTypes          = NONE +POISONED
8185      DestructionDelay    = 0
8186      FX                  = INITIAL FX_GIDie
8187      OCL                 = INITIAL OCL_ToxicInfantry
8188    End
8189    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
8190      DeathTypes          = NONE +POISONED_BETA
8191      DestructionDelay    = 0
8192      FX                  = INITIAL FX_GIDie
8193      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
8194    End
8195  ; --- end Death modules ---
8196  
8197    Behavior = PoisonedBehavior ModuleTag_13
8198      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
8199      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
8200    End
8201   
8202    Geometry = CYLINDER
8203    Scale = 0.95                            ;Scaling
8204    GeometryMajorRadius = 1.0
8205    GeometryMinorRadius = 1.0
8206    GeometryHeight = 5.0
8207    GeometryIsSmall = Yes
8208    Shadow = SHADOW_DECAL
8209    ShadowSizeX = 9;
8210    ShadowSizeY = 9;
8211    ShadowTexture = ShadowI;
8212    BuildCompletion = APPEARS_AT_RALLY_POINT
8213  
8214  End
8215  
8216  ;------------------------------------------------------------------------------
8217  Object CINE_AmericanInfantryPathfinder
8218  
8219      ; *** ART Parameters ***
8220    SelectPortrait         = SAPathfinder1_L
8221    ButtonImage            = SAPathfinder1
8222    
8223    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
8224    ;UpgradeCameo2 = NONE
8225    ;UpgradeCameo3 = NONE
8226    ;UpgradeCameo4 = NONE
8227    ;UpgradeCameo5 = NONE
8228    
8229    Draw = W3DModelDraw ModuleTag_01
8230  
8231      OkToChangeModelColor = Yes
8232  
8233      DefaultConditionState
8234        Model = AIPFDR_SKN
8235        IdleAnimation = AIPFDR_SKL.AIPFDR_STA 0 14
8236        IdleAnimation = AIPFDR_SKL.AIPFDR_IDA
8237        AnimationMode = ONCE
8238        WeaponFireFXBone = PRIMARY Muzzle
8239        WeaponMuzzleFlash = PRIMARY MuzzleFX
8240        TransitionKey = TRANS_Standing
8241      End
8242  
8243      ConditionState = MOVING
8244        Animation = AIPFDR_SKL.AIPFDR_RNA 30
8245        AnimationMode = LOOP
8246        Flags = RANDOMSTART
8247        TransitionKey = TRANS_Standing
8248        ParticleSysBone   = None InfantryDustTrails
8249      End
8250  
8251      TransitionState = TRANS_Standing TRANS_PreAttack 
8252        Animation = AIPFDR_SKL.AIPFDR_DVA                           ; dive to the ground
8253        AnimationMode = ONCE
8254      End
8255  
8256      ConditionState = PREATTACK_A   
8257        Animation = AIPFDR_SKL.AIPFDR_STB                           ; motionless in prone position
8258        AnimationMode = ONCE
8259        TransitionKey = TRANS_PreAttack 
8260      End
8261      AliasConditionState = PREATTACK_A MOVING
8262      AliasConditionState = PREATTACK_A FIRING_A
8263      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
8264  
8265      ConditionState = FIRING_A
8266        Animation = AIPFDR_SKL.AIPFDR_ATA                          ; recoil in prone position
8267        AnimationMode = ONCE
8268        TransitionKey = TRANS_LyingDown 
8269      End
8270      AliasConditionState = RELOADING_A
8271      AliasConditionState = BETWEEN_FIRING_SHOTS_A
8272  
8273      ConditionState = MOVING FIRING_A 
8274        Animation = AIPFDR_SKL.AIPFDR_CLA 15                        ; crawling
8275        AnimationMode = LOOP
8276        TransitionKey = TRANS_LyingDown 
8277        ParticleSysBone   = None InfantryDustTrails
8278      End
8279      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
8280      AliasConditionState = MOVING RELOADING_A
8281  
8282  ;    TransitionState = TRANS_Standing TRANS_LyingDown 
8283  ;      Animation = AIPFDR_SKL.AIPFDR_DVA                           ; dive to the ground
8284  ;      AnimationMode = ONCE
8285  ;    End
8286  
8287      TransitionState = TRANS_LyingDown TRANS_Dying 
8288        Animation = AIPFDR_SKL.AIPFDR_SUA                           ; getting up
8289        AnimationMode = ONCE
8290      End
8291      TransitionState = TRANS_LyingDown TRANS_Standing 
8292        Animation = AIPFDR_SKL.AIPFDR_SUA                           ; getting up
8293        AnimationMode = ONCE
8294      End
8295  
8296      ConditionState = DYING
8297        Animation = AIPFDR_SKL.AIPFDR_DTA
8298        AnimationMode = ONCE
8299        TransitionKey = TRANS_Dying
8300      End
8301      
8302      TransitionState = TRANS_Dying TRANS_Flailing
8303        Animation = AIPFDR_SKL.AIPFDR_ADTA1
8304        AnimationMode = ONCE
8305      End
8306  
8307      ConditionState = DYING EXPLODED_FLAILING
8308        Animation = AIPFDR_SKL.AIPFDR_ADTA2
8309        AnimationMode = LOOP
8310        TransitionKey = TRANS_Flailing
8311      End
8312  
8313      ConditionState = DYING EXPLODED_BOUNCING
8314        Animation = AIPFDR_SKL.AIPFDR_ADTA3
8315        AnimationMode = ONCE
8316        TransitionKey = None
8317      End
8318  
8319      ConditionState = FREEFALL
8320        Animation = AIPFDR_SKL.AIPFDR_PFL
8321        AnimationMode = LOOP
8322        TransitionKey = TRANS_Falling
8323      End
8324      AliasConditionState = FREEFALL DYING
8325  
8326      ConditionState = PARACHUTING
8327        Animation = AIPFDR_SKL.AIPFDR_PHG
8328        AnimationMode = LOOP
8329        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
8330        ;our bone positions should come from the last frame, rather than the first
8331        TransitionKey = TRANS_Chute
8332      End
8333      AliasConditionState = PARACHUTING DYING
8334  
8335  
8336      TransitionState = TRANS_Falling TRANS_Chute
8337        Animation = AIPFDR_SKL.AIPFDR_POP
8338        AnimationMode = ONCE
8339        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
8340        ;our bone positions should come from the last frame, rather than the first
8341      End
8342  
8343      TransitionState = TRANS_Chute TRANS_Standing
8344        Animation = AIPFDR_SKL.AIPFDR_PTD
8345        AnimationMode = ONCE
8346      End
8347    End
8348  
8349    
8350    ; ***DESIGN parameters ***
8351    DisplayName      = OBJECT:Pathfinder
8352    Side = America
8353    EditorSorting = INFANTRY
8354    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
8355    
8356    WeaponSet
8357      Conditions = None 
8358      Weapon = PRIMARY CINE_USAPathfinderSniperRifle
8359    End
8360    ArmorSet
8361      Conditions      = None
8362      Armor           = HumanArmor
8363      DamageFX        = InfantryDamageFX
8364    End
8365  
8366    VisionRange = 300
8367    ShroudClearingRange = 400
8368    Prerequisites
8369      Object = AmericaBarracks
8370      Science = SCIENCE_Pathfinder
8371    End
8372    BuildCost = 600
8373    BuildTime = 10.0          ;in seconds  
8374    
8375    ExperienceValue = 40 40 60 80    ;Experience point value at each level
8376    ExperienceRequired = 0 50 100 200  ;Experience points needed to gain each level
8377    IsTrainable = Yes             ;Can gain experience
8378    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
8379    CommandSet      = AmericaInfantryPathfinderCommandSet
8380  
8381    ; *** AUDIO Parameters ***
8382    VoiceSelect = PathfinderVoiceSelect
8383    VoiceMove = PathfinderVoiceMove
8384    VoiceGuard = PathfinderVoiceMove
8385    VoiceAttack = PathfinderVoiceAttack
8386    SoundDie = PathfinderVoiceDie
8387    SoundDieFire = DieByFireUSA
8388    SoundDieToxin = DieByToxinUSA
8389    VoiceFear = PathfinderVoiceFear
8390    SoundStealthOn = StealthOn
8391    SoundStealthOff = StealthOff
8392    VoiceFear = PathfinderVoiceFear
8393    
8394    UnitSpecificSounds
8395      VoiceCreate          = PathfinderVoiceCreate
8396      VoiceGarrison = PathfinderVoiceGarrison
8397      VoiceEnter = PathfinderVoiceMove
8398      VoiceEnterHostile =  PathfinderVoiceMove
8399      VoiceGetHealed      = PathfinderVoiceMove
8400    End
8401  
8402    ; *** ENGINEERING Parameters ***
8403    RadarPriority = UNIT
8404    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY STEALTH_GARRISON SCORE
8405  
8406    Body = ActiveBody ModuleTag_02
8407      MaxHealth       = 120.0
8408      InitialHealth   = 120.0
8409    End
8410  
8411    Behavior = AIUpdateInterface ModuleTag_03
8412      AutoAcquireEnemiesWhenIdle = Yes Stealthed
8413      MoodAttackCheckRate        = 250
8414    End
8415  
8416    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
8417      ScanRate = 1000 ; once a second.
8418      ScanRange = 300 ;
8419      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
8420      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
8421    End
8422  
8423    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
8424  
8425    Behavior = ExperienceScalarUpgrade ModuleTag_05
8426      TriggeredBy = Upgrade_AmericaAdvancedTraining
8427      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
8428    End
8429  
8430    Behavior = PhysicsBehavior ModuleTag_06
8431      Mass = 5.0
8432    End
8433  
8434   
8435    Behavior = SquishCollide ModuleTag_10
8436      ;nothing
8437    End
8438  
8439  
8440  ; --- begin Death modules ---
8441    Behavior = SlowDeathBehavior ModuleTag_Death01
8442      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
8443      SinkDelay           = 3000
8444      SinkRate            = 0.5     ; in Dist/Sec
8445      DestructionDelay    = 8000
8446      FX                  = INITIAL FX_GIDie
8447    End
8448    Behavior = SlowDeathBehavior ModuleTag_Death02
8449      DeathTypes          = NONE +CRUSHED +SPLATTED
8450      SinkDelay           = 3000
8451      SinkRate            = 0.5     ; in Dist/Sec
8452      DestructionDelay    = 8000
8453      FX                  = INITIAL FX_GIDieCrushed
8454    End
8455    Behavior = SlowDeathBehavior ModuleTag_Death03
8456      DeathTypes          = NONE +EXPLODED
8457      SinkDelay           = 3000
8458      SinkRate            = 0.5     ; in Dist/Sec
8459      DestructionDelay    = 8000
8460      FX                  = INITIAL FX_GIDie
8461      FlingForce          = 8
8462      FlingForceVariance  = 3
8463      FlingPitch          = 60
8464      FlingPitchVariance  = 10
8465    End
8466    Behavior = SlowDeathBehavior ModuleTag_Death04
8467      DeathTypes          = NONE +BURNED
8468      DestructionDelay    = 0
8469      FX                  = INITIAL FX_GIDie
8470      OCL                 = INITIAL OCL_FlamingInfantry
8471    End
8472    Behavior = SlowDeathBehavior ModuleTag_Death05
8473      DeathTypes          = NONE +POISONED
8474      DestructionDelay    = 0
8475      FX                  = INITIAL FX_GIDie
8476      OCL                 = INITIAL OCL_ToxicInfantry
8477    End
8478    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
8479      DeathTypes          = NONE +POISONED_BETA
8480      DestructionDelay    = 0
8481      FX                  = INITIAL FX_GIDie
8482      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
8483    End
8484  ; --- end Death modules ---
8485  
8486    Behavior = PoisonedBehavior ModuleTag_13
8487      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
8488      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
8489    End
8490   
8491    Geometry = CYLINDER
8492    Scale = 0.95                            ;Scaling
8493    GeometryMajorRadius = 1.0
8494    GeometryMinorRadius = 1.0
8495    GeometryHeight = 5.0
8496    GeometryIsSmall = Yes
8497    Shadow = SHADOW_DECAL
8498    ShadowSizeX = 9;
8499    ShadowSizeY = 9;
8500    ShadowTexture = ShadowI;
8501    BuildCompletion = APPEARS_AT_RALLY_POINT
8502  
8503  End
8504  
8505  ;------------------------------------------------------------------------------
8506  Object GLAInfantryRebel
8507  
8508    ; *** ART Parameters ***
8509    SelectPortrait         = SURebel_L
8510    ButtonImage            = SURebel
8511  
8512    UpgradeCameo1 = Upgrade_GLAAPBullets
8513    UpgradeCameo2 = Upgrade_GLACamouflage
8514    UpgradeCameo3 = Upgrade_InfantryCaptureBuilding
8515    ;UpgradeCameo4 = NONE
8516    ;UpgradeCameo5 = NONE
8517  
8518    Draw = W3DModelDraw ModuleTag_01
8519  
8520      OkToChangeModelColor = Yes
8521      
8522      ; this says "we don't use these condition states at all, so completely
8523      ; ignore them for purposes of matchmaking"... this is useful to help
8524      ; reduce the number of AliasConditionState clauses you must add in
8525      ; order to avoid ambiguity in some cases.
8526      IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
8527  
8528      ; ---- standing
8529      DefaultConditionState
8530        Model               = UIRGrd_SKN
8531        IdleAnimation       = UIRGrd_SKL.UIRGrd_STN 0 35
8532        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDA 
8533        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDB 
8534        AnimationMode       = ONCE
8535        WeaponFireFXBone    = PRIMARY Muzzle
8536        WeaponMuzzleFlash   = PRIMARY MuzzleFX
8537        TransitionKey       = TRANS_Standing
8538      End
8539  
8540      ConditionState        = REALLYDAMAGED
8541        IdleAnimation       = UIRGrd_SKL.UIRGrd_STB 0 35
8542        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDC
8543        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDD 
8544        AnimationMode       = ONCE
8545        TransitionKey       = TRANS_StandingHurt
8546      End
8547  
8548      ; ---- moving
8549      ConditionState        = MOVING
8550        Animation           = UIRGrd_SKL.UIRGrd_RNA 15
8551        AnimationMode       = LOOP
8552        TransitionKey       = TRANS_Walking
8553        ParticleSysBone     = None InfantryDustTrails
8554      End
8555      AliasConditionState   = MOVING ATTACKING
8556  
8557      ConditionState        = MOVING REALLYDAMAGED
8558        Animation           = UIRGrd_SKL.UIRGrd_RNB 25
8559        AnimationMode       = LOOP
8560        TransitionKey       = TRANS_WalkingHurt
8561        ParticleSysBone     = None InfantryDustTrails
8562      End
8563      AliasConditionState   = MOVING ATTACKING REALLYDAMAGED
8564      
8565      ; ---- dying 
8566      ConditionState        = DYING
8567        Animation           = UIRGrd_SKL.UIRGrd_DTA 
8568        Animation           = UIRGrd_SKL.UIRGrd_DTB 
8569        AnimationMode       = ONCE
8570        TransitionKey       = TRANS_Dying
8571      End
8572  
8573      TransitionState = TRANS_Dying TRANS_Flailing
8574        Animation = UIRGrd_SKL.UIRGrd_ADTE1
8575        AnimationMode = ONCE
8576      End
8577  
8578      ConditionState = DYING EXPLODED_FLAILING
8579        Animation = UIRGrd_SKL.UIRGrd_ADTE2
8580        AnimationMode = LOOP
8581        TransitionKey = TRANS_Flailing
8582      End
8583  
8584      ConditionState = DYING EXPLODED_BOUNCING
8585        Animation = UIRGrd_SKL.UIRGrd_ADTE3
8586        AnimationMode = ONCE
8587        TransitionKey = None
8588      End
8589      
8590      ConditionState = SPECIAL_CHEERING
8591        Animation = UIRGrd_SKL.UIRGrd_IDB
8592      End
8593  
8594      ; ---- firing
8595      ConditionState = USING_WEAPON_A
8596        Animation = UIRGrd_SKL.UIRGrd_ATA
8597        AnimationMode = LOOP
8598        TransitionKey = TRANS_Firing
8599      End
8600  
8601      ConditionState = USING_WEAPON_A REALLYDAMAGED
8602        Animation = UIRGrd_SKL.UIRGrd_ATA2
8603        AnimationMode = LOOP
8604        TransitionKey = TRANS_FiringHurt
8605      End
8606  
8607      TransitionState = TRANS_Standing TRANS_Firing
8608        Animation = UIRGrd_SKL.UIRGrd_ATAST
8609        AnimationMode = ONCE
8610      End
8611  
8612      TransitionState = TRANS_Firing TRANS_Standing
8613        Animation = UIRGrd_SKL.UIRGrd_ATAED
8614        AnimationMode = ONCE
8615      End
8616  
8617      TransitionState = TRANS_StandingHurt TRANS_FiringHurt
8618        Animation = UIRGrd_SKL.UIRGrd_ATA2ED
8619        AnimationMode = ONCE_BACKWARDS
8620      End
8621  
8622      TransitionState = TRANS_FiringHurt TRANS_StandingHurt
8623        Animation = UIRGrd_SKL.UIRGrd_ATA2ED
8624        AnimationMode = ONCE
8625      End
8626  
8627      TransitionState = TRANS_Standing TRANS_StandingHurt
8628        Animation = UIRGrd_SKL.UIRGrd_ATA2ED
8629        AnimationMode = ONCE
8630      End
8631  
8632      
8633  
8634      ; ------- Bldg-capture
8635  
8636      ConditionState = UNPACKING
8637        Model             = UIRGrd_F_SKN
8638        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
8639        AnimationMode     = ONCE
8640      End
8641      AliasConditionState = UNPACKING REALLYDAMAGED
8642  
8643      ConditionState = RAISING_FLAG
8644        Model             = UIRGrd_F_SKN
8645        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
8646        AnimationMode     = ONCE
8647        TransitionKey     = TRANS_Raising
8648      End
8649      AliasConditionState = RAISING_FLAG REALLYDAMAGED
8650  
8651      ConditionState = PACKING
8652        Model             = UIRGrd_F_SKN
8653        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
8654        AnimationMode     = ONCE_BACKWARDS
8655        Flags             = START_FRAME_LAST
8656        TransitionKey     = TRANS_Packing
8657      End
8658      AliasConditionState = PACKING REALLYDAMAGED
8659  
8660      TransitionState = TRANS_Raising TRANS_Packing
8661        Model             = UIRGrd_F_SKN
8662        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
8663        AnimationMode     = ONCE_BACKWARDS
8664        Flags             = START_FRAME_LAST
8665      End
8666  
8667    End
8668  
8669    ; ***DESIGN parameters ***
8670    DisplayName         = OBJECT:Rebel
8671    Side                = GLA
8672    EditorSorting       = INFANTRY
8673    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
8674   
8675    WeaponSet
8676      Conditions = None 
8677      Weapon = PRIMARY GLARebelMachineGun
8678      Weapon = SECONDARY GLAAngryMobMolotovCocktailProjectileWeapon2 
8679    End
8680  ; sorry, no tranqs, cut for this version (srj)
8681  ;  WeaponSet
8682  ;    Conditions = PLAYER_UPGRADE 
8683  ;    Weapon = PRIMARY GLARebelMachineGun
8684  ;    Weapon = SECONDARY GLARebelTranqDartsWeapon
8685  ;    AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
8686  ;    AutoChooseSources = SECONDARY NONE
8687  ;  End
8688  
8689    ArmorSet
8690      Conditions      = None
8691      Armor           = HumanArmor
8692      DamageFX        = InfantryDamageFX
8693    End
8694    VisionRange         = 150
8695    ShroudClearingRange = 300
8696    Prerequisites
8697      Object = GLABarracks
8698    End
8699    BuildCost = 150
8700    BuildTime = 5.0          ;in seconds  
8701  
8702    ExperienceValue     = 15 15 30 40     ;Experience point value at each level
8703    ExperienceRequired  = 0 40 60 120     ;Experience points needed to gain each level
8704    IsTrainable         = Yes             ;Can gain experience
8705    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
8706    CommandSet          = GLAInfantryRebelCommandSet
8707  
8708    ; *** AUDIO Parameters ***
8709    VoiceSelect = RebelVoiceSelect
8710    VoiceMove = RebelVoiceMove
8711    VoiceGuard = RebelVoiceMove
8712    VoiceAttack = RebelVoiceAttack
8713    SoundDie = RebelVoiceDie
8714    SoundDieFire = DieByFireGLA
8715    SoundDieToxin = DieByToxinGLA
8716    SoundStealthOn = StealthOn
8717    SoundStealthOff = StealthOff
8718    VoiceFear = RebelVoiceFear
8719    VoiceTaskComplete = RebelVoiceCaptureComplete
8720    UnitSpecificSounds
8721      VoiceCreate = RebelVoiceCreate
8722      VoiceSubdue = RebelVoiceSubdue
8723      VoiceGarrison = RebelVoiceGarrison
8724      VoiceEnter = RebelVoiceMove
8725      VoiceEnterHostile = RebelVoiceMove
8726      VoiceGetHealed      = RebelVoiceMove
8727    End
8728  
8729    ; *** ENGINEERING Parameters ***
8730    RadarPriority = UNIT
8731    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE 
8732  
8733    Body = ActiveBody ModuleTag_02
8734      MaxHealth       = 120.0
8735      InitialHealth   = 120.0
8736    End
8737  
8738    Behavior = AIUpdateInterface ModuleTag_03
8739      AutoAcquireEnemiesWhenIdle = Yes
8740    End
8741  
8742    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
8743    End
8744  
8745    Locomotor = SET_NORMAL BasicHumanLocomotor
8746  
8747    Behavior = PhysicsBehavior ModuleTag_05
8748      Mass = 5.0
8749    End
8750    Behavior = StealthUpdate ModuleTag_07
8751      StealthDelay                = 2500 ; msec
8752      StealthForbiddenConditions  = ATTACKING USING_ABILITY
8753      MoveThresholdSpeed          = 3
8754      InnateStealth               = No ;Requires upgrade first
8755      OrderIdleEnemiesToAttackMeUponReveal  = Yes
8756    End
8757  
8758  ; sorry, no tranq or stun bullets, cut for this version (srj)
8759  ;  Behavior = WeaponSetUpgrade ModuleTag_08
8760  ;    TriggeredBy = Upgrade_GLATranqDarts
8761  ;  End
8762    Behavior = WeaponBonusUpgrade ModuleTag_09
8763      TriggeredBy = Upgrade_GLAAPBullets
8764    End
8765    Behavior = StealthUpgrade ModuleTag_10
8766      TriggeredBy = Upgrade_GLACamouflage
8767    End
8768  
8769   
8770    Behavior = SquishCollide ModuleTag_11
8771      ;nothing
8772    End
8773  
8774  
8775  ; --- begin Death modules ---
8776    Behavior = SlowDeathBehavior ModuleTag_Death01
8777      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
8778      SinkDelay           = 50000
8779      SinkRate            = 0.5     ; in Dist/Sec
8780      DestructionDelay    = 8000000
8781      FX                  = INITIAL FX_GIDie
8782    End
8783    Behavior = SlowDeathBehavior ModuleTag_Death02
8784      DeathTypes          = NONE +CRUSHED +SPLATTED
8785      SinkDelay           = 50000
8786      SinkRate            = 0.5     ; in Dist/Sec
8787      DestructionDelay    = 8000000
8788      FX                  = INITIAL FX_GIDieCrushed
8789    End
8790    Behavior = SlowDeathBehavior ModuleTag_Death03
8791      DeathTypes          = NONE +EXPLODED
8792      SinkDelay           = 50000
8793      SinkRate            = 0.5     ; in Dist/Sec
8794      DestructionDelay    = 8000000
8795      FX                  = INITIAL FX_GIDie
8796      FlingForce          = 8
8797      FlingForceVariance  = 3
8798      FlingPitch          = 60
8799      FlingPitchVariance  = 10
8800    End
8801    Behavior = SlowDeathBehavior ModuleTag_Death04
8802      DeathTypes          = NONE +BURNED
8803      DestructionDelay    = 0
8804      FX                  = INITIAL FX_GIDie
8805      OCL                 = INITIAL OCL_FlamingInfantry
8806    End
8807    Behavior = SlowDeathBehavior ModuleTag_Death05
8808      DeathTypes          = NONE +POISONED
8809      DestructionDelay    = 0
8810      FX                  = INITIAL FX_GIDie
8811      OCL                 = INITIAL OCL_ToxicInfantry
8812    End
8813    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
8814      DeathTypes          = NONE +POISONED_BETA
8815      DestructionDelay    = 0
8816      FX                  = INITIAL FX_GIDie
8817      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
8818    End
8819  ; --- end Death modules ---
8820  
8821    Behavior = PoisonedBehavior ModuleTag_16
8822      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
8823      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
8824    End
8825  
8826    Behavior = SpecialAbility ModuleTag_17
8827      SpecialPowerTemplate      = SpecialAbilityRebelCaptureBuilding
8828      UpdateModuleStartsAttack  = Yes
8829      StartsPaused              = Yes
8830      InitiateSound         = RebelVoiceCapture
8831    End
8832    Behavior = SpecialAbilityUpdate ModuleTag_18
8833      SpecialPowerTemplate  = SpecialAbilityRebelCaptureBuilding
8834      StartAbilityRange  = 5.0
8835      UnpackTime            = 3000  ; (changing this will scale anim speed)
8836      PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
8837      PackTime              = 2000  ; (changing this will scale anim speed)
8838      DoCaptureFX           = Yes
8839      AwardXPForTriggering  = 12
8840      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
8841    End
8842  
8843    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_19
8844      SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding
8845      TriggeredBy = Upgrade_InfantryCaptureBuilding
8846    End
8847  
8848   
8849    Geometry = CYLINDER
8850    Scale = 0.95                            ;Scaling
8851    GeometryMajorRadius = 1.0
8852    GeometryMinorRadius = 1.0
8853    GeometryHeight = 8.0
8854    GeometryIsSmall = Yes
8855    Shadow = SHADOW_DECAL
8856    ShadowSizeX = 9;
8857    ShadowSizeY = 9;
8858    ShadowTexture = ShadowI;
8859    BuildCompletion = APPEARS_AT_RALLY_POINT
8860  
8861  End
8862  
8863  ;----------------------------------------------------------------------------
8864  Object GLAInfantryJarmenKell
8865  
8866    ; *** ART Parameters ***
8867    SelectPortrait         = SUJermanKell1_L  ;NOTE: Asset spelling mistake
8868    ButtonImage            = SUJermanKell1
8869    
8870    UpgradeCameo1 = Upgrade_GLAAPBullets
8871    ;UpgradeCameo2 = NONE
8872    ;UpgradeCameo3 = NONE
8873    ;UpgradeCameo4 = NONE
8874    ;UpgradeCameo5 = NONE
8875    
8876    Draw = W3DModelDraw ModuleTag_01
8877      OkToChangeModelColor = Yes
8878  
8879      ; --- idle
8880      DefaultConditionState
8881        Model             = UIHERO_SKN
8882        IdleAnimation     = UIHERO_SKL.UIHERO_STA 0 21
8883        IdleAnimation     = UIHERO_SKL.UIHERO_IDA
8884        IdleAnimation     = UIHERO_SKL.UIHERO_IDB
8885        AnimationMode     = ONCE
8886        WeaponFireFXBone  = PRIMARY Muzzle
8887        WeaponMuzzleFlash = PRIMARY MuzzleFX
8888        TransitionKey     = TRANS_Stand
8889      End
8890  
8891      ConditionState      = REALLYDAMAGED
8892        IdleAnimation     = UIHERO_SKL.UIHERO_ISTA 0 30
8893        IdleAnimation     = UIHERO_SKL.UIHERO_IIDA
8894        IdleAnimation     = UIHERO_SKL.UIHERO_IIDB
8895        AnimationMode     = ONCE
8896        TransitionKey     = TRANS_StandInjured
8897      End
8898  
8899      TransitionState     = TRANS_Stand TRANS_StandInjured
8900        Animation         = UIHERO_SKL.UIHERO_ISTAHIT
8901        AnimationMode     = ONCE
8902      End
8903  
8904      ; --- attack
8905  
8906      ConditionState      = FIRING_A 
8907        Animation         = UIHERO_SKL.UIHERO_ATA 
8908        AnimationMode     = ONCE
8909        TransitionKey     = TRANS_FiringA
8910        AnimationSpeedFactorRange = 1.5 1.5
8911      End
8912  
8913      ConditionState      = BETWEEN_FIRING_SHOTS_A
8914        Animation         = UIHERO_SKL.UIHERO_STA
8915        AnimationMode     = ONCE
8916        WaitForStateToFinishIfPossible = TRANS_FiringA
8917      End
8918      AliasConditionState = RELOADING_A
8919    
8920      ConditionState      = FIRING_A REALLYDAMAGED
8921        Animation         = UIHERO_SKL.UIHERO_IATA2
8922        AnimationMode     = ONCE
8923        TransitionKey     = TRANS_FiringAInjured
8924        AnimationSpeedFactorRange = 1.5 1.5
8925      End
8926  
8927      ConditionState      = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
8928        Animation         = UIHERO_SKL.UIHERO_IATA2
8929        AnimationMode     = MANUAL
8930        Flags             = START_FRAME_LAST
8931        WaitForStateToFinishIfPossible = TRANS_FiringAInjured
8932      End
8933      AliasConditionState = RELOADING_A REALLYDAMAGED
8934  
8935      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
8936        Animation         = UIHERO_SKL.UIHERO_IATAHIT
8937        AnimationMode     = ONCE
8938      End
8939  
8940      ; --- moving
8941      ConditionState      = MOVING
8942        Animation         = UIHERO_SKL.UIHERO_RNA2 30
8943        AnimationMode     = LOOP
8944        Flags             = RANDOMSTART
8945        TransitionKey     = None
8946        ParticleSysBone   = None InfantryDustTrails
8947      End
8948      AliasConditionState = MOVING FIRING_A
8949      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
8950      AliasConditionState = MOVING RELOADING_A
8951  
8952      ConditionState      = MOVING REALLYDAMAGED
8953        Animation         = UIHERO_SKL.UIHERO_IRNA 30
8954        AnimationMode     = LOOP
8955        Flags             = RANDOMSTART
8956        TransitionKey     = None
8957        ParticleSysBone   = None InfantryDustTrails
8958      End
8959      AliasConditionState = MOVING FIRING_A REALLYDAMAGED
8960      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
8961      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
8962      
8963      ; --- cheering
8964      ConditionState      = SPECIAL_CHEERING
8965        Animation         = UIHERO_SKL.UIHERO_CHA
8966        AnimationMode     = LOOP
8967      End
8968  
8969      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
8970        Animation         = UIHERO_SKL.UIHERO_ICHA
8971        AnimationMode     = LOOP
8972      End
8973      
8974      ; --- dying
8975      ConditionState      = DYING
8976        Animation         = UIHERO_SKL.UIHERO_DTA
8977        Animation         = UIHERO_SKL.UIHERO_DTB
8978        Animation         = UIHERO_SKL.UIHERO_IDTA
8979        Animation         = UIHERO_SKL.UIHERO_IDTB
8980        AnimationMode     = ONCE
8981        TransitionKey     = TRANS_Dying
8982      End
8983  
8984      TransitionState     = TRANS_Dying TRANS_Flailing
8985        Animation         = UIHERO_SKL.UIHERO_ADTG21
8986        AnimationMode     = ONCE
8987      End
8988  
8989      ConditionState      = DYING EXPLODED_FLAILING
8990        Animation         = UIHERO_SKL.UIHERO_ADTG22
8991        AnimationMode     = LOOP
8992        TransitionKey     = TRANS_Flailing
8993      End
8994  
8995      ConditionState      = DYING EXPLODED_BOUNCING
8996        Animation         = UIHERO_SKL.UIHERO_ADTG23
8997        AnimationMode     = ONCE
8998        TransitionKey     = None
8999      End
9000      
9001      ; --- falling
9002      ConditionState      = FREEFALL
9003        Animation         = UIHERO_SKL.UIHERO_PFL
9004        AnimationMode     = LOOP
9005        TransitionKey     = TRANS_Falling
9006      End
9007      AliasConditionState = FREEFALL REALLYDAMAGED
9008      AliasConditionState = FREEFALL DYING
9009  
9010      ConditionState      = PARACHUTING
9011        Animation         = UIHERO_SKL.UIHERO_PHG
9012        AnimationMode     = LOOP
9013        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
9014        TransitionKey     = TRANS_Chute
9015      End
9016      AliasConditionState = PARACHUTING REALLYDAMAGED
9017      AliasConditionState = PARACHUTING DYING
9018  
9019      TransitionState     = TRANS_Falling TRANS_Chute
9020        Animation         = UIHERO_SKL.UIHERO_POP
9021        AnimationMode     = ONCE
9022        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
9023      End
9024  
9025      TransitionState     = TRANS_Chute TRANS_Stand
9026        Animation         = UIHERO_SKL.UIHERO_PTD
9027        AnimationMode     = ONCE
9028      End
9029  
9030      TransitionState     = TRANS_Chute TRANS_StandInjured
9031        Animation         = UIHERO_SKL.UIHERO_PTD
9032        AnimationMode     = ONCE
9033      End
9034      
9035    End
9036  
9037    ; ***DESIGN parameters ***
9038    DisplayName           = OBJECT:JarmenKell
9039    Side                  = GLA
9040    EditorSorting         = INFANTRY
9041    TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
9042    MaxSimultaneousOfType = 1
9043   
9044    WeaponSet
9045      Conditions = None 
9046      Weapon = PRIMARY GLAJarmenKellRifle
9047      Weapon = SECONDARY GLAJarmenKellVehiclePilotSniperRifle
9048      AutoChooseSources = PRIMARY NONE
9049      AutoChooseSources = SECONDARY NONE
9050    End
9051  ;  WeaponSet
9052  ;    Conditions = SNIPEVEHICLE 
9053  ;    Weapon = PRIMARY GLAJarmenKellVehiclePilotSniperRifle
9054  ;  End
9055  
9056    ArmorSet
9057      Conditions      = None
9058      Armor           = HumanArmor
9059      DamageFX        = InfantryDamageFX
9060    End
9061    VisionRange         = 200
9062    ShroudClearingRange = 300
9063    Prerequisites
9064      Object = GLABarracks
9065      Object = GLAPalace
9066    End
9067    BuildCost = 1500
9068    BuildTime = 20.0          ;in seconds  
9069  
9070    ExperienceValue     = 50 50 100 150    ;Experience point value at each level
9071    ExperienceRequired  = 0 100 200 400  ;Experience points needed to gain each level
9072    IsTrainable         = Yes             ;Can gain experience
9073    CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
9074    CommandSet          = GLAInfantryJarmenKellCommandSet
9075  
9076    ; *** AUDIO Parameters ***
9077    VoiceSelect = JarmenKellVoiceSelect
9078    VoiceMove = JarmenKellVoiceMove
9079    VoiceGuard = JarmenKellVoiceMove
9080    VoiceAttack = JarmenKellVoiceAttack
9081    VoiceFear = JarmenKellVoiceFear
9082    SoundDie = JarmenKellVoiceDie
9083    SoundDieFire = DieByFireGLA
9084    SoundDieToxin = DieByToxinGLA
9085    SoundStealthOn = StealthOn
9086    SoundStealthOff = StealthOff
9087    
9088    UnitSpecificSounds
9089      VoiceCreate          = JarmenKellVoiceCreate
9090      VoiceSnipePilot      = JarmenKellVoiceSnipe
9091      VoiceGarrison = JarmenKellVoiceGarrison
9092      VoiceEnter = JarmenKellVoiceMove
9093      VoiceEnterHostile = JarmenKellVoiceMove
9094      VoiceGetHealed      = JarmenKellVoiceMove
9095    End
9096  
9097  
9098    ; *** ENGINEERING Parameters ***
9099    RadarPriority = UNIT
9100    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER STEALTH_GARRISON SCORE HERO
9101  
9102    Body = ActiveBody ModuleTag_02
9103      MaxHealth       = 200.0
9104      InitialHealth   = 200.0
9105    End
9106  
9107    Behavior = AIUpdateInterface ModuleTag_03
9108      AutoAcquireEnemiesWhenIdle = Yes
9109    End
9110    Locomotor = SET_NORMAL JarmenKellLocomotor
9111  
9112    Behavior = PhysicsBehavior ModuleTag_04
9113      Mass = 5.0
9114    End
9115    Behavior = StealthUpdate ModuleTag_06
9116      StealthDelay                = 2000 ; msec
9117      StealthForbiddenConditions  = ATTACKING
9118      InnateStealth               = Yes
9119      OrderIdleEnemiesToAttackMeUponReveal  = Yes
9120    End
9121  
9122    Behavior = CommandButtonHuntUpdate  ModuleTag_07 ; allows use of command button hunt script with this unit. 
9123    End
9124  
9125    Behavior = WeaponBonusUpgrade ModuleTag_08
9126      TriggeredBy = Upgrade_GLAAPBullets
9127    End
9128   
9129    ;Hero units can't be squished!
9130    ;Behavior = SquishCollide ModuleTag_09
9131    ;  ;nothing
9132    ;End
9133  
9134  
9135  ; --- begin Death modules ---
9136    Behavior = SlowDeathBehavior ModuleTag_Death01
9137      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
9138      SinkDelay           = 50000
9139      SinkRate            = 0.5     ; in Dist/Sec
9140      DestructionDelay    = 8000000
9141      FX                  = INITIAL FX_GIDie
9142    End
9143    Behavior = SlowDeathBehavior ModuleTag_Death02
9144      DeathTypes          = NONE +CRUSHED +SPLATTED
9145      SinkDelay           = 50000
9146      SinkRate            = 0.5     ; in Dist/Sec
9147      DestructionDelay    = 8000000
9148      FX                  = INITIAL FX_GIDieCrushed
9149    End
9150    Behavior = SlowDeathBehavior ModuleTag_Death03
9151      DeathTypes          = NONE +EXPLODED
9152      SinkDelay           = 50000
9153      SinkRate            = 0.5     ; in Dist/Sec
9154      DestructionDelay    = 8000000
9155      FX                  = INITIAL FX_GIDie
9156      FlingForce          = 8
9157      FlingForceVariance  = 3
9158      FlingPitch          = 60
9159      FlingPitchVariance  = 10
9160    End
9161    Behavior = SlowDeathBehavior ModuleTag_Death04
9162      DeathTypes          = NONE +BURNED
9163      DestructionDelay    = 0
9164      FX                  = INITIAL FX_GIDie
9165      OCL                 = INITIAL OCL_FlamingInfantry
9166    End
9167    Behavior = SlowDeathBehavior ModuleTag_Death05
9168      DeathTypes          = NONE +POISONED
9169      DestructionDelay    = 0
9170      FX                  = INITIAL FX_GIDie
9171      OCL                 = INITIAL OCL_ToxicInfantry
9172    End
9173    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
9174      DeathTypes          = NONE +POISONED_BETA
9175      DestructionDelay    = 0
9176      FX                  = INITIAL FX_GIDie
9177      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
9178    End
9179  ; --- end Death modules ---
9180  
9181    Behavior = PoisonedBehavior ModuleTag_14
9182      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
9183      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
9184    End
9185   
9186    Geometry = CYLINDER
9187    Scale = 0.95                            ;Scaling
9188    GeometryMajorRadius = 1.0
9189    GeometryMinorRadius = 1.0
9190    GeometryHeight = 5.0
9191    GeometryIsSmall = Yes
9192    Shadow = SHADOW_DECAL
9193    ShadowSizeX = 9;
9194    ShadowSizeY = 9;
9195    ShadowTexture = ShadowI;
9196    BuildCompletion = APPEARS_AT_RALLY_POINT
9197  
9198  End
9199  
9200  
9201  
9202  ;------------------------------------------------------------------------------
9203  Object CINE_GLAInfantryJarmenKell
9204  
9205    ; *** ART Parameters ***
9206    SelectPortrait         = SUJermanKell1_L  ;NOTE: Asset spelling mistake
9207    ButtonImage            = SUJermanKell1
9208    
9209    ;UpgradeCameo1 = NONE
9210    ;UpgradeCameo2 = NONE
9211    ;UpgradeCameo3 = NONE
9212    ;UpgradeCameo4 = NONE
9213    ;UpgradeCameo5 = NONE
9214    
9215    Draw = W3DModelDraw ModuleTag_01
9216      OkToChangeModelColor = Yes
9217  
9218      ; --- idle
9219      DefaultConditionState
9220        Model             = UIHERO_SKN
9221        IdleAnimation     = UIHERO_SKL.UIHERO_STA 0 21
9222        IdleAnimation     = UIHERO_SKL.UIHERO_IDA
9223        IdleAnimation     = UIHERO_SKL.UIHERO_IDB
9224        AnimationMode     = ONCE
9225        WeaponFireFXBone  = PRIMARY Muzzle
9226        WeaponMuzzleFlash = PRIMARY MuzzleFX
9227        TransitionKey     = TRANS_Stand
9228      End
9229  
9230      ConditionState      = REALLYDAMAGED
9231        IdleAnimation     = UIHERO_SKL.UIHERO_ISTA 0 30
9232        IdleAnimation     = UIHERO_SKL.UIHERO_IIDA
9233        IdleAnimation     = UIHERO_SKL.UIHERO_IIDB
9234        AnimationMode     = ONCE
9235        TransitionKey     = TRANS_StandInjured
9236      End
9237  
9238      TransitionState     = TRANS_Stand TRANS_StandInjured
9239        Animation         = UIHERO_SKL.UIHERO_ISTAHIT
9240        AnimationMode     = ONCE
9241      End
9242  
9243      ; --- attack
9244      ConditionState      = FIRING_A
9245        Animation         = UIHERO_SKL.UIHERO_ATA
9246        AnimationMode     = ONCE
9247        TransitionKey     = TRANS_FiringA
9248      End
9249      AliasConditionState = BETWEEN_FIRING_SHOTS_A
9250      AliasConditionState = RELOADING_A
9251  
9252      ConditionState      = FIRING_A REALLYDAMAGED
9253        Animation         = UIHERO_SKL.UIHERO_IATA2
9254        AnimationMode     = ONCE
9255        TransitionKey     = TRANS_FiringAInjured
9256      End
9257      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
9258      AliasConditionState = RELOADING_A REALLYDAMAGED
9259  
9260      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
9261        Animation         = UIHERO_SKL.UIHERO_IATAHIT
9262        AnimationMode     = ONCE
9263      End
9264  
9265      ; --- moving
9266      ConditionState      = MOVING
9267        Animation         = UIHERO_SKL.UIHERO_RNA2 40
9268        AnimationMode     = LOOP
9269        Flags             = RANDOMSTART
9270        TransitionKey     = None
9271  
9272      End
9273      AliasConditionState = MOVING FIRING_A
9274      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
9275      AliasConditionState = MOVING RELOADING_A
9276  
9277      ConditionState      = MOVING REALLYDAMAGED
9278        Animation         = UIHERO_SKL.UIHERO_IRNA 24
9279        AnimationMode     = LOOP
9280        Flags             = RANDOMSTART
9281        TransitionKey     = None
9282  
9283      End
9284      AliasConditionState = MOVING FIRING_A REALLYDAMAGED
9285      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
9286      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
9287      
9288      ; --- cheering
9289      ConditionState      = SPECIAL_CHEERING
9290        Animation         = UIHERO_SKL.UIHERO_CHA
9291        AnimationMode     = LOOP
9292      End
9293  
9294      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
9295        Animation         = UIHERO_SKL.UIHERO_ICHA
9296        AnimationMode     = LOOP
9297      End
9298      
9299      ; --- dying
9300      ConditionState      = DYING
9301        Animation         = UIHERO_SKL.UIHERO_DTA
9302        Animation         = UIHERO_SKL.UIHERO_DTB
9303        Animation         = UIHERO_SKL.UIHERO_IDTA
9304        Animation         = UIHERO_SKL.UIHERO_IDTB
9305        AnimationMode     = ONCE
9306        TransitionKey     = TRANS_Dying
9307      End
9308  
9309      TransitionState     = TRANS_Dying TRANS_Flailing
9310        Animation         = UIHERO_SKL.UIHERO_ADTG21
9311        AnimationMode     = ONCE
9312      End
9313  
9314      ConditionState      = DYING EXPLODED_FLAILING
9315        Animation         = UIHERO_SKL.UIHERO_ADTG22
9316        AnimationMode     = LOOP
9317        TransitionKey     = TRANS_Flailing
9318      End
9319  
9320      ConditionState      = DYING EXPLODED_BOUNCING
9321        Animation         = UIHERO_SKL.UIHERO_ADTG23
9322        AnimationMode     = ONCE
9323        TransitionKey     = None
9324      End
9325      
9326      ; --- falling
9327      ConditionState      = FREEFALL
9328        Animation         = UIHERO_SKL.UIHERO_PFL
9329        AnimationMode     = LOOP
9330        TransitionKey     = TRANS_Falling
9331      End
9332      AliasConditionState = FREEFALL REALLYDAMAGED
9333      AliasConditionState = FREEFALL DYING
9334  
9335      ConditionState      = PARACHUTING
9336        Animation         = UIHERO_SKL.UIHERO_PHG
9337        AnimationMode     = LOOP
9338        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
9339        TransitionKey     = TRANS_Chute
9340      End
9341      AliasConditionState = PARACHUTING REALLYDAMAGED
9342      AliasConditionState = PARACHUTING DYING
9343  
9344      TransitionState     = TRANS_Falling TRANS_Chute
9345        Animation         = UIHERO_SKL.UIHERO_POP
9346        AnimationMode     = ONCE
9347        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
9348      End
9349  
9350      TransitionState     = TRANS_Chute TRANS_Stand
9351        Animation         = UIHERO_SKL.UIHERO_PTD
9352        AnimationMode     = ONCE
9353      End
9354  
9355      TransitionState     = TRANS_Chute TRANS_StandInjured
9356        Animation         = UIHERO_SKL.UIHERO_PTD
9357        AnimationMode     = ONCE
9358      End
9359      
9360    End
9361  
9362    ; ***DESIGN parameters ***
9363    DisplayName           = OBJECT:JarmenKell
9364    Side                  = GLA
9365    EditorSorting         = INFANTRY
9366    TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
9367    MaxSimultaneousOfType = 1
9368   
9369    WeaponSet
9370      Conditions = None 
9371      Weapon = PRIMARY CINE_GLAJarmenKellRifle
9372      Weapon = SECONDARY GLAJarmenKellVehiclePilotSniperRifle
9373      AutoChooseSources = PRIMARY NONE
9374      AutoChooseSources = SECONDARY NONE
9375    End
9376  ;  WeaponSet
9377  ;    Conditions = SNIPEVEHICLE 
9378  ;    Weapon = PRIMARY GLAJarmenKellVehiclePilotSniperRifle
9379  ;  End
9380  
9381    ArmorSet
9382      Conditions      = None
9383      Armor           = HumanArmor
9384      DamageFX        = InfantryDamageFX
9385    End
9386    VisionRange         = 225
9387    ShroudClearingRange = 300
9388    Prerequisites
9389      Object = GLABarracks
9390      Object = GLAPalace
9391    End
9392    BuildCost = 1500
9393    BuildTime = 20.0          ;in seconds  
9394  
9395    ExperienceValue     = 50 50 100 150    ;Experience point value at each level
9396    ExperienceRequired  = 0 100 200 400  ;Experience points needed to gain each level
9397    IsTrainable         = Yes             ;Can gain experience
9398    CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
9399    CommandSet          = GLAInfantryJarmenKellCommandSet
9400  
9401    ; *** AUDIO Parameters ***
9402    VoiceSelect = JarmenKellVoiceSelect
9403    VoiceMove = JarmenKellVoiceMove
9404    VoiceGuard = JarmenKellVoiceMove
9405    VoiceAttack = JarmenKellVoiceAttack
9406    VoiceFear = JarmenKellVoiceFear
9407    SoundDie = JarmenKellVoiceDie
9408    SoundDieFire = DieByFireGLA
9409    SoundDieToxin = DieByToxinGLA
9410    SoundStealthOn = StealthOn
9411    SoundStealthOff = StealthOff
9412    
9413    UnitSpecificSounds
9414      VoiceCreate          = JarmenKellVoiceCreate
9415      VoiceSnipePilot      = JarmenKellVoiceSnipe
9416      VoiceGarrison = JarmenKellVoiceGarrison
9417      VoiceEnter = JarmenKellVoiceMove
9418      VoiceEnterHostile = JarmenKellVoiceMove
9419    End
9420  
9421  
9422    ; *** ENGINEERING Parameters ***
9423    RadarPriority = UNIT
9424    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER STEALTH_GARRISON SCORE
9425  
9426    Body = ActiveBody ModuleTag_02
9427      MaxHealth       = 200.0
9428      InitialHealth   = 200.0
9429    End
9430  
9431    Behavior = AIUpdateInterface ModuleTag_03
9432      AutoAcquireEnemiesWhenIdle = Yes
9433    End
9434    Locomotor = SET_NORMAL CINE_JarmenKellLocomotor
9435  
9436    Behavior = PhysicsBehavior ModuleTag_04
9437      Mass = 5.0
9438    End
9439  
9440  
9441    Behavior = CommandButtonHuntUpdate  ModuleTag_07 ; allows use of command button hunt script with this unit. 
9442    End
9443  
9444    Behavior = WeaponBonusUpgrade ModuleTag_08
9445      TriggeredBy = Upgrade_GLAAPBullets
9446    End
9447   
9448    Behavior = SquishCollide ModuleTag_09
9449      ;nothing
9450    End
9451  
9452  
9453  ; --- begin Death modules ---
9454    Behavior = SlowDeathBehavior ModuleTag_Death01
9455      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
9456      SinkDelay           = 3000
9457      SinkRate            = 0.5     ; in Dist/Sec
9458      DestructionDelay    = 8000
9459      FX                  = INITIAL FX_GIDie
9460    End
9461    Behavior = SlowDeathBehavior ModuleTag_Death02
9462      DeathTypes          = NONE +CRUSHED +SPLATTED
9463      SinkDelay           = 3000
9464      SinkRate            = 0.5     ; in Dist/Sec
9465      DestructionDelay    = 8000
9466      FX                  = INITIAL FX_GIDieCrushed
9467    End
9468    Behavior = SlowDeathBehavior ModuleTag_Death03
9469      DeathTypes          = NONE +EXPLODED
9470      SinkDelay           = 3000
9471      SinkRate            = 0.5     ; in Dist/Sec
9472      DestructionDelay    = 8000
9473      FX                  = INITIAL FX_GIDie
9474      FlingForce          = 8
9475      FlingForceVariance  = 3
9476      FlingPitch          = 60
9477      FlingPitchVariance  = 10
9478    End
9479    Behavior = SlowDeathBehavior ModuleTag_Death04
9480      DeathTypes          = NONE +BURNED
9481      DestructionDelay    = 0
9482      FX                  = INITIAL FX_GIDie
9483      OCL                 = INITIAL OCL_FlamingInfantry
9484    End
9485    Behavior = SlowDeathBehavior ModuleTag_Death05
9486      DeathTypes          = NONE +POISONED
9487      DestructionDelay    = 0
9488      FX                  = INITIAL FX_GIDie
9489      OCL                 = INITIAL OCL_ToxicInfantry
9490    End
9491    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
9492      DeathTypes          = NONE +POISONED_BETA
9493      DestructionDelay    = 0
9494      FX                  = INITIAL FX_GIDie
9495      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
9496    End
9497  ; --- end Death modules ---
9498  
9499    Behavior = PoisonedBehavior ModuleTag_14
9500      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
9501      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
9502    End
9503   
9504    Geometry = CYLINDER
9505    Scale = 0.95                            ;Scaling
9506    GeometryMajorRadius = 1.0
9507    GeometryMinorRadius = 1.0
9508    GeometryHeight = 5.0
9509    GeometryIsSmall = Yes
9510    Shadow = SHADOW_DECAL
9511    ShadowSizeX = 9;
9512    ShadowSizeY = 9;
9513    ShadowTexture = ShadowI;
9514    BuildCompletion = APPEARS_AT_RALLY_POINT
9515  
9516  End
9517  
9518  
9519  
9520  ;------------------------------------------------------------------------------
9521  ;Tunnel Fanatic ;Now called the RPG Trooper
9522  Object GLAInfantryTunnelDefender
9523  
9524    ; *** ART Parameters ***
9525    SelectPortrait         = SURPG_L
9526    ButtonImage            = SURPG
9527    
9528    UpgradeCameo1 = Upgrade_GLAAPRockets
9529    UpgradeCameo2 = Upgrade_GLACamouflage
9530    ;UpgradeCameo3 = NONE
9531    ;UpgradeCameo4 = NONE
9532    ;UpgradeCameo5 = NONE
9533  
9534    Draw = W3DModelDraw ModuleTag_01
9535      OkToChangeModelColor = Yes
9536  
9537      DefaultConditionState
9538        Model = UITunF_SKN
9539        IdleAnimation = UITunF_SKL.UITunF_STA 0 20
9540        IdleAnimation = UITunF_SKL.UITunF_IDA 
9541        IdleAnimation = UITunF_SKL.UITunF_IDB 
9542        IdleAnimation = UITunF_SKL.UITunF_IDC 
9543        AnimationMode = ONCE
9544        WeaponMuzzleFlash = PRIMARY MuzzleFX
9545        WeaponFireFXBone = PRIMARY Muzzle
9546        WeaponLaunchBone = PRIMARY Muzzle
9547      End
9548  
9549      ConditionState = MOVING
9550        Animation = UITunF_SKL.UITunF_WKA 16
9551        Animation = UITunF_SKL.UITunF_WKB 30
9552        Animation = UITunF_SKL.UITunF_WKC 30
9553        Animation = UITunF_SKL.UITunF_RNA 15
9554        Animation = UITunF_SKL.UITunF_RNB 25   
9555        AnimationMode = LOOP
9556        ParticleSysBone   = None InfantryDustTrails
9557      End
9558  
9559      ConditionState = DYING
9560        Animation = UITunF_SKL.UITunF_DTA 
9561        Animation = UITunF_SKL.UITunF_DTB 
9562        AnimationMode = ONCE
9563        TransitionKey = TRANS_Dying
9564      End
9565  
9566      TransitionState = TRANS_Dying TRANS_Flailing
9567        Animation = UITunF_SKL.UITunF_ADTA1
9568        Animation = UITunF_SKL.UITunF_ADTE1
9569        Animation = UITunF_SKL.UITunF_ADTF1
9570        AnimationMode = ONCE
9571      End
9572  
9573      ConditionState = DYING EXPLODED_FLAILING
9574        Animation = UITunF_SKL.UITunF_ADTA2
9575        Animation = UITunF_SKL.UITunF_ADTE2
9576        Animation = UITunF_SKL.UITunF_ADTF2
9577        AnimationMode = LOOP
9578        TransitionKey = TRANS_Flailing
9579      End
9580  
9581      ConditionState = DYING EXPLODED_BOUNCING
9582        Animation = UITunF_SKL.UITunF_ADTA3
9583        Animation = UITunF_SKL.UITunF_ADTE3
9584        Animation = UITunF_SKL.UITunF_ADTF3
9585        AnimationMode = ONCE
9586        TransitionKey = None
9587      End
9588  
9589      ConditionState = FIRING_A 
9590        Animation = UITunF_SKL.UITunF_ATA 
9591        AnimationMode = ONCE
9592        TransitionKey = TRANS_START_FIRING
9593      End
9594      ConditionState = BETWEEN_FIRING_SHOTS_A
9595        Animation = UITunF_SKL.UITunF_STA
9596        AnimationMode = ONCE
9597        ; this is basically a trick: this guy has a nontrivial animation for firing,
9598        ; and a long recycle time between shots. we want him to finish his fire animation
9599        ; (unless he's ordered to do something else), so this is just a handy trick that
9600        ; says, "if the previous state had this transition key, allow it to finish before
9601        ; switching to us, if possible".
9602        WaitForStateToFinishIfPossible = TRANS_START_FIRING
9603      End
9604      AliasConditionState = RELOADING_A
9605  
9606      ConditionState = SPECIAL_CHEERING
9607        Animation = UITUNF_SKL.UITUNF_CHA
9608        AnimationMode = LOOP
9609      End
9610  
9611  ; surrender is cut. sorry. (srj)
9612  ;    ConditionState = SURRENDER
9613  ;      Animation = UITUNF_SKL.UITUNF_SST
9614  ;      AnimationMode = ONCE
9615  ;      TransitionKey = TRANS_SurrenderKneeling
9616  ;    End
9617  ;    ;@TODO -- MISSING ANIMATION FILE
9618  ;    ;ConditionState = SURRENDER MOVING
9619  ;    ;  Animation = UITUNF_SKL.UITUNF_SWKB
9620  ;    ;  AnimationMode = ONCE
9621  ;    ;  TransitionKey = TRANS_SurrenderMoving
9622  ;    ;End
9623  ;    TransitionState = TRANS_Stand TRANS_SurrenderKneeling
9624  ;      Animation = UITUNF_SKL.UITUNF_SUR
9625  ;      AnimationMode = ONCE
9626  ;    End
9627  
9628    End
9629  
9630    ; ***DESIGN parameters ***
9631    DisplayName      = OBJECT:TunnelDefender
9632    Side = GLA
9633    EditorSorting = INFANTRY
9634    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
9635    WeaponSet
9636      Conditions = None 
9637      Weapon = PRIMARY TunnelDefenderRocketWeapon
9638    End
9639    ArmorSet
9640      Conditions      = None
9641      Armor           = HumanArmor
9642      DamageFX        = InfantryDamageFX
9643    End
9644    VisionRange = 150
9645    ShroudClearingRange = 400
9646   ; Prerequisites
9647   ;   Object = GLATunnelNetwork
9648   ; End
9649    BuildCost = 150
9650    BuildTime = 2.5          ;in seconds  
9651  
9652    ExperienceValue = 20 20 40 60    ;Experience point value at each level
9653    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
9654    IsTrainable = Yes             ;Can gain experience
9655    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
9656    CommandSet      = GLAInfantryTunnelDefenderCommandSet
9657  
9658    ; *** AUDIO Parameters ***
9659    VoiceSelect = RPGTrooperVoiceSelect
9660    VoiceMove = RPGTrooperVoiceMove
9661    VoiceGuard = RPGTrooperVoiceMove
9662    VoiceAttack = RPGTrooperVoiceAttack
9663    SoundDie = RPGTrooperVoiceDie
9664    SoundDieFire = DieByFireGLA
9665    SoundDieToxin = DieByToxinGLA
9666  ; surrender is cut. sorry. (srj)
9667  ;  VoiceSurrender = RPGTrooperVoiceSurrender
9668    VoiceFear = RPGTrooperVoiceFear
9669    UnitSpecificSounds
9670      VoiceCreate          = RPGTrooperVoiceCreate
9671      VoiceGarrison = RPGTrooperVoiceGarrison
9672      VoiceEnter = RPGTrooperVoiceMove
9673      VoiceEnterHostile = RPGTrooperVoiceMove
9674      VoiceGetHealed      = RPGTrooperVoiceMove
9675    End
9676  
9677  
9678    ; *** ENGINEERING Parameters ***
9679    RadarPriority = UNIT
9680    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
9681  
9682    Body = ActiveBody ModuleTag_02
9683      MaxHealth       = 100.0
9684      InitialHealth   = 100.0
9685    End
9686  
9687    Behavior = AIUpdateInterface ModuleTag_03
9688      AutoAcquireEnemiesWhenIdle = Yes
9689    End
9690    Locomotor = SET_NORMAL MissileDefenderLocomotor
9691  
9692    Behavior = PhysicsBehavior ModuleTag_04
9693      Mass = 5.0
9694    End
9695   
9696    Behavior = SquishCollide ModuleTag_06
9697      ;nothing
9698    End
9699  
9700    Behavior = StealthUpdate ModuleTag_07
9701      StealthDelay                = 2500 ; msec
9702      StealthForbiddenConditions  = ATTACKING USING_ABILITY
9703      MoveThresholdSpeed          = 3
9704      InnateStealth               = No ;Requires upgrade first
9705      OrderIdleEnemiesToAttackMeUponReveal  = Yes
9706    End
9707  
9708    Behavior = StealthUpgrade ModuleTag_08
9709      TriggeredBy = Upgrade_GLACamouflage
9710    End
9711  
9712  
9713  ; --- begin Death modules ---
9714    Behavior = SlowDeathBehavior ModuleTag_Death01
9715      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
9716      SinkDelay           = 50000
9717      SinkRate            = 0.5     ; in Dist/Sec
9718      DestructionDelay    = 8000000
9719      FX                  = INITIAL FX_GIDie
9720    End
9721    Behavior = SlowDeathBehavior ModuleTag_Death02
9722      DeathTypes          = NONE +CRUSHED +SPLATTED
9723      SinkDelay           = 50000
9724      SinkRate            = 0.5     ; in Dist/Sec
9725      DestructionDelay    = 8000000
9726      FX                  = INITIAL FX_GIDieCrushed
9727    End
9728    Behavior = SlowDeathBehavior ModuleTag_Death03
9729      DeathTypes          = NONE +EXPLODED
9730      SinkDelay           = 50000
9731      SinkRate            = 0.5     ; in Dist/Sec
9732      DestructionDelay    = 8000000
9733      FX                  = INITIAL FX_GIDie
9734      FlingForce          = 8
9735      FlingForceVariance  = 3
9736      FlingPitch          = 60
9737      FlingPitchVariance  = 10
9738    End
9739    Behavior = SlowDeathBehavior ModuleTag_Death04
9740      DeathTypes          = NONE +BURNED
9741      DestructionDelay    = 0
9742      FX                  = INITIAL FX_GIDie
9743      OCL                 = INITIAL OCL_FlamingInfantry
9744    End
9745    Behavior = SlowDeathBehavior ModuleTag_Death05
9746      DeathTypes          = NONE +POISONED
9747      DestructionDelay    = 0
9748      FX                  = INITIAL FX_GIDie
9749      OCL                 = INITIAL OCL_ToxicInfantry
9750    End
9751    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
9752      DeathTypes          = NONE +POISONED_BETA
9753      DestructionDelay    = 0
9754      FX                  = INITIAL FX_GIDie
9755      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
9756    End
9757  ; --- end Death modules ---
9758  
9759    Behavior = PoisonedBehavior ModuleTag_12
9760      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
9761      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
9762    End
9763   
9764    Geometry = CYLINDER
9765    GeometryMajorRadius = 10.0
9766    GeometryMinorRadius = 10.0
9767    GeometryHeight = 12.0
9768    GeometryIsSmall = Yes
9769    Shadow = SHADOW_DECAL
9770    ShadowSizeX = 14;
9771    ShadowSizeY = 14;
9772    ShadowTexture = ShadowI;
9773    BuildCompletion = APPEARS_AT_RALLY_POINT
9774  
9775  End
9776  ;------------------------------------------------------------------------------
9777  ;***THESE UNITS ARE NOT SELECTABLE ANYMORE! To kill them, you must target
9778  ;   the stinger site. If the weapon does particular types of damage, it'll
9779  ;   kill guys inside first, then the site.
9780  Object GLAInfantryStingerSoldier
9781  
9782    ; *** ART Parameters ***
9783    SelectPortrait         = SUStinger_L
9784    ButtonImage            = SUStinger
9785  
9786    Draw = W3DModelDraw ModuleTag_01
9787      OkToChangeModelColor = Yes
9788  
9789      DefaultConditionState
9790        Model = UISmsd_SKN
9791        IdleAnimation = UISmsd_SKL.UISmsd_STA 0 45
9792        IdleAnimation = UISmsd_SKL.UISmsd_IDA 
9793        IdleAnimation = UISmsd_SKL.UISmsd_IDB 
9794        IdleAnimation = UISmsd_SKL.UISmsd_IDC 
9795        IdleAnimation = UISmsd_SKL.UISmsd_IDD 
9796        AnimationMode = ONCE
9797        WeaponMuzzleFlash = PRIMARY MuzzleFX
9798        WeaponFireFXBone = PRIMARY Exhaust
9799        WeaponLaunchBone = PRIMARY Muzzle
9800        WeaponFireFXBone = SECONDARY Exhaust
9801        WeaponLaunchBone = SECONDARY Muzzle
9802  
9803        WaitForStateToFinishIfPossible = TRANS_START_FIRING
9804  
9805      End
9806      AliasConditionState = BETWEEN_FIRING_SHOTS_A
9807      AliasConditionState = BETWEEN_FIRING_SHOTS_B
9808      AliasConditionState = RELOADING_A
9809      AliasConditionState = RELOADING_B
9810  
9811      ConditionState = MOVING
9812        Animation = UISmsd_SKL.UISmsd_WKB 25
9813        AnimationMode = LOOP
9814      End
9815  
9816      ConditionState = DYING
9817        Animation = UISmsd_SKL.UISmsd_DTA 
9818        Animation = UISmsd_SKL.UISmsd_DTB 
9819        AnimationMode = ONCE
9820        TransitionKey = TRANS_Dying
9821        WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish
9822      End
9823  
9824      TransitionState = TRANS_Dying TRANS_Flailing
9825        Animation = UISmsd_SKL.UISmsd_ADTF1
9826        Animation = UISmsd_SKL.UISmsd_ADTG21
9827        AnimationMode = ONCE
9828      End
9829  
9830      ConditionState = DYING EXPLODED_FLAILING
9831        Animation = UISmsd_SKL.UISmsd_ADTF2
9832        Animation = UISmsd_SKL.UISmsd_ADTG22
9833        AnimationMode = LOOP
9834        TransitionKey = TRANS_Flailing
9835        WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish
9836      End
9837  
9838      ConditionState = DYING EXPLODED_BOUNCING
9839        Animation = UISmsd_SKL.UISmsd_ADTF3
9840        Animation = UISmsd_SKL.UISmsd_ADTG23
9841        AnimationMode = ONCE
9842        TransitionKey = None
9843        WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish
9844      End
9845  
9846      ConditionState = FIRING_A
9847        Animation = UISmsd_SKL.UISmsd_ATA
9848        AnimationMode = ONCE
9849        TransitionKey = TRANS_START_FIRING
9850      End
9851      ; AliasConditionState is a new keyword that says,
9852      ; "give me another ConditionState exactly like the previous
9853      ; one, except with different conditions". Useful when you
9854      ; have several states that are the same with only different condition bits.
9855      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
9856      AliasConditionState = MOVING FIRING_A
9857      AliasConditionState = MOVING RELOADING_A
9858  
9859      ConditionState = FIRING_B
9860        Animation = UISmsd_SKL.UISmsd_ATB
9861        AnimationMode = ONCE
9862        TransitionKey = TRANS_START_FIRINGB
9863      End
9864      ; AliasConditionState is a new keyword that says,
9865      ; "give me another ConditionState exactly like the previous
9866      ; one, except with different conditions". Useful when you
9867      ; have several states that are the same with only different condition bits.
9868      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
9869      AliasConditionState = MOVING FIRING_B
9870      AliasConditionState = MOVING RELOADING_B
9871  
9872  
9873      ConditionState = SPECIAL_CHEERING
9874        Animation = UISMSD_SKL.UISMSD_CHA
9875        AnimationMode = LOOP
9876      End
9877  
9878    End
9879  
9880    ; ***DESIGN parameters ***
9881    DisplayName      = OBJECT:StingerSoldier
9882    Side = GLA
9883    EditorSorting = INFANTRY
9884    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
9885    WeaponSet
9886      Conditions          = None 
9887      Weapon              = PRIMARY   StingerMissileWeapon
9888      AutoChooseSources   = PRIMARY   FROM_PLAYER FROM_AI FROM_SCRIPT
9889      Weapon              = SECONDARY StingerMissileWeaponAir
9890      PreferredAgainst    = SECONDARY BALLISTIC_MISSILE AIRCRAFT
9891    End
9892    ArmorSet
9893      Conditions      = None
9894      Armor           = StingerSoldierArmor ;Extra protection due to being enclosed by the stinger site.
9895      DamageFX        = None
9896    End
9897    VisionRange = 400.0
9898    ShroudClearingRange = 400
9899  
9900    Prerequisites
9901      Object = GLABarracks
9902    End
9903    BuildCost = 100
9904    BuildTime = 1.0          ;in seconds    
9905    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
9906  
9907    ;I don't know what is right, but this is SO wrong.
9908  ;  CommandSet      = GLAInfantryRebelCommandSet
9909  
9910    ; *** AUDIO Parameters ***
9911    VoiceSelect = StingerSoldierVoiceSelect
9912    VoiceMove = StingerSoldierVoiceMove
9913    VoiceAttack = StingerSoldierVoiceAttack
9914    SoundDie = StingerSoldierVoiceDie
9915    SoundDieFire = DieByFireGLA
9916    SoundDieToxin = DieByToxinGLA
9917  
9918    ; *** ENGINEERING Parameters ***
9919    RadarPriority = UNIT
9920    KindOf = PRELOAD CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER CLICK_THROUGH SPAWNS_ARE_THE_WEAPONS
9921  
9922    Body = ActiveBody ModuleTag_02
9923      MaxHealth       = 100.0
9924      InitialHealth   = 100.0
9925    End
9926  
9927    Behavior = StealthDetectorUpdate ModuleTag_16
9928      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
9929      DetectionRange = 200 ;Dustin, enable this for independant balancing!
9930      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
9931      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
9932    End
9933  
9934    Behavior = AIUpdateInterface ModuleTag_03
9935      AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
9936      MoodAttackCheckRate        = 250
9937    End
9938    Locomotor = SET_NORMAL BasicHumanLocomotor
9939    Behavior = PhysicsBehavior ModuleTag_04
9940      Mass = 5.0
9941    End
9942    Behavior = SlavedUpdate ModuleTag_06
9943      ;nothing
9944    End
9945  ;  Behavior = ProneUpdate ModuleTag_07
9946  ;    DamageToFramesRatio = 5.0 ; I take 20 damage, I go prone for 100.  For this guy, if any of my buds or my building take damage too (I have SlaveUpdate + ProneUpdate) Prone may get cut by itself though
9947  ;  End
9948  
9949    Behavior = SquishCollide ModuleTag_08
9950      ;nothing
9951    End
9952  
9953  
9954  ; --- begin Death modules ---
9955    Behavior = SlowDeathBehavior ModuleTag_Death01
9956      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
9957      SinkDelay           = 3000
9958      SinkRate            = 0.5     ; in Dist/Sec
9959      DestructionDelay    = 8000
9960      FX                  = INITIAL FX_GIDie
9961    End
9962    Behavior = SlowDeathBehavior ModuleTag_Death02
9963      DeathTypes          = NONE +CRUSHED +SPLATTED
9964      SinkDelay           = 3000
9965      SinkRate            = 0.5     ; in Dist/Sec
9966      DestructionDelay    = 8000
9967      FX                  = INITIAL FX_GIDieCrushed
9968    End
9969    Behavior = SlowDeathBehavior ModuleTag_Death03
9970      DeathTypes          = NONE +EXPLODED
9971      SinkDelay           = 3000
9972      SinkRate            = 0.5     ; in Dist/Sec
9973      DestructionDelay    = 8000
9974      FX                  = INITIAL FX_GIDie
9975      FlingForce          = 8
9976      FlingForceVariance  = 3
9977      FlingPitch          = 60
9978      FlingPitchVariance  = 10
9979    End
9980    Behavior = SlowDeathBehavior ModuleTag_Death04
9981      DeathTypes          = NONE +BURNED
9982      DestructionDelay    = 0
9983      FX                  = INITIAL FX_GIDie
9984      OCL                 = INITIAL OCL_FlamingInfantry
9985    End
9986    Behavior = SlowDeathBehavior ModuleTag_Death05
9987      DeathTypes          = NONE +POISONED
9988      DestructionDelay    = 0
9989      FX                  = INITIAL FX_GIDie
9990      OCL                 = INITIAL OCL_ToxicInfantry
9991    End
9992    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
9993      DeathTypes          = NONE +POISONED_BETA
9994      DestructionDelay    = 0
9995      FX                  = INITIAL FX_GIDie
9996      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
9997    End
9998  ; --- end Death modules ---
9999  
10000    Behavior = PoisonedBehavior ModuleTag_14
10001      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
10002      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
10003    End
10004   
10005    Geometry = CYLINDER
10006    Scale = 0.95                            ;Scaling
10007    GeometryMajorRadius = 1.0
10008    GeometryMinorRadius = 1.0
10009    GeometryHeight = 8.0
10010    GeometryIsSmall = Yes
10011    Shadow = SHADOW_DECAL
10012    ShadowSizeX = 9
10013    ShadowSizeY = 9
10014    ShadowTexture = ShadowI;
10015    BuildCompletion = APPEARS_AT_RALLY_POINT
10016  
10017  End
10018  ;------------------------------------------------------------------------------
10019  Object CINE_GLAInfantryStingerSoldier
10020  
10021    ; *** ART Parameters ***
10022    SelectPortrait         = SUStinger_L
10023    ButtonImage            = SUStinger
10024  
10025    Draw = W3DModelDraw ModuleTag_01
10026      OkToChangeModelColor = Yes
10027  
10028      DefaultConditionState
10029        Model = UISmsd_SKN
10030        IdleAnimation = UISmsd_SKL.UISmsd_STA 0 45
10031        IdleAnimation = UISmsd_SKL.UISmsd_IDA 
10032        IdleAnimation = UISmsd_SKL.UISmsd_IDB 
10033        IdleAnimation = UISmsd_SKL.UISmsd_IDC 
10034        IdleAnimation = UISmsd_SKL.UISmsd_IDD 
10035        AnimationMode = ONCE
10036        WeaponMuzzleFlash = PRIMARY MuzzleFX
10037        WeaponFireFXBone = PRIMARY Exhaust
10038        WeaponLaunchBone = PRIMARY Muzzle
10039        WeaponFireFXBone = SECONDARY Exhaust
10040        WeaponLaunchBone = SECONDARY Muzzle
10041  
10042        WaitForStateToFinishIfPossible = TRANS_START_FIRING
10043  
10044      End
10045      AliasConditionState = BETWEEN_FIRING_SHOTS_A
10046      AliasConditionState = BETWEEN_FIRING_SHOTS_B
10047      AliasConditionState = RELOADING_A
10048      AliasConditionState = RELOADING_B
10049  
10050      ConditionState = MOVING
10051        Animation = UISmsd_SKL.UISmsd_WKB 25
10052        AnimationMode = LOOP
10053      End
10054  
10055      ConditionState = DYING
10056        Animation = UISmsd_SKL.UISmsd_DTA 
10057        Animation = UISmsd_SKL.UISmsd_DTB 
10058        AnimationMode = ONCE
10059        TransitionKey = TRANS_Dying
10060      End
10061  
10062      TransitionState = TRANS_Dying TRANS_Flailing
10063        Animation = UISmsd_SKL.UISmsd_ADTF1
10064        Animation = UISmsd_SKL.UISmsd_ADTG21
10065        AnimationMode = ONCE
10066      End
10067  
10068      ConditionState = DYING EXPLODED_FLAILING
10069        Animation = UISmsd_SKL.UISmsd_ADTF2
10070        Animation = UISmsd_SKL.UISmsd_ADTG22
10071        AnimationMode = LOOP
10072        TransitionKey = TRANS_Flailing
10073      End
10074  
10075      ConditionState = DYING EXPLODED_BOUNCING
10076        Animation = UISmsd_SKL.UISmsd_ADTF3
10077        Animation = UISmsd_SKL.UISmsd_ADTG23
10078        AnimationMode = ONCE
10079        TransitionKey = None
10080      End
10081  
10082      ConditionState = FIRING_A
10083        Animation = UISmsd_SKL.UISmsd_ATA
10084        AnimationMode = ONCE
10085        TransitionKey = TRANS_START_FIRING
10086      End
10087      ; AliasConditionState is a new keyword that says,
10088      ; "give me another ConditionState exactly like the previous
10089      ; one, except with different conditions". Useful when you
10090      ; have several states that are the same with only different condition bits.
10091      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
10092      AliasConditionState = MOVING FIRING_A
10093      AliasConditionState = MOVING RELOADING_A
10094  
10095      ConditionState = FIRING_B
10096        Animation = UISmsd_SKL.UISmsd_ATB
10097        AnimationMode = ONCE
10098        TransitionKey = TRANS_START_FIRINGB
10099      End
10100      ; AliasConditionState is a new keyword that says,
10101      ; "give me another ConditionState exactly like the previous
10102      ; one, except with different conditions". Useful when you
10103      ; have several states that are the same with only different condition bits.
10104      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
10105      AliasConditionState = MOVING FIRING_B
10106      AliasConditionState = MOVING RELOADING_B
10107  
10108  
10109      ConditionState = SPECIAL_CHEERING
10110        Animation = UISMSD_SKL.UISMSD_CHA
10111        AnimationMode = LOOP
10112      End
10113  
10114    End
10115  
10116    ; ***DESIGN parameters ***
10117    DisplayName      = OBJECT:StingerSoldier
10118    Side = GLA
10119    EditorSorting = INFANTRY
10120    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
10121    WeaponSet
10122      Conditions          = None 
10123      Weapon              = PRIMARY   CINE_StingerMissileWeapon
10124      AutoChooseSources   = PRIMARY   FROM_PLAYER FROM_AI FROM_SCRIPT
10125      Weapon              = SECONDARY StingerMissileWeaponAir
10126      PreferredAgainst    = SECONDARY BALLISTIC_MISSILE AIRCRAFT
10127    End
10128    ArmorSet
10129      Conditions      = None
10130      Armor           = StingerSoldierArmor ;Extra protection due to being enclosed by the stinger site.
10131      DamageFX        = None
10132    End
10133    VisionRange = 400.0
10134    ShroudClearingRange = 400
10135  
10136    Prerequisites
10137      Object = GLABarracks
10138    End
10139    BuildCost = 100
10140    BuildTime = 1.0          ;in seconds    
10141    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
10142  
10143    ;I don't know what is right, but this is SO wrong.
10144  ;  CommandSet      = GLAInfantryRebelCommandSet
10145  
10146    ; *** AUDIO Parameters ***
10147    VoiceSelect = StingerSoldierVoiceSelect
10148    VoiceMove = StingerSoldierVoiceMove
10149    VoiceAttack = StingerSoldierVoiceAttack
10150    SoundDie = StingerSoldierVoiceDie
10151    SoundDieFire = DieByFireGLA
10152    SoundDieToxin = DieByToxinGLA
10153  
10154  
10155    ; *** ENGINEERING Parameters ***
10156    RadarPriority = UNIT
10157    KindOf = PRELOAD CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER CLICK_THROUGH
10158  
10159    Body = ActiveBody ModuleTag_02
10160      MaxHealth       = 100.0
10161      InitialHealth   = 100.0
10162    End
10163  
10164    Behavior = StealthDetectorUpdate ModuleTag_16
10165      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
10166      DetectionRange = 200 ;Dustin, enable this for independant balancing!
10167      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
10168      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
10169    End
10170  
10171    Behavior = AIUpdateInterface ModuleTag_03
10172      AutoAcquireEnemiesWhenIdle = Yes
10173      MoodAttackCheckRate        = 250
10174    End
10175    Locomotor = SET_NORMAL BasicHumanLocomotor
10176    Behavior = PhysicsBehavior ModuleTag_04
10177      Mass = 5.0
10178    End
10179    Behavior = SlavedUpdate ModuleTag_06
10180      ;nothing
10181    End
10182  ;  Behavior = ProneUpdate ModuleTag_07
10183  ;    DamageToFramesRatio = 5.0 ; I take 20 damage, I go prone for 100.  For this guy, if any of my buds or my building take damage too (I have SlaveUpdate + ProneUpdate) Prone may get cut by itself though
10184  ;  End
10185  
10186    Behavior = SquishCollide ModuleTag_08
10187      ;nothing
10188    End
10189  
10190  
10191  ; --- begin Death modules ---
10192    Behavior = SlowDeathBehavior ModuleTag_Death01
10193      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
10194      SinkDelay           = 3000
10195      SinkRate            = 0.5     ; in Dist/Sec
10196      DestructionDelay    = 8000
10197      FX                  = INITIAL FX_GIDie
10198    End
10199    Behavior = SlowDeathBehavior ModuleTag_Death02
10200      DeathTypes          = NONE +CRUSHED +SPLATTED
10201      SinkDelay           = 3000
10202      SinkRate            = 0.5     ; in Dist/Sec
10203      DestructionDelay    = 8000
10204      FX                  = INITIAL FX_GIDieCrushed
10205    End
10206    Behavior = SlowDeathBehavior ModuleTag_Death03
10207      DeathTypes          = NONE +EXPLODED
10208      SinkDelay           = 3000
10209      SinkRate            = 0.5     ; in Dist/Sec
10210      DestructionDelay    = 8000
10211      FX                  = INITIAL FX_GIDie
10212      FlingForce          = 8
10213      FlingForceVariance  = 3
10214      FlingPitch          = 60
10215      FlingPitchVariance  = 10
10216    End
10217    Behavior = SlowDeathBehavior ModuleTag_Death04
10218      DeathTypes          = NONE +BURNED
10219      DestructionDelay    = 0
10220      FX                  = INITIAL FX_GIDie
10221      OCL                 = INITIAL OCL_FlamingInfantry
10222    End
10223    Behavior = SlowDeathBehavior ModuleTag_Death05
10224      DeathTypes          = NONE +POISONED
10225      DestructionDelay    = 0
10226      FX                  = INITIAL FX_GIDie
10227      OCL                 = INITIAL OCL_ToxicInfantry
10228    End
10229    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
10230      DeathTypes          = NONE +POISONED_BETA
10231      DestructionDelay    = 0
10232      FX                  = INITIAL FX_GIDie
10233      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
10234    End
10235    
10236  ; --- end Death modules ---
10237  
10238    Behavior = PoisonedBehavior ModuleTag_14
10239      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
10240      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
10241    End
10242   
10243    Geometry = CYLINDER
10244    Scale = 0.95                            ;Scaling
10245    GeometryMajorRadius = 1.0
10246    GeometryMinorRadius = 1.0
10247    GeometryHeight = 8.0
10248    GeometryIsSmall = Yes
10249    Shadow = SHADOW_DECAL
10250    ShadowSizeX = 9
10251    ShadowSizeY = 9
10252    ShadowTexture = ShadowI;
10253    BuildCompletion = APPEARS_AT_RALLY_POINT
10254  
10255  End
10256  
10257  ;------------------------------------------------------------------------------
10258  Object GLAInfantryTerrorist
10259  
10260  ; *** ART Parameters ***
10261    SelectPortrait         = SUTerrorist_L
10262    ButtonImage            = SUTerrorist
10263    
10264    UpgradeCameo1 = Upgrade_GLACamouflage
10265    ;UpgradeCameo2 = NONE
10266    ;UpgradeCameo3 = NONE
10267    ;UpgradeCameo4 = NONE
10268    ;UpgradeCameo5 = NONE
10269  
10270    Draw = W3DModelDraw ModuleTag_01
10271      OkToChangeModelColor = Yes
10272      DefaultConditionState
10273        Model = UITRST_SKN
10274        IdleAnimation = UITRST_SKL.UITRST_STA 0 25
10275        ;Regular spice animations
10276        IdleAnimation = UITRST_SKL.UITRST_IDA
10277        IdleAnimation = UITRST_SKL.UITRST_IDB
10278        AnimationMode = ONCE
10279        TransitionKey = TRANS_Stand
10280      End
10281  
10282      ConditionState = REALLYDAMAGED
10283        Animation = UITRST_SKL.UITRST_STA
10284        AnimationMode = LOOP
10285        TransitionKey = TRANS_Stand
10286      End
10287  
10288      ConditionState = FREEFALL
10289        Animation = UITRST_SKL.UITRST_PFL
10290        AnimationMode = LOOP
10291        TransitionKey = TRANS_Falling
10292      End
10293      AliasConditionState = FREEFALL REALLYDAMAGED
10294      AliasConditionState = FREEFALL DYING
10295  
10296      ConditionState = PARACHUTING
10297        Animation = UITRST_SKL.UITRST_PHG
10298        AnimationMode = LOOP
10299        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
10300        TransitionKey = TRANS_Chute
10301      End
10302      AliasConditionState = PARACHUTING REALLYDAMAGED
10303      AliasConditionState = PARACHUTING DYING
10304  
10305      ConditionState = MOVING
10306        Animation = UITRST_SKL.UITRST_RNA 15
10307        AnimationMode = LOOP
10308        Flags = RANDOMSTART
10309        TransitionKey = None
10310        ParticleSysBone   = None InfantryDustTrails
10311      End
10312      AliasConditionState = MOVING REALLYDAMAGED
10313  
10314      ConditionState = ATTACKING MOVING
10315        Animation = UITRST_SKL.UITRST_RNB 10
10316        AnimationMode = LOOP
10317        Flags = RANDOMSTART
10318        TransitionKey = None
10319      End
10320      AliasConditionState = ATTACKING MOVING REALLYDAMAGED
10321  
10322      ConditionState = PREATTACK_A
10323        Animation = UITRST_SKL.UITRST_ATA
10324        AnimationMode = ONCE
10325      End
10326      AliasConditionState = PREATTACK_A MOVING
10327   
10328      ConditionState = DYING
10329        Animation = UITRST_SKL.UITRST_DTA
10330        Animation = UITRST_SKL.UITRST_DTC
10331        AnimationMode = ONCE
10332        TransitionKey = TRANS_Dying
10333      End
10334  
10335      TransitionState = TRANS_Dying TRANS_Flailing
10336        Animation = UITRST_SKL.UITRST_ADTE1
10337        AnimationMode = ONCE
10338      End
10339  
10340      ConditionState = DYING EXPLODED_FLAILING
10341        Animation = UITRST_SKL.UITRST_ADTE2
10342        AnimationMode = LOOP
10343        TransitionKey = TRANS_Flailing
10344      End
10345  
10346      ConditionState = DYING EXPLODED_BOUNCING
10347        Animation = UITRST_SKL.UITRST_ADTE3
10348        AnimationMode = ONCE
10349        TransitionKey = None
10350      End
10351  
10352      ConditionState = SPECIAL_CHEERING
10353        Animation = UITRST_SKL.UITRST_CHA
10354        AnimationMode = LOOP
10355      End
10356  
10357      TransitionState = TRANS_Falling TRANS_Chute
10358        Animation = UITRST_SKL.UITRST_POP
10359        AnimationMode = ONCE
10360        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
10361      End
10362  
10363      TransitionState = TRANS_Chute TRANS_Stand
10364        Animation = UITRST_SKL.UITRST_PTD
10365        AnimationMode = ONCE
10366      End
10367  
10368    End
10369  
10370    ; ***DESIGN parameters ***
10371    DisplayName      = OBJECT:Terrorist
10372    Side = GLA
10373    EditorSorting = INFANTRY
10374    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
10375    WeaponSet
10376      Conditions = None 
10377      ;Kill himself so we can use FireWeaponWhenDead to fire the real weapon -- and use UNRESISTABLE
10378      ;damage to do ini logic for type of death to play -- unresistable for success.
10379      Weapon = PRIMARY TerroristSuicideWeapon 
10380    End
10381    ArmorSet
10382      Conditions      = None
10383      Armor           = HumanArmor
10384      DamageFX        = InfantryDamageFX
10385    End
10386    VisionRange = 150
10387    ShroudClearingRange = 200
10388    Prerequisites
10389      Object = GLABarracks
10390    End
10391    BuildCost = 200
10392    BuildTime = 5.0          ;in seconds    
10393    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
10394    CommandSet    = GLAInfantryTerroristCommandSet
10395  
10396    ; *** AUDIO Parameters ***
10397    VoiceSelect = TerroristVoiceSelect
10398    VoiceMove = TerroristVoiceMove
10399    VoiceAttack = TerroristVoiceAttack
10400    SoundDie = TerroristVoiceDie
10401    SoundDieFire = DieByFireGLA
10402    SoundDieToxin = DieByToxinGLA
10403    VoiceFear = TerroristVoiceFear
10404    VoiceGuard = TerroristVoiceMove
10405    UnitSpecificSounds
10406      VoiceGarrison         = TerroristVoiceMove
10407      VoiceCreate           = TerroristVoiceCreate
10408      VoiceEnter            = TerroristVoiceEnter
10409      VoiceEnterHostile     = TerroristVoiceEnterHostile
10410      VoiceGetHealed      = TerroristVoiceMove
10411    End
10412  
10413    ; *** ENGINEERING Parameters ***
10414    RadarPriority = UNIT
10415    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
10416  
10417    Body = ActiveBody ModuleTag_02
10418      MaxHealth       = 120.0
10419      InitialHealth   = 120.0
10420    End
10421  
10422    ExperienceValue     = 20 20 20 20  ; Experience point value at each level
10423  
10424    Behavior = AIUpdateInterface ModuleTag_03
10425      AutoAcquireEnemiesWhenIdle = Yes
10426    End
10427    Locomotor = SET_NORMAL FastHumanLocomotor
10428    Behavior = PhysicsBehavior ModuleTag_04
10429      Mass = 5.0
10430    End
10431  
10432    ;Kris
10433    Behavior = ConvertToCarBombCrateCollide       ModuleTag_06
10434      RequiredKindOf    = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
10435      ;ForbiddenKindOf  = TRANSPORT DOZER  ; but not to TRANSPORTs or DOZERs!
10436      FXList            = FX_MakeCarBombSuccess
10437    End
10438   
10439    Behavior = SquishCollide ModuleTag_07
10440      ;nothing
10441    End
10442  
10443    Behavior = StealthUpdate ModuleTag_07
10444      StealthDelay                = 2500 ; msec
10445      StealthForbiddenConditions  = ATTACKING USING_ABILITY
10446      MoveThresholdSpeed          = 3
10447      InnateStealth               = No ;Requires upgrade first
10448      OrderIdleEnemiesToAttackMeUponReveal  = Yes
10449    End
10450  
10451    Behavior = StealthUpgrade ModuleTag_08
10452      TriggeredBy = Upgrade_GLACamouflage
10453    End
10454  
10455  ; --- begin Death modules ---
10456    Behavior = SlowDeathBehavior ModuleTag_Death01
10457      DeathTypes          = ALL  -SUICIDED -POISONED -POISONED_BETA
10458      SinkDelay           = 50000
10459      SinkRate            = 0.5     ; in Dist/Sec
10460      DestructionDelay    = 8000000
10461      FX                  = INITIAL FX_GIDie
10462    End
10463  
10464  
10465    ;POISON_DEATHS POISON_DEATHS POISON_DEATHS POISON_DEATHS
10466    Behavior = SlowDeathBehavior ModuleTag_Death02
10467      DeathTypes          = NONE +POISONED
10468      DestructionDelay    = 0
10469      FX                  = INITIAL FX_GIDie
10470      OCL                 = INITIAL OCL_ToxicInfantry
10471    End
10472    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
10473      DeathTypes          = NONE +POISONED_BETA
10474      DestructionDelay    = 0
10475      FX                  = INITIAL FX_GIDie
10476      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
10477    End
10478    ;POISON_DEATHS POISON_DEATHS POISON_DEATHS POISON_DEATHS
10479  
10480  
10481    ; I have just pulled my ripcord, and this ain't no parachute!
10482    Behavior = SlowDeathBehavior ModuleTag_Death03
10483      DeathTypes          = NONE +SUICIDED
10484      SinkDelay           = 50000
10485      SinkRate            = 0.5     ; in Dist/Sec
10486      DestructionDelay    = 8000000
10487      FX                  = INITIAL FX_TerroristExplode
10488      FlingForce          = 8
10489      FlingForceVariance  = 3
10490      FlingPitch          = 60
10491      FlingPitchVariance  = 10
10492    End
10493    Behavior = FireWeaponWhenDeadBehavior ModuleTag_Death04
10494      DeathWeapon   = SuicideDynamitePack
10495      StartsActive  = Yes                      ; turned on by upgrade
10496      DeathTypes = NONE +SUICIDED +CRUSHED +SPLATTED +LASERED +BURNED +EXPLODED
10497    End
10498  ; --- end Death modules ---
10499  
10500    Behavior = PoisonedBehavior ModuleTag_14
10501      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
10502      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
10503    End
10504   
10505    Geometry = CYLINDER
10506    Scale = 0.95                            ;Scaling
10507    GeometryMajorRadius = 1.0
10508    GeometryMinorRadius = 1.0
10509    GeometryHeight = 8.0
10510    GeometryIsSmall = Yes
10511    Shadow = SHADOW_DECAL
10512    ShadowSizeX = 9;
10513    ShadowSizeY = 9;
10514    ShadowTexture = ShadowI;
10515    BuildCompletion = APPEARS_AT_RALLY_POINT
10516  
10517  End
10518  
10519  
10520  
10521  
10522  
10523  
10524  
10525  
10526  ;------------------------------------------------------------------------------
10527  ;------------------------------------------------------------------------------
10528  Object GLAInfantryAngryMobNexus 
10529  
10530  ;**** ART Parameters **************************
10531    SelectPortrait         = SUAngryMob_L
10532    ButtonImage            = SUAngryMob
10533    
10534    UpgradeCameo1 = Upgrade_GLAArmTheMob
10535    ;UpgradeCameo2 = NONE
10536    ;UpgradeCameo3 = NONE
10537    ;UpgradeCameo4 = NONE
10538    ;UpgradeCameo5 = NONE
10539    
10540    Draw = W3DModelDraw ModuleTag_01
10541      OkToChangeModelColor = Yes
10542      DefaultConditionState
10543        Model = None
10544  ;      Model = AVBomber_B
10545      End
10546    End
10547  
10548  
10549  ;****DESIGN parameters **************************
10550  
10551    DisplayName      = OBJECT:AngryMobNexus
10552    Side = GLA
10553  
10554    RadarPriority       = NOT_ON_RADAR
10555  
10556    EditorSorting   = INFANTRY
10557    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
10558  
10559    WeaponSet
10560      Conditions = None 
10561      Weapon = PRIMARY GLAAngryMobNexusHarmlessWeapon
10562      Weapon = SECONDARY GLAAngryMobNexusHarmlessWeapon
10563      Weapon = TERTIARY GLAAngryMobNexusHarmlessWeapon
10564    End
10565  
10566  
10567    ArmorSet
10568      Conditions      = None
10569      Armor           = InvulnerableAllArmor
10570      DamageFX        = None
10571    End
10572  
10573    BuildCost       = 800
10574    BuildTime       = 15.0          ;in seconds    
10575    VisionRange     = 150  ; it can scout for the spawn
10576    ShroudClearingRange = 0
10577  
10578    Prerequisites
10579      Object = GLABarracks
10580      Object = GLAPalace
10581    End
10582  
10583    ExperienceValue    = 5 5 5 5 ;Experience point value at each level
10584  
10585    IsTrainable     = No
10586  
10587  
10588  
10589    CommandSet    = GLAInfantryAngryMobCommandSet;
10590  
10591  ;**** AUDIO Parameters *****************************
10592    VoiceSelect = AngryMobVoiceSelect
10593    VoiceMove = AngryMobVoiceMove
10594    VoiceGuard = AngryMobVoiceMove
10595    VoiceAttack = AngryMobVoiceAttack
10596    SoundMoveStart = NoSound
10597    SoundAmbient = AngryMobAmbientLoop
10598    SoundAmbientRubble = NoSound
10599    SoundDie = CivilianArabMaleDie
10600    SoundDieFire = DieByFireGLA
10601    SoundDieToxin = DieByToxinGLA
10602    UnitSpecificSounds
10603      VoiceCreate          = AngryMobVoiceCreate
10604    End
10605  
10606  
10607  ;**** ENGINEERING Parameters ******************************
10608  
10609    RadarPriority = UNIT
10610    KindOf = PRELOAD CAN_ATTACK INFANTRY MOB_NEXUS ATTACK_NEEDS_LINE_OF_SIGHT NO_COLLIDE SELECTABLE SCORE
10611    Body = ImmortalBody ModuleTag_02
10612      MaxHealth       = 99999.0
10613      InitialHealth   = 99999.0
10614    End
10615  
10616    Behavior = AIUpdateInterface ModuleTag_03
10617      AutoAcquireEnemiesWhenIdle = Yes
10618    End
10619  
10620    Locomotor = SET_NORMAL AngryMobNexusLocomotor ;Important! don't make the Nexus any faster!
10621    Locomotor = SET_WANDER AngryMobNexusLocomotor ;Important! don't make the Nexus any faster!
10622    Locomotor = SET_PANIC AngryMobNexusLocomotor ;Important! don't make the Nexus any faster!
10623  
10624  ;  Locomotor = SET_NORMAL WanderHumanLocomotor ;Important! don't make the Nexus any faster!
10625  ;  Locomotor = SET_WANDER WanderHumanLocomotor ;Important! don't make the Nexus any faster!
10626  ;  Locomotor = SET_PANIC WanderHumanLocomotor ;Important! don't make the Nexus any faster!
10627  
10628    Behavior = PhysicsBehavior ModuleTag_04
10629      Mass = 50.0
10630    End
10631  
10632    Behavior            = SpawnBehavior ModuleTag_05
10633      SpawnNumber       = 10
10634      SpawnReplaceDelay = 30000 ; 30 seconds
10635  
10636          SpawnTemplateName = GLAInfantryAngryMobPistol01 ; Aladdin
10637          SpawnTemplateName = GLAInfantryAngryMobRock02 ; Woman in the Gypsy Costume
10638          SpawnTemplateName = GLAInfantryAngryMobMolotov02 ; The Lady with the hot sauce
10639          SpawnTemplateName = GLAInfantryAngryMobPistol03 ; Skinny Guy with the Green Beret
10640          SpawnTemplateName = GLAInfantryAngryMobRock04 ; Fat guy with the tank top
10641          SpawnTemplateName = GLAInfantryAngryMobMolotov02 ; The Lady with the hot sauce
10642          SpawnTemplateName = GLAInfantryAngryMobPistol05 ; The robed dude with the Man-Veil
10643  
10644  
10645  
10646      ExitByBudding = Yes;!
10647  
10648      InitialBurst = 5 ; the first set of 5 will not delay
10649      OneShot     = No
10650      AggregateHealth = Yes
10651    End
10652  
10653    Behavior = QueueProductionExitUpdate ModuleTag_06
10654      UnitCreatePoint   = X:  0.0  Y:  0.0   Z:0.0
10655      NaturalRallyPoint = X: 0.0  Y:  0.0   Z:0.0
10656      ExitDelay     = 5000 ; 5 sec
10657      InitialBurst = 5 ; the first set of 5 will not delay
10658    End
10659  
10660    Behavior = DestroyDie ModuleTag_07
10661      DeathTypes = ALL
10662    End
10663  
10664    Geometry = CYLINDER
10665    GeometryMajorRadius = 1.0
10666    GeometryMinorRadius = 1.0
10667    GeometryHeight = 1.0     
10668    GeometryIsSmall = Yes 
10669    Shadow = SHADOW_VOLUME
10670  
10671  End
10672  
10673  
10674  
10675  
10676  
10677  ;------------------------------------------------------------------------------
10678  ;------------------------------------------------------------------------------
10679  Object GLAInfantryAngryMobPistol01
10680  
10681  ;**** ART Parameters ***
10682    Draw = W3DModelDraw DrawTag_01
10683      OkToChangeModelColor = Yes
10684  
10685  
10686  
10687      ; WHILE CARRYING PISTOL
10688      ;---------------------------------------------------------
10689      DefaultConditionState ;Idle with Pistol Holstered
10690        Model = UIMOB01_SKN
10691        IdleAnimation = UIMOB01_SKL.UIMOB01_IDA1 0 12
10692        IdleAnimation = UIMOB01_SKL.UIMOB01_IDA2 0 5
10693        IdleAnimation = UIMOB01_SKL.UIMOB01_CHA  0 5
10694        IdleAnimation = UIMOB01_SKL.UIMOB01_STA  0 5
10695        AnimationMode = ONCE
10696        AnimationSpeedFactorRange 0.9 1.1
10697        TransitionKey = TRANS_STAND_A
10698  
10699        WeaponFireFXBone = PRIMARY Muzzle
10700        WeaponMuzzleFlash = PRIMARY MuzzleFX
10701        WeaponFireFXBone = SECONDARY MuzzleAK
10702        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
10703      End
10704  
10705      ; Drawing pistol
10706      ConditionState  = PREATTACK_A
10707        Animation     = UIMOB01_SKL.UIMOB01_ATA1_ST ; start firing
10708        AnimationMode = ONCE
10709      End
10710      AliasConditionState = PREATTACK_A FIRING_A
10711      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
10712  
10713      ; Firing pistol
10714      ConditionState = FIRING_A
10715        Animation = UIMOB01_SKL.UIMOB01_ATA1_LP ; looping firing
10716        AnimationMode = LOOP
10717        TransitionKey = TRANS_FIRING_A
10718      End
10719      AliasConditionState  = BETWEEN_FIRING_SHOTS_A
10720      
10721      ConditionState  = RELOADING_A
10722        Animation     = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing
10723        AnimationMode = ONCE
10724      End
10725  
10726      ; This transition allows him to put his gun away when he's finished attacking.
10727      TransitionState = TRANS_FIRING_A TRANS_STAND_A
10728        Animation     = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing
10729        AnimationMode = ONCE
10730      End
10731  
10732      ConditionState = MOVING
10733        Animation = UIMOB01_SKL.UIMOB01_RNA 
10734        AnimationMode = LOOP
10735        Flags = RANDOMSTART
10736        TransitionKey   = MOVING
10737        ParticleSysBone   = None InfantryDustTrails
10738      End
10739      AliasConditionState = MOVING RELOADING_A
10740      AliasConditionState = MOVING PREATTACK_A
10741      AliasConditionState = MOVING FIRING_A
10742      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
10743      AliasConditionState = MOVING RELOADING_C RELOADING_A 
10744      AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
10745  
10746      ConditionState = DYING
10747        Animation = UIMOB01_SKL.UIMOB01_DA1    
10748        Animation = UIMOB01_SKL.UIMOB01_DA2
10749        AnimationMode = ONCE
10750        TransitionKey = TRANS_Dying
10751      End
10752  
10753  
10754      ConditionState = SPECIAL_CHEERING
10755        Animation = UIMOB01_SKL.UIMOB01_CHA
10756        AnimationMode = ONCE
10757      End
10758  
10759      ;--------------------------------------------------------
10760      ; TRANSITION FROM PISTOL TO AK47
10761      TransitionState = TRANS_STAND_A TRANS_STAND_AK
10762        Animation = UIMOB01_SKL.UIMOB01_TA-D
10763        AnimationMode = ONCE
10764      End
10765  
10766  
10767      ; WHILE CARRYING AK47 
10768      ;---------------------------------------------------------
10769      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
10770        Model = UIMOB01_SKN
10771        IdleAnimation = UIMOB01_SKL.UIMOB01_IDD1 0 6
10772        IdleAnimation = UIMOB01_SKL.UIMOB01_IDD2 0 6
10773        IdleAnimation = UIMOB01_SKL.UIMOB01_CHD  0 6
10774        IdleAnimation = UIMOB01_SKL.UIMOB01_STD
10775        AnimationMode = ONCE
10776        AnimationSpeedFactorRange 0.9 1.1
10777        TransitionKey = TRANS_STAND_AK
10778      End
10779  
10780      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
10781        Animation = UIMOB01_SKL.UIMOB01_RND 
10782        AnimationMode = LOOP
10783        Flags = RANDOMSTART
10784        TransitionKey   = MOVING_AK
10785      End
10786  
10787      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
10788        Animation = UIMOB01_SKL.UIMOB01_DD1    
10789        Animation = UIMOB01_SKL.UIMOB01_DD2
10790        AnimationMode = ONCE
10791        TransitionKey = TRANS_Dying
10792      End
10793  
10794      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
10795        Animation = UIMOB01_SKL.UIMOB01_CHD
10796        AnimationMode = ONCE
10797      End
10798  
10799      ; Drawing AK47
10800      ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
10801        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ST ; start firing
10802        AnimationMode = ONCE
10803      End
10804      AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
10805      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
10806  
10807      ; Firing Gun
10808      ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
10809        Animation = UIMOB01_SKL.UIMOB01_ATD1_LP ; looping firing
10810        AnimationMode = LOOP
10811        WeaponFireFXBone = SECONDARY MuzzleAK
10812        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
10813        TransitionKey = TRANS_FIRING_AK
10814      End
10815      AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
10816  
10817  
10818      ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
10819        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing
10820        AnimationMode = ONCE
10821      End
10822  
10823  
10824      ; This transition allows him to put his gun away when he's finished attacking.
10825      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
10826        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing
10827        AnimationMode = ONCE
10828      End
10829  
10830  
10831  
10832  
10833  
10834  
10835  ;    ;Throwing bottle----------------------------------------------------------------
10836  ;    ConditionState = PREATTACK_C 
10837  ;      Animation     = UIMOB01_SKL.UIMOB01_ATCA_BF ; the wind up
10838  ;    End
10839  ;    AliasConditionState = PREATTACK_C FIRING_A
10840  ;    AliasConditionState = PREATTACK_C RELOADING_A
10841  ;    AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
10842  ;
10843  ;    ConditionState = FIRING_C 
10844  ;      Animation     = UIMOB01_SKL.UIMOB01_ATCA_AF ; the release and follow-thru
10845  ;      TransitionKey = TRANS_THROW
10846  ;    End
10847  ;    AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
10848  ;
10849  ;    ConditionState RELOADING_C
10850  ;      Animation =UIMOB01_SKL.UIMOB01_IDA1
10851  ;      WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
10852  ;    End
10853  ;    AliasConditionState = RELOADING_C RELOADING_A
10854  ;    AliasConditionState = RELOADING_C FIRING_A
10855  ;    AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
10856  
10857  
10858  ;    TransitionState = TRANSXXX TRANS_THROW
10859  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway gun and take out bottle
10860  ;    End
10861  
10862  ;    TransitionState = TRANS_THROW TRANS_FIRING_A
10863  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get PISTOL
10864  ;    End
10865  
10866  ;    TransitionState = TRANSXXXAK TRANS_THROW
10867  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway AK and take out bottle
10868  ;    End
10869  
10870  ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
10871  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get AK
10872  ;    End
10873  
10874  
10875  
10876  
10877  
10878      ;--------------------------------------------------------
10879  
10880  
10881  
10882  
10883  
10884  
10885      TransitionState = TRANS_Dying TRANS_Flailing
10886        Animation = UIMOB01_SKL.UIMOB01_A_ADTE1
10887        Animation = UIMOB01_SKL.UIMOB01_D_ADTE1
10888        AnimationMode = ONCE
10889      End
10890  
10891      ConditionState = DYING EXPLODED_FLAILING
10892        Animation = UIMOB01_SKL.UIMOB01_A_ADTE2
10893        Animation = UIMOB01_SKL.UIMOB01_D_ADTE2
10894        AnimationMode = LOOP
10895        TransitionKey = TRANS_Flailing
10896      End
10897  
10898      ConditionState = DYING EXPLODED_BOUNCING
10899        Animation = UIMOB01_SKL.UIMOB01_A_ADTE3
10900        Animation = UIMOB01_SKL.UIMOB01_D_ADTE3
10901        AnimationMode = ONCE
10902        TransitionKey = None
10903      End
10904  
10905  
10906    End
10907  
10908  
10909  ;**** DESIGN parameters ***
10910  
10911    DisplayName      = OBJECT:AngryMob
10912    Side = GLA
10913    EditorSorting = INFANTRY
10914    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
10915  
10916    WeaponSet
10917      Conditions = None 
10918      Weapon = PRIMARY GLAAngryMobPistolWeapon
10919    End
10920  
10921    WeaponSet
10922      Conditions = PLAYER_UPGRADE 
10923      Weapon = PRIMARY GLAAngryMobAK47NoDamageWeapon ; for atttacking in AK-proof conditions
10924      Weapon = SECONDARY GLAAngryMobAK47Weapon
10925    End
10926  
10927    ArmorSet
10928      Conditions      = None
10929      Armor           = HumanArmor
10930      DamageFX        = InfantryDamageFX
10931    End
10932  
10933    VisionRange = 150
10934    ShroudClearingRange = 150
10935    Prerequisites
10936      Object = GLABarracks
10937    End
10938    BuildCost = 100
10939    BuildTime = 0.0           
10940  
10941    ExperienceValue = 5 5 5 5    ;Experience point value at each level
10942    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
10943    IsTrainable = Yes             ;Can gain experience
10944    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
10945  
10946    ; *** AUDIO Parameters ***
10947    VoiceSelect = NoSound 
10948    VoiceMove = NoSound   
10949    VoiceAttack = NoSound 
10950    SoundDie = CivilianArabMaleDie
10951  
10952  
10953  ;**** ENGINEERING Parameters *** ;MOB01
10954    RadarPriority = UNIT
10955    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
10956  
10957    Body = ActiveBody BodyTag_01
10958      MaxHealth       = 50.0
10959      InitialHealth   = 50.0
10960    End
10961  
10962    Behavior = AIUpdateInterface ModuleTag_03
10963      AutoAcquireEnemiesWhenIdle = Yes
10964    End
10965  
10966    Behavior = MobMemberSlavedUpdate ModuleTag_04
10967      MustCatchUpRadius   = 40
10968      NoNeedToCatchUpRadius = 15
10969      Squirrelliness = 0.05
10970      CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
10971    End
10972  
10973    Locomotor = SET_NORMAL AngryMobNormalLocomotor
10974    Locomotor = SET_WANDER AngryMobWanderLocomotor
10975    Locomotor = SET_PANIC AngryMobPanicLocomotor
10976  
10977    Behavior = PhysicsBehavior BehaviorTag_01
10978      Mass = 5.0
10979    End
10980  
10981    Behavior = SquishCollide ModuleTag_08
10982      ;nothing
10983    End
10984  
10985    Behavior = WeaponSetUpgrade UpgradeTag_01
10986      TriggeredBy = Upgrade_GLAArmTheMob
10987    End
10988  
10989  
10990  ; --- begin Death modules ---
10991    Behavior = SlowDeathBehavior DeathTag_01
10992      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
10993      SinkDelay           = 3000
10994      SinkRate            = 0.5     ; in Dist/Sec
10995      DestructionDelay    = 8000
10996      FX                  = INITIAL FX_GIDie
10997    End
10998    Behavior = SlowDeathBehavior DeathTag_02
10999      DeathTypes          = NONE +CRUSHED +SPLATTED
11000      SinkDelay           = 3000
11001      SinkRate            = 0.5     ; in Dist/Sec
11002      DestructionDelay    = 8000
11003      FX                  = INITIAL FX_GIDieCrushed
11004    End
11005    Behavior = SlowDeathBehavior DeathTag_03
11006      DeathTypes          = NONE +EXPLODED
11007      SinkDelay           = 3000
11008      SinkRate            = 0.5     ; in Dist/Sec
11009      DestructionDelay    = 8000
11010      FX                  = INITIAL FX_GIDie
11011      FlingForce          = 8
11012      FlingForceVariance  = 3
11013      FlingPitch          = 60
11014      FlingPitchVariance  = 10
11015    End
11016    Behavior = SlowDeathBehavior DeathTag_04
11017      DeathTypes          = NONE +BURNED
11018      DestructionDelay    = 0
11019      FX                  = INITIAL FX_GIDie
11020      OCL                 = INITIAL OCL_FlamingInfantry
11021    End
11022    Behavior = SlowDeathBehavior DeathTag_05
11023      DeathTypes          = NONE +POISONED
11024      DestructionDelay    = 0
11025      FX                  = INITIAL FX_GIDie
11026      OCL                 = INITIAL OCL_ToxicInfantry
11027    End
11028  ; --- end Death modules ---
11029  
11030    Behavior = PoisonedBehavior BehaviorTag_02
11031      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
11032      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
11033    End
11034   
11035    Geometry = CYLINDER
11036    Scale = 0.95                            ;Scaling
11037    GeometryMajorRadius = 1.0 ; very thin
11038    GeometryHeight = 8.0
11039    GeometryIsSmall = Yes
11040    Shadow = SHADOW_DECAL
11041    ShadowSizeX = 9;
11042    ShadowSizeY = 9;
11043    ShadowTexture = ShadowI;
11044    BuildCompletion = APPEARS_AT_RALLY_POINT
11045  
11046  End
11047  
11048  
11049  ;------------------------------------------------------------------------------
11050  ;------------------------------------------------------------------------------
11051  Object GLAInfantryAngryMobRock02
11052  
11053  ;**** ART Parameters ***
11054    Draw = W3DModelDraw ModuleTag_01
11055      OkToChangeModelColor = Yes
11056  
11057      ; WHILE CARRYING ROCK
11058      ;---------------------------------------------------------
11059      DefaultConditionState
11060        Model = UIMOB02_SKN
11061        IdleAnimation = UIMOB02_SKL.UIMOB02_IDB1 0 12
11062        IdleAnimation = UIMOB02_SKL.UIMOB02_IDB2 0 5
11063        IdleAnimation = UIMOB02_SKL.UIMOB02_CHB  0 5
11064        IdleAnimation = UIMOB02_SKL.UIMOB02_STB  0 12
11065        AnimationMode = ONCE
11066        AnimationSpeedFactorRange 0.9 1.1
11067        TransitionKey = TRANS_STAND_A
11068  
11069        ;WeaponFireFXBone  = PRIMARY   "UIMOB02 R HAND"
11070        ;WeaponMuzzleFlash = PRIMARY   "UIMOB02 R HAND"
11071        WeaponFireFXBone =  SECONDARY MuzzleAK
11072        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
11073      End
11074  
11075  
11076      ; Drawing rock
11077      ConditionState  = PREATTACK_A
11078        Animation     = UIMOB02_SKL.UIMOB02_ATB2_BF ; wind up
11079        AnimationMode = ONCE
11080      End
11081      AliasConditionState = PREATTACK_A FIRING_A
11082      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
11083  
11084      ; throwing rock
11085      ConditionState = FIRING_A
11086        Animation = UIMOB02_SKL.UIMOB02_ATB1_AF ; throw
11087        Animation = UIMOB02_SKL.UIMOB02_ATB2_AF ; throw
11088        AnimationMode = ONCE
11089        TransitionKey = TRANS_FIRING_A
11090      End
11091      
11092      ConditionState = BETWEEN_FIRING_SHOTS_A
11093        Animation         = UIMOB02_SKL.UIMOB02_STB
11094        AnimationMode     = ONCE
11095        ; this is basically a trick: this guy has a nontrivial animation for firing,
11096        ; and a long recycle time between shots. we want him to finish his fire animation
11097        ; (unless he's ordered to do something else), so this is just a handy trick that
11098        ; says, "if the previous state had this transition key, allow it to finish before
11099        ; switching to us, if possible".
11100        WaitForStateToFinishIfPossible = TRANS_FIRING_A
11101      End
11102      AliasConditionState = RELOADING_A
11103  
11104  
11105      ConditionState = MOVING
11106        Animation = UIMOB02_SKL.UIMOB02_RNB 
11107        AnimationMode = LOOP
11108        Flags = RANDOMSTART
11109        TransitionKey   = MOVING
11110        ParticleSysBone   = None InfantryDustTrails
11111      End
11112  
11113      ConditionState = DYING
11114        Animation = UIMOB02_SKL.UIMOB02_DB1    
11115        Animation = UIMOB02_SKL.UIMOB02_DB2
11116        AnimationMode = ONCE
11117        TransitionKey = TRANS_Dying
11118      End
11119  
11120      ConditionState = SPECIAL_CHEERING
11121        Animation = UIMOB02_SKL.UIMOB02_CHB
11122        Flags = RANDOMSTART
11123        AnimationMode = LOOP
11124      End
11125  
11126  
11127      ;--------------------------------------------------------
11128      ; TRANSITION FROM PISTOL TO AK47
11129      TransitionState = TRANS_STAND_A TRANS_STAND_AK
11130        Animation = UIMOB02_SKL.UIMOB02_TB-D
11131        AnimationMode = ONCE
11132      End
11133  
11134  
11135      ; WHILE CARRYING AK47 
11136      ;---------------------------------------------------------
11137      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
11138        Model = UIMOB02_SKN
11139        IdleAnimation = UIMOB02_SKL.UIMOB02_IDD1 0 6
11140        IdleAnimation = UIMOB02_SKL.UIMOB02_IDD2 0 6
11141        IdleAnimation = UIMOB02_SKL.UIMOB02_CHD  0 6
11142        IdleAnimation = UIMOB02_SKL.UIMOB02_STD
11143        AnimationMode = ONCE
11144        AnimationSpeedFactorRange 0.9 1.1
11145        TransitionKey = TRANS_STAND_AK
11146      End
11147  
11148      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
11149        Animation = UIMOB02_SKL.UIMOB02_RND 
11150        AnimationMode = LOOP
11151        Flags = RANDOMSTART
11152        TransitionKey   = MOVING_AK
11153      End
11154  
11155      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
11156        Animation = UIMOB02_SKL.UIMOB02_DD1    
11157        Animation = UIMOB02_SKL.UIMOB02_DD2
11158        AnimationMode = ONCE
11159        TransitionKey = TRANS_Dying
11160      End
11161  
11162      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
11163        Animation = UIMOB02_SKL.UIMOB02_CHD
11164        AnimationMode = ONCE
11165      End
11166  
11167      ; Drawing AK47
11168      ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
11169        Animation     = UIMOB02_SKL.UIMOB02_ATD1_ST ; start firing
11170        AnimationMode = ONCE
11171      End
11172      AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
11173      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
11174  
11175      ; Firing Gun
11176      ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
11177        Animation = UIMOB02_SKL.UIMOB02_ATD1_LP ; looping firing
11178        AnimationMode = LOOP
11179        WeaponFireFXBone = SECONDARY MuzzleAK
11180        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
11181        TransitionKey = TRANS_FIRING_AK
11182      End
11183      AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
11184  
11185  
11186      ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
11187        Animation     = UIMOB02_SKL.UIMOB02_ATD1_ED ; end firing
11188        AnimationMode = ONCE
11189      End
11190  
11191  
11192      ; This transition allows him to put his gun away when he's finished attacking.
11193      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
11194        Animation     = UIMOB02_SKL.UIMOB02_ATD1_ED ; end firing
11195        AnimationMode = ONCE
11196      End
11197  
11198  
11199  
11200  
11201      TransitionState = TRANS_Dying TRANS_Flailing
11202        Animation = UIMOB02_SKL.UIMOB02_B_ADTA1
11203        Animation = UIMOB02_SKL.UIMOB02_D_ADTA1
11204        AnimationMode = ONCE
11205      End
11206  
11207      ConditionState = DYING EXPLODED_FLAILING
11208        Animation = UIMOB02_SKL.UIMOB02_B_ADTA2
11209        Animation = UIMOB02_SKL.UIMOB02_D_ADTA2
11210        AnimationMode = LOOP
11211        TransitionKey = TRANS_Flailing
11212      End
11213  
11214      ConditionState = DYING EXPLODED_BOUNCING
11215        Animation = UIMOB02_SKL.UIMOB02_B_ADTA3
11216        Animation = UIMOB02_SKL.UIMOB02_D_ADTA3
11217        AnimationMode = ONCE
11218        TransitionKey = None
11219      End
11220  
11221  
11222    End
11223  
11224  
11225  ;**** DESIGN parameters ***
11226  
11227    DisplayName      = OBJECT:AngryMob
11228    Side = GLA
11229    EditorSorting = INFANTRY
11230    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
11231  
11232    WeaponSet
11233      Conditions = None 
11234      Weapon = PRIMARY GLAAngryMobRockProjectileWeapon
11235    End
11236  
11237    WeaponSet
11238      Conditions = PLAYER_UPGRADE 
11239      Weapon = PRIMARY GLAAngryMobAK47NoDamageWeapon ; for atttacking in AK-proof conditions
11240      Weapon = SECONDARY GLAAngryMobAK47Weapon
11241    End
11242  
11243    ArmorSet
11244      Conditions      = None
11245      Armor           = HumanArmor
11246      DamageFX        = InfantryDamageFX
11247    End
11248  
11249    VisionRange = 150
11250    ShroudClearingRange = 150
11251    Prerequisites
11252      Object = GLABarracks
11253    End
11254    BuildCost = 100
11255    BuildTime = 0.0            
11256  
11257    ExperienceValue = 5 5 5 5    ;Experience point value at each level
11258    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
11259    IsTrainable = Yes             ;Can gain experience
11260    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
11261  
11262    ; *** AUDIO Parameters ***
11263    VoiceSelect = NoSound 
11264    VoiceMove = NoSound   
11265    VoiceAttack = NoSound 
11266    SoundDie = CivilianArabFemaleDie
11267  
11268  
11269  ;**** ENGINEERING Parameters *** ;MOB02
11270    RadarPriority = UNIT
11271    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
11272  
11273    Body = ActiveBody BodyTag_01
11274      MaxHealth       = 50.0
11275      InitialHealth   = 50.0
11276    End
11277  
11278    Behavior = AIUpdateInterface ModuleTag_03
11279      AutoAcquireEnemiesWhenIdle = Yes
11280    End
11281  
11282    Behavior = MobMemberSlavedUpdate ModuleTag_04
11283      MustCatchUpRadius   = 40
11284      NoNeedToCatchUpRadius = 15
11285      Squirrelliness = 0.05
11286      CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
11287    End
11288  
11289    Locomotor = SET_NORMAL AngryMobNormalLocomotor
11290    Locomotor = SET_WANDER AngryMobWanderLocomotor
11291    Locomotor = SET_PANIC AngryMobPanicLocomotor
11292  
11293    Behavior = PhysicsBehavior ModuleTag_05
11294      Mass = 5.0
11295    End
11296  
11297    Behavior = SquishCollide ModuleTag_08
11298      ;nothing
11299    End
11300  
11301    Behavior = WeaponSetUpgrade UpgradeTag_01
11302      TriggeredBy = Upgrade_GLAArmTheMob
11303    End
11304  
11305  
11306  ; --- begin Death modules ---
11307    Behavior = SlowDeathBehavior ModuleTag_Death01
11308      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
11309      SinkDelay           = 3000
11310      SinkRate            = 0.5     ; in Dist/Sec
11311      DestructionDelay    = 8000
11312      FX                  = INITIAL FX_GIDie
11313    End
11314    Behavior = SlowDeathBehavior ModuleTag_Death02
11315      DeathTypes          = NONE +CRUSHED +SPLATTED
11316      SinkDelay           = 3000
11317      SinkRate            = 0.5     ; in Dist/Sec
11318      DestructionDelay    = 8000
11319      FX                  = INITIAL FX_GIDieCrushed
11320    End
11321    Behavior = SlowDeathBehavior ModuleTag_Death03
11322      DeathTypes          = NONE +EXPLODED
11323      SinkDelay           = 3000
11324      SinkRate            = 0.5     ; in Dist/Sec
11325      DestructionDelay    = 8000
11326      FX                  = INITIAL FX_GIDie
11327      FlingForce          = 8
11328      FlingForceVariance  = 3
11329      FlingPitch          = 60
11330      FlingPitchVariance  = 10
11331    End
11332    Behavior = SlowDeathBehavior ModuleTag_Death04
11333      DeathTypes          = NONE +BURNED
11334      DestructionDelay    = 0
11335      FX                  = INITIAL FX_GIDie
11336      OCL                 = INITIAL OCL_FlamingInfantry
11337    End
11338    Behavior = SlowDeathBehavior ModuleTag_Death05
11339      DeathTypes          = NONE +POISONED
11340      DestructionDelay    = 0
11341      FX                  = INITIAL FX_GIDie
11342      OCL                 = INITIAL OCL_ToxicInfantry
11343    End
11344  ; --- end Death modules ---
11345  
11346    Behavior = PoisonedBehavior ModuleTag_13
11347      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
11348      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
11349    End
11350   
11351    Geometry = CYLINDER
11352    Scale = 0.95                            ;Scaling
11353    GeometryMajorRadius = 1.0 ; very thin
11354    GeometryHeight = 8.0
11355    GeometryIsSmall = Yes
11356    Shadow = SHADOW_DECAL
11357    ShadowSizeX = 9;
11358    ShadowSizeY = 9;
11359    ShadowTexture = ShadowI;
11360    BuildCompletion = APPEARS_AT_RALLY_POINT
11361  
11362  End
11363  
11364  ;------------------------------------------------------------------------------
11365  ;------------------------------------------------------------------------------
11366  
11367  ObjectReskin GLAInfantryAngryMobPistol03 GLAInfantryAngryMobPistol01
11368  
11369  ;**** ART Parameters ***
11370    Draw = W3DModelDraw DrawTag_01
11371      OkToChangeModelColor = Yes
11372  
11373  
11374  
11375      ; WHILE CARRYING PISTOL
11376      ;---------------------------------------------------------
11377      DefaultConditionState ;Idle with Pistol Holstered
11378        Model = UIMOB03_SKN
11379        IdleAnimation = UIMOB03_SKL.UIMOB03_IDA1 0 12
11380        IdleAnimation = UIMOB03_SKL.UIMOB03_IDA2 0 5
11381        IdleAnimation = UIMOB03_SKL.UIMOB03_CHA  0 5
11382        IdleAnimation = UIMOB03_SKL.UIMOB03_STA  0 5
11383        AnimationMode = ONCE
11384        AnimationSpeedFactorRange 0.9 1.1
11385        TransitionKey = TRANS_STAND_A
11386  
11387        WeaponFireFXBone = PRIMARY Muzzle
11388        WeaponMuzzleFlash = PRIMARY MuzzleFX
11389        WeaponFireFXBone = SECONDARY MuzzleAK
11390        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
11391        WeaponFireFXBone = TERTIARY "UIMOB03 R HAND"
11392      End
11393  
11394      ; Drawing pistol
11395      ConditionState  = PREATTACK_A
11396        Animation     = UIMOB03_SKL.UIMOB03_ATA1_ST ; start firing
11397        AnimationMode = ONCE
11398      End
11399      AliasConditionState = PREATTACK_A FIRING_A
11400      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
11401  
11402      ; Firing pistol
11403      ConditionState = FIRING_A
11404        Animation = UIMOB03_SKL.UIMOB03_ATA1_LP ; looping firing
11405        AnimationMode = LOOP
11406        TransitionKey = TRANS_FIRING_A
11407      End
11408      AliasConditionState  = BETWEEN_FIRING_SHOTS_A
11409  
11410      ConditionState  = RELOADING_A
11411        Animation     = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing
11412        AnimationMode = ONCE
11413      End
11414  
11415      ; This transition allows him to put his gun away when he's finished attacking.
11416      TransitionState = TRANS_FIRING_A TRANS_STAND_A
11417        Animation     = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing
11418        AnimationMode = ONCE
11419      End
11420  
11421      ConditionState = MOVING
11422        Animation = UIMOB03_SKL.UIMOB03_RNA 
11423        AnimationMode = LOOP
11424        Flags = RANDOMSTART
11425        TransitionKey   = MOVING
11426        ParticleSysBone   = None InfantryDustTrails
11427      End
11428      AliasConditionState = MOVING RELOADING_A
11429      AliasConditionState = MOVING PREATTACK_A
11430      AliasConditionState = MOVING FIRING_A
11431      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
11432      AliasConditionState = MOVING RELOADING_C RELOADING_A 
11433      AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
11434  
11435      ConditionState = DYING
11436        Animation = UIMOB03_SKL.UIMOB03_DA1    
11437        Animation = UIMOB03_SKL.UIMOB03_DA2
11438        AnimationMode = ONCE
11439        TransitionKey = TRANS_Dying
11440      End
11441  
11442  
11443      ConditionState = SPECIAL_CHEERING
11444        Animation = UIMOB03_SKL.UIMOB03_CHA
11445        AnimationMode = ONCE
11446      End
11447  
11448      ;--------------------------------------------------------
11449      ; TRANSITION FROM PISTOL TO AK47
11450      TransitionState = TRANS_STAND_A TRANS_STAND_AK
11451        Animation = UIMOB03_SKL.UIMOB03_TA-D
11452        AnimationMode = ONCE
11453      End
11454  
11455  
11456      ; WHILE CARRYING AK47 
11457      ;---------------------------------------------------------
11458      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
11459        Model = UIMOB03_SKN
11460        IdleAnimation = UIMOB03_SKL.UIMOB03_IDD1 0 6
11461        IdleAnimation = UIMOB03_SKL.UIMOB03_IDD2 0 6
11462        IdleAnimation = UIMOB03_SKL.UIMOB03_CHD  0 6
11463        IdleAnimation = UIMOB03_SKL.UIMOB03_STD
11464        AnimationMode = ONCE
11465        AnimationSpeedFactorRange 0.9 1.1
11466        TransitionKey = TRANS_STAND_AK
11467      End
11468  
11469      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
11470        Animation = UIMOB03_SKL.UIMOB03_RND 
11471        AnimationMode = LOOP
11472        Flags = RANDOMSTART
11473        TransitionKey   = MOVING_AK
11474      End
11475  
11476      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
11477        Animation = UIMOB03_SKL.UIMOB03_DD1    
11478        Animation = UIMOB03_SKL.UIMOB03_DD2
11479        AnimationMode = ONCE
11480        TransitionKey = TRANS_Dying
11481      End
11482  
11483      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
11484        Animation = UIMOB03_SKL.UIMOB03_CHD
11485        AnimationMode = ONCE
11486      End
11487  
11488      ; Drawing AK47
11489      ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
11490        Animation     = UIMOB03_SKL.UIMOB03_ATD_ST ; start firing
11491        AnimationMode = ONCE
11492      End
11493      AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
11494      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
11495  
11496      ; Firing Gun
11497      ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
11498        Animation = UIMOB03_SKL.UIMOB03_ATD_LP ; looping firing
11499        AnimationMode = LOOP
11500        WeaponFireFXBone = SECONDARY MuzzleAK
11501        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
11502        TransitionKey = TRANS_FIRING_AK
11503      End
11504      AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
11505  
11506  
11507      ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
11508        Animation     = UIMOB03_SKL.UIMOB03_ATD_ED ; end firing
11509        AnimationMode = ONCE
11510      End
11511  
11512  
11513      ; This transition allows him to put his gun away when he's finished attacking.
11514      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
11515        Animation     = UIMOB03_SKL.UIMOB03_ATD_ED ; end firing
11516        AnimationMode = ONCE
11517      End
11518  
11519  
11520  ;    ;Throwing bottle----------------------------------------------------------------
11521  ;    ConditionState = PREATTACK_C 
11522  ;      Animation     = UIMOB03_SKL.UIMOB03_ATCA_BF ; the wind up
11523  ;    End
11524  ;    AliasConditionState = PREATTACK_C FIRING_A
11525  ;    AliasConditionState = PREATTACK_C RELOADING_A
11526  ;    AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
11527  ;
11528  ;    ConditionState = FIRING_C 
11529  ;      Animation     = UIMOB03_SKL.UIMOB03_ATCA_AF ; the release and follow-thru
11530  ;      TransitionKey = TRANS_THROW
11531  ;    End
11532  ;    AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
11533  ;
11534  ;    ConditionState RELOADING_C
11535  ;      Animation =UIMOB03_SKL.UIMOB03_IDA1
11536  ;      WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
11537  ;
11538  ;    End
11539  ;    AliasConditionState = RELOADING_C RELOADING_A
11540  ;    AliasConditionState = RELOADING_C FIRING_A
11541  ;    AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
11542  
11543  
11544  ;    TransitionState = TRANSXXX TRANS_THROW
11545  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway gun and take out bottle
11546  ;    End
11547  
11548  ;    TransitionState = TRANS_THROW TRANS_FIRING_A
11549  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get PISTOL
11550  ;    End
11551  
11552  ;    TransitionState = TRANSXXXAK TRANS_THROW
11553  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway AK and take out bottle
11554  ;    End
11555  
11556  ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
11557  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get AK
11558  ;    End
11559  
11560  
11561  
11562  
11563  
11564      ;--------------------------------------------------------
11565  
11566  
11567  
11568  
11569  
11570  
11571      TransitionState = TRANS_Dying TRANS_Flailing
11572        Animation = UIMOB03_SKL.UIMOB03_A_ADTD1
11573        Animation = UIMOB03_SKL.UIMOB03_D_ADTD1
11574        AnimationMode = ONCE
11575      End
11576  
11577      ConditionState = DYING EXPLODED_FLAILING
11578        Animation = UIMOB03_SKL.UIMOB03_A_ADTD2
11579        Animation = UIMOB03_SKL.UIMOB03_D_ADTD2
11580        AnimationMode = LOOP
11581        TransitionKey = TRANS_Flailing
11582      End
11583  
11584      ConditionState = DYING EXPLODED_BOUNCING
11585        Animation = UIMOB03_SKL.UIMOB03_A_ADTD3
11586        Animation = UIMOB03_SKL.UIMOB03_D_ADTD3
11587        AnimationMode = ONCE
11588        TransitionKey = None
11589      End
11590  
11591  
11592    End
11593  
11594  
11595    Geometry = CYLINDER
11596    GeometryMajorRadius = 1.0 ; very thin
11597    GeometryMinorRadius = 1.0 ; very thinD
11598    GeometryHeight = 8.0
11599    GeometryIsSmall = Yes
11600  
11601  End
11602  
11603  ;------------------------------------------------------------------------------
11604  ;------------------------------------------------------------------------------
11605  ObjectReskin GLAInfantryAngryMobRock04 GLAInfantryAngryMobRock02
11606  
11607  ;**** ART Parameters ***
11608    Draw = W3DModelDraw ModuleTag_01
11609      OkToChangeModelColor = Yes
11610  
11611      ; WHILE CARRYING ROCK
11612      ;---------------------------------------------------------
11613      DefaultConditionState
11614        Model = UIMOB04_SKN
11615        IdleAnimation = UIMOB04_SKL.UIMOB04_IDB1 0 12
11616        IdleAnimation = UIMOB04_SKL.UIMOB04_IDB2 0 5 
11617        IdleAnimation = UIMOB04_SKL.UIMOB04_CHB  0 5 
11618        IdleAnimation = UIMOB04_SKL.UIMOB04_STB  0 12
11619        AnimationMode = ONCE
11620        AnimationSpeedFactorRange 0.9 1.1
11621        TransitionKey = TRANS_STAND_A
11622        WaitForStateToFinishIfPossible TRANS_FIRING_A
11623  
11624        ;WeaponFireFXBone  = PRIMARY   "UIMOB04 R HAND"
11625        ;WeaponMuzzleFlash = PRIMARY   "UIMOB04 R HAND"
11626        WeaponFireFXBone =  SECONDARY MuzzleAK
11627        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
11628      End
11629  
11630  
11631      ; Drawing rock
11632      ConditionState  = PREATTACK_A
11633        Animation     = UIMOB04_SKL.UIMOB04_ATB2_BF ; wind up
11634        AnimationMode = ONCE
11635        AnimationSpeedFactorRange 1.0 1.0
11636      End
11637      AliasConditionState = PREATTACK_A FIRING_A
11638      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
11639  
11640      ; throwing rock
11641      ConditionState = FIRING_A
11642        Animation = UIMOB04_SKL.UIMOB04_ATB1_AF ; throw
11643        Animation = UIMOB04_SKL.UIMOB04_ATB2_AF ; throw
11644        AnimationMode = ONCE
11645        TransitionKey = TRANS_FIRING_A
11646      End
11647  
11648      ConditionState = BETWEEN_FIRING_SHOTS_A
11649        Animation         = UIMOB04_SKL.UIMOB04_STB
11650        AnimationMode     = ONCE
11651        ; this is basically a trick: this guy has a nontrivial animation for firing,
11652        ; and a long recycle time between shots. we want him to finish his fire animation
11653        ; (unless he's ordered to do something else), so this is just a handy trick that
11654        ; says, "if the previous state had this transition key, allow it to finish before
11655        ; switching to us, if possible".
11656        WaitForStateToFinishIfPossible = TRANS_FIRING_A
11657      End
11658      AliasConditionState = RELOADING_A
11659  
11660      ConditionState = MOVING
11661        Animation = UIMOB04_SKL.UIMOB04_RUN 
11662        AnimationMode = LOOP
11663        Flags = RANDOMSTART
11664        TransitionKey   = MOVING
11665        ParticleSysBone   = None InfantryDustTrails
11666      End
11667  
11668      ConditionState = DYING
11669        Animation = UIMOB04_SKL.UIMOB04_DB1    
11670        Animation = UIMOB04_SKL.UIMOB04_DB2
11671        AnimationMode = ONCE
11672        TransitionKey = TRANS_Dying
11673      End
11674  
11675      ConditionState = SPECIAL_CHEERING
11676        Animation = UIMOB04_SKL.UIMOB04_CHB
11677        Flags = RANDOMSTART
11678        AnimationMode = LOOP
11679      End
11680  
11681  
11682  
11683  
11684  
11685  
11686  
11687  
11688      ;--------------------------------------------------------
11689      ; TRANSITION FROM PISTOL TO AK47
11690      TransitionState = TRANS_STAND_A TRANS_STAND_AK
11691        Animation = UIMOB04_SKL.UIMOB04_TB-D
11692        AnimationMode = ONCE
11693      End
11694  
11695  
11696      ; WHILE CARRYING AK47 
11697      ;---------------------------------------------------------
11698      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
11699        Model = UIMOB04_SKN
11700        IdleAnimation = UIMOB04_SKL.UIMOB04_IDD1 0 6
11701        IdleAnimation = UIMOB04_SKL.UIMOB04_IDD2 0 6
11702        IdleAnimation = UIMOB04_SKL.UIMOB04_CHD  0 6
11703        IdleAnimation = UIMOB04_SKL.UIMOB04_STD
11704        AnimationMode = ONCE
11705        AnimationSpeedFactorRange 0.9 1.1
11706        TransitionKey = TRANS_STAND_AK
11707        WeaponFireFXBone = SECONDARY MuzzleAK
11708        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
11709      End
11710  
11711      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
11712        Animation = UIMOB04_SKL.UIMOB04_RND 
11713        AnimationMode = LOOP
11714        Flags = RANDOMSTART
11715        TransitionKey   = MOVING_AK
11716      End
11717  
11718      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
11719        Animation = UIMOB04_SKL.UIMOB04_DD1    
11720        Animation = UIMOB04_SKL.UIMOB04_DD2
11721        AnimationMode = ONCE
11722        TransitionKey = TRANS_Dying
11723      End
11724  
11725      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
11726        Animation = UIMOB04_SKL.UIMOB04_CHD
11727        AnimationMode = ONCE
11728      End
11729  
11730      ; Drawing AK47
11731      ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
11732        Animation     = UIMOB04_SKL.UIMOB04_ATD1_ST ; start firing
11733        AnimationMode = ONCE
11734      End
11735      AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
11736      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
11737  
11738      ; Firing Gun
11739      ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
11740        Animation = UIMOB04_SKL.UIMOB04_ATD1_LP ; looping firing
11741        AnimationMode = LOOP
11742        WeaponFireFXBone = PRIMARY MuzzleAK
11743        WeaponMuzzleFlash = PRIMARY MuzzleAKFX
11744        TransitionKey = TRANS_FIRING_AK
11745      End
11746      AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
11747  
11748  
11749      ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
11750        Animation     = UIMOB04_SKL.UIMOB04_ATD1_ED ; end firing
11751        AnimationMode = ONCE
11752      End
11753  
11754  
11755      ; This transition allows him to put his gun away when he's finished attacking.
11756      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
11757        Animation     = UIMOB04_SKL.UIMOB04_ATD1_ED ; end firing
11758        AnimationMode = ONCE
11759      End
11760  
11761  
11762  
11763  
11764  
11765  
11766  
11767  
11768  
11769  
11770      TransitionState = TRANS_Dying TRANS_Flailing
11771        Animation = UIMOB04_SKL.UIMOB04_B_ADTF1
11772        Animation = UIMOB04_SKL.UIMOB04_D_ADTF1
11773        AnimationMode = ONCE
11774      End
11775  
11776      ConditionState = DYING EXPLODED_FLAILING
11777        Animation = UIMOB04_SKL.UIMOB04_B_ADTF2
11778        Animation = UIMOB04_SKL.UIMOB04_D_ADTF2
11779        AnimationMode = LOOP
11780        TransitionKey = TRANS_Flailing
11781      End
11782  
11783      ConditionState = DYING EXPLODED_BOUNCING
11784        Animation = UIMOB04_SKL.UIMOB04_B_ADTF3
11785        Animation = UIMOB04_SKL.UIMOB04_D_ADTF3
11786        AnimationMode = ONCE
11787        TransitionKey = None
11788      End
11789  
11790  
11791    End
11792  
11793    Geometry = CYLINDER
11794    GeometryMajorRadius = 1.0 ; kinda thin
11795    GeometryMinorRadius = 1.0 ; kinda thinD
11796    GeometryHeight = 8.0
11797    GeometryIsSmall = Yes
11798  
11799  End
11800  
11801  ;------------------------------------------------------------------------------
11802  ;------------------------------------------------------------------------------
11803  ObjectReskin GLAInfantryAngryMobPistol05 GLAInfantryAngryMobPistol01
11804  
11805  ;**** ART Parameters ***
11806    Draw = W3DModelDraw DrawTag_01
11807      OkToChangeModelColor = Yes
11808  
11809  
11810  
11811      ; WHILE CARRYING PISTOL
11812      ;---------------------------------------------------------
11813      DefaultConditionState ;Idle with Pistol Holstered
11814        Model = UIMOB05_SKN
11815        IdleAnimation = UIMOB05_SKL.UIMOB05_IDA1 0 12
11816        IdleAnimation = UIMOB05_SKL.UIMOB05_IDA2 0 5
11817        IdleAnimation = UIMOB05_SKL.UIMOB05_CHA  0 5
11818        IdleAnimation = UIMOB05_SKL.UIMOB05_STA  0 5
11819        AnimationMode = ONCE
11820        AnimationSpeedFactorRange 0.9 1.1
11821        TransitionKey = TRANS_STAND_A
11822  
11823        WeaponFireFXBone = PRIMARY Muzzle01
11824        WeaponMuzzleFlash = PRIMARY Muzzle01
11825      End
11826  
11827      ; Drawing pistol
11828      ConditionState  = PREATTACK_A
11829        Animation     = UIMOB05_SKL.UIMOB05_ATA1_ST ; start firing
11830        AnimationMode = ONCE
11831      End
11832      AliasConditionState = PREATTACK_A FIRING_A
11833      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
11834  
11835      ; Firing pistol
11836      ConditionState = FIRING_A
11837        Animation = UIMOB05_SKL.UIMOB05_ATA1_LP ; looping firing
11838        AnimationMode = LOOP
11839        TransitionKey = TRANS_FIRING_A
11840      End
11841      AliasConditionState  = BETWEEN_FIRING_SHOTS_A
11842      
11843      ConditionState  = RELOADING_A
11844        Animation     = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing
11845        AnimationMode = ONCE
11846      End
11847  
11848      ; This transition allows him to put his gun away when he's finished attacking.
11849      TransitionState = TRANS_FIRING_A TRANS_STAND_A
11850        Animation     = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing
11851        AnimationMode = ONCE
11852      End
11853  
11854      ConditionState = MOVING
11855        Animation = UIMOB05_SKL.UIMOB05_RNA 
11856        AnimationMode = LOOP
11857        Flags = RANDOMSTART
11858        TransitionKey   = MOVING
11859        ParticleSysBone   = None InfantryDustTrails
11860      End
11861      AliasConditionState = MOVING RELOADING_A
11862      AliasConditionState = MOVING PREATTACK_A
11863      AliasConditionState = MOVING FIRING_A
11864      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
11865      AliasConditionState = MOVING RELOADING_C RELOADING_A 
11866      AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
11867  
11868      ConditionState = DYING
11869        Animation = UIMOB05_SKL.UIMOB05_DA1    
11870        Animation = UIMOB05_SKL.UIMOB05_DA2
11871        AnimationMode = ONCE
11872        TransitionKey = TRANS_Dying
11873      End
11874  
11875  
11876      ConditionState = SPECIAL_CHEERING
11877        Animation = UIMOB05_SKL.UIMOB05_CHA
11878        AnimationMode = ONCE
11879      End
11880  
11881      ;--------------------------------------------------------
11882  
11883      ; TRANSITION FROM PISTOL TO AK47
11884      TransitionState = TRANS_STAND_A TRANS_STAND_AK
11885        Animation = UIMOB05_SKL.UIMOB05_TA-D
11886        AnimationMode = ONCE
11887      End
11888  
11889  
11890      ; WHILE CARRYING AK47 
11891      ;---------------------------------------------------------
11892      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
11893        Model = UIMOB05_SKN
11894        IdleAnimation = UIMOB05_SKL.UIMOB05_IDD1 0 6
11895        IdleAnimation = UIMOB05_SKL.UIMOB05_IDD2 0 6
11896        IdleAnimation = UIMOB05_SKL.UIMOB05_CHD  0 6
11897        IdleAnimation = UIMOB05_SKL.UIMOB05_STD
11898        AnimationMode = ONCE
11899        AnimationSpeedFactorRange 0.9 1.1
11900        TransitionKey = TRANS_STAND_AK
11901        WeaponFireFXBone = SECONDARY MuzzleAK
11902        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
11903      End
11904  
11905      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
11906        Animation = UIMOB05_SKL.UIMOB05_RND 
11907        AnimationMode = LOOP
11908        Flags = RANDOMSTART
11909        TransitionKey   = MOVING_AK
11910      End
11911  
11912      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
11913        Animation = UIMOB05_SKL.UIMOB05_DD1    
11914        Animation = UIMOB05_SKL.UIMOB05_DD2
11915        AnimationMode = ONCE
11916        TransitionKey = TRANS_Dying
11917      End
11918  
11919      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
11920        Animation = UIMOB05_SKL.UIMOB05_CHD
11921        AnimationMode = ONCE
11922      End
11923  
11924      ; Drawing AK47
11925      ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
11926        Animation     = UIMOB05_SKL.UIMOB05_ATD1_ST ; start firing
11927        AnimationMode = ONCE
11928      End
11929      AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
11930      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
11931  
11932      ; Firing Gun
11933      ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
11934        Animation = UIMOB05_SKL.UIMOB05_ATD1_LP ; looping firing
11935        AnimationMode = LOOP
11936        WeaponFireFXBone = PRIMARY MuzzleAK
11937        WeaponMuzzleFlash = PRIMARY MuzzleAKFX
11938        TransitionKey = TRANS_FIRING_AK
11939      End
11940      AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
11941  
11942  
11943      ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
11944        Animation     = UIMOB05_SKL.UIMOB05_ATD1_ED ; end firing
11945        AnimationMode = ONCE
11946      End
11947  
11948  
11949      ; This transition allows him to put his gun away when he's finished attacking.
11950      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
11951        Animation     = UIMOB05_SKL.UIMOB05_ATD1_ED ; end firing
11952        AnimationMode = ONCE
11953      End
11954  
11955  
11956  ;    ;Throwing bottle----------------------------------------------------------------
11957  ;    ConditionState = PREATTACK_C 
11958  ;      Animation     = UIMOB05_SKL.UIMOB05_ATCA_BF ; the wind up
11959  ;    End
11960  ;    AliasConditionState = PREATTACK_C FIRING_A
11961  ;    AliasConditionState = PREATTACK_C RELOADING_A
11962  ;    AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
11963  ;
11964  ;    ConditionState = FIRING_C 
11965  ;      Animation     = UIMOB05_SKL.UIMOB05_ATCA_AF ; the release and follow-thru
11966  ;      TransitionKey = TRANS_THROW
11967  ;    End
11968  ;    AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
11969  ;
11970  ;    ConditionState RELOADING_C
11971  ;      Animation =UIMOB05_SKL.UIMOB05_IDA1
11972  ;      WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
11973  ;    End
11974  ;    AliasConditionState = RELOADING_C RELOADING_A
11975  ;    AliasConditionState = RELOADING_C FIRING_A
11976  ;    AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
11977  
11978  
11979  ;    TransitionState = TRANSXXX TRANS_THROW
11980  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway gun and take out bottle
11981  ;    End
11982  
11983  ;    TransitionState = TRANS_THROW TRANS_FIRING_A
11984  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get PISTOL
11985  ;    End
11986  
11987  ;    TransitionState = TRANSXXXAK TRANS_THROW
11988  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway AK and take out bottle
11989  ;    End
11990  
11991  
11992  ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
11993  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get AK
11994  ;    End
11995  
11996  
11997  
11998  
11999  
12000      ;--------------------------------------------------------
12001  
12002  
12003  
12004  
12005  
12006  
12007      TransitionState = TRANS_Dying TRANS_Flailing
12008        Animation = UIMOB05_SKL.UIMOB05_A_ADTA1
12009        Animation = UIMOB05_SKL.UIMOB05_D_ADTA1
12010        AnimationMode = ONCE
12011      End
12012  
12013      ConditionState = DYING EXPLODED_FLAILING
12014        Animation = UIMOB05_SKL.UIMOB05_A_ADTA2
12015        Animation = UIMOB05_SKL.UIMOB05_D_ADTA2
12016        AnimationMode = LOOP
12017        TransitionKey = TRANS_Flailing
12018      End
12019  
12020      ConditionState = DYING EXPLODED_BOUNCING
12021        Animation = UIMOB05_SKL.UIMOB05_A_ADTA3
12022        Animation = UIMOB05_SKL.UIMOB05_D_ADTA3
12023        AnimationMode = ONCE
12024        TransitionKey = None
12025      End
12026  
12027  
12028    End
12029  
12030  
12031  
12032    Geometry = CYLINDER
12033    GeometryMajorRadius = 1.0 ; very thin
12034    GeometryMinorRadius = 1.0 ; very thinD
12035    GeometryHeight = 8.0
12036    GeometryIsSmall = Yes
12037  
12038  End
12039  
12040  
12041  ;------------------------------------------------------------------------------
12042  ;------------------------------------------------------------------------------
12043  Object GLAInfantryAngryMobMolotov02
12044  
12045  ;**** ART Parameters ***
12046    Draw = W3DModelDraw ModuleTag_01
12047      OkToChangeModelColor = Yes
12048  
12049      ; WHILE CARRYING ROCK
12050      ;---------------------------------------------------------
12051      DefaultConditionState
12052        Model = UIMOB02_SKN
12053        IdleAnimation = UIMOB02_SKL.UIMOB02_IDB1 0 12
12054        IdleAnimation = UIMOB02_SKL.UIMOB02_IDB2 0 5
12055        IdleAnimation = UIMOB02_SKL.UIMOB02_CHB  0 5
12056        IdleAnimation = UIMOB02_SKL.UIMOB02_STB  0 12
12057        AnimationMode = ONCE
12058        AnimationSpeedFactorRange 0.9 1.1
12059        TransitionKey = TRANS_STAND_B
12060  
12061        WeaponFireFXBone  = SECONDARY   "UIMOB02 R HAND"
12062  
12063      End
12064  
12065  
12066      ; Drawing rock
12067      ConditionState  = PREATTACK_B
12068        Animation     = UIMOB02_SKL.UIMOB02_ATCB_BF ; wind up
12069        AnimationMode = ONCE
12070      End
12071      AliasConditionState = PREATTACK_B FIRING_B
12072      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
12073  
12074      ; throwing rock
12075      ConditionState = FIRING_B
12076        Animation = UIMOB02_SKL.UIMOB02_ATCB_AF ; throw
12077        AnimationMode = ONCE
12078        TransitionKey = TRANS_FIRING_B
12079      End
12080  
12081      ConditionState = BETWEEN_FIRING_SHOTS_B
12082        Animation         = UIMOB02_SKL.UIMOB02_STB
12083        AnimationMode     = ONCE
12084        ; this is basically a trick: this guy has a nontrivial animation for firing,
12085        ; and a long recycle time between shots. we want him to finish his fire animation
12086        ; (unless he's ordered to do something else), so this is just a handy trick that
12087        ; says, "if the previous state had this transition key, allow it to finish before
12088        ; switching to us, if possible".
12089        WaitForStateToFinishIfPossible = TRANS_FIRING_B
12090      End
12091      AliasConditionState = RELOADING_B
12092  
12093  
12094      ConditionState = MOVING
12095        Animation = UIMOB02_SKL.UIMOB02_RNB 
12096        AnimationMode = LOOP
12097        Flags = RANDOMSTART
12098        TransitionKey   = MOVING
12099        ParticleSysBone   = None InfantryDustTrails
12100      End
12101  
12102      ConditionState = DYING
12103        Animation = UIMOB02_SKL.UIMOB02_DB1    
12104        Animation = UIMOB02_SKL.UIMOB02_DB2
12105        AnimationMode = ONCE
12106        TransitionKey = TRANS_Dying
12107      End
12108  
12109      ConditionState = SPECIAL_CHEERING
12110        Animation = UIMOB02_SKL.UIMOB02_CHB
12111        Flags = RANDOMSTART
12112        AnimationMode = LOOP
12113      End
12114  
12115  
12116  
12117  
12118  
12119  
12120      TransitionState = TRANS_Dying TRANS_Flailing
12121        Animation = UIMOB02_SKL.UIMOB02_B_ADTA1
12122        Animation = UIMOB02_SKL.UIMOB02_D_ADTA1
12123        AnimationMode = ONCE
12124      End
12125  
12126      ConditionState = DYING EXPLODED_FLAILING
12127        Animation = UIMOB02_SKL.UIMOB02_B_ADTA2
12128        Animation = UIMOB02_SKL.UIMOB02_D_ADTA2
12129        AnimationMode = LOOP
12130        TransitionKey = TRANS_Flailing
12131      End
12132  
12133      ConditionState = DYING EXPLODED_BOUNCING
12134        Animation = UIMOB02_SKL.UIMOB02_B_ADTA3
12135        Animation = UIMOB02_SKL.UIMOB02_D_ADTA3
12136        AnimationMode = ONCE
12137        TransitionKey = None
12138      End
12139  
12140  
12141    End
12142  
12143  
12144  ;**** DESIGN parameters ***
12145  
12146    DisplayName      = OBJECT:AngryMob
12147    Side = GLA
12148    EditorSorting = INFANTRY
12149    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
12150  
12151    WeaponSet
12152      Conditions = None 
12153      Weapon = PRIMARY GLAAngryMobMolotovCocktailProjectileWeapon ; all she does is throw molotovs
12154    End
12155  
12156    ArmorSet
12157      Conditions      = None
12158      Armor           = HumanArmor
12159      DamageFX        = InfantryDamageFX
12160    End
12161  
12162    VisionRange = 150
12163    ShroudClearingRange = 150
12164    Prerequisites
12165      Object = GLABarracks
12166  
12167    End
12168    BuildCost = 100
12169    BuildTime = 0.0            
12170  
12171    ExperienceValue = 5 5 5 5    ;Experience point value at each level
12172    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
12173    IsTrainable = Yes             ;Can gain experience
12174    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
12175  
12176    ; *** AUDIO Parameters ***
12177    VoiceSelect = NoSound 
12178    VoiceMove = NoSound   
12179    VoiceAttack = NoSound 
12180    SoundDie = CivilianArabFemaleDie
12181  
12182  
12183  ;**** ENGINEERING Parameters *** ;MOB02
12184    RadarPriority = UNIT
12185    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
12186  
12187    Body = ActiveBody BodyTag_01
12188      MaxHealth       = 50.0
12189      InitialHealth   = 50.0
12190    End
12191  
12192    Behavior = AIUpdateInterface ModuleTag_03
12193      AutoAcquireEnemiesWhenIdle = Yes
12194    End
12195  
12196    Behavior = MobMemberSlavedUpdate ModuleTag_04
12197      MustCatchUpRadius   = 40
12198      NoNeedToCatchUpRadius = 15
12199      Squirrelliness = 0.05
12200      CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
12201    End
12202  
12203    Locomotor = SET_NORMAL AngryMobNormalLocomotor
12204    Locomotor = SET_WANDER AngryMobWanderLocomotor
12205    Locomotor = SET_PANIC AngryMobPanicLocomotor
12206  
12207    Behavior = PhysicsBehavior ModuleTag_05
12208      Mass = 5.0
12209    End
12210  
12211    Behavior = SquishCollide ModuleTag_08
12212      ;nothing
12213    End
12214  
12215    Behavior = WeaponSetUpgrade UpgradeTag_01
12216      TriggeredBy = Upgrade_GLAArmTheMob
12217    End
12218  
12219  
12220  ; --- begin Death modules ---
12221    Behavior = SlowDeathBehavior ModuleTag_Death01
12222      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
12223      SinkDelay           = 3000
12224      SinkRate            = 0.5     ; in Dist/Sec
12225      DestructionDelay    = 8000
12226      FX                  = INITIAL FX_GIDie
12227    End
12228    Behavior = SlowDeathBehavior ModuleTag_Death02
12229      DeathTypes          = NONE +CRUSHED +SPLATTED
12230      SinkDelay           = 3000
12231      SinkRate            = 0.5     ; in Dist/Sec
12232      DestructionDelay    = 8000
12233      FX                  = INITIAL FX_GIDieCrushed
12234    End
12235    Behavior = SlowDeathBehavior ModuleTag_Death03
12236      DeathTypes          = NONE +EXPLODED
12237      SinkDelay           = 3000
12238      SinkRate            = 0.5     ; in Dist/Sec
12239      DestructionDelay    = 8000
12240      FX                  = INITIAL FX_GIDie
12241      FlingForce          = 8
12242      FlingForceVariance  = 3
12243      FlingPitch          = 60
12244      FlingPitchVariance  = 10
12245    End
12246    Behavior = SlowDeathBehavior ModuleTag_Death04
12247      DeathTypes          = NONE +BURNED
12248      DestructionDelay    = 0
12249      FX                  = INITIAL FX_GIDie
12250      OCL                 = INITIAL OCL_FlamingInfantry
12251    End
12252    Behavior = SlowDeathBehavior ModuleTag_Death05
12253      DeathTypes          = NONE +POISONED
12254      DestructionDelay    = 0
12255      FX                  = INITIAL FX_GIDie
12256      OCL                 = INITIAL OCL_ToxicInfantry
12257    End
12258  ; --- end Death modules ---
12259  
12260    Behavior = PoisonedBehavior ModuleTag_13
12261      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
12262      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
12263    End
12264   
12265    Geometry = CYLINDER
12266    Scale = 0.95                            ;Scaling
12267    GeometryMajorRadius = 1.0 ; very thin
12268    GeometryHeight = 8.0
12269    GeometryIsSmall = Yes
12270    Shadow = SHADOW_DECAL
12271    ShadowSizeX = 9;
12272    ShadowSizeY = 9;
12273    ShadowTexture = ShadowI;
12274    BuildCompletion = APPEARS_AT_RALLY_POINT
12275  
12276  End
12277  
12278  ;------------------------------------------------------------------------------
12279  ;------------------------------------------------------------------------------
12280  
12281  
12282  
12283  ;------------------------------------------------------------------------------
12284  ;------------------------------------------------------------------------------
12285  ;------------------------------------------------------------------------------
12286  Object GLAInfantryHijacker
12287  
12288    ; *** ART Parameters ***
12289    SelectPortrait         = SUHijacker_L
12290    ButtonImage            = SUHijacker
12291    
12292    ;UpgradeCameo1 = NONE
12293    ;UpgradeCameo2 = NONE
12294    ;UpgradeCameo3 = NONE
12295    ;UpgradeCameo4 = NONE
12296    ;UpgradeCameo5 = NONE
12297  
12298    Draw = W3DModelDraw ModuleTag_01
12299      OkToChangeModelColor = Yes
12300  
12301      DefaultConditionState
12302        Model = UIHJCK_SKN
12303        IdleAnimation = UIHJCK_SKL.UIHJCK_STA 0 25
12304        IdleAnimation = UIHJCK_SKL.UIHJCK_IDA
12305        IdleAnimation = UIHJCK_SKL.UIHJCK_IDB
12306        AnimationMode = ONCE
12307        TransitionKey = TRANS_Stand
12308      End
12309      AliasConditionState = REALLYDAMAGED
12310  
12311      ConditionState = MOVING
12312        Animation = UIHJCK_SKL.UIHJCK_RUN 
12313        AnimationMode = LOOP
12314        Flags = RANDOMSTART
12315        TransitionKey = None
12316        ParticleSysBone   = None InfantryDustTrails
12317      End
12318      AliasConditionState = REALLYDAMAGED MOVING
12319  
12320  
12321      ConditionState = DYING
12322        Animation = UIHJCK_SKL.UIHJCK_DTA
12323        Animation = UIHJCK_SKL.UIHJCK_DTB
12324        AnimationMode = ONCE
12325        TransitionKey = TRANS_Dying
12326      End
12327  
12328      TransitionState = TRANS_Dying TRANS_Flailing
12329        Animation = UIHJCK_SKL.UIHJCK_ADTE1
12330        AnimationMode = ONCE
12331      End
12332  
12333      ConditionState = DYING EXPLODED_FLAILING
12334        Animation = UIHJCK_SKL.UIHJCK_ADTE2
12335        AnimationMode = LOOP
12336        TransitionKey = TRANS_Flailing
12337      End
12338  
12339      ConditionState = DYING EXPLODED_BOUNCING
12340        Animation = UIHJCK_SKL.UIHJCK_ADTE3
12341        AnimationMode = ONCE
12342        TransitionKey = None
12343      End
12344  
12345      ConditionState = SPECIAL_CHEERING
12346        Animation = UIHJCK_SKL.UIHJCK_CHA
12347        AnimationMode = LOOP
12348      End
12349  
12350  
12351      ConditionState = PARACHUTING
12352        Animation = UIHJCK_SKL.UIHJCK_PHG
12353        AnimationMode = LOOP
12354        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
12355        TransitionKey = TRANS_Chute
12356      End
12357      AliasConditionState = PARACHUTING REALLYDAMAGED
12358      AliasConditionState = PARACHUTING DYING
12359      TransitionState = TRANS_Falling TRANS_Chute
12360        Animation = UIHJCK_SKL.UIHJCK_POP
12361        AnimationMode = ONCE
12362        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
12363      End
12364      TransitionState = TRANS_Chute TRANS_Stand
12365        Animation = UIHJCK_SKL.UIHJCK_PTD
12366        AnimationMode = ONCE
12367      End
12368    End
12369  
12370    ; ***DESIGN parameters ***
12371    DisplayName      = OBJECT:Hijacker
12372    Side = GLA
12373    EditorSorting = INFANTRY
12374    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
12375    
12376    
12377  
12378    ArmorSet
12379      Conditions      = None
12380      Armor           = HumanArmor
12381      DamageFX        = InfantryDamageFX
12382    End
12383  
12384    VisionRange = 100
12385    ShroudClearingRange = 200
12386    Prerequisites
12387      Object = GLABarracks
12388      Object = GLAPalace
12389      Science = SCIENCE_Hijacker
12390    End
12391  
12392    BuildCost = 250
12393    BuildTime = 10.0          ;in seconds    
12394  
12395  
12396  
12397  
12398    ExperienceValue = 50 100 150 400    ;Experience point value at each level
12399    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
12400    IsTrainable = No                    ;Can gain experience
12401    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
12402    CommandSet    = GLAInfantryHijackerCommandSet
12403  
12404    ; *** AUDIO Parameters ***
12405    VoiceSelect =    HijackerVoiceSelect
12406    VoiceMove =      HijackerVoiceMove
12407    VoiceGuard =      HijackerVoiceMove
12408    VoiceAttack =    HijackerVoiceAttack
12409    SoundDie =       HijackerVoiceDie
12410    SoundDieFire = DieByFireGLA
12411    SoundDieToxin = DieByToxinGLA
12412    VoiceFear =      HijackerVoiceFear
12413    UnitSpecificSounds
12414      VoiceGarrison =  HijackerVoiceGarrison
12415      VoiceCreate           = HijackerVoiceCreate
12416      VoiceEnter            = HijackerVoiceEnter
12417      VoiceEnterHostile     = HijackerVoiceEnterHostile
12418      VoiceGetHealed      = HijackerVoiceMove
12419    End
12420    
12421  
12422    ; *** ENGINEERING Parameters ***
12423    RadarPriority = UNIT
12424    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE STEALTH_GARRISON
12425    ;STEALTH_GARRISON Added per Dustin, 12/14--ML
12426  
12427  
12428    Behavior = StealthUpdate ModuleTag_02
12429      StealthDelay                = 500                    ; half second delay before stealthy
12430      StealthForbiddenConditions  = MOVING ; only stealthy while stationary
12431      MoveThresholdSpeed          = 3
12432      InnateStealth               = Yes
12433      OrderIdleEnemiesToAttackMeUponReveal  = Yes
12434    End
12435  
12436    Body = ActiveBody ModuleTag_03
12437      MaxHealth       = 100.0
12438      InitialHealth   = 100.0
12439    End
12440  
12441    Behavior = HijackerUpdate ModuleTag_04
12442      ParachuteName = AmericaParachute
12443    End
12444  
12445    Behavior = AIUpdateInterface ModuleTag_05
12446      AutoAcquireEnemiesWhenIdle = Yes
12447    End
12448    Locomotor = SET_NORMAL JarmenKellLocomotor
12449  
12450    Behavior = PhysicsBehavior ModuleTag_06
12451      Mass = 5.0
12452    End
12453  
12454    Behavior = ConvertToHijackedVehicleCrateCollide       ModuleTag_08
12455      RequiredKindOf = VEHICLE      ; This is my car now, infidel!
12456    End
12457  
12458    Behavior = SquishCollide ModuleTag_09
12459      ;nothing
12460    End
12461  
12462  
12463  ; --- begin Death modules ---
12464    Behavior = SlowDeathBehavior ModuleTag_Death01
12465      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
12466      SinkDelay           = 50000
12467      SinkRate            = 0.5     ; in Dist/Sec
12468      DestructionDelay    = 8000000
12469      FX                  = INITIAL FX_GIDie
12470    End
12471    Behavior = SlowDeathBehavior ModuleTag_Death02
12472      DeathTypes          = NONE +CRUSHED +SPLATTED
12473      SinkDelay           = 50000
12474      SinkRate            = 0.5     ; in Dist/Sec
12475      DestructionDelay    = 8000000
12476      FX                  = INITIAL FX_GIDieCrushed
12477    End
12478    Behavior = SlowDeathBehavior ModuleTag_Death03
12479      DeathTypes          = NONE +EXPLODED
12480      SinkDelay           = 50000
12481      SinkRate            = 0.5     ; in Dist/Sec
12482      DestructionDelay    = 8000000
12483      FX                  = INITIAL FX_GIDie
12484      FlingForce          = 8
12485      FlingForceVariance  = 3
12486      FlingPitch          = 60
12487      FlingPitchVariance  = 10
12488    End
12489    Behavior = SlowDeathBehavior ModuleTag_Death04
12490      DeathTypes          = NONE +BURNED
12491      DestructionDelay    = 0
12492      FX                  = INITIAL FX_GIDie
12493      OCL                 = INITIAL OCL_FlamingInfantry
12494    End
12495    Behavior = SlowDeathBehavior ModuleTag_Death05
12496      DeathTypes          = NONE +POISONED
12497      DestructionDelay    = 0
12498      FX                  = INITIAL FX_GIDie
12499      OCL                 = INITIAL OCL_ToxicInfantry
12500    End
12501    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
12502      DeathTypes          = NONE +POISONED_BETA
12503      DestructionDelay    = 0
12504      FX                  = INITIAL FX_GIDie
12505      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
12506    End
12507  ; --- end Death modules ---
12508  
12509    Behavior = PoisonedBehavior ModuleTag_14
12510      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
12511      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
12512    End
12513   
12514    Geometry = CYLINDER
12515    Scale = 0.95                            ;Scaling
12516    GeometryMajorRadius = 1.0
12517    GeometryMinorRadius = 1.0
12518    GeometryHeight = 8.0
12519    GeometryIsSmall = Yes
12520    Shadow = SHADOW_DECAL
12521    ShadowSizeX = 9;
12522    ShadowSizeY = 9;
12523    ShadowTexture = ShadowI;
12524    BuildCompletion = APPEARS_AT_RALLY_POINT
12525  
12526  End
12527  
12528  ;------------------------------------------------------------------------------
12529  Object ChinaInfantryRedguard
12530  
12531    ; *** ART Parameters ***
12532    SelectPortrait         = T9 
12533    ButtonImage            = T9
12534    
12535    UpgradeCameo1 = Upgrade_Nationalism
12536    UpgradeCameo2 = Upgrade_InfantryCaptureBuilding
12537    ;UpgradeCameo3 = NONE
12538    ;UpgradeCameo4 = NONE
12539    ;UpgradeCameo5 = NONE
12540  
12541    Draw = W3DModelDraw ModuleTag_01
12542  
12543      OkToChangeModelColor = Yes
12544  
12545      ; this says "we don't use these condition states at all, so completely
12546      ; ignore them for purposes of matchmaking"... this is useful to help
12547      ; reduce the number of AliasConditionState clauses you must add in
12548      ; order to avoid ambiguity in some cases.
12549      IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
12550  
12551      ; ------- Standing-Around Animations
12552   
12553      DefaultConditionState
12554        Model               = NICNSC_SKN
12555        IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
12556        IdleAnimation       = NICNSC_SKL.NICNSC_IDA
12557        IdleAnimation       = NICNSC_SKL.NICNSC_IDB
12558        AnimationMode       = ONCE
12559        WeaponFireFXBone    = PRIMARY Muzzle
12560        WeaponMuzzleFlash   = PRIMARY MuzzleFX
12561        TransitionKey       = TRANS_Stand
12562      End
12563  
12564      ConditionState        = REALLYDAMAGED
12565        IdleAnimation       = NICNSC_SKL.NICNSC_STB
12566        AnimationMode       = ONCE
12567        TransitionKey       = TRANS_StandDamaged
12568      End
12569  
12570      ; ------- Machine Gun Animations
12571  
12572      ConditionState      = USING_WEAPON_A 
12573        Animation         = NICNSC_SKL.NICNSC_ATA
12574        AnimationMode     = LOOP
12575        TransitionKey     = TRANS_Firing
12576      End
12577  
12578      ConditionState      = USING_WEAPON_A REALLYDAMAGED
12579        Animation         = NICNSC_SKL.NICNSC_ATC
12580        AnimationMode     = LOOP
12581        TransitionKey     = TRANS_FiringDamaged
12582      End
12583  
12584  
12585      ; ------- Firing-related Transitions
12586  
12587      TransitionState   = TRANS_Firing TRANS_FiringDamaged
12588        Animation       = NICNSC_SKL.NICNSC_AA2AC
12589        AnimationMode   = ONCE
12590      End
12591  
12592      TransitionState   = TRANS_Stand TRANS_Firing
12593        Animation       = NICNSC_SKL.NICNSC_SA2AA
12594        AnimationMode   = ONCE
12595      End
12596  
12597      TransitionState   = TRANS_Firing TRANS_Stand
12598        Animation       = NICNSC_SKL.NICNSC_AA2SA
12599        AnimationMode   = ONCE
12600      End
12601  
12602      TransitionState   = TRANS_StandDamaged TRANS_FiringDamaged
12603        Animation       = NICNSC_SKL.NICNSC_ATCST
12604        AnimationMode   = ONCE
12605      End
12606  
12607      TransitionState   = TRANS_FiringDamaged TRANS_StandDamaged
12608        Animation       = NICNSC_SKL.NICNSC_ATCED
12609        AnimationMode   = ONCE
12610      End
12611  
12612  
12613      ; ------------- Damage Transitions --------------------
12614      TransitionState = TRANS_StandDamaged TRANS_RunDamaged
12615        Animation       = NICNSC_SKL.NICNSC_AA2AC
12616        AnimationMode   = ONCE
12617        AnimationSpeedFactorRange = 2 2
12618      End
12619      TransitionState = TRANS_RunDamaged TRANS_StandDamaged 
12620        Animation       = NICNSC_SKL.NICNSC_AA2AC
12621        AnimationMode   = ONCE_BACKWARDS
12622        AnimationSpeedFactorRange = 2 2
12623        Flags           = START_FRAME_LAST
12624      End
12625      TransitionState = TRANS_Stand TRANS_StandDamaged 
12626        Animation       = NICNSC_SKL.NICNSC_AA2SA
12627        AnimationMode   = ONCE_BACKWARDS
12628        AnimationSpeedFactorRange = 4 5
12629        Flags           = START_FRAME_LAST
12630      End
12631  
12632  
12633  
12634      ; Stab animations
12635      ConditionState      = PREATTACK_C
12636        Animation         = AIHERO_SKL.AIHERO_ATC
12637        AnimationMode     = ONCE
12638        TransitionKey     = TRANS_Stabbing
12639        HideSubObject     = MUZZLEFX01
12640      End
12641      AliasConditionState = PREATTACK_C MOVING
12642      AliasConditionState = PREATTACK_C FIRING_B
12643      AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C
12644  
12645      ConditionState      = FIRING_C
12646        Animation         = AIHERO_SKL.AIHERO_ATC
12647        AnimationMode     = MANUAL
12648        Flags             = START_FRAME_LAST
12649        TransitionKey     = TRANS_Stabbing
12650        HideSubObject     = MUZZLEFX01
12651      End
12652      AliasConditionState = BETWEEN_FIRING_SHOTS_C
12653      AliasConditionState = RELOADING_C
12654  
12655      TransitionState     = TRANS_Stabbing TRANS_Stand
12656        Animation         = AIHERO_SKL.AIHERO_ATC2
12657        AnimationMode     = ONCE
12658      End
12659  
12660      ; Injured Stab animations
12661      ConditionState      = PREATTACK_C REALLYDAMAGED 
12662        Animation         = AIHERO_SKL.AIHERO_IATC1
12663        AnimationMode     = ONCE
12664        TransitionKey     = TRANS_StabbingInjured
12665        HideSubObject     = MUZZLEFX01
12666      End
12667      AliasConditionState = PREATTACK_C MOVING REALLYDAMAGED
12668      AliasConditionState = PREATTACK_C FIRING_B REALLYDAMAGED
12669      AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C REALLYDAMAGED
12670  
12671      ConditionState      = FIRING_C REALLYDAMAGED
12672        Animation         = AIHERO_SKL.AIHERO_IATC2
12673        AnimationMode     = MANUAL
12674        Flags             = START_FRAME_LAST
12675        TransitionKey     = TRANS_StabbingInjured
12676        HideSubObject     = MUZZLEFX01
12677      End
12678      AliasConditionState = BETWEEN_FIRING_SHOTS_C REALLYDAMAGED
12679      AliasConditionState = RELOADING_C REALLYDAMAGED
12680  
12681      TransitionState     = TRANS_StabbingInjured TRANS_StandInjured
12682        Animation         = AIHERO_SKL.AIHERO_IATC2
12683        AnimationMode     = ONCE
12684      End
12685  
12686  
12687      ; ------- Parachuting Animations
12688  
12689      ConditionState    = FREEFALL
12690        Animation       = NICNSC_SKL.NICNSC_POP
12691        AnimationMode   = MANUAL
12692        Flags           = START_FRAME_FIRST
12693        TransitionKey   = TRANS_Falling
12694      End
12695      AliasConditionState = FREEFALL REALLYDAMAGED
12696      AliasConditionState = FREEFALL DYING
12697  
12698      ConditionState    = PARACHUTING
12699        Animation       = NICNSC_SKL.NICNSC_PHG
12700        AnimationMode   = LOOP
12701        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
12702        TransitionKey   = TRANS_Chute
12703      End
12704      AliasConditionState = PARACHUTING REALLYDAMAGED
12705      AliasConditionState = PARACHUTING DYING
12706  
12707      TransitionState   = TRANS_Falling TRANS_Chute
12708        Animation       = NICNSC_SKL.NICNSC_POP
12709        AnimationMode   = ONCE
12710        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
12711      End
12712  
12713      TransitionState   = TRANS_Chute TRANS_Stand
12714        Animation       = NICNSC_SKL.NICNSC_PTD
12715        AnimationMode   = ONCE
12716      End
12717  
12718      ; ------- Movement Animations
12719  
12720      ConditionState      = MOVING
12721        Animation         = NICNSC_SKL.NICNSC_RNA 26
12722        AnimationMode     = LOOP
12723        Flags             = RANDOMSTART
12724        TransitionKey     = None
12725        ParticleSysBone   = None InfantryDustTrails
12726      End
12727      AliasConditionState = MOVING ATTACKING
12728  
12729      ConditionState = MOVING REALLYDAMAGED
12730        Animation         = NICNSC_SKL.NICNSC_RNB 28
12731        AnimationMode     = LOOP
12732        Flags             = RANDOMSTART
12733        TransitionKey     = TRANS_RunDamaged
12734        TransitionKey     = None
12735      End
12736      AliasConditionState = MOVING ATTACKING REALLYDAMAGED
12737  
12738      ; ------- Bldg-capture
12739  
12740      ConditionState      = UNPACKING
12741        Model             = NICNSC_F_SKN
12742        Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
12743        AnimationMode     = ONCE
12744      End
12745      AliasConditionState = UNPACKING REALLYDAMAGED
12746  
12747      ConditionState      = RAISING_FLAG
12748        Model             = NICNSC_F_SKN
12749        Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
12750        AnimationMode     = ONCE
12751        TransitionKey     = TRANS_Raising
12752      End
12753      AliasConditionState = RAISING_FLAG REALLYDAMAGED
12754  
12755      ConditionState      = PACKING
12756        Model             = NICNSC_F_SKN
12757        Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
12758        AnimationMode     = ONCE_BACKWARDS
12759        Flags             = START_FRAME_LAST
12760        TransitionKey     = TRANS_Packing
12761      End
12762      AliasConditionState = PACKING REALLYDAMAGED
12763  
12764      TransitionState     = TRANS_Raising TRANS_Packing
12765        Model             = NICNSC_F_SKN
12766        Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
12767        AnimationMode     = ONCE_BACKWARDS
12768        Flags             = START_FRAME_LAST
12769      End
12770  
12771      ; ------- Dying Animations
12772  
12773      ConditionState      = DYING
12774        Animation         = NICNSC_SKL.NICNSC_DTA
12775        Animation         = NICNSC_SKL.NICNSC_DTB
12776        AnimationMode     = ONCE
12777        TransitionKey     = TRANS_Dying
12778      End
12779  
12780      TransitionState     = TRANS_Dying TRANS_Flailing
12781        Animation         = NICNSC_SKL.NICNSC_ATDE1
12782        AnimationMode     = ONCE
12783      End
12784  
12785      ConditionState      = DYING EXPLODED_FLAILING
12786        Animation         = NICNSC_SKL.NICNSC_ATDE2
12787        AnimationMode     = LOOP
12788        TransitionKey     = TRANS_Flailing
12789      End
12790  
12791      ConditionState      = DYING EXPLODED_BOUNCING
12792        Animation         = NICNSC_SKL.NICNSC_ATDE3
12793        AnimationMode     = ONCE
12794        TransitionKey     = None
12795      End
12796  
12797      ; ------- Misc Animations
12798  
12799      ConditionState      = SPECIAL_CHEERING
12800        Animation         = NICNSC_SKL.NICNSC_CHA
12801        AnimationMode     = LOOP
12802      End
12803  
12804    End
12805  
12806    ; ***DESIGN parameters ***
12807    DisplayName         = OBJECT:Redguard
12808    Side                = China
12809    EditorSorting       = INFANTRY
12810    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
12811    WeaponSet
12812      Conditions = None 
12813      Weapon = PRIMARY RedguardMachineGun
12814      Weapon = SECONDARY RedguardBayonet
12815      AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
12816      AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
12817    End
12818    ArmorSet
12819      Conditions      = None
12820      Armor           = HumanArmor
12821      DamageFX        = InfantryDamageFX
12822    End
12823    VisionRange = 100
12824    ShroudClearingRange = 200
12825    Prerequisites
12826      Object = ChinaBarracks
12827    End
12828    BuildCost     = 300
12829    BuildTime     = 10.0          ;in seconds      
12830  
12831    ExperienceValue = 5 5 10 20   ;Experience point value at each level
12832    ExperienceRequired = 0 20 40 80  ;Experience points needed to gain each level
12833    IsTrainable = Yes             ;Can gain experience
12834    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
12835    CommandSet    = ChinaInfantryRedguardCommandSet
12836  
12837    ; *** AUDIO Parameters ***
12838    VoiceSelect = RedGuardVoiceSelect
12839    VoiceMove = RedGuardVoiceMove
12840    VoiceGuard = RedGuardVoiceMove
12841    VoiceAttack = RedGuardVoiceAttack
12842    VoiceGroupSelect = BattleCrySound
12843    SoundDie = RedGuardVoiceDie
12844    SoundDieFire = DieByFireChina
12845    SoundDieToxin = DieByToxinChina
12846    VoiceFear = RedGuardVoiceFear
12847    VoiceTaskComplete = RedGuardVoiceCaptureComplete
12848    UnitSpecificSounds
12849      VoiceMelee      = RedGuardVoiceAttackBayonet
12850      VoiceGarrison   = RedGuardVoiceGarrison
12851      VoiceCreate     = RedGuardVoiceCreate
12852      VoiceSubdue     = RedGuardVoiceSubdue
12853      VoiceEnter      = RedGuardVoiceMove
12854      VoiceEnterHostile = RedGuardVoiceMove
12855      VoiceGetHealed      = RedGuardVoiceMove
12856    End
12857  
12858    ; *** ENGINEERING Parameters ***
12859    RadarPriority = UNIT
12860    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE
12861  
12862    Body = ActiveBody ModuleTag_02
12863      MaxHealth       = 150.0
12864      InitialHealth   = 150.0
12865    End
12866  
12867    Behavior = VeterancyGainCreate ModuleTag_03
12868      StartingLevel = VETERAN
12869      ScienceRequired = SCIENCE_RedGuardTraining
12870    End
12871  
12872    Behavior = AIUpdateInterface ModuleTag_04
12873      AutoAcquireEnemiesWhenIdle = Yes
12874    End
12875  
12876    Behavior = CommandButtonHuntUpdate  ModuleTag_05 ; allows use of command button hunt script with this unit. 
12877    End
12878  
12879    Locomotor = SET_NORMAL chinainfantryLocomotor
12880  
12881    Behavior = HordeUpdate ModuleTag_06
12882      RubOffRadius = 60    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
12883      UpdateRate = 1000    ; how often to recheck horde status (msec)
12884      Radius = 30          ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
12885      KindOf = INFANTRY    ; what KindOf's must match to count towards horde-ness
12886      AlliesOnly = Yes     ; do we only count allies towards horde status? 
12887      ExactMatch = No      ; do we only count units of our exact same type towards horde status? (overrides kindof)
12888      Count = 5            ; how many units must be within Radius to grant us horde-ness
12889      Action = HORDE       ; when horde-ing, grant us the HORDE bonus
12890    End
12891    Behavior = PhysicsBehavior ModuleTag_07
12892      Mass = 5.0
12893    End
12894  
12895  ; sorry, no tranq or stun bullets, cut for this version (srj)
12896  ;  Behavior = WeaponSetUpgrade ModuleTag_09
12897  ;    TriggeredBy = Upgrade_ChinaStunBullets
12898  ;  End
12899   
12900    Behavior = SquishCollide ModuleTag_10
12901      ;nothing
12902    End
12903  
12904  ; --- begin Death modules ---
12905    Behavior = SlowDeathBehavior ModuleTag_Death01
12906      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
12907      SinkDelay           = 50000
12908      SinkRate            = 0.5     ; in Dist/Sec
12909      DestructionDelay    = 8000000
12910      FX                  = INITIAL FX_GIDie
12911    End
12912    Behavior = SlowDeathBehavior ModuleTag_Death02
12913      DeathTypes          = NONE +CRUSHED +SPLATTED
12914      SinkDelay           = 50000
12915      SinkRate            = 0.5     ; in Dist/Sec
12916      DestructionDelay    = 8000000
12917      FX                  = INITIAL FX_GIDieCrushed
12918    End
12919    Behavior = SlowDeathBehavior ModuleTag_Death03
12920      DeathTypes          = NONE +EXPLODED
12921      SinkDelay           = 50000
12922      SinkRate            = 0.5     ; in Dist/Sec
12923      DestructionDelay    = 8000000
12924      FX                  = INITIAL FX_GIDie
12925      FlingForce          = 8
12926      FlingForceVariance  = 3
12927      FlingPitch          = 60
12928      FlingPitchVariance  = 10
12929    End
12930    Behavior = SlowDeathBehavior ModuleTag_Death04
12931      DeathTypes          = NONE +BURNED
12932      DestructionDelay    = 0
12933      FX                  = INITIAL FX_GIDie
12934      OCL                 = INITIAL OCL_FlamingInfantry
12935    End
12936    Behavior = SlowDeathBehavior ModuleTag_Death05
12937      DeathTypes          = NONE +POISONED
12938      DestructionDelay    = 0
12939      FX                  = INITIAL FX_GIDie
12940      OCL                 = INITIAL OCL_ToxicInfantry
12941    End
12942    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
12943      DeathTypes          = NONE +POISONED_BETA
12944      DestructionDelay    = 0
12945      FX                  = INITIAL FX_GIDie
12946      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
12947    End
12948  ; --- end Death modules ---
12949  
12950    Behavior = PoisonedBehavior ModuleTag_15
12951      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
12952      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
12953    End
12954  
12955    Behavior = SpecialAbility ModuleTag_16
12956      SpecialPowerTemplate      = SpecialAbilityRedGuardCaptureBuilding
12957      UpdateModuleStartsAttack  = Yes
12958      StartsPaused              = Yes
12959      InitiateSound         = RedGuardVoiceCapture
12960    End
12961    Behavior = SpecialAbilityUpdate ModuleTag_17
12962      SpecialPowerTemplate  = SpecialAbilityRedGuardCaptureBuilding
12963      StartAbilityRange  = 5.0
12964      UnpackTime            = 3000  ; (changing this will scale anim speed)
12965      PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
12966      PackTime              = 2000  ; (changing this will scale anim speed)
12967      DoCaptureFX           = Yes
12968      AwardXPForTriggering  = 4
12969      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
12970    End
12971  
12972    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_18
12973      SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
12974      TriggeredBy = Upgrade_InfantryCaptureBuilding
12975    End
12976  
12977    Geometry = CYLINDER
12978    Scale = 0.95                            ;Scaling
12979    GeometryMajorRadius = 1.0
12980    GeometryMinorRadius = 1.0
12981    GeometryHeight = 8.0
12982    GeometryIsSmall = Yes
12983    Shadow = SHADOW_DECAL
12984    ShadowSizeX = 9;
12985    ShadowSizeY = 9;
12986    ShadowTexture = ShadowI;
12987    BuildCompletion = APPEARS_AT_RALLY_POINT
12988  
12989  End
12990  ;------------------------------------------------------------------------------
12991  Object ChinaInfantryParadeRedGuard
12992  
12993  ; Unit added per John Lee's request. - GB
12994  
12995    ; *** ART Parameters ***
12996    Draw = W3DModelDraw ModuleTag_01
12997      OkToChangeModelColor = Yes
12998  
12999      ; ------- Standing-Around Animations
13000   
13001      DefaultConditionState
13002        Model               = NICNSC_SKN
13003        IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
13004        IdleAnimation       = NICNSC_SKL.NICNSC_IDA
13005        IdleAnimation       = NICNSC_SKL.NICNSC_IDB
13006        AnimationMode       = ONCE
13007        WeaponFireFXBone    = PRIMARY Muzzle
13008        WeaponMuzzleFlash   = PRIMARY MuzzleFX
13009        TransitionKey       = TRANS_Stand
13010      End
13011  
13012      ConditionState = REALLYDAMAGED
13013        IdleAnimation       = NICNSC_SKL.NICNSC_STB
13014        AnimationMode       = ONCE
13015        TransitionKey       = TRANS_StandDamaged
13016      End
13017  
13018      ; ------- Machine Gun Animations
13019  
13020      ConditionState = FIRING_A 
13021        Animation         = NICNSC_SKL.NICNSC_ATA
13022        AnimationMode     = LOOP
13023        TransitionKey     = TRANS_Firing
13024      End
13025      AliasConditionState = BETWEEN_FIRING_SHOTS_A
13026      AliasConditionState = RELOADING_A
13027  
13028      ConditionState = USING_WEAPON_A REALLYDAMAGED
13029        Animation         = NICNSC_SKL.NICNSC_ATC
13030        AnimationMode     = LOOP
13031        TransitionKey     = TRANS_FiringDamaged
13032      End
13033  
13034  
13035      ; ------- Firing-related Transitions
13036  
13037      TransitionState = TRANS_Firing TRANS_FiringDamaged
13038        Animation       = NICNSC_SKL.NICNSC_AA2AC
13039        AnimationMode   = ONCE
13040      End
13041  
13042      TransitionState = TRANS_Stand TRANS_Firing
13043        Animation       = NICNSC_SKL.NICNSC_SA2AA
13044        AnimationMode   = ONCE
13045      End
13046  
13047      TransitionState = TRANS_Firing TRANS_Stand
13048        Animation       = NICNSC_SKL.NICNSC_AA2SA
13049        AnimationMode   = ONCE
13050      End
13051  
13052      TransitionState = TRANS_StandDamaged TRANS_FiringDamaged
13053        Animation       = NICNSC_SKL.NICNSC_ATCST
13054        AnimationMode   = ONCE
13055      End
13056  
13057      TransitionState = TRANS_FiringDamaged TRANS_StandDamaged
13058        Animation       = NICNSC_SKL.NICNSC_ATCED
13059        AnimationMode   = ONCE
13060      End
13061  
13062  
13063      ; ------------- Damage Transitions --------------------
13064      TransitionState = TRANS_StandDamaged TRANS_RunDamaged
13065        Animation       = NICNSC_SKL.NICNSC_AA2AC
13066        AnimationMode   = ONCE
13067        AnimationSpeedFactorRange = 2 2
13068      End
13069      TransitionState = TRANS_RunDamaged TRANS_StandDamaged 
13070        Animation       = NICNSC_SKL.NICNSC_AA2AC
13071        AnimationMode   = ONCE_BACKWARDS
13072        AnimationSpeedFactorRange = 2 2
13073        Flags           = START_FRAME_LAST
13074      End
13075      TransitionState = TRANS_Stand TRANS_StandDamaged 
13076        Animation       = NICNSC_SKL.NICNSC_AA2SA
13077        AnimationMode   = ONCE_BACKWARDS
13078        AnimationSpeedFactorRange = 4 5
13079        Flags           = START_FRAME_LAST
13080      End
13081  
13082  
13083      ; ------- Bayonet Animations
13084  
13085      ConditionState = PREATTACK_C 
13086        Animation = NICNSC_SKL.NICNSC_ATB1
13087        AnimationMode   = ONCE
13088        TransitionKey   = TRANS_Stab
13089      End
13090      AliasConditionState = PREATTACK_C MOVING
13091      AliasConditionState = PREATTACK_C FIRING_C
13092      AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C
13093  
13094      ConditionState = FIRING_C
13095        Animation         = NICNSC_SKL.NICNSC_ATB2
13096        AnimationMode     = ONCE
13097        ; this is basically a trick: this guy has a nontrivial animation for firing,
13098        ; and a long recycle time between shots. we want him to finish his fire animation
13099        ; (unless he's ordered to do something else), so this is just a handy trick that
13100        ; says, "if the previous state had this transition key, allow it to finish before
13101        ; switching to us, if possible".
13102        WaitForStateToFinishIfPossible = TRANS_Stab
13103      End
13104      AliasConditionState = BETWEEN_FIRING_SHOTS_C
13105      AliasConditionState = RELOADING_C
13106  
13107      ; ------- Parachuting Animations
13108  
13109      ConditionState = FREEFALL
13110        Animation       = NICNSC_SKL.NICNSC_POP
13111        AnimationMode   = MANUAL
13112        Flags           = START_FRAME_FIRST
13113        TransitionKey   = TRANS_Falling
13114      End
13115      AliasConditionState = FREEFALL REALLYDAMAGED
13116      AliasConditionState = FREEFALL DYING
13117  
13118      ConditionState = PARACHUTING
13119        Animation       = NICNSC_SKL.NICNSC_PHG
13120        AnimationMode   = LOOP
13121        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
13122        TransitionKey   = TRANS_Chute
13123      End
13124      AliasConditionState = PARACHUTING REALLYDAMAGED
13125      AliasConditionState = PARACHUTING DYING
13126  
13127      TransitionState = TRANS_Falling TRANS_Chute
13128        Animation       = NICNSC_SKL.NICNSC_POP
13129        AnimationMode   = ONCE
13130        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
13131      End
13132  
13133      TransitionState = TRANS_Chute TRANS_Stand
13134        Animation       = NICNSC_SKL.NICNSC_PTD
13135        AnimationMode   = ONCE
13136      End
13137  
13138      ; ------- Movement Animations
13139  
13140      ConditionState = MOVING
13141        Animation         = NICNSC_SKL.NICNSC_MAR 12
13142        AnimationMode     = LOOP
13143        Flags             = RANDOMSTART
13144        TransitionKey     = None
13145        ParticleSysBone     = None InfantryDustTrails
13146      End
13147      AliasConditionState = MOVING ATTACKING
13148  
13149      ConditionState = MOVING REALLYDAMAGED
13150        Animation         = NICNSC_SKL.NICNSC_RNB
13151        AnimationMode     = LOOP
13152        Flags             = RANDOMSTART
13153        TransitionKey     = TRANS_RunDamaged
13154        ParticleSysBone     = None InfantryDustTrails
13155      End
13156      AliasConditionState = MOVING ATTACKING REALLYDAMAGED
13157  
13158      ; ------- Bldg-capture
13159  
13160      ConditionState = UNPACKING
13161        Animation         = NICNSC_SKL.NICNSC_FDP1
13162        AnimationMode     = ONCE
13163      End
13164      AliasConditionState = UNPACKING REALLYDAMAGED
13165  
13166      ConditionState = RAISING_FLAG
13167        Animation         = NICNSC_SKL.NICNSC_FDP2
13168        AnimationMode     = ONCE
13169        TransitionKey     = TRANS_Raising
13170      End
13171      AliasConditionState = RAISING_FLAG REALLYDAMAGED
13172  
13173      ConditionState = PACKING
13174        Animation         = NICNSC_SKL.NICNSC_FDP1
13175        AnimationMode     = ONCE_BACKWARDS
13176        Flags             = START_FRAME_LAST
13177        TransitionKey     = TRANS_Packing
13178      End
13179      AliasConditionState = PACKING REALLYDAMAGED
13180  
13181      TransitionState = TRANS_Raising TRANS_Packing
13182        Animation       = NICNSC_SKL.NICNSC_FDP2
13183        AnimationMode   = ONCE_BACKWARDS
13184        Flags           = START_FRAME_LAST
13185      End
13186  
13187      ; ------- Misc Animations
13188  
13189      ; ------- Dying Animations
13190  
13191      ConditionState      = DYING
13192        Animation         = NICNSC_SKL.NICNSC_DTA
13193        Animation         = NICNSC_SKL.NICNSC_DTB
13194        AnimationMode     = ONCE
13195        TransitionKey     = TRANS_Dying
13196      End
13197  
13198      TransitionState     = TRANS_Dying TRANS_Flailing
13199        Animation         = NICNSC_SKL.NICNSC_ATDE1
13200        AnimationMode     = ONCE
13201      End
13202  
13203      ConditionState      = DYING EXPLODED_FLAILING
13204        Animation         = NICNSC_SKL.NICNSC_ATDE2
13205        AnimationMode     = LOOP
13206        TransitionKey     = TRANS_Flailing
13207      End
13208  
13209      ConditionState      = DYING EXPLODED_BOUNCING
13210        Animation         = NICNSC_SKL.NICNSC_ATDE3
13211        AnimationMode     = ONCE
13212        TransitionKey     = None
13213      End
13214  
13215      ConditionState = SPECIAL_CHEERING
13216        Animation         = NICNSC_SKL.NICNSC_CHA
13217        AnimationMode     = LOOP
13218      End
13219  
13220    End
13221  
13222    ; ***DESIGN parameters ***
13223    DisplayName         = OBJECT:Redguard
13224    Side                = China
13225    EditorSorting       = INFANTRY
13226    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
13227    WeaponSet
13228      Conditions = None 
13229      Weapon = PRIMARY RedguardMachineGun
13230      Weapon = SECONDARY None
13231      Weapon = TERTIARY RedguardBayonet
13232      AutoChooseSources = TERTIARY None
13233    End
13234  ; sorry, no stun bullets, cut for this version (srj)
13235  ;  WeaponSet
13236  ;    Conditions = PLAYER_UPGRADE
13237  ;    Weapon = PRIMARY RedguardMachineGun
13238  ;    Weapon = SECONDARY RedguardStunBulletsMachineGun
13239  ;    Weapon = TERTIARY RedguardBayonet
13240  ;    AutoChooseSources = SECONDARY None
13241  ;    AutoChooseSources   = TERTIARY None
13242  ;  End
13243    ArmorSet
13244      Conditions      = None
13245      Armor           = HumanArmor
13246      DamageFX        = InfantryDamageFX
13247    End
13248    VisionRange = 100
13249    ShroudClearingRange = 200
13250    Prerequisites
13251      Object = ChinaBarracks
13252    End
13253    BuildCost     = 225
13254    BuildTime     = 10.0          ;in seconds      
13255  
13256    ExperienceValue = 5 5 10 20   ;Experience point value at each level
13257    ExperienceRequired = 0 20 40 80  ;Experience points needed to gain each level
13258    IsTrainable = Yes             ;Can gain experience
13259    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
13260    CommandSet    = ChinaInfantryRedguardCommandSet
13261  
13262    ; *** AUDIO Parameters ***
13263    VoiceSelect = RedGuardVoiceSelect
13264    VoiceMove = RedGuardVoiceMove
13265    VoiceAttack = RedGuardVoiceAttack
13266    VoiceGroupSelect = BattleCrySound
13267    SoundDie = RedGuardVoiceDie
13268    SoundDieFire = DieByFireChina
13269    SoundDieToxin = DieByToxinChina
13270  
13271    ; *** ENGINEERING Parameters ***
13272    RadarPriority = UNIT
13273    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE
13274  
13275    Body = ActiveBody ModuleTag_02
13276      MaxHealth       = 90.0
13277      InitialHealth   = 90.0
13278    End
13279  
13280    Behavior = VeterancyGainCreate ModuleTag_03
13281      StartingLevel = VETERAN
13282      ScienceRequired = SCIENCE_RedGuardTraining
13283    End
13284  
13285    Behavior = AIUpdateInterface ModuleTag_04
13286      AutoAcquireEnemiesWhenIdle = Yes
13287    End
13288  
13289    Locomotor = SET_NORMAL ParadeRedguardLocomotor
13290  
13291    Behavior = PhysicsBehavior ModuleTag_06
13292      Mass = 5.0
13293    End
13294  
13295  ; sorry, no tranq or stun bullets, cut for this version (srj)
13296  ;  Behavior = WeaponSetUpgrade ModuleTag_08
13297  ;    TriggeredBy = Upgrade_ChinaStunBullets
13298  ;  End
13299   
13300    Behavior = SquishCollide ModuleTag_09
13301      ;nothing
13302    End
13303  
13304  ; --- begin Death modules ---
13305    Behavior = SlowDeathBehavior ModuleTag_Death01
13306      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
13307      SinkDelay           = 3000
13308      SinkRate            = 0.5     ; in Dist/Sec
13309      DestructionDelay    = 8000
13310      FX                  = INITIAL FX_GIDie
13311    End
13312    Behavior = SlowDeathBehavior ModuleTag_Death02
13313      DeathTypes          = NONE +CRUSHED +SPLATTED
13314      SinkDelay           = 3000
13315      SinkRate            = 0.5     ; in Dist/Sec
13316      DestructionDelay    = 8000
13317      FX                  = INITIAL FX_GIDieCrushed
13318    End
13319    Behavior = SlowDeathBehavior ModuleTag_Death03
13320      DeathTypes          = NONE +EXPLODED
13321      SinkDelay           = 3000
13322      SinkRate            = 0.5     ; in Dist/Sec
13323      DestructionDelay    = 8000
13324      FX                  = INITIAL FX_GIDie
13325      FlingForce          = 8
13326      FlingForceVariance  = 3
13327      FlingPitch          = 60
13328      FlingPitchVariance  = 10
13329    End
13330    Behavior = SlowDeathBehavior ModuleTag_Death04
13331      DeathTypes          = NONE +BURNED
13332      DestructionDelay    = 0
13333      FX                  = INITIAL FX_GIDie
13334      OCL                 = INITIAL OCL_FlamingInfantry
13335    End
13336    Behavior = SlowDeathBehavior ModuleTag_Death05
13337      DeathTypes          = NONE +POISONED
13338      DestructionDelay    = 0
13339      FX                  = INITIAL FX_GIDie
13340      OCL                 = INITIAL OCL_ToxicInfantry
13341    End
13342  ; --- end Death modules ---
13343   
13344    Behavior = PoisonedBehavior ModuleTag_14
13345      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
13346      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
13347    End
13348  
13349    Behavior = SpecialAbility ModuleTag_15
13350      SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
13351      UpdateModuleStartsAttack = Yes
13352      InitiateSound         = RedGuardVoiceCapture
13353    End
13354    Behavior = SpecialAbilityUpdate ModuleTag_16
13355      SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
13356      StartAbilityRange = 5.0
13357      UnpackTime            = 3000  ; (changing this will scale anim speed)
13358      PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
13359      PackTime              = 2000  ; (changing this will scale anim speed)
13360      DoCaptureFX           = Yes
13361    End
13362  
13363    Geometry = CYLINDER
13364    Scale = 0.95                            ;Scaling
13365    GeometryMajorRadius = 1.0
13366    GeometryMinorRadius = 1.0
13367    GeometryHeight = 8.0
13368    GeometryIsSmall = Yes
13369    Shadow = SHADOW_DECAL
13370    ShadowSizeX = 9;
13371    ShadowSizeY = 9;
13372    ShadowTexture = ShadowI;
13373    BuildCompletion = APPEARS_AT_RALLY_POINT
13374  
13375  End
13376  
13377  ;------------------------------------------------------------------------------
13378  ;**************************** Cinematic-Only unit ****************************
13379  Object CINE_ChinaInfantryParadeRedGuard
13380  
13381  ; Unit added per John Lee's request. - GB
13382  
13383    ; *** ART Parameters ***
13384    Draw = W3DModelDraw ModuleTag_01
13385      OkToChangeModelColor = Yes
13386  
13387      ; ------- Standing-Around Animations
13388   
13389      DefaultConditionState
13390        Model               = NICNSC_SKN
13391        IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
13392        IdleAnimation       = NICNSC_SKL.NICNSC_IDA
13393        IdleAnimation       = NICNSC_SKL.NICNSC_IDB
13394        AnimationMode       = ONCE
13395        WeaponFireFXBone    = PRIMARY Muzzle
13396        WeaponMuzzleFlash   = PRIMARY MuzzleFX
13397        TransitionKey       = TRANS_Stand
13398      End
13399  
13400      ConditionState = REALLYDAMAGED
13401        IdleAnimation       = NICNSC_SKL.NICNSC_STB
13402        AnimationMode       = ONCE
13403        TransitionKey       = TRANS_Stand
13404      End
13405  
13406      ; ------- Machine Gun Animations
13407  
13408      ConditionState = FIRING_A 
13409        Animation         = NICNSC_SKL.NICNSC_ATA
13410        AnimationMode     = LOOP
13411        TransitionKey     = TRANS_Firing
13412      End
13413      AliasConditionState = BETWEEN_FIRING_SHOTS_A
13414      AliasConditionState = RELOADING_A
13415  
13416      ConditionState = FIRING_A REALLYDAMAGED
13417        Animation         = NICNSC_SKL.NICNSC_ATC
13418        AnimationMode     = LOOP
13419        TransitionKey     = TRANS_FiringDamaged
13420      End
13421      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
13422      AliasConditionState = RELOADING_A REALLYDAMAGED
13423  
13424      ; ------- Stun Bullet Animations
13425  ; sorry, no tranq or stun bullets, cut for this version (srj)
13426  ;
13427  ;    ConditionState = FIRING_B
13428  ;      Animation         = NICNSC_SKL.NICNSC_ATA
13429  ;      AnimationMode     = LOOP
13430  ;      TransitionKey     = TRANS_Firing
13431  ;    End
13432  ;    AliasConditionState = BETWEEN_FIRING_SHOTS_B
13433  ;    AliasConditionState = RELOADING_B
13434  ;
13435  ;    ConditionState = FIRING_B REALLYDAMAGED
13436  ;      Animation         = NICNSC_SKL.NICNSC_ATC
13437  ;      AnimationMode     = LOOP
13438  ;      TransitionKey     = TRANS_FiringDamaged
13439  ;    End
13440  ;    AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
13441  ;    AliasConditionState = RELOADING_B REALLYDAMAGED
13442  
13443      ; ------- Firing-related Transitions
13444  
13445      TransitionState = TRANS_Firing TRANS_FiringDamaged
13446        Animation       = NICNSC_SKL.NICNSC_AA2AC
13447        AnimationMode   = ONCE
13448      End
13449  
13450      TransitionState = TRANS_Stand TRANS_Firing
13451        Animation       = NICNSC_SKL.NICNSC_SA2AA
13452        AnimationMode   = ONCE
13453        AnimationSpeedFactorRange = 40 40
13454      End
13455  
13456      TransitionState = TRANS_Firing TRANS_Stand
13457        Animation       = NICNSC_SKL.NICNSC_AA2SA
13458        AnimationMode   = ONCE
13459        AnimationSpeedFactorRange = 4 4
13460      End
13461  
13462      TransitionState = TRANS_Stand TRANS_FiringDamaged
13463        Animation       = NICNSC_SKL.NICNSC_ATCST
13464        AnimationMode   = ONCE
13465        AnimationSpeedFactorRange = 40 40
13466      End
13467  
13468      TransitionState = TRANS_FiringDamaged TRANS_Stand
13469        Animation       = NICNSC_SKL.NICNSC_ATCED
13470        AnimationMode   = ONCE
13471         
13472      End
13473  
13474      ; ------- Bayonet Animations
13475  
13476      ConditionState = PREATTACK_C 
13477        Animation = NICNSC_SKL.NICNSC_ATB1
13478        AnimationMode   = ONCE
13479        TransitionKey   = TRANS_Stab
13480      End
13481      AliasConditionState = PREATTACK_C MOVING
13482      AliasConditionState = PREATTACK_C FIRING_C
13483      AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C
13484  
13485      ConditionState = FIRING_C
13486        Animation         = NICNSC_SKL.NICNSC_ATB2
13487        AnimationMode     = ONCE
13488        ; this is basically a trick: this guy has a nontrivial animation for firing,
13489        ; and a long recycle time between shots. we want him to finish his fire animation
13490        ; (unless he's ordered to do something else), so this is just a handy trick that
13491        ; says, "if the previous state had this transition key, allow it to finish before
13492        ; switching to us, if possible".
13493        WaitForStateToFinishIfPossible = TRANS_Stab
13494      End
13495      AliasConditionState = BETWEEN_FIRING_SHOTS_C
13496      AliasConditionState = RELOADING_C
13497  
13498      ; ------- Parachuting Animations
13499  
13500      ConditionState = FREEFALL
13501        Animation       = NICNSC_SKL.NICNSC_POP
13502        AnimationMode   = MANUAL
13503        Flags           = START_FRAME_FIRST
13504        TransitionKey   = TRANS_Falling
13505      End
13506      AliasConditionState = FREEFALL REALLYDAMAGED
13507      AliasConditionState = FREEFALL DYING
13508  
13509      ConditionState = PARACHUTING
13510        Animation       = NICNSC_SKL.NICNSC_PHG
13511        AnimationMode   = LOOP
13512        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
13513        TransitionKey   = TRANS_Chute
13514      End
13515      AliasConditionState = PARACHUTING REALLYDAMAGED
13516      AliasConditionState = PARACHUTING DYING
13517  
13518      TransitionState = TRANS_Falling TRANS_Chute
13519        Animation       = NICNSC_SKL.NICNSC_POP
13520        AnimationMode   = ONCE
13521        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
13522      End
13523  
13524      TransitionState = TRANS_Chute TRANS_Stand
13525        Animation       = NICNSC_SKL.NICNSC_PTD
13526        AnimationMode   = ONCE
13527      End
13528  
13529      ; ------- Movement Animations
13530  
13531      ConditionState = MOVING
13532        Animation         = NICNSC_SKL.NICNSC_MAR 12
13533        AnimationMode     = LOOP
13534        Flags             = RANDOMSTART
13535        TransitionKey     = None
13536      End
13537      AliasConditionState = MOVING FIRING_A
13538      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
13539      AliasConditionState = MOVING RELOADING_A
13540      AliasConditionState = MOVING FIRING_B
13541      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
13542      AliasConditionState = MOVING RELOADING_B
13543      AliasConditionState = MOVING FIRING_C
13544      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_C
13545      AliasConditionState = MOVING RELOADING_C
13546  
13547      ConditionState = MOVING REALLYDAMAGED
13548        Animation         = NICNSC_SKL.NICNSC_RNB
13549        AnimationMode     = LOOP
13550        Flags             = RANDOMSTART
13551        TransitionKey     = None
13552      End
13553      AliasConditionState = MOVING FIRING_A REALLYDAMAGED
13554      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
13555      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
13556      AliasConditionState = MOVING FIRING_B REALLYDAMAGED
13557      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
13558      AliasConditionState = MOVING RELOADING_B REALLYDAMAGED
13559      AliasConditionState = MOVING FIRING_C REALLYDAMAGED
13560      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_C REALLYDAMAGED
13561      AliasConditionState = MOVING RELOADING_C REALLYDAMAGED
13562  
13563      ; ------- Bldg-capture
13564  
13565      ConditionState = UNPACKING
13566        Animation         = NICNSC_SKL.NICNSC_FDP1
13567        AnimationMode     = ONCE
13568      End
13569      AliasConditionState = UNPACKING REALLYDAMAGED
13570  
13571      ConditionState = RAISING_FLAG
13572        Animation         = NICNSC_SKL.NICNSC_FDP2
13573        AnimationMode     = ONCE
13574        TransitionKey     = TRANS_Raising
13575      End
13576      AliasConditionState = RAISING_FLAG REALLYDAMAGED
13577  
13578      ConditionState = PACKING
13579        Animation         = NICNSC_SKL.NICNSC_FDP1
13580        AnimationMode     = ONCE_BACKWARDS
13581        Flags             = START_FRAME_LAST
13582        TransitionKey     = TRANS_Packing
13583      End
13584      AliasConditionState = PACKING REALLYDAMAGED
13585  
13586      TransitionState = TRANS_Raising TRANS_Packing
13587        Animation       = NICNSC_SKL.NICNSC_FDP2
13588        AnimationMode   = ONCE_BACKWARDS
13589        Flags           = START_FRAME_LAST
13590      End
13591  
13592      ; ------- Misc Animations
13593  
13594      ConditionState      = DYING
13595        Animation         = NICNSC_SKL.NICNSC_DTA
13596        Animation         = NICNSC_SKL.NICNSC_DTB
13597        AnimationMode     = ONCE
13598        TransitionKey     = TRANS_Dying
13599      End
13600  
13601      TransitionState     = TRANS_Dying TRANS_Flailing
13602        Animation         = NICNSC_SKL.NICNSC_ATDE1
13603        AnimationMode     = ONCE
13604      End
13605  
13606      ConditionState      = DYING EXPLODED_FLAILING
13607        Animation         = NICNSC_SKL.NICNSC_ATDE2
13608        AnimationMode     = LOOP
13609        TransitionKey     = TRANS_Flailing
13610      End
13611  
13612      ConditionState      = DYING EXPLODED_BOUNCING
13613        Animation         = NICNSC_SKL.NICNSC_ATDE3
13614        AnimationMode     = ONCE
13615        TransitionKey     = None
13616      End
13617  
13618      ConditionState = SPECIAL_CHEERING
13619        Animation         = NICNSC_SKL.NICNSC_CHA
13620        AnimationMode     = LOOP
13621      End
13622  
13623    End
13624  
13625    ; ***DESIGN parameters ***
13626    DisplayName         = OBJECT:Redguard
13627    Side                = China
13628    EditorSorting       = INFANTRY
13629    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
13630    WeaponSet
13631      Conditions = None 
13632      Weapon = PRIMARY RedguardMachineGun
13633      Weapon = SECONDARY None
13634      Weapon = TERTIARY RedguardBayonet
13635      AutoChooseSources = TERTIARY None
13636    End
13637  ; sorry, no stun bullets, cut for this version (srj)
13638  ;  WeaponSet
13639  ;    Conditions = PLAYER_UPGRADE
13640  ;    Weapon = PRIMARY RedguardMachineGun
13641  ;    Weapon = SECONDARY RedguardStunBulletsMachineGun
13642  ;    Weapon = TERTIARY RedguardBayonet
13643  ;    AutoChooseSources = SECONDARY None
13644  ;    AutoChooseSources   = TERTIARY None
13645  ;  End
13646    ArmorSet
13647      Conditions      = None
13648      Armor           = HumanArmor
13649      DamageFX        = InfantryDamageFX
13650    End
13651    VisionRange = 100
13652    ShroudClearingRange = 200
13653    Prerequisites
13654      Object = ChinaBarracks
13655    End
13656    BuildCost     = 225
13657    BuildTime     = 10.0          ;in seconds      
13658  
13659    ExperienceValue = 5 5 10 20   ;Experience point value at each level
13660    ExperienceRequired = 0 20 40 80  ;Experience points needed to gain each level
13661    IsTrainable = Yes             ;Can gain experience
13662    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
13663    CommandSet    = ChinaInfantryRedguardCommandSet
13664  
13665    ; *** AUDIO Parameters ***
13666    VoiceSelect = RedGuardVoiceSelect
13667    VoiceMove = RedGuardVoiceMove
13668    VoiceAttack = RedGuardVoiceAttack
13669    VoiceGroupSelect = BattleCrySound
13670    SoundDie = RedGuardVoiceDie
13671    SoundDieFire = DieByFireChina
13672    SoundDieToxin = DieByToxinChina
13673  
13674    ; *** ENGINEERING Parameters ***
13675    RadarPriority = UNIT
13676    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE
13677  
13678    Body = ActiveBody ModuleTag_02
13679      MaxHealth       = 90.0
13680      InitialHealth   = 90.0
13681    End
13682  
13683    Behavior = VeterancyGainCreate ModuleTag_03
13684      StartingLevel = VETERAN
13685      ScienceRequired = SCIENCE_RedGuardTraining
13686    End
13687  
13688    Behavior = AIUpdateInterface ModuleTag_04
13689      AutoAcquireEnemiesWhenIdle = Yes
13690    End
13691  
13692    Locomotor = SET_NORMAL CINE_ParadeRedguardLocomotor
13693  
13694    Behavior = PhysicsBehavior ModuleTag_06
13695      Mass = 5.0
13696    End
13697  
13698  ; sorry, no tranq or stun bullets, cut for this version (srj)
13699  ;  Behavior = WeaponSetUpgrade ModuleTag_08
13700  ;    TriggeredBy = Upgrade_ChinaStunBullets
13701  ;  End
13702   
13703    Behavior = SquishCollide ModuleTag_09
13704      ;nothing
13705    End
13706  
13707  ; --- begin Death modules ---
13708    Behavior = SlowDeathBehavior ModuleTag_Death01
13709      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
13710      SinkDelay           = 3000
13711      SinkRate            = 0.5     ; in Dist/Sec
13712      DestructionDelay    = 8000
13713      FX                  = INITIAL FX_GIDie
13714    End
13715    Behavior = SlowDeathBehavior ModuleTag_Death02
13716      DeathTypes          = NONE +CRUSHED +SPLATTED
13717      SinkDelay           = 3000
13718      SinkRate            = 0.5     ; in Dist/Sec
13719      DestructionDelay    = 8000
13720      FX                  = INITIAL FX_GIDieCrushed
13721    End
13722    Behavior = SlowDeathBehavior ModuleTag_Death03
13723      DeathTypes          = NONE +EXPLODED
13724      SinkDelay           = 3000
13725      SinkRate            = 0.5     ; in Dist/Sec
13726      DestructionDelay    = 8000
13727      FX                  = INITIAL FX_GIDie
13728      FlingForce          = 8
13729      FlingForceVariance  = 3
13730      FlingPitch          = 60
13731      FlingPitchVariance  = 10
13732    End
13733    Behavior = SlowDeathBehavior ModuleTag_Death04
13734      DeathTypes          = NONE +BURNED
13735      DestructionDelay    = 0
13736      FX                  = INITIAL FX_GIDie
13737      OCL                 = INITIAL OCL_FlamingInfantry
13738    End
13739    Behavior = SlowDeathBehavior ModuleTag_Death05
13740      DeathTypes          = NONE +POISONED
13741      DestructionDelay    = 0
13742      FX                  = INITIAL FX_GIDie
13743      OCL                 = INITIAL OCL_ToxicInfantry
13744    End
13745  ; --- end Death modules ---
13746   
13747    Behavior = PoisonedBehavior ModuleTag_14
13748      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
13749      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
13750    End
13751  
13752    Behavior = SpecialAbility ModuleTag_15
13753      SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
13754      UpdateModuleStartsAttack = Yes
13755      InitiateSound         = RedGuardVoiceCapture
13756    End
13757    Behavior = SpecialAbilityUpdate ModuleTag_16
13758      SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
13759      StartAbilityRange = 5.0
13760      UnpackTime            = 3000  ; (changing this will scale anim speed)
13761      PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
13762      PackTime              = 2000  ; (changing this will scale anim speed)
13763      DoCaptureFX           = Yes
13764    End
13765  
13766    Geometry = CYLINDER
13767    Scale = 0.95                            ;Scaling
13768    GeometryMajorRadius = 1.0
13769    GeometryMinorRadius = 1.0
13770    GeometryHeight = 8.0
13771    GeometryIsSmall = Yes
13772    Shadow = SHADOW_DECAL
13773    ShadowSizeX = 9;
13774    ShadowSizeY = 9;
13775    ShadowTexture = ShadowI;
13776    BuildCompletion = APPEARS_AT_RALLY_POINT
13777  
13778  End
13779  
13780  ;------------------------------------------------------------------------------
13781  Object ChinaInfantryBlackLotus
13782  
13783    ; *** ART Parameters ***
13784    SelectPortrait         = SNBlkLotus_L2
13785    ButtonImage            = SNBlkLotus2
13786    
13787    ;UpgradeCameo1 = NONE
13788    ;UpgradeCameo2 = NONE
13789    ;UpgradeCameo3 = NONE
13790    ;UpgradeCameo4 = NONE
13791    ;UpgradeCameo5 = NONE
13792    
13793    Draw = W3DModelDraw ModuleTag_01
13794  
13795      OkToChangeModelColor = Yes
13796      
13797      ; --- idle
13798      DefaultConditionState
13799        Model             = NIHERO_SKN
13800        IdleAnimation     = NIHERO_SKL.NIHERO_STA 0 17
13801        IdleAnimation     = NIHERO_SKL.NIHero_IDA
13802        IdleAnimation     = NIHERO_SKL.NIHero_IDB
13803        AnimationMode     = ONCE
13804        TransitionKey     = TRANS_Stand
13805      End
13806  
13807      ConditionState      = REALLYDAMAGED
13808        IdleAnimation     = NIHERO_SKL.NIHERO_ISTA 0 30
13809        IdleAnimation     = NIHERO_SKL.NIHero_IIDA
13810        AnimationMode     = ONCE
13811        TransitionKey     = TRANS_StandInjured
13812      End
13813  
13814      TransitionState     = TRANS_Stand TRANS_StandInjured
13815        Animation         = NIHero_SKL.NIHero_ISTAHIT
13816        AnimationMode     = ONCE
13817      End
13818  
13819      ; --- moving
13820      ConditionState      = MOVING
13821        Animation         = NIHero_SKL.NIHero_RNA
13822        AnimationMode     = LOOP
13823        Flags             = RANDOMSTART
13824        TransitionKey     = None
13825        ParticleSysBone   = None InfantryDustTrails
13826      End
13827      AliasConditionState = MOVING UNPACKING
13828  
13829      ConditionState      = MOVING REALLYDAMAGED
13830        Animation         = NIHero_SKL.NIHero_IRNA
13831        AnimationMode     = LOOP
13832        Flags             = RANDOMSTART
13833        TransitionKey     = None
13834        ParticleSysBone   = None InfantryDustTrails
13835      End
13836      AliasConditionState = MOVING UNPACKING REALLYDAMAGED
13837  
13838      ; --- packing states
13839      ConditionState      = UNPACKING
13840        ;Preparing to attack (unpacking gear)
13841        Animation         = NIHero_SKL.NIHero_ATA1
13842        AnimationMode     = ONCE
13843      End
13844      AliasConditionState = UNPACKING FIRING_A
13845  
13846      ConditionState      = FIRING_A
13847        ;Processing attack (hacking)
13848        Animation         = NIHero_SKL.NIHero_ATA2
13849        AnimationMode     = LOOP
13850        TransitionKey     = TRANS_FiringA
13851      End
13852  
13853      ConditionState      = PACKING
13854        ;Completing attack (packing gear)
13855        Animation         = NIHero_SKL.NIHero_ATA3
13856        AnimationMode     = ONCE
13857      End
13858      AliasConditionState = FIRING_A PACKING 
13859  
13860      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
13861        Animation         = NIHero_SKL.NIHero_IATAHIT
13862        AnimationMode     = ONCE
13863      End
13864  
13865      ; --- injured-packing states
13866      ConditionState      = UNPACKING REALLYDAMAGED
13867        ;Preparing to attack (unpacking gear)
13868        Animation         = NIHero_SKL.NIHero_IATA1
13869        AnimationMode     = ONCE
13870      End
13871      AliasConditionState = UNPACKING FIRING_A REALLYDAMAGED
13872  
13873      ConditionState      = FIRING_A REALLYDAMAGED
13874        ;Processing attack (hacking)
13875        Animation         = NIHero_SKL.NIHero_IATA2
13876        AnimationMode     = LOOP
13877        TransitionKey     = TRANS_FiringAInjured
13878      End
13879  
13880      ConditionState      = PACKING REALLYDAMAGED
13881        ;Completing attack (packing gear)
13882        Animation         = NIHero_SKL.NIHero_IATA3
13883        AnimationMode     = ONCE
13884      End
13885      AliasConditionState = FIRING_A PACKING REALLYDAMAGED
13886  
13887      ; --- packing-dying states
13888  ; code doesn't really support this. Oh well.
13889  ;    ConditionState      = DYING RAISING_FLAG
13890  ;      Animation         = NIHero_SKL.NIHero_IDTA
13891  ;      Animation         = NIHero_SKL.NIHero_IDTB
13892  ;      AnimationMode     = ONCE
13893  ;    End
13894  ;    AliasConditionState = DYING RAISING_FLAG EXPLODED_FLAILING EXPLODED_BOUNCING
13895  
13896      ; --- normal-dying states
13897      ConditionState      = DYING
13898        Animation         = NIHero_SKL.NIHero_DTA
13899        Animation         = NIHero_SKL.NIHero_DTB
13900        AnimationMode     = ONCE
13901        TransitionKey     = TRANS_Dying
13902      End
13903  
13904      TransitionState     = TRANS_Dying TRANS_Flailing
13905        Animation         = NIHero_SKL.NIHero_ADTF1
13906        AnimationMode     = ONCE
13907      End
13908  
13909      ConditionState      = DYING EXPLODED_FLAILING
13910        Animation         = NIHero_SKL.NIHero_ADTF2
13911        AnimationMode     = LOOP
13912        TransitionKey     = TRANS_Flailing
13913      End
13914  
13915      ConditionState      = DYING EXPLODED_BOUNCING
13916        Animation         = NIHero_SKL.NIHero_ADTF3
13917        AnimationMode     = ONCE
13918        TransitionKey     = None
13919      End
13920  
13921      ; --- cheering states
13922      ConditionState      = SPECIAL_CHEERING
13923        Animation         = NIHERO_SKL.NIHERO_CHA
13924        AnimationMode     = ONCE
13925      End
13926  
13927      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
13928        Animation         = NIHERO_SKL.NIHERO_ICHA
13929        AnimationMode     = ONCE
13930      End
13931  
13932      ; --- falling states
13933      ConditionState      = FREEFALL
13934        Animation         = NIHero_SKL.NIHero_PFL
13935        AnimationMode     = LOOP
13936        TransitionKey     = TRANS_Falling
13937      End
13938      AliasConditionState = FREEFALL REALLYDAMAGED
13939      AliasConditionState = FREEFALL DYING
13940  
13941      ConditionState      = PARACHUTING
13942        Animation         = NIHero_SKL.NIHero_PHG
13943        AnimationMode     = LOOP
13944        TransitionKey     = TRANS_Chute
13945      End
13946      AliasConditionState = PARACHUTING REALLYDAMAGED
13947      AliasConditionState = PARACHUTING DYING
13948  
13949      TransitionState     = TRANS_Falling TRANS_Chute
13950        Animation         = NIHero_SKL.NIHero_POP
13951        AnimationMode     = ONCE
13952        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
13953      End
13954  
13955      TransitionState     = TRANS_Chute TRANS_Stand
13956        Animation         = NIHero_SKL.NIHero_PTD
13957        AnimationMode     = ONCE
13958      End
13959  
13960      TransitionState     = TRANS_Chute TRANS_StandInjured
13961        Animation         = NIHero_SKL.NIHero_PTD
13962        AnimationMode     = ONCE
13963      End
13964  
13965    End
13966  
13967    ; ***DESIGN parameters ***
13968    DisplayName         = OBJECT:BlackLotus
13969    Side                = China
13970    EditorSorting       = INFANTRY
13971    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
13972    WeaponSet
13973      Conditions        = None 
13974      Weapon            = PRIMARY RedguardMachineGun
13975    End
13976    ArmorSet
13977      Conditions      = None
13978      Armor           = HumanArmor
13979      DamageFX        = InfantryDamageFX
13980    End
13981    VisionRange         = 300
13982    ShroudClearingRange = 400
13983    Prerequisites
13984      Object = ChinaBarracks
13985      Object = ChinaPropagandaCenter
13986    End
13987    BuildCost             = 1500
13988    BuildTime             = 20.0          ;in seconds    
13989    MaxSimultaneousOfType = 1
13990    CommandSet            = ChinaInfantryBlackLotusCommandSet
13991  
13992    ExperienceValue       = 50 100 150 400    ;Experience point value at each level
13993    ExperienceRequired    = 0 150 450 900  ;Experience points needed to gain each level
13994    IsTrainable           = Yes             ;Can gain experience
13995    CrushableLevel        = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
13996    CommandSet            = ChinaInfantryBlackLotusCommandSet
13997  
13998    ; *** AUDIO Parameters ***
13999    VoiceSelect = BlackLotusVoiceSelect
14000    VoiceMove = BlackLotusVoiceMove
14001    VoiceAttack = BlackLotusVoiceAttack
14002    VoiceGuard = BlackLotusVoiceMove
14003    VoiceFear = BlackLotusVoiceFear
14004    VoiceTaskComplete = BlackLotusVoiceCaptureComplete
14005    SoundDie = BlackLotusVoiceDie
14006    SoundDieFire = DieByFireFemale
14007    SoundDieToxin = DieByToxinFemale
14008    SoundStealthOn = StealthOn
14009    SoundStealthOff = StealthOff
14010    
14011    UnitSpecificSounds
14012      VoiceCreate          = BlackLotusVoiceCreate
14013      VoiceGarrison = BlackLotusVoiceMove
14014      VoiceEnter = BlackLotusVoiceMove
14015      VoiceEnterHostile = BlackLotusVoiceMove
14016      VoiceStealCashComplete = BlackLotusVoiceCashComplete
14017      VoiceDisableVehicleComplete = BlackLotusVoiceDisableComplete
14018      VoiceCaptureBuildingComplete = BlackLotusVoiceCaptureComplete
14019      VoiceGetHealed      = BlackLotusVoiceMove
14020    End
14021  
14022    ; *** ENGINEERING Parameters ***
14023    RadarPriority = UNIT
14024    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE HERO
14025  
14026    Body = ActiveBody ModuleTag_02
14027      MaxHealth       = 150.0
14028      InitialHealth   = 150.0
14029    End
14030  
14031    Behavior = CommandButtonHuntUpdate  ModuleTag_03 ; allows use of command button hunt script with this unit. 
14032    End
14033  
14034    Behavior = AIUpdateInterface ModuleTag_04
14035      AutoAcquireEnemiesWhenIdle = No
14036    End
14037    Locomotor = SET_NORMAL BlackLotusLocomotor
14038    Locomotor = SET_FREEFALL FreeFallLocomotor
14039    Behavior = PhysicsBehavior ModuleTag_05
14040      Mass = 5.0
14041    End
14042    Behavior = StealthUpdate ModuleTag_07
14043      StealthDelay                = 2500 ; msec
14044      StealthForbiddenConditions  = USING_ABILITY
14045      HintDetectableConditions    = USING_ABILITY
14046      InnateStealth               = Yes
14047      OrderIdleEnemiesToAttackMeUponReveal  = Yes
14048    End
14049  
14050    Behavior = StealthDetectorUpdate ModuleTag_44
14051      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
14052      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
14053      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
14054      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
14055    End
14056  
14057    Behavior = SpecialAbility ModuleTag_08
14058      SpecialPowerTemplate = SpecialAbilityBlackLotusCaptureBuilding
14059      UpdateModuleStartsAttack = Yes
14060      InitiateSound         = BlackLotusVoiceHackBuilding
14061    End
14062    Behavior = SpecialAbilityUpdate ModuleTag_09
14063      SpecialPowerTemplate  = SpecialAbilityBlackLotusCaptureBuilding
14064      StartAbilityRange     = 150.0
14065      UnpackTime            = 6730 ;animation time is 6730 (changing this will scale anim speed)
14066      PackTime              = 2800 ;animation time is 5800 (changing this will scale anim speed)
14067      PreparationTime       = 6000 ;time to complete hack once prepared (unpacked)
14068      SpecialObject         = BinaryDataStream
14069      DoCaptureFX           = Yes
14070      PackSound             = BlackLotusPack
14071      UnpackSound           = BlackLotusUnpack
14072      TriggerSound          = BlackLotusTrigger
14073      PrepSoundLoop         = BlackLotusPrepLoop
14074      AwardXPForTriggering  = 20
14075      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
14076    End
14077    Behavior = SpecialAbility ModuleTag_10
14078      SpecialPowerTemplate      = SpecialAbilityBlackLotusDisableVehicleHack
14079      UpdateModuleStartsAttack  = Yes
14080      InitiateSound           = BlackLotusVoiceHackVehicle
14081    End
14082    Behavior = SpecialAbilityUpdate ModuleTag_11
14083      SpecialPowerTemplate    = SpecialAbilityBlackLotusDisableVehicleHack
14084      StartAbilityRange       = 150.0
14085      UnpackTime              = 2000 ;6730 ;animation time is 6730 (changing this will scale anim speed)
14086      PackTime                = 1000 ;2800 ;animation time is 5800 (changing this will scale anim speed)
14087      PreparationTime         = 2000 ;time to complete hack once prepared (unpacked)
14088      EffectDuration          = 15000 ;duration vehicle is disabled  (30 seconds)
14089      DisableFXParticleSystem = DisabledEffectBinaryShower0
14090      SpecialObject           = BinaryDataStream
14091      PackSound               = BlackLotusPack
14092      UnpackSound             = BlackLotusUnpack
14093      TriggerSound            = BlackLotusTrigger
14094      PrepSoundLoop           = BlackLotusPrepLoop
14095      AwardXPForTriggering    = 0
14096      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
14097    End
14098    Behavior = SpecialAbility ModuleTag_12
14099      SpecialPowerTemplate      = SpecialAbilityBlackLotusStealCashHack
14100      UpdateModuleStartsAttack  = Yes
14101      InitiateSound         = BlackLotusVoiceHackCash
14102    End
14103    Behavior = SpecialAbilityUpdate ModuleTag_13
14104      SpecialPowerTemplate  = SpecialAbilityBlackLotusStealCashHack
14105      StartAbilityRange     = 150.0
14106      UnpackTime            = 6730 ;animation time is 6730 (changing this will scale anim speed)
14107      PackTime              = 5800 ;animation time is 5800 (changing this will scale anim speed)
14108      PreparationTime       = 6000 ;time to complete hack once prepared (unpacked)
14109      EffectValue           = 1000 ;amount of cash stolen
14110      SpecialObject         = BinaryDataStream
14111      PackSound             = BlackLotusPack
14112      UnpackSound           = BlackLotusUnpack
14113      TriggerSound          = BlackLotusTrigger
14114      PrepSoundLoop         = BlackLotusPrepLoop
14115      AwardXPForTriggering  = 20
14116      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
14117    End
14118   
14119    ;Hero units can't be squished!
14120    ;Behavior = SquishCollide ModuleTag_14
14121    ;  ;nothing
14122    ;End
14123  
14124  
14125  ; --- begin Death modules ---
14126    Behavior = SlowDeathBehavior ModuleTag_Death01
14127      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
14128      SinkDelay           = 50000
14129      SinkRate            = 0.5     ; in Dist/Sec
14130      DestructionDelay    = 8000000
14131      FX                  = INITIAL FX_GIDie
14132    End
14133    Behavior = SlowDeathBehavior ModuleTag_Death02
14134      DeathTypes          = NONE +CRUSHED +SPLATTED
14135      SinkDelay           = 50000
14136      SinkRate            = 0.5     ; in Dist/Sec
14137      DestructionDelay    = 8000000
14138      FX                  = INITIAL FX_GIDieCrushed
14139    End
14140    Behavior = SlowDeathBehavior ModuleTag_Death03
14141      DeathTypes          = NONE +EXPLODED
14142      SinkDelay           = 50000
14143      SinkRate            = 0.5     ; in Dist/Sec
14144      DestructionDelay    = 8000000
14145      FX                  = INITIAL FX_GIDie
14146      FlingForce          = 8
14147      FlingForceVariance  = 3
14148      FlingPitch          = 60
14149      FlingPitchVariance  = 10
14150    End
14151    Behavior = SlowDeathBehavior ModuleTag_Death04
14152      DeathTypes          = NONE +BURNED
14153      DestructionDelay    = 0
14154      FX                  = INITIAL FX_GIDie
14155      OCL                 = INITIAL OCL_FlamingInfantry
14156    End
14157    Behavior = SlowDeathBehavior ModuleTag_Death05
14158      DeathTypes          = NONE +POISONED
14159      DestructionDelay    = 0
14160      FX                  = INITIAL FX_GIDie
14161      OCL                 = INITIAL OCL_ToxicInfantry
14162    End
14163    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
14164      DeathTypes          = NONE +POISONED_BETA
14165      DestructionDelay    = 0
14166      FX                  = INITIAL FX_GIDie
14167      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
14168    End
14169  ; --- end Death modules ---
14170  
14171    Behavior = PoisonedBehavior ModuleTag_17
14172      PoisonDamageInterval  = 100  ; Every this many msec I will retake the poison damage dealt me...
14173      PoisonDuration        = 3000       ; ... for this long after last hit by poison damage
14174    End
14175   
14176    Geometry = CYLINDER
14177    Scale = 0.95                            ;Scaling
14178    GeometryMajorRadius = 1.0
14179    GeometryMinorRadius = 1.0
14180    GeometryHeight = 8.0
14181    GeometryIsSmall = Yes
14182    Shadow = SHADOW_DECAL
14183    ShadowSizeX = 9;
14184    ShadowSizeY = 9;
14185    ShadowTexture = ShadowI;
14186    BuildCompletion = APPEARS_AT_RALLY_POINT
14187  
14188  End
14189  
14190  ;------------------------------------------------------------------------------
14191  ;------------------------------------------
14192  ;------------------------------------------------------------------------------
14193  
14194  ;------------------------------------------------------------------------------
14195  Object ChinaInfantryTankHunter
14196  
14197    ; *** ART Parameters ***
14198    SelectPortrait         = SNTankHunter_L
14199    ButtonImage            = SNTankHunter_L
14200    
14201    UpgradeCameo1 = Upgrade_Nationalism
14202    ;UpgradeCameo2 = NONE
14203    ;UpgradeCameo3 = NONE
14204    ;UpgradeCameo4 = NONE
14205    ;UpgradeCameo5 = NONE
14206  
14207    Draw = W3DModelDraw ModuleTag_01
14208      OkToChangeModelColor = Yes
14209    
14210    
14211      DefaultConditionState
14212        Model             = NIMSST_SKN
14213        IdleAnimation     = NIMSST_SKL.NIMSST_STA 0 30
14214        IdleAnimation     = NIMSST_SKL.NIMSST_IDA
14215        IdleAnimation     = NIMSST_SKL.NIMSST_IDB
14216        AnimationMode     = ONCE
14217        AnimationSpeedFactorRange = 0.8 1.2
14218        TransitionKey     = TRANS_Stand
14219        WeaponMuzzleFlash = PRIMARY MuzzleFX
14220        WeaponFireFXBone  = PRIMARY Muzzle
14221        WeaponLaunchBone  = PRIMARY Muzzle
14222        WeaponLaunchBone  = SECONDARY Muzzle
14223      End
14224      AliasConditionState = REALLYDAMAGED
14225  
14226      ConditionState      = FIRING_A 
14227        Animation         = NIMSST_SKL.NIMSST_ATA 
14228        AnimationMode     = ONCE
14229        TransitionKey     = TRANS_START_FIRING
14230      End
14231      AliasConditionState = REALLYDAMAGED FIRING_A
14232      
14233      ConditionState      = BETWEEN_FIRING_SHOTS_A
14234        Animation         = NIMSST_SKL.NIMSST_STA
14235        AnimationMode     = ONCE
14236        ; this is basically a trick: this guy has a nontrivial animation for firing,
14237        ; and a long recycle time between shots. we want him to finish his fire animation
14238        ; (unless he's ordered to do something else), so this is just a handy trick that
14239        ; says, "if the previous state had this transition key, allow it to finish before
14240        ; switching to us, if possible".
14241        WaitForStateToFinishIfPossible = TRANS_START_FIRING
14242      End
14243      AliasConditionState = REALLYDAMAGED BETWEEN_FIRING_SHOTS_A
14244  
14245      ConditionState      = MOVING
14246        Animation         = NIMSST_SKL.NIMSST_RNA 20
14247        AnimationMode     = LOOP
14248        Flags             = RANDOMSTART
14249        TransitionKey     = None
14250        ParticleSysBone   = None InfantryDustTrails
14251      End
14252      AliasConditionState = REALLYDAMAGED MOVING
14253  
14254      ConditionState      = RELOADING_A
14255        Animation         = NIMSST_SKL.NIMSST_ATA 10
14256        AnimationMode     = ONCE
14257        ;WeaponLaunchBone = PRIMARY WeaponA
14258      End
14259      AliasConditionState = MOVING RELOADING_A
14260      AliasConditionState = REALLYDAMAGED MOVING RELOADING_A
14261  
14262      ConditionState      = DYING
14263        Animation         = NIMSST_SKL.NIMSST_DTA
14264        Animation         = NIMSST_SKL.NIMSST_DTB
14265        AnimationSpeedFactorRange = 0.9 1.25
14266        AnimationMode     = ONCE
14267        TransitionKey     = TRANS_Dying
14268      End
14269  
14270      TransitionState     = TRANS_Dying TRANS_Flailing
14271        Animation         = NIMSST_SKL.NIMSST_ADTD1
14272        AnimationMode     = ONCE
14273      End
14274  
14275      ConditionState      = DYING EXPLODED_FLAILING
14276        Animation         = NIMSST_SKL.NIMSST_ADTD2
14277        AnimationMode     = LOOP
14278        TransitionKey     = TRANS_Flailing
14279      End
14280  
14281      ConditionState      = DYING EXPLODED_BOUNCING
14282        Animation         = NIMSST_SKL.NIMSST_ADTD3
14283        AnimationMode     = ONCE
14284        TransitionKey     = None
14285      End
14286  
14287      ;PARACHUTING ANIMATIONS
14288      ConditionState      = FREEFALL
14289        Animation         = NIMSST_SKL.NIMSST_POP
14290        AnimationMode     = ONCE
14291        TransitionKey     = TRANS_Falling
14292      End
14293      AliasConditionState = FREEFALL REALLYDAMAGED
14294      AliasConditionState = FREEFALL DYING
14295      
14296      ConditionState      = PARACHUTING
14297        Animation         = NIMSST_SKL.NIMSST_PHG
14298        AnimationMode     = LOOP
14299        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
14300        TransitionKey     = TRANS_Chute
14301      End
14302      AliasConditionState = PARACHUTING REALLYDAMAGED
14303      AliasConditionState = PARACHUTING DYING
14304      
14305     ; TransitionState     = TRANS_Falling TRANS_Chute
14306     ;   Animation         = NIMSST_SKL.NIMSST_POP
14307     ;   AnimationMode     = ONCE
14308     ;   Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
14309     ; End
14310      
14311      TransitionState     = TRANS_Chute TRANS_Stand
14312        Animation         = NIMSST_SKL.NIMSST_PDN
14313        AnimationMode     = ONCE
14314      End
14315  
14316    End
14317  
14318  
14319    ; ***DESIGN parameters ***
14320    DisplayName      = OBJECT:TankHunter
14321    Side = China
14322    EditorSorting = INFANTRY
14323    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
14324    WeaponSet
14325      Conditions = None 
14326      Weapon = PRIMARY ChinaInfantryTankHunterMissileLauncher
14327    End
14328    ArmorSet
14329      Conditions      = None
14330      Armor           = HumanArmor
14331      DamageFX        = InfantryDamageFX
14332    End
14333    VisionRange = 150
14334    ShroudClearingRange = 400
14335    Prerequisites
14336      Object = ChinaBarracks
14337    End
14338    BuildCost = 300
14339    BuildTime = 5.0          ;in seconds    
14340  
14341    ExperienceValue = 20 20 40 60    ;Experience point value at each level
14342    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
14343    IsTrainable = Yes             ;Can gain experience
14344    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
14345    CommandSet      = ChinaInfantryTankHunterCommandSet
14346  
14347    ; *** AUDIO Parameters ***
14348    VoiceSelect = TankHunterVoiceSelect
14349    VoiceMove = TankHunterVoiceMove
14350    VoiceAttack = TankHunterVoiceAttack
14351    VoiceAttackAir = TankHunterVoiceAttack
14352    SoundDie = TankHunterVoiceDie
14353    SoundDieFire = DieByFireChina
14354    SoundDieToxin = DieByToxinChina
14355    VoiceGuard = TankHunterVoiceMove
14356    VoiceFear = TankHunterVoiceFear
14357    UnitSpecificSounds
14358      VoiceCreate          = TankHunterVoiceCreate
14359      VoiceGarrison = TankHunterVoiceGarrison
14360      VoiceEnter = TankHunterVoiceMove
14361      VoiceEnterHostile = TankHunterVoiceMove
14362      VoiceGetHealed      = TankHunterVoiceMove
14363    End
14364  
14365    ; *** ENGINEERING Parameters ***
14366    RadarPriority = UNIT
14367    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
14368  
14369    Body = ActiveBody ModuleTag_02
14370      MaxHealth       = 100.0
14371      InitialHealth   = 100.0
14372    End
14373    
14374      Behavior = VeterancyGainCreate ModuleTag_03
14375      StartingLevel = VETERAN
14376      ScienceRequired = SCIENCE_RedGuardTraining
14377    End
14378    Behavior = AIUpdateInterface ModuleTag_03
14379      AutoAcquireEnemiesWhenIdle = Yes
14380    End
14381    Locomotor = SET_NORMAL MissileDefenderLocomotor
14382    Behavior = HordeUpdate ModuleTag_04
14383      UpdateRate = 1000    ; how often to recheck horde status (msec)
14384      RubOffRadius = 60    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
14385      Radius = 30          ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
14386      KindOf = INFANTRY    ; what KindOf's must match to count towards horde-ness
14387      AlliesOnly = Yes     ; do we only count allies towards horde status? 
14388      ExactMatch = No      ; do we only count units of our exact same type towards horde status? (overrides kindof)
14389      Count = 5            ; how many units must be within Radius to grant us horde-ness
14390      Action = HORDE       ; when horde-ing, grant us the HORDE bonus
14391    End
14392    Behavior = PhysicsBehavior ModuleTag_05
14393      Mass = 5.0
14394    End
14395  
14396    Behavior = SpecialAbility ModuleTag_07
14397      SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack
14398      UpdateModuleStartsAttack = Yes
14399      InitiateSound = TankHunterVoiceTNT
14400    End
14401    Behavior = SpecialAbilityUpdate ModuleTag_08
14402      SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack
14403      StartAbilityRange = 5.0
14404      PreparationTime = 0
14405      SpecialObject = TNTStickyBomb
14406      MaxSpecialObjects = 8
14407      SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
14408      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
14409      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
14410      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
14411    End
14412  
14413   
14414    Behavior = SquishCollide ModuleTag_09
14415      ;nothing
14416    End
14417  
14418  
14419  ; --- begin Death modules ---
14420    Behavior = SlowDeathBehavior ModuleTag_Death01
14421      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
14422      SinkDelay           = 50000
14423      SinkRate            = 0.5     ; in Dist/Sec
14424      DestructionDelay    = 8000000
14425      FX                  = INITIAL FX_GIDie
14426    End
14427    Behavior = SlowDeathBehavior ModuleTag_Death02
14428      DeathTypes          = NONE +CRUSHED +SPLATTED
14429      SinkDelay           = 50000
14430      SinkRate            = 0.5     ; in Dist/Sec
14431      DestructionDelay    = 8000000
14432      FX                  = INITIAL FX_GIDieCrushed
14433    End
14434    Behavior = SlowDeathBehavior ModuleTag_Death03
14435      DeathTypes          = NONE +EXPLODED
14436      SinkDelay           = 50000
14437      SinkRate            = 0.5     ; in Dist/Sec
14438      DestructionDelay    = 8000000
14439      FX                  = INITIAL FX_GIDie
14440      FlingForce          = 8
14441      FlingForceVariance  = 3
14442      FlingPitch          = 60
14443      FlingPitchVariance  = 10
14444    End
14445    Behavior = SlowDeathBehavior ModuleTag_Death04
14446      DeathTypes          = NONE +BURNED
14447      DestructionDelay    = 0
14448      FX                  = INITIAL FX_GIDie
14449      OCL                 = INITIAL OCL_FlamingInfantry
14450    End
14451    Behavior = SlowDeathBehavior ModuleTag_Death05
14452      DeathTypes          = NONE +POISONED
14453      DestructionDelay    = 0
14454      FX                  = INITIAL FX_GIDie
14455      OCL                 = INITIAL OCL_ToxicInfantry
14456    End
14457    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
14458      DeathTypes          = NONE +POISONED_BETA
14459      DestructionDelay    = 0
14460      FX                  = INITIAL FX_GIDie
14461      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
14462    End
14463  ; --- end Death modules ---
14464  
14465    Behavior = PoisonedBehavior ModuleTag_12
14466      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
14467      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
14468    End
14469   
14470    Geometry = CYLINDER
14471    Scale = 0.95                            ;Scaling
14472    GeometryMajorRadius = 1.0
14473    GeometryMinorRadius = 1.0
14474    GeometryHeight = 8.0
14475    GeometryIsSmall = Yes
14476    Shadow = SHADOW_DECAL
14477    ShadowSizeX = 9;
14478    ShadowSizeY = 9;
14479    ShadowTexture = ShadowI;
14480    BuildCompletion = APPEARS_AT_RALLY_POINT
14481  
14482  End
14483  
14484  ;------------------------------------------------------------------------------
14485  Object TNTStickyBomb ;Created by Chinese Tank Hunters
14486  
14487    ;No drawable because it's invisible
14488    ; *** ART Parameters ***
14489  
14490    ; ***DESIGN parameters ***
14491    Side = China
14492    EditorSorting   = SYSTEM
14493    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
14494    VisionRange = 75.0  ;Allow the stickybomb to show itself to user?
14495    ShroudClearingRange = 75
14496    ArmorSet
14497      Conditions      = None
14498      Armor           = InvulnerableAllArmor
14499    End
14500  
14501    ; *** AUDIO Parameters ***
14502    SoundDie = BombTruckDefaultBombDetonation
14503    UnitSpecificSounds
14504      UnitBombPing = BombTickTimed
14505    End
14506  
14507    ; *** ENGINEERING Parameters ***
14508    RadarPriority = NOT_ON_RADAR
14509    KindOf = PROJECTILE MINE NO_COLLIDE
14510  
14511    Behavior = PhysicsBehavior ModuleTag_01
14512      Mass = 5
14513    End
14514  
14515    ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
14516    Behavior = LifetimeUpdate ModuleTag_02
14517      MinLifetime = 10000   ; min lifetime in msec
14518      MaxLifetime = 10000   ; max lifetime in msec
14519    End
14520  
14521    Behavior = StickyBombUpdate ModuleTag_03
14522      ; nothing
14523    End
14524  
14525    Behavior = SlowDeathBehavior ModuleTag_04
14526      DestructionDelay    = 1
14527      FX                  = INITIAL WeaponFX_TNTStickyBombDetonation
14528      Weapon              = FINAL   TNTDetonationWeapon
14529    End
14530  
14531    Body = HighlanderBody ModuleTag_NewBody
14532      MaxHealth = 1.0
14533      InitialHealth = 1.0
14534    End
14535  
14536  End
14537  
14538  ;------------------------------------------------------------------------------
14539  Object RemoteC4Charge ;Created by ColonelBurton
14540  
14541    ;No drawable because it's invisible
14542    ; *** ART Parameters ***
14543  
14544    ; ***DESIGN parameters ***
14545    Side = America
14546    EditorSorting   = SYSTEM
14547    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
14548    VisionRange = 75.0  ;Allow the stickybomb to show itself to user?
14549    ShroudClearingRange = 75
14550    ArmorSet
14551      Conditions      = None
14552      Armor           = InvulnerableAllArmor
14553    End
14554  
14555    ; *** AUDIO Parameters ***
14556    SoundDie = RemoteDemoChargeExplosion
14557    UnitSpecificSounds
14558      UnitBombPing = BombTickRemote
14559    End
14560  
14561    ; *** ENGINEERING Parameters ***
14562    RadarPriority = NOT_ON_RADAR
14563    KindOf =  PROJECTILE MINE NO_COLLIDE
14564  
14565    ;Body = ActiveBody ModuleTag_02
14566    ;  MaxHealth = 1.0
14567    ;  InitialHealth = 1.0
14568    ;End
14569  
14570    Body = HighlanderBody ModuleTag_NewBody
14571      MaxHealth = 1.0
14572      InitialHealth = 1.0
14573    End
14574  
14575    Behavior = StealthUpdate ModuleTag_03
14576      StealthDelay                = 0                  ; msec
14577      StealthForbiddenConditions  = NONE
14578      FriendlyOpacityMin          = 50.0%
14579      InnateStealth               = Yes
14580    End
14581  
14582    Behavior = StickyBombUpdate ModuleTag_04
14583      ;Keeps it attached properly to the intended target should it move.
14584    End
14585  
14586  
14587    Behavior = SlowDeathBehavior ModuleTag_05
14588      DestructionDelay = 1
14589      FX                  = INITIAL WeaponFX_TNTStickyBombDetonation
14590      Weapon              = FINAL   BurtonC4ChargeWeapon
14591    End
14592  
14593    Geometry            = CYLINDER
14594    GeometryMajorRadius = 0.0
14595    GeometryHeight      = 0.0
14596    GeometryIsSmall     = No
14597  
14598  End
14599  
14600  ;------------------------------------------------------------------------------
14601  Object TimedC4Charge ;Created by Colonel Burton
14602  
14603    ;No drawable because it's invisible
14604    ; *** ART Parameters ***
14605  
14606    ; ***DESIGN parameters ***
14607    Side = America
14608    EditorSorting   = SYSTEM
14609    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
14610    VisionRange = 75.0  ;Allow the stickybomb to show itself to user?
14611    ShroudClearingRange = 75
14612    ArmorSet
14613      Conditions      = None
14614      Armor           = InvulnerableAllArmor
14615    End
14616  
14617    ; *** AUDIO Parameters ***
14618    SoundDie = RemoteDemoChargeExplosion
14619    UnitSpecificSounds
14620      UnitBombPing = BombTickTimed
14621    End
14622  
14623    ; *** ENGINEERING Parameters ***
14624    RadarPriority = NOT_ON_RADAR
14625    KindOf =  PROJECTILE MINE NO_COLLIDE
14626  
14627    ;Body = ActiveBody ModuleTag_02
14628    ;  MaxHealth = 1.0
14629    ;  InitialHealth = 1.0
14630    ;End
14631    Body = HighlanderBody ModuleTag_NewBody
14632      MaxHealth = 1.0
14633      InitialHealth = 1.0
14634    End
14635  
14636    Behavior = StealthUpdate ModuleTag_03
14637      StealthDelay                = 0                  ; msec
14638      StealthForbiddenConditions  = NONE
14639      FriendlyOpacityMin          = 50.0%
14640      InnateStealth               = Yes
14641    End
14642  
14643    ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
14644    Behavior = LifetimeUpdate ModuleTag_04
14645      MinLifetime = 20000   ; min lifetime in msec
14646      MaxLifetime = 20000   ; max lifetime in msec
14647    End
14648  
14649    Behavior = StickyBombUpdate ModuleTag_05
14650      ;Keeps it attached properly to the intended target should it move.
14651    End
14652  
14653    Behavior = SlowDeathBehavior ModuleTag_06
14654      DestructionDelay = 1
14655      FX                  = INITIAL WeaponFX_TNTStickyBombDetonation
14656      Weapon              = FINAL   BurtonC4ChargeWeapon
14657    End
14658  
14659    Geometry            = CYLINDER
14660    GeometryMajorRadius = 0.0
14661    GeometryHeight      = 0.0
14662    GeometryIsSmall     = No
14663  
14664  End
14665  
14666  ;------------------------------------------------------------------------------
14667  Object DemoTrapDetonationObject ;The explodes-next-frame object when demo trap is triggered.
14668  
14669    ; ***DESIGN parameters ***
14670    Side = GLA
14671    EditorSorting   = SYSTEM
14672    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
14673    VisionRange = 0.0  ;Allow the stickybomb to show itself to user?
14674  
14675    ; *** AUDIO Parameters ***
14676  
14677    ; *** ENGINEERING Parameters ***
14678    RadarPriority = NOT_ON_RADAR
14679    KindOf = PROJECTILE
14680  
14681    Behavior = PhysicsBehavior ModuleTag_01
14682      Mass = 5
14683    End
14684  
14685    ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
14686    Behavior = LifetimeUpdate ModuleTag_02
14687      MinLifetime = 1   ; min lifetime in msec
14688      MaxLifetime = 1   ; max lifetime in msec
14689    End
14690  
14691    Behavior = SlowDeathBehavior ModuleTag_03
14692      DestructionDelay = 1
14693      FX                  = INITIAL WeaponFX_DemoTrapDetonation
14694      Weapon              = FINAL   DemoTrapDetonationWeapon
14695    End
14696  End
14697  
14698  ;------------------------------------------------------------------------------
14699  Object CINE_DemoTrapDetonationObject ;The explodes-next-frame object when demo trap is triggered.
14700  
14701    ; ***DESIGN parameters ***
14702    Side = GLA
14703    EditorSorting   = SYSTEM
14704    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
14705    VisionRange = 0.0  ;Allow the stickybomb to show itself to user?
14706  
14707    ; *** AUDIO Parameters ***
14708  
14709    ; *** ENGINEERING Parameters ***
14710    RadarPriority = NOT_ON_RADAR
14711    KindOf = PROJECTILE
14712  
14713    Behavior = PhysicsBehavior ModuleTag_01
14714      Mass = 5
14715    End
14716  
14717    ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
14718    Behavior = LifetimeUpdate ModuleTag_02
14719      MinLifetime = 1   ; min lifetime in msec
14720      MaxLifetime = 1   ; max lifetime in msec
14721    End
14722  
14723    Behavior = SlowDeathBehavior ModuleTag_03
14724      DestructionDelay = 1
14725      FX                  = INITIAL CINE_WeaponFX_DemoTrapDetonation
14726      Weapon              = FINAL   DummyWeapon
14727    End
14728  End
14729  
14730  ;------------------------------------------------------------------------------
14731  ; @todo  -- this entire unit is "first pass only" and needs lots of specialization
14732  Object ChinaInfantrySecretPolice
14733  
14734    ; *** ART Parameters ***
14735    Draw = W3DModelDraw ModuleTag_01
14736      OkToChangeModelColor = Yes
14737  
14738      ; @todo srj -- all these states are using placeholder art; need to add anims, etc.
14739      DefaultConditionState
14740        Model = NIHacker
14741      End
14742  
14743    End
14744  
14745    ; ***DESIGN parameters ***
14746    DisplayName      = OBJECT:SecretPolice
14747    Side = China
14748    EditorSorting = INFANTRY
14749    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
14750    WeaponSet
14751      Conditions = None 
14752      Weapon = PRIMARY None
14753    End
14754    ArmorSet
14755      Conditions      = None
14756      Armor           = HumanArmor
14757      DamageFX        = InfantryDamageFX
14758    End
14759    VisionRange = 150
14760    ShroudClearingRange = 150
14761    Prerequisites
14762      Object = ChinaBarracks
14763    End
14764    BuildCost = 100
14765    BuildTime = 3.0          ;in seconds    
14766  
14767    ExperienceValue = 50 100 150 400    ;Experience point value at each level
14768    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
14769    IsTrainable = Yes             ;Can gain experience
14770  
14771    ; *** AUDIO Parameters ***
14772    VoiceSelect = RedGuardVoiceSelect
14773    VoiceMove = RedGuardVoiceMove
14774    VoiceAttack = RedGuardVoiceAttack
14775    SoundDie = RedGuardVoiceDie
14776    SoundDieFire = DieByFireChina
14777    SoundDieToxin = DieByToxinChina
14778  
14779  
14780    ; *** ENGINEERING Parameters ***
14781    RadarPriority = UNIT
14782    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
14783  
14784    Body = ActiveBody ModuleTag_02
14785      MaxHealth       = 50.0
14786      InitialHealth   = 50.0
14787    End
14788  
14789    Behavior = AIUpdateInterface ModuleTag_03
14790      AutoAcquireEnemiesWhenIdle = Yes
14791    End
14792    Locomotor = SET_NORMAL BasicHumanLocomotor
14793    Behavior = PhysicsBehavior ModuleTag_04
14794      Mass = 5.0
14795    End
14796    Behavior = SlowDeathBehavior ModuleTag_05
14797      SinkDelay = 3000
14798      SinkRate = 0.5     ; in Dist/Sec
14799      DestructionDelay = 8000
14800    End
14801  
14802   
14803    Behavior = SquishCollide ModuleTag_06
14804      ;nothing
14805    End
14806  
14807  
14808    Behavior = FXListDie ModuleTag_07
14809      DeathTypes = ALL -CRUSHED -SPLATTED
14810      DeathFX = FX_GIDie
14811    End
14812    Behavior = FXListDie ModuleTag_08
14813      DeathTypes = NONE +CRUSHED +SPLATTED
14814      DeathFX = FX_GIDieCrushed
14815    End
14816  
14817    Behavior = PoisonedBehavior ModuleTag_09
14818      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
14819      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
14820    End
14821   
14822    Geometry = CYLINDER
14823    GeometryMajorRadius = 1.0
14824    GeometryMinorRadius = 1.0
14825    GeometryHeight = 8.0
14826    GeometryIsSmall = Yes
14827    Shadow = SHADOW_DECAL
14828    ShadowSizeX = 14;
14829    ShadowSizeY = 14;
14830    ShadowTexture = ShadowI;
14831    BuildCompletion = APPEARS_AT_RALLY_POINT
14832  
14833  End
14834  
14835  ;------------------------------------------------------------------------------
14836  Object GLAInfantryWorker
14837  
14838    ; *** ART Parameters ***
14839    SelectPortrait         = SUWorker_L
14840    ButtonImage            = SUWorker
14841    
14842    ;UpgradeCameo1 = NONE
14843    ;UpgradeCameo2 = NONE
14844    ;UpgradeCameo3 = NONE
14845    ;UpgradeCameo4 = NONE
14846    ;UpgradeCameo5 = NONE
14847  
14848    Draw = W3DModelDraw ModuleTag_01
14849      OkToChangeModelColor = Yes
14850  
14851      DefaultConditionState
14852        Model         = UIWRKR_SKN
14853        IdleAnimation = UIWRKR_SKL.UIWRKR_STA 0 9
14854        IdleAnimation = UIWRKR_SKL.UIWRKR_IDA
14855        AnimationMode = ONCE
14856        TransitionKey = TRANS_Stand
14857      End
14858  
14859      ConditionState  = MOVING
14860        Animation     = UIWRKR_SKL.UIWRKR_RNA 16
14861        AnimationMode = LOOP
14862        Flags         = RANDOMSTART
14863        TransitionKey = TRANS_Moving
14864        ParticleSysBone = None InfantryDustTrails
14865      End
14866      ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
14867      ; since we flip the bit once we get pretty close to the target. but it looks
14868      ; funky to do the construction animation while moving. 
14869      ; so just use the normal move animation in that case.
14870      AliasConditionState = ACTIVELY_CONSTRUCTING MOVING
14871  
14872      ConditionState = ATTACKING
14873        ShowSubObject = MINED_SKIN
14874        Animation = UIWRKR_SKL.UIWRKR_MS
14875        AnimationMode = LOOP
14876        Flags = RANDOMSTART
14877        TransitionKey = TRANS_MetalDetector_Standing
14878      End
14879  
14880      ConditionState = MOVING ATTACKING
14881        ShowSubObject = MINED_SKIN
14882        Animation = UIWRKR_SKL.UIWRKR_MSW 50
14883        AnimationMode = LOOP
14884        Flags = RANDOMSTART
14885        TransitionKey = TRANS_MetalDetector_Moving
14886        ParticleSysBone = None InfantryDustTrails
14887      End
14888      AliasConditionState = MOVING ATTACKING CARRYING
14889  
14890      TransitionState = TRANS_Stand TRANS_MetalDetector_Standing    ;STANDING -> ATTACKING
14891        ShowSubObject = MINED_SKIN
14892        Animation     = UIWRKR_SKL.UIWRKR_TRB1;take out standing
14893        AnimationMode = ONCE
14894      End
14895      TransitionState = TRANS_MetalDetector_Standing TRANS_Stand    ;ATTACKING -> STANDING
14896        ShowSubObject = MINED_SKIN
14897        Animation     = UIWRKR_SKL.UIWRKR_TRB2;put away standing
14898        AnimationMode = ONCE
14899      End
14900  
14901      TransitionState = TRANS_Carry TRANS_MetalDetector_Standing    ;CARRYING -> ATTACKING
14902        ShowSubObject = MINED_SKIN
14903        Animation     = UIWRKR_SKL.UIWRKR_TRB1;take out standing
14904        AnimationMode = ONCE
14905      End
14906      TransitionState = TRANS_MetalDetector_Standing TRANS_Carry    ;ATTACKING -> CARRYING
14907        ShowSubObject = MINED_SKIN
14908        Animation     = UIWRKR_SKL.UIWRKR_TRB2;put away standing
14909        AnimationMode = ONCE
14910      End
14911      TransitionState = TRANS_Carry TRANS_MetalDetector_Moving      ;CARRYING -> MOVING ATTACKING
14912        ShowSubObject = MINED_SKIN
14913        Animation     = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
14914        AnimationMode = ONCE
14915        AnimationSpeedFactorRange = 2.0 2.0
14916      End
14917  
14918      TransitionState = TRANS_MetalDetector_Moving TRANS_Stand      ;MOVING ATTACKING -> STANDING
14919        ShowSubObject = MINED_SKIN
14920        Animation     = UIWRKR_SKL.UIWRKR_TRB2;put away moving
14921        AnimationMode = ONCE
14922      End
14923      TransitionState = TRANS_Stand TRANS_MetalDetector_Moving      ;STANDING -> MOVING ATTACKING
14924        ShowSubObject = MINED_SKIN
14925        Animation     = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
14926        AnimationMode = ONCE
14927        AnimationSpeedFactorRange = 2.0 2.0
14928      End
14929  
14930      TransitionState = TRANS_Moving TRANS_MetalDetector_Standing   ;MOVING -> ATTACKING [STANDING]
14931        ShowSubObject = MINED_SKIN
14932        Animation     = UIWRKR_SKL.UIWRKR_TRB1;take out standing
14933        AnimationMode = ONCE
14934      End
14935      TransitionState = TRANS_MetalDetector_Standing TRANS_Moving   ;ATTACKING [STANDING] -> MOVING
14936        ShowSubObject = MINED_SKIN
14937        Animation     = UIWRKR_SKL.UIWRKR_TRC2;put away moving [NEW NON-SKATING ANIMATION]
14938        AnimationMode = ONCE
14939        AnimationSpeedFactorRange = 2.0 2.0
14940      End
14941  
14942      TransitionState = TRANS_Moving TRANS_MetalDetector_Moving     ;MOVING -> MOVING ATTACKING
14943        ShowSubObject = MINED_SKIN
14944        Animation     = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
14945        AnimationMode = ONCE
14946        AnimationSpeedFactorRange = 2.0 2.0
14947      End
14948      TransitionState = TRANS_MetalDetector_Moving TRANS_Moving     ;MOVING ATTACKING -> MOVING
14949        ShowSubObject = MINED_SKIN
14950        Animation     = UIWRKR_SKL.UIWRKR_TRC2;put away moving [NEW NON-SKATING ANIMATION]
14951        AnimationMode = ONCE
14952        AnimationSpeedFactorRange = 2.0 2.0
14953      End
14954  
14955  
14956      ConditionState = MOVING CARRYING
14957        ShowSubObject = BOX
14958        Animation = UIWRKR_SKL.UIWRKR_CARY 12
14959        AnimationMode = LOOP
14960        Flags = RANDOMSTART
14961        TransitionKey = TRANS_Carry
14962        ParticleSysBone = None InfantryDustTrails
14963      End
14964      ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
14965      ; since we flip the bit once we get pretty close to the target. but it looks
14966      ; funky to do the construction animation while moving. 
14967      ; so just use the normal move animation in that case.
14968      AliasConditionState = ACTIVELY_CONSTRUCTING MOVING CARRYING
14969  
14970      ConditionState = CARRYING
14971        ShowSubObject = BOX
14972        Animation = UIWRKR_SKL.UIWRKR_CARST 30 
14973        AnimationMode = LOOP
14974        Flags = RANDOMSTART
14975        TransitionKey = TRANS_Carry
14976      End
14977  
14978      ConditionState = DYING
14979        Animation = UIWRKR_SKL.UIWRKR_DTA
14980        AnimationMode = ONCE
14981        TransitionKey = TRANS_Dying
14982      End
14983      AliasConditionState = DYING CARRYING
14984  
14985      TransitionState = TRANS_Dying TRANS_Flailing
14986        Animation = UIWRKR_SKL.UIWRKR_ADTE1
14987        AnimationMode = ONCE
14988      End
14989  
14990      ConditionState = DYING EXPLODED_FLAILING
14991        Animation = UIWRKR_SKL.UIWRKR_ADTE2
14992        AnimationMode = LOOP
14993        TransitionKey = TRANS_Flailing
14994      End
14995  
14996      ConditionState = DYING EXPLODED_BOUNCING
14997        Animation = UIWRKR_SKL.UIWRKR_ADTE3
14998        AnimationMode = ONCE
14999        TransitionKey = None
15000      End
15001  
15002      ConditionState  = SPECIAL_CHEERING
15003        Animation     = UIWRKR_SKL.UIWRKR_CHA
15004        AnimationMode = ONCE
15005      End
15006      
15007      ConditionState  = ACTIVELY_CONSTRUCTING
15008        Animation     = UIWRKR_SKL.UIWRKR_BDA
15009        AnimationMode = LOOP
15010        TransitionKey = TRANS_Constructing
15011      End
15012      AliasConditionState = ACTIVELY_CONSTRUCTING CARRYING
15013  
15014      ; --------------------
15015  
15016      TransitionState = TRANS_Stand TRANS_Carry
15017        ShowSubObject = BOX
15018        Animation     = UIWRKR_SKL.UIWRKR_PIK
15019        AnimationMode = ONCE
15020      End
15021  
15022      TransitionState = TRANS_Carry TRANS_Stand
15023        ShowSubObject = BOX
15024        Animation     = UIWRKR_SKL.UIWRKR_PIK
15025        AnimationMode = ONCE_BACKWARDS
15026        Flags         = START_FRAME_LAST
15027      End
15028      
15029      TransitionState = TRANS_Stand TRANS_Constructing
15030        Animation     = UIWRKR_SKL.UIWRKR_TRA1
15031        AnimationMode = ONCE
15032      End
15033  
15034      TransitionState = TRANS_Constructing TRANS_Stand
15035        Animation     = UIWRKR_SKL.UIWRKR_TRA2
15036        AnimationMode = ONCE
15037      End
15038    End
15039  
15040    ; ***DESIGN parameters ***
15041    DisplayName = OBJECT:Worker
15042    Side = GLA
15043    EditorSorting = INFANTRY
15044    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
15045  
15046  
15047    WeaponSet
15048      Conditions = None 
15049      Weapon = PRIMARY None
15050    End
15051    WeaponSet
15052      Conditions = MINE_CLEARING_DETAIL 
15053      Weapon = PRIMARY WorkerMineDisarmingWeapon
15054    End
15055  
15056  
15057    ArmorSet
15058      Conditions      = None
15059      Armor           = HumanArmor
15060      DamageFX        = InfantryDamageFX
15061    End
15062    VisionRange = 100
15063    ShroudClearingRange = 200
15064   ;Prerequisites
15065   ;  Object = GLABarracks GLASupplyStash ;commented out, or else you can't build from Con Yard as Dozer.
15066   ;End
15067    BuildCost = 200
15068    BuildTime = 5.0          ;in seconds    
15069    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
15070    CommandSet = GLAWorkerCommandSet
15071  
15072    ; *** AUDIO Parameters ***
15073    VoiceSelect = WorkerVoiceSelect
15074    VoiceMove = WorkerVoiceMove
15075    VoiceAttack = WorkerVoiceMove
15076    SoundDie = WorkerVoiceDie
15077    SoundDieFire = DieByFireGLA
15078    SoundDieToxin = DieByToxinChina
15079    VoiceGuard = WorkerVoiceMove
15080    VoiceFear = WorkerVoiceFear
15081    VoiceTaskComplete = WorkerVoiceBuildComplete
15082    UnitSpecificSounds
15083      VoiceEnter = WorkerVoiceMove
15084      VoiceEnterHostile = WorkerVoiceMove
15085      VoiceGarrison     = WorkerVoiceGarrison
15086      VoiceCreate       = WorkerVoiceCreate
15087      VoiceSupply       = WorkerVoiceSupply
15088      VoiceNoBuild      = WorkerVoiceBuildNot
15089      VoiceRepair       = WorkerVoiceRepair
15090      VoiceDisarm       = WorkerVoiceClearMine
15091      VoiceBuildResponse = WorkerVoiceBuild
15092      VoiceGetHealed      = WorkerVoiceMove
15093  
15094    End
15095  
15096    ; *** ENGINEERING Parameters ***
15097    RadarPriority = UNIT
15098    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER DOZER HARVESTER SCORE
15099  
15100    Body = ActiveBody ModuleTag_02
15101      MaxHealth       = 100.0
15102      InitialHealth   = 100.0
15103    End
15104  
15105    Behavior = WorkerAIUpdate ModuleTag_03
15106      RepairHealthPercentPerSecond  = 2%    ; % of max health to repair each second
15107      BoredTime                     = 5000  ; in milliseconds
15108      BoredRange                    = 150   ; when bored, we look this far away to do something 
15109      MaxBoxes                      = 1
15110      SupplyCenterActionDelay       = 150 ;400 ; ms for whole thing (one transaction)
15111      SupplyWarehouseActionDelay    = 150 ;400 ;ms per box (many small transactions)
15112      SupplyWarehouseScanDistance   = 700 ;350 ; Max distance to look for a warehouse, or we go home.  (Direct dock command on warehouse overrides, and no max on Center Scan)
15113      SuppliesDepletedVoice = WorkerVoiceSuppliesDepleted
15114      ; the only "enemies" that workers can acquire are mines, to be disarmed...
15115      AutoAcquireEnemiesWhenIdle    = Yes
15116    End
15117    Locomotor = SET_NORMAL FastHumanLocomotor
15118    Behavior = PhysicsBehavior ModuleTag_04
15119      Mass = 5.0
15120    End
15121   
15122    Behavior = SquishCollide ModuleTag_06
15123      ;nothing
15124    End
15125  
15126  ; --- begin Death modules ---
15127    Behavior = SlowDeathBehavior ModuleTag_Death01
15128      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
15129      SinkDelay           = 50000
15130      SinkRate            = 0.5     ; in Dist/Sec
15131      DestructionDelay    = 8000000
15132      FX                  = INITIAL FX_GIDie
15133    End
15134    Behavior = SlowDeathBehavior ModuleTag_Death02
15135      DeathTypes          = NONE +CRUSHED +SPLATTED
15136      SinkDelay           = 50000
15137      SinkRate            = 0.5     ; in Dist/Sec
15138      DestructionDelay    = 8000000
15139      FX                  = INITIAL FX_GIDieCrushed
15140    End
15141    Behavior = SlowDeathBehavior ModuleTag_Death03
15142      DeathTypes          = NONE +EXPLODED
15143      SinkDelay           = 50000
15144      SinkRate            = 0.5     ; in Dist/Sec
15145      DestructionDelay    = 8000000
15146      FX                  = INITIAL FX_GIDie
15147      FlingForce          = 8
15148      FlingForceVariance  = 3
15149      FlingPitch          = 60
15150      FlingPitchVariance  = 10
15151    End
15152    Behavior = SlowDeathBehavior ModuleTag_Death04
15153      DeathTypes          = NONE +BURNED
15154      DestructionDelay    = 0
15155      FX                  = INITIAL FX_GIDie
15156      OCL                 = INITIAL OCL_FlamingInfantry
15157    End
15158    Behavior = SlowDeathBehavior ModuleTag_Death05
15159      DeathTypes          = NONE +POISONED
15160      DestructionDelay    = 0
15161      FX                  = INITIAL FX_GIDie
15162      OCL                 = INITIAL OCL_ToxicInfantry
15163    End
15164    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
15165      DeathTypes          = NONE +POISONED_BETA
15166      DestructionDelay    = 0
15167      FX                  = INITIAL FX_GIDie
15168      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
15169    End
15170  ; --- end Death modules ---
15171  
15172    Behavior = StealthDetectorUpdate ModuleTag_12
15173      DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
15174      ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
15175      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
15176      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
15177      ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
15178    End
15179  
15180    Behavior = PoisonedBehavior ModuleTag_13
15181      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
15182      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
15183    End
15184   
15185    Geometry = CYLINDER
15186    Scale = 0.95                            ;Scaling
15187    GeometryMajorRadius = 1.0
15188    GeometryMinorRadius = 1.0
15189    GeometryHeight = 8.0
15190    GeometryIsSmall = Yes
15191    Shadow = SHADOW_DECAL
15192    ShadowSizeX = 9;
15193    ShadowSizeY = 9;
15194    ShadowTexture = ShadowI;
15195    BuildCompletion = APPEARS_AT_RALLY_POINT
15196  
15197  End
15198  
15199  ;------------------------------------------------------------------------------
15200  ; Also known as the Ambulance
15201  Object AmericaVehicleMedic
15202  
15203    ; *** ART Parameters ***
15204    SelectPortrait         = SAAmbulance_L
15205    ButtonImage            = SAAmbulance
15206    
15207    UpgradeCameo1 = Upgrade_AmericaBattleDrone
15208    UpgradeCameo2 = Upgrade_AmericaScoutDrone
15209    ;UpgradeCameo3 = NONE
15210    ;UpgradeCameo4 = NONE
15211    ;UpgradeCameo5 = NONE
15212    
15213    Draw = W3DTruckDraw ModuleTag_01
15214  
15215      ConditionState = NONE
15216        Model = AVAmbulance
15217        Turret = Turret
15218        TurretPitch = TurretEL
15219        WeaponFireFXBone = PRIMARY WeaponA
15220        WeaponLaunchBone = PRIMARY WeaponA
15221      End
15222      ConditionState       = REALLYDAMAGED
15223        Model              = AVAmbulance_D
15224        Turret = Turret
15225        TurretPitch = TurretEL
15226        WeaponFireFXBone = PRIMARY WeaponA
15227        WeaponLaunchBone = PRIMARY WeaponA
15228      End      
15229      
15230      ConditionState       = RUBBLE
15231        Model              = AVAmbulance_D
15232      End      
15233      
15234      TrackMarks = EXTireTrack.tga
15235      OkToChangeModelColor = Yes
15236  
15237      Dust = RocketBuggyDust
15238      DirtSpray = RocketBuggyDirtSpray
15239      PowerslideSpray = RocketBuggyDirtPowerSlide
15240  
15241      ; These parameters are only used if the model has a separate suspension, 
15242      ; and the locomotor has HasSuspension = Yes.
15243      LeftFrontTireBone = Tire01
15244      RightFrontTireBone = Tire02
15245      LeftRearTireBone = Tire03
15246      RightRearTireBone = Tire04
15247      TireRotationMultiplier = 0.2        ; this * speed = rotation.
15248      PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
15249  
15250  
15251    End
15252  
15253    ; ***DESIGN parameters ***
15254    DisplayName      = OBJECT:Medic
15255    Side = America
15256    EditorSorting   = VEHICLE
15257    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
15258    WeaponSet 
15259      ;*** Fully automated and driven by the CleanupHazardUpdate ***
15260      Conditions        = None 
15261      Weapon            = PRIMARY AmbulanceCleanHazardWeapon 
15262      AutoChooseSources = PRIMARY NONE
15263    End
15264    ArmorSet
15265      Conditions      = None
15266      Armor           = ToxinTruckArmor 
15267      DamageFX        = TruckDamageFX
15268    End
15269    BuildCost       = 600
15270    BuildTime       = 10.0          ;in seconds    
15271    VisionRange     = 100
15272    ShroudClearingRange = 400
15273    Prerequisites
15274      Object = AmericaWarFactory
15275    End
15276    ExperienceValue    = 50 50 50 50 ;Experience point value at each level
15277    IsTrainable     = No
15278    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
15279    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
15280    CommandSet      = AmericaVehicleAmbulanceCommandSet
15281    
15282    ; *** AUDIO Parameters ***
15283    VoiceSelect = AmbulanceVoiceSelect
15284    VoiceMove = AmbulanceVoiceMove
15285    VoiceGuard = AmbulanceVoiceMove
15286    VoiceAttack = AmbulanceVoiceDetox
15287    SoundMoveStart = HumveeMoveStart
15288    SoundMoveStartDamaged = HumveeMoveStart
15289    SoundEnter = HumveeEnter
15290    SoundExit = HumveeExit
15291  
15292    UnitSpecificSounds
15293      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
15294      VoiceCreate          = AmbulanceVoiceCreate
15295      TurretMoveStart = NoSound
15296      TurretMoveLoop = TurretMoveLoop
15297      ; Required for the W3DTruckDraw module
15298      TruckLandingSound = RocketBuggyLand
15299      TruckPowerslideSound = RocketBuggyPowerslide
15300      VoiceCrush          = AmbulanceVoiceCrush
15301      VoiceEnter = AmbulanceVoiceMove
15302    End
15303  
15304  
15305    ; *** ENGINEERING Parameters ***
15306    RadarPriority = UNIT
15307    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
15308    
15309    Body = ActiveBody ModuleTag_02
15310      MaxHealth       = 240.0
15311      InitialHealth   = 240.0
15312    End
15313  
15314    Behavior = CleanupHazardUpdate ModuleTag_03
15315      WeaponSlot            = PRIMARY
15316      ScanRate              = 1000
15317      ScanRange             = 100.0 ;If this range exceeds the AmbulanceCleanHazardWeapon AttackRange, it'll move!
15318    End
15319  
15320    ;Can be ordered to clean up a larger area with the ability to move around at an extended range.
15321    Behavior = CleanupAreaPower ModuleTag_04
15322      SpecialPowerTemplate          = SpecialAbilityAmbulanceCleanupArea
15323      MaxMoveDistanceFromLocation   = 300.0 ;allows the unit to move around while cleaning up
15324      InitiateSound = AmbulanceVoiceDetox
15325    End
15326  
15327    Behavior = TransportAIUpdate ModuleTag_05
15328     AutoAcquireEnemiesWhenIdle = No  ;CleanupHazardUpdate handles this...
15329     Turret
15330        TurretTurnRate = 180
15331        TurretPitchRate = 180
15332        AllowsPitch = Yes
15333        MinPhysicalPitch = -20 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
15334        TurretFireAngleSweep = PRIMARY 25
15335        ControlledWeaponSlots = PRIMARY
15336      End
15337    End
15338    Locomotor = SET_NORMAL HumveeLocomotor
15339  
15340    Behavior = TransportContain ModuleTag_06
15341      Slots               = 3
15342      HealthRegen%PerSec  = 25
15343      DamagePercentToUnits = 10%
15344      AllowInsideKindOf   = INFANTRY
15345      AllowAlliesInside   = Yes
15346      AllowNeutralInside  = No
15347      AllowEnemiesInside  = No
15348      ExitDelay = 250
15349      NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
15350      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
15351    End
15352  
15353    Behavior = PhysicsBehavior ModuleTag_07
15354      Mass = 50.0
15355    End
15356    Behavior = SlowDeathBehavior ModuleTag_08
15357      DeathTypes = ALL -CRUSHED -SPLATTED
15358      DestructionDelay = 0
15359      FX  = FINAL FX_GenericTankDeathExplosion
15360      OCL = FINAL OCL_FinalAmbulanceDebris
15361    End
15362  
15363    Behavior = ObjectCreationUpgrade ModuleTag_09
15364      UpgradeObject = OCL_AmericanBattleDrone
15365      TriggeredBy   = Upgrade_AmericaBattleDrone
15366      ConflictsWith = Upgrade_AmericaScoutDrone
15367    End
15368    Behavior = ObjectCreationUpgrade ModuleTag_10
15369      UpgradeObject = OCL_AmericanScoutDrone
15370      TriggeredBy   = Upgrade_AmericaScoutDrone
15371      ConflictsWith = Upgrade_AmericaBattleDrone
15372    End
15373    Behavior = ProductionUpdate ModuleTag_11
15374      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
15375    End
15376  
15377    Behavior = DestroyDie ModuleTag_12
15378      DeathTypes = NONE +CRUSHED +SPLATTED
15379    End
15380  
15381    Behavior = FXListDie ModuleTag_13
15382      DeathTypes = NONE +CRUSHED +SPLATTED
15383      DeathFX = FX_CarCrush
15384    End
15385  
15386    Behavior = CreateObjectDie ModuleTag_14
15387      DeathTypes = NONE +CRUSHED +SPLATTED
15388      CreationList = OCL_CrusaderTank_CrushEffect
15389    End
15390  
15391    Behavior = FXListDie ModuleTag_15
15392      DeathTypes = ALL -CRUSHED -SPLATTED
15393      DeathFX = FX_GenericTankDeathEffect
15394    End
15395  
15396    Behavior = CreateCrateDie ModuleTag_16
15397      CrateData = SalvageCrateData
15398      ;CrateData = EliteTankCrateData
15399      ;CrateData = HeroicTankCrateData
15400    End
15401  
15402    Behavior = ExperienceScalarUpgrade ModuleTag_17
15403      TriggeredBy = Upgrade_AmericaAdvancedTraining
15404      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
15405    End
15406  
15407    Behavior = TransitionDamageFX ModuleTag_18
15408      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
15409      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
15410    End
15411  
15412    Behavior = FlammableUpdate ModuleTag_21
15413      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
15414      AflameDamageAmount = 3       ; taking this much damage...
15415      AflameDamageDelay = 500       ; this often.
15416  
15417    End
15418  
15419    Behavior = AutoHealBehavior ModuleTag_22
15420      HealingAmount     = 4
15421      HealingDelay      = 1000 ; msec
15422      Radius            = 100.0f
15423      StartsActive      = Yes
15424      KindOf            = INFANTRY
15425    End
15426  
15427    Geometry = BOX
15428    GeometryMajorRadius = 14.0
15429    GeometryMinorRadius = 7.0
15430    GeometryHeight = 12.0  ; height set to allow clear clipping of projectile streams   
15431    GeometryIsSmall = Yes   
15432    Shadow = SHADOW_VOLUME 
15433  
15434  End
15435  
15436  ;------------------------------------------------------------------------------
15437  Object AmericaVehicleBattleDrone
15438  
15439    ; *** ART Parameters ***
15440    SelectPortrait         = SABattleDrone_L
15441    ButtonImage            = SABattleDrone
15442    
15443    UpgradeCameo1 = Upgrade_AmericaDroneArmor
15444    ;UpgradeCameo2 = NONE
15445    ;UpgradeCameo3 = NONE
15446    ;UpgradeCameo4 = NONE
15447    ;UpgradeCameo5 = NONE
15448  
15449    ;MAIN CHASSIS
15450    Draw = W3DModelDraw ModuleTag_01
15451      OkToChangeModelColor = Yes
15452  
15453      DefaultConditionState
15454        Model = AVBATTLEDR
15455        Animation = AVBATTLEDR.AVBATTLEDR
15456        AnimationMode = LOOP
15457        Turret = Turret01
15458        TurretPitch = TurretEL01
15459        WeaponMuzzleFlash = PRIMARY TurretFX01
15460        WeaponFireFXBone = PRIMARY Muzzle01
15461      End
15462  
15463      ConditionState = REALLYDAMAGED
15464        Model = AVBATTLEDR_D
15465        Animation = AVBATTLEDR_D.AVBATTLEDR_D
15466        AnimationMode = LOOP
15467      End
15468    End
15469  
15470    ;EXTENDING ARM (FOR REPAIRING)
15471    Draw = W3DModelDraw ModuleTag_02
15472      OkToChangeModelColor = Yes
15473  
15474      DefaultConditionState
15475        Model = AVBATTLEDR_A
15476      End
15477  
15478      ;Unloading the arm (before starting to repair)
15479      ConditionState = UNPACKING
15480        Animation = AVBATTLEDR_A1.AVBATTLEDR_A1
15481        AnimationMode = ONCE
15482      End
15483  
15484      ;Loading the arm (after reparing complete)
15485      ConditionState = PACKING
15486        Animation = AVBATTLEDR_A1.AVBATTLEDR_A1
15487        AnimationMode = ONCE_BACKWARDS
15488        Flags = START_FRAME_LAST
15489      End
15490  
15491      ;Repair extending animation 1 (using bogus condition states -- doesn't justify making a whole new set)
15492      ConditionState = FIRING_B
15493        Animation = AVBATTLEDR_A2.AVBATTLEDR_A2
15494        AnimationMode = ONCE
15495      End
15496  
15497  
15498      ;Repair retracting animation 1 (using bogus condition states -- doesn't justify making a whole new set)
15499      ConditionState = FIRING_C
15500        Animation = AVBATTLEDR_A2.AVBATTLEDR_A2
15501        AnimationMode = ONCE_BACKWARDS
15502        Flags = START_FRAME_LAST
15503      End
15504  
15505    End
15506  
15507  
15508    ; ***DESIGN parameters ***
15509    DisplayName         = OBJECT:BattleDrone
15510    Side                = America
15511    EditorSorting       = VEHICLE
15512    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
15513    WeaponSet
15514      Conditions        = None 
15515      Weapon            = PRIMARY BattleDroneMachineGun
15516    End
15517    ArmorSet
15518      Conditions        = None
15519      Armor             = TankArmor
15520      DamageFX          = SmallTankDamageFX
15521    End
15522  
15523    BuildCost           = 200
15524    BuildTime           = 5.0          ;in seconds    
15525    VisionRange         = 150
15526    ShroudClearingRange = 150
15527    Prerequisites
15528      Object = AmericaWarFactory
15529    End
15530    ExperienceValue     = 10 10 10 10 ;Experience point value at each level
15531    IsTrainable         = No
15532    
15533    ; *** AUDIO Parameters ***
15534    VoiceSelect         = NoSound
15535    VoiceMove           = NoSound
15536    VoiceAttack         = NoSound
15537    SoundMoveStart      = NoSound
15538    UnitSpecificSounds
15539    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
15540      TurretMoveStart   = NoSound
15541      TurretMoveLoop    = TurretMoveLoop
15542    End
15543  
15544    ; *** ENGINEERING Parameters ***
15545    RadarPriority       = UNIT
15546    KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SELECTABLE CAN_ATTACK DRONE   
15547    Body = ActiveBody ModuleTag_03
15548      MaxHealth       = 100.0
15549      InitialHealth   = 100.0
15550    End
15551  
15552    Behavior = AIUpdateInterface ModuleTag_04
15553      Turret
15554        TurretTurnRate        = 360   // turn rate, in degrees per sec
15555        TurretPitchRate       = 360
15556        MinPhysicalPitch      = -75 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
15557        AllowsPitch           = Yes
15558        ControlledWeaponSlots = PRIMARY
15559      End
15560      AutoAcquireEnemiesWhenIdle = Yes
15561    End
15562    Locomotor = SET_NORMAL BattleDroneLocomotor
15563    Locomotor = SET_PANIC BattleDronePanicLocomotor   ;used for repairing master (zippy)
15564    Behavior = PhysicsBehavior ModuleTag_05
15565      Mass = 50.0
15566      KillWhenRestingOnGround = Yes
15567      AllowBouncing = No
15568    End
15569  
15570    Behavior = MaxHealthUpgrade ModuleTag_06
15571      TriggeredBy   = Upgrade_AmericaDroneArmor
15572      AddMaxHealth  = 50.0
15573      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
15574    End
15575  
15576    Behavior = SlavedUpdate ModuleTag_07
15577      GuardMaxRange = 35      ;How far away from master I'm allowed when master is idle (doesn't wander)
15578      GuardWanderRange = 35   ;How far away I'm allowed to wander from master while guarding.
15579      AttackRange = 75        ;How far away from master I'm allowed when master is attacking a target.
15580      AttackWanderRange = 10  ;How far I'm allowed to wander from target.
15581      ScoutRange = 75         ;How far away from master I'm allowed when master is moving.
15582      ScoutWanderRange = 10   ;How far I'm allowed to wander from scout point.
15583      RepairRange = 8         ;How far I can zip around while repair (only moves when he stops welding)
15584      RepairMinAltitude = 18.0   ;My minimum repair hover altitude.
15585      RepairMaxAltitude = 24.0   ;My maximum repair hover altitude.
15586      RepairRatePerSecond = 5.0 ;How many health points can I repair per second.
15587      RepairWhenBelowHealth% = 60 ;How low should my master's health be (in %) before I should prioritize repairing.
15588      RepairMinReadyTime = 300
15589      RepairMaxReadyTime = 750
15590      RepairMinWeldTime = 250
15591      RepairMaxWeldTime = 500
15592      RepairWeldingSys = BlueSparks
15593      RepairWeldingFXBone = Muzzle02
15594      StayOnSameLayerAsMaster = Yes
15595    End
15596  
15597    Behavior = DestroyDie ModuleTag_08
15598      DeathTypes = ALL
15599    End
15600    Behavior                 = CreateObjectDie  ModuleTag_09
15601      DeathTypes = ALL
15602      CreationList      = OCL_AmericaBattleDroneExplode
15603    End
15604    
15605    Behavior                 = TransitionDamageFX ModuleTag_10
15606      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
15607      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleDroneDamageTransitionSmall
15608    End
15609    
15610    Behavior                 = FXListDie ModuleTag_11
15611      DeathTypes = ALL
15612      DeathFX           = FX_AmericaBattleDroneExplode
15613    End
15614  
15615    Behavior = UpgradeDie  ModuleTag_12
15616      ;This frees the object based upgrade for the producer object.
15617      DeathTypes = ALL
15618      UpgradeToRemove     = Upgrade_AmericaBattleDrone ModuleTag_13
15619    End
15620  
15621    Behavior = FlammableUpdate ModuleTag_21
15622      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
15623      AflameDamageAmount = 3       ; taking this much damage...
15624      AflameDamageDelay = 500       ; this often.
15625    End
15626  
15627    Geometry = CYLINDER
15628    GeometryMajorRadius = 5
15629    GeometryMinorRadius = 5
15630    GeometryHeight = 10.0     
15631    GeometryIsSmall = Yes 
15632    Shadow = SHADOW_VOLUME
15633    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
15634  
15635  End
15636  
15637  ;------------------------------------------------------------------------------
15638  ; **data here is a copy and paste of AmericaVehicleMedic**
15639  Object AmericaVehicleGuardianDrone
15640  
15641    ; *** ART Parameters ***
15642    Draw = W3DTankDraw ModuleTag_01
15643      DefaultConditionState
15644        Model = AVGuardDr
15645        Turret = Turret
15646        WeaponFireFXBone = PRIMARY TurretMS
15647        WeaponMuzzleFlash = PRIMARY TurretFX
15648      End
15649      TrackMarks = EXTnkTrack.tga
15650      OkToChangeModelColor = Yes
15651    End
15652  
15653    ; ***DESIGN parameters ***
15654    DisplayName      = OBJECT:GuardianDrone
15655    Side = America
15656    EditorSorting   = VEHICLE
15657    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
15658    WeaponSet
15659      Conditions = None 
15660      Weapon = PRIMARY CrusaderTankGun
15661    End
15662    ArmorSet
15663      Conditions      = None
15664      Armor           = TankArmor
15665      DamageFX        = TankDamageFX
15666    End
15667    BuildCost       = 700
15668    BuildTime       = 8.0          ;in seconds    
15669    VisionRange     = 150
15670    ShroudClearingRange = 150
15671    Prerequisites
15672      Object = AmericaWarFactory
15673    End
15674    ExperienceValue    = 50 100 150 400 ;Experience point value at each level
15675    IsTrainable     = No
15676    
15677    ; *** AUDIO Parameters ***
15678    VoiceSelect = NoSound
15679    VoiceMove = NoSound
15680    VoiceAttack = NoSound
15681    SoundMoveStart = NoSound
15682  
15683    UnitSpecificSounds
15684      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
15685      TurretMoveStart = NoSound
15686      TurretMoveLoop = TurretMoveLoop
15687    End
15688  
15689  
15690    ; *** ENGINEERING Parameters ***
15691    RadarPriority = UNIT
15692    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
15693    
15694    Body = ActiveBody ModuleTag_02
15695      MaxHealth       = 300.0
15696      InitialHealth   = 300.0
15697    End
15698  
15699  
15700    Behavior = AIUpdateInterface ModuleTag_03
15701      Turret
15702        TurretTurnRate = 60   // turn rate, in degrees per sec
15703        ControlledWeaponSlots = PRIMARY
15704      End
15705      AutoAcquireEnemiesWhenIdle = Yes
15706    End
15707    Locomotor = SET_NORMAL BasicTankLocomotor
15708    Behavior = PhysicsBehavior ModuleTag_04
15709      Mass = 50.0
15710    End
15711    Behavior = SlowDeathBehavior ModuleTag_05
15712      DestructionDelay = 500
15713      FX = FINAL FX_GenericTankDeathExplosion
15714    End
15715  
15716    Behavior = MaxHealthUpgrade ModuleTag_06
15717      TriggeredBy   = Upgrade_AmericaDroneArmor
15718      AddMaxHealth  = 50.0
15719      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
15720    End
15721  
15722    Behavior = FXListDie ModuleTag_07
15723      DeathFX = FX_GenericTankDeathEffect
15724    End
15725    Behavior = CreateObjectDie ModuleTag_08
15726      CreationList = OCL_GenericTankDeathEffect
15727    End
15728    Behavior = CreateCrateDie ModuleTag_09
15729      CrateData = SalvageCrateData
15730     ;CrateData = EliteTankCrateData
15731     ;CrateData = HeroicTankCrateData
15732    End
15733    
15734    Behavior                 = TransitionDamageFX ModuleTag_10
15735      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
15736    End
15737  
15738    Behavior = FlammableUpdate ModuleTag_21
15739      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
15740      AflameDamageAmount = 3       ; taking this much damage...
15741      AflameDamageDelay = 500       ; this often.
15742    End
15743  
15744    Geometry = BOX
15745    GeometryMajorRadius = 15.0
15746    GeometryMinorRadius = 10.0
15747    GeometryHeight = 10.0     
15748    GeometryIsSmall = Yes    
15749    Shadow = SHADOW_VOLUME
15750    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
15751  
15752  End
15753  
15754  
15755  ;------------------------------------------------------------------------------
15756  Object AmericaVehicleScoutDrone
15757  
15758    ; *** ART Parameters ***
15759    SelectPortrait         = SAScout_L
15760    ButtonImage            = SAScout
15761    
15762    UpgradeCameo1 = Upgrade_AmericaDroneArmor
15763    ;UpgradeCameo2 = NONE
15764    ;UpgradeCameo3 = NONE
15765    ;UpgradeCameo4 = NONE
15766    ;UpgradeCameo5 = NONE
15767    
15768    Draw = W3DModelDraw ModuleTag_01
15769      OkToChangeModelColor = Yes
15770  
15771      ConditionState = NONE
15772        Model = AVScoutDr
15773        Animation = AVScoutDr.AVScoutDr
15774        AnimationMode = LOOP
15775      End
15776  
15777      ConditionState = REALLYDAMAGED
15778        Model = AVScoutDr_d
15779        Animation = AVScoutDr_d.AVScoutDr_d
15780        AnimationMode = LOOP
15781      End
15782    End
15783  
15784    ; ***DESIGN parameters ***
15785    DisplayName      = OBJECT:ScoutDrone
15786    Side = America
15787    EditorSorting   = VEHICLE
15788    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
15789    ArmorSet
15790      Conditions      = None
15791      Armor           = TankArmor
15792      DamageFX        = SmallTankDamageFX
15793    End
15794    BuildCost       = 100
15795    BuildTime       = 5.0          ;in seconds    
15796    VisionRange     = 150
15797    ShroudClearingRange = 500
15798    IsTrainable     = No  ;Can gain experience
15799    
15800    ; *** AUDIO Parameters ***
15801    VoiceSelect = NoSound
15802    VoiceMove = NoSound
15803    VoiceAttack = NoSound
15804    SoundMoveStart = NoSound
15805  
15806    UnitSpecificSounds
15807      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
15808      TurretMoveStart = NoSound
15809      TurretMoveLoop = TurretMoveLoop
15810    End
15811  
15812  
15813    ; *** ENGINEERING Parameters ***
15814    RadarPriority = UNIT
15815    KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SELECTABLE DRONE
15816    
15817    Body = ActiveBody ModuleTag_02
15818      MaxHealth       = 20.0
15819      InitialHealth   = 20.0
15820    End
15821  
15822    Behavior = AIUpdateInterface ModuleTag_03
15823      Turret
15824        TurretTurnRate = 60   // turn rate, in degrees per sec
15825        ControlledWeaponSlots = PRIMARY
15826      End
15827      AutoAcquireEnemiesWhenIdle = Yes
15828    End
15829    Locomotor = SET_NORMAL DroneLocomotor
15830    Behavior = StealthDetectorUpdate ModuleTag_04
15831      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
15832      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
15833      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
15834      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
15835    End
15836    Behavior = PhysicsBehavior ModuleTag_05
15837      Mass = 50.0
15838      KillWhenRestingOnGround = Yes
15839      AllowBouncing = No
15840    End
15841  
15842    Behavior = SlavedUpdate ModuleTag_06
15843      GuardMaxRange = 35      ;How far away from master I'm allowed when master is idle (doesn't wander)
15844      GuardWanderRange = 35   ;How far away I'm allowed to wander from master while guarding.
15845      AttackRange = 75        ;How far away from master I'm allowed when master is attacking a target.
15846      AttackWanderRange = 10  ;How far I'm allowed to wander from target.
15847      ScoutRange = 75         ;How far away from master I'm allowed when master is moving.
15848      ScoutWanderRange = 10   ;How far I'm allowed to wander from scout point.
15849      DistToTargetToGrantRangeBonus = 20 ;How close I have to be to the master's target in order to grant master a range bonus.
15850      StayOnSameLayerAsMaster = Yes
15851    End
15852  
15853    Behavior = MaxHealthUpgrade ModuleTag_07
15854      TriggeredBy   = Upgrade_AmericaDroneArmor
15855      AddMaxHealth  = 50.0
15856      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
15857    End
15858  
15859    Behavior = DestroyDie ModuleTag_08
15860      DeathTypes = ALL
15861    End
15862    Behavior                 = CreateObjectDie ModuleTag_09
15863      DeathTypes = ALL
15864      CreationList      = OCL_AmericaScoutDroneExplode
15865    End
15866    Behavior                 = FXListDie ModuleTag_10
15867      DeathTypes = ALL
15868      DeathFX           = FX_AmericaScoutDroneExplode
15869    End
15870    
15871    Behavior                 = TransitionDamageFX ModuleTag_11
15872      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
15873      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleDroneDamageTransitionSmall
15874    End
15875  
15876    Behavior = UpgradeDie  ModuleTag_12
15877     ;This frees the object based upgrade for the producer object.
15878     DeathTypes = ALL
15879     UpgradeToRemove      = Upgrade_AmericaScoutDrone ModuleTag_13
15880    End
15881  
15882  
15883    Behavior = FlammableUpdate ModuleTag_21
15884      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
15885      AflameDamageAmount = 3       ; taking this much damage...
15886      AflameDamageDelay = 500       ; this often.
15887    End
15888  
15889    Geometry = CYLINDER
15890    GeometryMajorRadius = 5.0
15891    GeometryMinorRadius = 6.0
15892    GeometryHeight = 3.0
15893    GeometryIsSmall = Yes
15894    Shadow = SHADOW_VOLUME
15895    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
15896  
15897  End
15898  
15899  ;------------------------------------------------------------------------------
15900  Object AmericaVehicleSpyDrone
15901  
15902    ; *** ART Parameters ***
15903    SelectPortrait         = SAScout_L
15904    ButtonImage            = SAScout
15905    Draw = W3DModelDraw ModuleTag_01
15906      OkToChangeModelColor = Yes
15907  
15908      ConditionState = NONE
15909        Model = AVSpyDrone
15910        Animation = AVSpyDrone.AVSpyDrone
15911        AnimationMode = LOOP
15912      End
15913  
15914  ; Damage state waiting for pristine's approval (or may just not need one)
15915  ;    ConditionState = REALLYDAMAGED
15916  ;      Model = AVSpyDrone_d
15917  ;      Animation = AVSpyDrone_d.AVSpyDrone_d
15918  ;      AnimationMode = LOOP
15919  ;    End
15920    End
15921  
15922    ; ***DESIGN parameters ***
15923    DisplayName      = OBJECT:SpyDrone
15924    Side = America
15925    EditorSorting   = VEHICLE
15926    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
15927    ArmorSet
15928      Conditions      = None
15929      Armor           = AirplaneArmor
15930      DamageFX        = SmallTankDamageFX
15931    End
15932    VisionRange     = 250
15933    ShroudClearingRange = 0; Dynamic range below
15934    IsTrainable     = No 
15935    
15936    ; *** AUDIO Parameters ***
15937    VoiceSelect = NoSound
15938    VoiceMove = NoSound
15939    VoiceAttack = NoSound
15940    SoundMoveStart = NoSound
15941  
15942    UnitSpecificSounds
15943      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
15944      TurretMoveStart = NoSound
15945      TurretMoveLoop = TurretMoveLoop
15946    End
15947  
15948  
15949    ; *** ENGINEERING Parameters ***
15950    RadarPriority = UNIT
15951    KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE DRONE SELECTABLE INERT
15952    
15953    Body = ActiveBody ModuleTag_02
15954      MaxHealth       = 200.0
15955      InitialHealth   = 200.0
15956    End
15957  
15958    Behavior = AIUpdateInterface ModuleTag_03
15959      AutoAcquireEnemiesWhenIdle = No
15960    End
15961  
15962    Locomotor = SET_NORMAL SpyDroneLocomtor
15963  
15964    Behavior = DynamicShroudClearingRangeUpdate ModuleTag_04
15965      FinalVision = 250.0 
15966      ChangeInterval = 50
15967      ShrinkDelay = 2000
15968      ShrinkTime = 1000
15969      GrowDelay = 0
15970      GrowTime = 1000
15971      GrowInterval = 10 ; Faster than most
15972  
15973      GridDecalTemplate
15974        Texture           = EXGrid
15975        Style             = SHADOW_ADDITIVE_DECAL
15976        OpacityMin        = 50%
15977        OpacityMax        = 100%
15978        OpacityThrobTime  = 500
15979        Color             = R:32 G:64 B:128 A:0 //dim blue, additive
15980      End
15981  
15982    End
15983  
15984    Behavior = StealthDetectorUpdate ModuleTag_05
15985      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
15986      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
15987      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
15988      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
15989    End
15990    Behavior = PhysicsBehavior ModuleTag_06
15991      Mass = 50.0
15992    End
15993  
15994    Behavior = DestroyDie ModuleTag_07
15995      DeathTypes = ALL
15996    End
15997    Behavior                 = CreateObjectDie ModuleTag_08
15998      DeathTypes = ALL
15999      CreationList      = OCL_AmericaScoutDroneExplode
16000    End
16001    Behavior = StealthUpdate ModuleTag_09
16002      StealthDelay                = 0 ; msec
16003      StealthForbiddenConditions  = NONE
16004      InnateStealth               = Yes
16005      OrderIdleEnemiesToAttackMeUponReveal  = Yes
16006    End
16007    Behavior = MaxHealthUpgrade ModuleTag_10
16008      TriggeredBy   = Upgrade_AmericaDroneArmor
16009      AddMaxHealth  = 50.0
16010      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
16011    End
16012  
16013    Behavior = FlammableUpdate ModuleTag_21
16014      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
16015      AflameDamageAmount = 3       ; taking this much damage...
16016      AflameDamageDelay = 500       ; this often.
16017    End
16018  
16019    Geometry = CYLINDER
16020    GeometryMajorRadius = 5.0
16021    GeometryMinorRadius = 6.0
16022    GeometryHeight = 3.0
16023    GeometryIsSmall = Yes
16024    Shadow = SHADOW_VOLUME
16025    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
16026  
16027  End
16028  
16029  ;------------------------------------------------------------------------------
16030  Object AmericaTankCrusader
16031  
16032    ; *** ART Parameters ***
16033    SelectPortrait         = SACLeopard_L
16034    ButtonImage            = SACLeopard
16035    
16036    UpgradeCameo1 = Upgrade_AmericaBattleDrone
16037    UpgradeCameo2 = Upgrade_AmericaScoutDrone
16038    UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
16039    UpgradeCameo4 = Upgrade_AmericaCompositeArmor
16040    ;UpgradeCameo5 = NONE
16041    
16042    Draw = W3DTankDraw ModuleTag_01
16043      DefaultConditionState
16044        Model               = AVLeopard
16045        Turret              = Turret
16046        WeaponFireFXBone    = PRIMARY TurretMS
16047        WeaponRecoilBone    = PRIMARY Barrel
16048        WeaponMuzzleFlash   = PRIMARY TurretFX
16049        WeaponLaunchBone = PRIMARY TurretMS
16050      End
16051      ConditionState       = REALLYDAMAGED
16052        Model              = AVLeopard_D
16053      End
16054      ConditionState       = RUBBLE
16055        Model              = AVLeopard_D
16056      End
16057  
16058      TrackMarks           = EXTnkTrack.tga
16059      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
16060      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
16061      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
16062      OkToChangeModelColor = Yes
16063    End
16064  
16065    ; ***DESIGN parameters ***
16066    DisplayName      = OBJECT:Crusader
16067    Side                   = America
16068    EditorSorting          = VEHICLE
16069    TransportSlotCount     = 3
16070    WeaponSet
16071      Conditions           = None 
16072      Weapon               = PRIMARY CrusaderTankGun
16073      ; Uncomment this when we want the crusader to have a machine too again
16074      ;Weapon               = SECONDARY CrusaderMachineGun
16075    End
16076    ArmorSet
16077      Conditions           = None
16078      Armor                = TankArmor
16079      DamageFX             = TankDamageFX
16080    End
16081    ;ArmorSet
16082    ;  Conditions           = PLAYER_UPGRADE
16083    ;  Armor                = UpgradedTankArmor
16084    ;  DamageFX             = TankDamageFX
16085    ;End
16086    BuildCost              = 900
16087    BuildTime              = 10.0          ;in seconds    
16088    VisionRange            = 150
16089    ShroudClearingRange = 300
16090    Prerequisites
16091      Object = AmericaWarFactory
16092    End
16093    ExperienceValue        = 100 100 200 400 ;Experience point value at each level
16094    ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level
16095    IsTrainable            = Yes  ;Can gain experience
16096    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
16097    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
16098    CommandSet             = AmericaTankCrusaderCommandSet
16099    
16100    ; *** AUDIO Parameters ***
16101    VoiceSelect           = CrusaderTankVoiceSelect
16102    VoiceMove             = CrusaderTankVoiceMove
16103    VoiceGuard            = CrusaderTankVoiceMove
16104    VoiceAttack           = CrusaderTankVoiceAttack
16105    SoundMoveStart        = CrusaderTankMoveStart
16106    SoundMoveStartDamaged = CrusaderTankMoveStart
16107    UnitSpecificSounds
16108      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
16109      VoiceCreate         = CrusaderTankVoiceCreate
16110      VoiceEnter             = CrusaderTankVoiceMove
16111      TurretMoveStart     = NoSound
16112      TurretMoveLoop      = TurretMoveLoop
16113      SoundEject          = PilotSoundEject
16114      VoiceEject          = PilotVoiceEject
16115      VoiceCrush          = CrusaderTankVoiceCrush
16116    End
16117  
16118    ; *** ENGINEERING Parameters ***
16119    RadarPriority          = UNIT
16120    KindOf                 = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
16121    
16122    Body                   = ActiveBody ModuleTag_02
16123      MaxHealth       = 550
16124      InitialHealth   = 550
16125    End
16126  
16127    Behavior = AIUpdateInterface ModuleTag_03
16128      Turret
16129        TurretTurnRate       = 180 ;60   // turn rate, in degrees per sec
16130        ControlledWeaponSlots= PRIMARY
16131      End
16132      AutoAcquireEnemiesWhenIdle = Yes
16133    End
16134    Locomotor            = SET_NORMAL CrusaderLocomotor
16135    Behavior = PhysicsBehavior ModuleTag_04
16136      Mass                 = 50.0
16137    End
16138  
16139    Behavior = ObjectCreationUpgrade ModuleTag_05
16140      UpgradeObject = OCL_AmericanBattleDrone
16141      TriggeredBy   = Upgrade_AmericaBattleDrone
16142      ConflictsWith = Upgrade_AmericaScoutDrone
16143    End
16144    Behavior = ObjectCreationUpgrade ModuleTag_06
16145      UpgradeObject = OCL_AmericanScoutDrone
16146      TriggeredBy   = Upgrade_AmericaScoutDrone
16147      ConflictsWith = Upgrade_AmericaBattleDrone
16148    End
16149    Behavior = ProductionUpdate ModuleTag_07
16150      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
16151    End
16152  
16153    Behavior = ExperienceScalarUpgrade ModuleTag_08
16154      TriggeredBy   = Upgrade_AmericaAdvancedTraining
16155      AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
16156    End
16157    Behavior = MaxHealthUpgrade ModuleTag_09
16158      TriggeredBy   = Upgrade_AmericaCompositeArmor
16159      AddMaxHealth  = 100.0
16160      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
16161    End
16162  
16163    ; Turret fly off death
16164    Behavior = SlowDeathBehavior ModuleTag_10
16165      DeathTypes = ALL -CRUSHED -SPLATTED
16166      ProbabilityModifier  = 50
16167      DestructionDelay  = 500
16168      DestructionDelayVariance  = 100
16169      FX  = INITIAL  FX_GenericTankDeathEffect
16170      OCL = MIDPOINT OCL_GenericTankDeathEffect
16171      FX  = FINAL    FX_GenericTankDeathExplosion
16172      OCL = FINAL    OCL_CrusaderTurret
16173    End
16174  
16175    ; Catch fire, and explode death
16176    Behavior = SlowDeathBehavior ModuleTag_11
16177      DeathTypes = ALL -CRUSHED -SPLATTED
16178      ProbabilityModifier  = 50
16179      DestructionDelay  = 2000
16180      DestructionDelayVariance  = 300
16181      FX  = INITIAL  FX_CrusaderCatchFire
16182      OCL = FINAL    OCL_GenericTankDeathEffect  
16183      FX  = FINAL    FX_GenericTankDeathExplosion
16184    End
16185  
16186    Behavior                 = TransitionDamageFX ModuleTag_12
16187      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
16188      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
16189    End
16190  
16191    Behavior = DestroyDie ModuleTag_13
16192      DeathTypes = NONE +CRUSHED +SPLATTED
16193    End
16194  
16195    ; A crushing defeat
16196    Behavior = FXListDie ModuleTag_14
16197      DeathTypes = NONE +CRUSHED +SPLATTED
16198      DeathFX = FX_CarCrush
16199    End
16200  
16201    Behavior = CreateObjectDie ModuleTag_15
16202      DeathTypes = NONE +CRUSHED +SPLATTED
16203      CreationList = OCL_CrusaderTank_CrushEffect
16204    End
16205  
16206    Behavior                    = CreateCrateDie ModuleTag_CratesChange
16207     CrateData             = SalvageCrateData
16208     ;CrateData             = EliteTankCrateData
16209     ;CrateData             = HeroicTankCrateData
16210    End
16211  
16212    Behavior = EjectPilotDie ModuleTag_17
16213      GroundCreationList = OCL_EjectPilotOnGround
16214      AirCreationList = OCL_EjectPilotViaParachute
16215      ExemptStatus = HIJACKED
16216      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
16217    End
16218  
16219    Behavior = MaxHealthUpgrade ModuleTag_18
16220      TriggeredBy   = Upgrade_AmericaCompositeArmor
16221      AddMaxHealth  = 100.0
16222      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
16223    End
16224  
16225    Behavior = FlammableUpdate ModuleTag_21
16226      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
16227      AflameDamageAmount = 3       ; taking this much damage...
16228      AflameDamageDelay = 500       ; this often.
16229    End
16230  
16231    Geometry               = BOX
16232    GeometryMajorRadius    = 15.0
16233    GeometryMinorRadius    = 10.0
16234    GeometryHeight         = 10.0     
16235    GeometryIsSmall        = Yes    
16236    Shadow = SHADOW_VOLUME
16237    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
16238  
16239  End
16240  
16241  ;------------------------------------------------------------------------------
16242  ;******************************* Cinematic-Only unit **************************
16243  Object CINE_AmericaTankCrusader
16244  
16245    ; *** ART Parameters ***
16246    SelectPortrait         = SACLeopard_L
16247    ButtonImage            = SACLeopard
16248    
16249    UpgradeCameo1 = Upgrade_AmericaBattleDrone
16250    UpgradeCameo2 = Upgrade_AmericaScoutDrone
16251    UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
16252    UpgradeCameo4 = Upgrade_AmericaCompositeArmor
16253    ;UpgradeCameo5 = NONE
16254    
16255    Draw = W3DTankDraw ModuleTag_01
16256      DefaultConditionState
16257        Model               = AVLeopard
16258        Turret              = Turret
16259        WeaponFireFXBone    = PRIMARY TurretMS
16260        WeaponRecoilBone    = PRIMARY Barrel
16261        WeaponMuzzleFlash   = PRIMARY TurretFX
16262        WeaponLaunchBone = PRIMARY TurretMS
16263      End
16264      ConditionState       = REALLYDAMAGED
16265        Model              = AVLeopard_D
16266      End
16267      ConditionState       = RUBBLE
16268        Model              = AVLeopard_D
16269      End
16270  
16271      TrackMarks           = EXTnkTrack.tga
16272      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
16273      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
16274      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
16275      OkToChangeModelColor = Yes
16276    End
16277  
16278    ; ***DESIGN parameters ***
16279    DisplayName      = OBJECT:Crusader
16280    Side                   = America
16281    EditorSorting          = VEHICLE
16282    TransportSlotCount     = 3
16283    WeaponSet
16284      Conditions           = None 
16285      Weapon               = PRIMARY CrusaderTankGun
16286      ; Uncomment this when we want the crusader to have a machine too again
16287      ;Weapon               = SECONDARY CrusaderMachineGun
16288    End
16289    ArmorSet
16290      Conditions           = None
16291      Armor                = TankArmor
16292      DamageFX             = TankDamageFX
16293    End
16294    ;ArmorSet
16295    ;  Conditions           = PLAYER_UPGRADE
16296    ;  Armor                = UpgradedTankArmor
16297    ;  DamageFX             = TankDamageFX
16298    ;End
16299    BuildCost              = 900
16300    BuildTime              = 10.0          ;in seconds    
16301    VisionRange            = 150
16302    ShroudClearingRange = 300
16303    Prerequisites
16304      Object = AmericaWarFactory
16305    End
16306    ExperienceValue        = 100 100 200 400 ;Experience point value at each level
16307    ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level
16308    IsTrainable            = Yes  ;Can gain experience
16309    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
16310    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
16311    CommandSet             = AmericaTankCrusaderCommandSet
16312    
16313    ; *** AUDIO Parameters ***
16314    VoiceSelect           = CrusaderTankVoiceSelect
16315    VoiceMove             = CrusaderTankVoiceMove
16316    VoiceGuard            = CrusaderTankVoiceMove
16317    VoiceAttack           = CrusaderTankVoiceAttack
16318    SoundMoveStart        = CrusaderTankMoveStart
16319    SoundMoveStartDamaged = CrusaderTankMoveStart
16320    UnitSpecificSounds
16321      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
16322      VoiceCreate         = CrusaderTankVoiceCreate
16323      VoiceEnter             = CrusaderTankVoiceMove
16324      TurretMoveStart     = NoSound
16325      TurretMoveLoop      = TurretMoveLoop
16326      SoundEject          = PilotSoundEject
16327      VoiceEject          = PilotVoiceEject
16328      VoiceCrush          = CrusaderTankVoiceCrush
16329    End
16330  
16331    ; *** ENGINEERING Parameters ***
16332    RadarPriority          = UNIT
16333    KindOf                 = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
16334    
16335    Body                   = ActiveBody ModuleTag_02
16336      MaxHealth       = 480
16337      InitialHealth   = 480
16338    End
16339  
16340    Behavior = AIUpdateInterface ModuleTag_03
16341      Turret
16342        TurretTurnRate       = 180 ;60   // turn rate, in degrees per sec
16343        ControlledWeaponSlots= PRIMARY
16344      End
16345      AutoAcquireEnemiesWhenIdle = Yes
16346    End
16347    Locomotor            = SET_NORMAL CINE_CrusaderLocomotor
16348    Behavior = PhysicsBehavior ModuleTag_04
16349      Mass                 = 50.0
16350    End
16351  
16352    Behavior = ObjectCreationUpgrade ModuleTag_05
16353      UpgradeObject = OCL_AmericanBattleDrone
16354      TriggeredBy   = Upgrade_AmericaBattleDrone
16355      ConflictsWith = Upgrade_AmericaScoutDrone
16356    End
16357    Behavior = ObjectCreationUpgrade ModuleTag_06
16358      UpgradeObject = OCL_AmericanScoutDrone
16359      TriggeredBy   = Upgrade_AmericaScoutDrone
16360      ConflictsWith = Upgrade_AmericaBattleDrone
16361    End
16362    Behavior = ProductionUpdate ModuleTag_07
16363      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
16364    End
16365  
16366    Behavior = ExperienceScalarUpgrade ModuleTag_08
16367      TriggeredBy   = Upgrade_AmericaAdvancedTraining
16368      AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
16369    End
16370    Behavior = MaxHealthUpgrade ModuleTag_09
16371      TriggeredBy   = Upgrade_AmericaCompositeArmor
16372      AddMaxHealth  = 100.0
16373      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
16374    End
16375  
16376    ; Turret fly off death
16377    Behavior = SlowDeathBehavior ModuleTag_10
16378      DeathTypes = ALL -CRUSHED -SPLATTED
16379      ProbabilityModifier  = 50
16380      DestructionDelay  = 500
16381      DestructionDelayVariance  = 100
16382      FX  = INITIAL  FX_GenericTankDeathEffect
16383      OCL = MIDPOINT OCL_GenericTankDeathEffect
16384      FX  = FINAL    FX_GenericTankDeathExplosion
16385      OCL = FINAL    OCL_CrusaderTurret
16386    End
16387  
16388    ; Catch fire, and explode death
16389    Behavior = SlowDeathBehavior ModuleTag_11
16390      DeathTypes = ALL -CRUSHED -SPLATTED
16391      ProbabilityModifier  = 50
16392      DestructionDelay  = 2000
16393      DestructionDelayVariance  = 300
16394      FX  = INITIAL  FX_CrusaderCatchFire
16395      OCL = FINAL    OCL_GenericTankDeathEffect  
16396      FX  = FINAL    FX_GenericTankDeathExplosion
16397    End
16398  
16399    Behavior                 = TransitionDamageFX ModuleTag_12
16400      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
16401      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
16402    End
16403  
16404    Behavior = DestroyDie ModuleTag_13
16405      DeathTypes = NONE +CRUSHED +SPLATTED
16406    End
16407  
16408    ; A crushing defeat
16409    Behavior = FXListDie ModuleTag_14
16410      DeathTypes = NONE +CRUSHED +SPLATTED
16411      DeathFX = FX_CarCrush
16412    End
16413  
16414    Behavior = CreateObjectDie ModuleTag_15
16415      DeathTypes = NONE +CRUSHED +SPLATTED
16416      CreationList = OCL_CrusaderTank_CrushEffect
16417    End
16418  
16419    Behavior                    = CreateCrateDie ModuleTag_CratesChange
16420     CrateData             = SalvageCrateData
16421     ;CrateData             = EliteTankCrateData
16422     ;CrateData             = HeroicTankCrateData
16423    End
16424  
16425    ;Behavior = EjectPilotDie ModuleTag_17
16426    ;  GroundCreationList = OCL_EjectPilotOnGround
16427    ;  AirCreationList = OCL_EjectPilotViaParachute
16428    ;  ExemptStatus = HIJACKED
16429    ;  VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
16430    ;End
16431  
16432    Behavior = MaxHealthUpgrade ModuleTag_18
16433      TriggeredBy   = Upgrade_AmericaCompositeArmor
16434      AddMaxHealth  = 100.0
16435      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
16436    End
16437  
16438    Behavior = FlammableUpdate ModuleTag_21
16439      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
16440      AflameDamageAmount = 3       ; taking this much damage...
16441      AflameDamageDelay = 500       ; this often.
16442    End
16443  
16444    Geometry               = BOX
16445    GeometryMajorRadius    = 15.0
16446    GeometryMinorRadius    = 10.0
16447    GeometryHeight         = 10.0     
16448    GeometryIsSmall        = Yes    
16449    Shadow = SHADOW_VOLUME
16450    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
16451  
16452  End
16453  
16454  ;------------------------------------------------------------------------------
16455  Object GLATankScorpion
16456  
16457    ; *** ART Parameters ***
16458    SelectPortrait         = SUScorpion_L
16459    ButtonImage            = SUScorpion
16460    
16461    UpgradeCameo1 = Upgrade_GLAScorpionRocket
16462    UpgradeCameo2 = Upgrade_GLAAPRockets
16463    UpgradeCameo3 = Upgrade_GLAToxinShells
16464    UpgradeCameo4 = Upgrade_GLAJunkRepair
16465    ;UpgradeCameo5 = NONE
16466    
16467    Draw = W3DTankDraw ModuleTag_01
16468      OkToChangeModelColor = Yes
16469  
16470      ProjectileBoneFeedbackEnabledSlots = SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
16471    
16472      DefaultConditionState
16473        Model = UVLiteTank
16474        Turret = Turret01
16475        ; note, order-dependent: we must hide/show Missile AFTER we hide/show MissileRack!
16476        HideSubObject = MissleRack01 Missile ; MissileRack misspelled in the Art
16477        WeaponFireFXBone = PRIMARY Muzzle
16478        WeaponRecoilBone = PRIMARY Barrel
16479        WeaponMuzzleFlash = PRIMARY MuzzleFX
16480        WeaponLaunchBone = PRIMARY Muzzle
16481      End
16482  
16483      ConditionState = REALLYDAMAGED
16484        Model = UVLiteTank_d
16485      End
16486      
16487      ConditionState = RUBBLE
16488        Model = UVLiteTank_d
16489      End
16490  
16491      ConditionState = WEAPONSET_PLAYER_UPGRADE
16492        ShowSubObject = MissleRack01
16493        WeaponFireFXBone = SECONDARY WeaponA
16494        WeaponLaunchBone = SECONDARY WeaponA
16495        WeaponHideShowBone = SECONDARY Missile
16496      End
16497  
16498      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
16499        Model = UVLiteTank_d
16500        ShowSubObject = MissleRack01
16501        WeaponFireFXBone = SECONDARY WeaponA
16502        WeaponLaunchBone = SECONDARY WeaponA
16503        WeaponHideShowBone = SECONDARY Missile
16504      End
16505  
16506      TrackMarks = EXTnkTrack.tga
16507      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
16508    End
16509  
16510    ; ***DESIGN parameters ***
16511    DisplayName           = OBJECT:Scorpion
16512    Side                  = GLA
16513    EditorSorting         = VEHICLE
16514    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
16515    WeaponSet
16516      Conditions = None 
16517      Weapon = PRIMARY ScorpionTankGun
16518      Weapon = SECONDARY None
16519    End
16520    WeaponSet
16521      Conditions = PLAYER_UPGRADE 
16522      Weapon = PRIMARY ScorpionTankGun
16523      Weapon = SECONDARY ScorpionMissileWeapon
16524      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
16525      AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI
16526    End
16527    ArmorSet
16528      Conditions      = None
16529      Armor           = TankArmor
16530      DamageFX        = TankDamageFX
16531    End
16532    BuildCost       = 600
16533    BuildTime       = 7.0          ;in seconds    
16534    VisionRange     = 125
16535    ShroudClearingRange = 300
16536    Prerequisites
16537      Object = GLAArmsDealer
16538    End
16539  
16540    ExperienceValue = 60 60 120 200    ;Experience point value at each level
16541    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
16542    IsTrainable = Yes             ;Can gain experience
16543    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
16544    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
16545    CommandSet      = GLATankScorpionCommandSet
16546  
16547    ; *** AUDIO Parameters ***
16548    VoiceSelect = ScorpionTankVoiceSelect
16549    VoiceMove = ScorpionTankVoiceMove
16550    VoiceAttack = ScorpionTankVoiceAttack
16551    SoundMoveStart = ScorpionTankMoveStart
16552    SoundMoveStartDamaged = ScorpionTankMoveStart
16553    VoiceGuard = ScorpionTankVoiceMove
16554  
16555    UnitSpecificSounds
16556      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
16557      VoiceCreate          = ScorpionTankVoiceCreate
16558      ;TurretMoveStart = NoSound
16559      TurretMoveLoop = TurretMoveLoop
16560      VoiceEnter = ScorpionTankVoiceMove
16561    End
16562  
16563    ; *** ENGINEERING Parameters ***
16564    RadarPriority = UNIT
16565    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
16566  
16567    Body = ActiveBody ModuleTag_02
16568      MaxHealth       = 370.0
16569      InitialHealth   = 370.0
16570    End
16571   
16572   
16573    Behavior = AIUpdateInterface ModuleTag_03
16574      Turret
16575        TurretTurnRate = 100
16576        RecenterTime = 5000   ; how long to wait during idle before recentering
16577        ControlledWeaponSlots = PRIMARY SECONDARY
16578      End
16579      AutoAcquireEnemiesWhenIdle = Yes
16580    End
16581    Locomotor = SET_NORMAL ScorpionLocomotor
16582    Behavior = PhysicsBehavior ModuleTag_04
16583      Mass = 50.0
16584    End
16585    Behavior = AutoHealBehavior ModuleTag_05
16586      HealingAmount = 2
16587      HealingDelay = 1000 ; msec
16588      TriggeredBy = Upgrade_GLAJunkRepair
16589    End
16590  
16591    ; Catch fire, and explode death
16592    Behavior = SlowDeathBehavior ModuleTag_06
16593      DeathTypes = ALL -CRUSHED -SPLATTED
16594      ProbabilityModifier = 50
16595      DestructionDelay = 2000
16596      DestructionDelayVariance = 300
16597      FX  = INITIAL  FX_CrusaderCatchFire
16598      OCL = FINAL    OCL_GenericTankDeathEffect  
16599      FX  = FINAL    FX_BattleMasterExplosionOneFinal
16600    End
16601  
16602    Behavior = WeaponSetUpgrade ModuleTag_07
16603      TriggeredBy = Upgrade_GLAScorpionRocket
16604    End
16605  
16606    Behavior = DestroyDie ModuleTag_09
16607      DeathTypes = NONE +CRUSHED +SPLATTED
16608    End
16609  
16610    ; A crushing defeat
16611    Behavior = FXListDie ModuleTag_10
16612      DeathTypes = NONE +CRUSHED +SPLATTED
16613      DeathFX = FX_CarCrush
16614    End
16615    Behavior = CreateObjectDie ModuleTag_11
16616      DeathTypes = NONE +CRUSHED +SPLATTED
16617      CreationList = OCL_CrusaderTank_CrushEffect
16618    End
16619    Behavior = CreateCrateDie ModuleTag_12
16620      CrateData = SalvageCrateData
16621      ;CrateData = EliteTankCrateData
16622      ;CrateData = HeroicTankCrateData
16623    End
16624    
16625    Behavior                 = TransitionDamageFX ModuleTag_13
16626      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
16627      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
16628    End
16629  
16630    Behavior = FlammableUpdate ModuleTag_21
16631      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
16632      AflameDamageAmount = 3       ; taking this much damage...
16633      AflameDamageDelay = 500       ; this often.
16634    End
16635  
16636    Geometry = BOX
16637    GeometryMajorRadius = 14.0
16638    GeometryMinorRadius = 9.0
16639    GeometryHeight = 10.5    
16640    GeometryIsSmall = Yes 
16641    Shadow = SHADOW_VOLUME   
16642    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
16643  
16644  End
16645  
16646  ;------------------------------------------------------------------------------
16647  ;GLA Rocket Buggy
16648  Object GLAVehicleRocketBuggy
16649  
16650    ; *** ART Parameters ***
16651    SelectPortrait         = SURocketBuggy_L
16652    ButtonImage            = SURocketBuggy
16653    
16654    UpgradeCameo1 = Upgrade_GLABuggyAmmo
16655    UpgradeCameo2 = Upgrade_GLAAPRockets
16656    UpgradeCameo3 = Upgrade_GLAJunkRepair
16657    ;UpgradeCameo4 = NONE
16658    ;UpgradeCameo5 = NONE
16659    
16660    Draw = W3DTruckDraw ModuleTag_01
16661      OkToChangeModelColor = Yes
16662  
16663      DefaultConditionState
16664        Model = UVRockBug
16665        Turret = Turret
16666        ShowSubObject = Turret
16667        HideSubObject = TurretUp01 
16668        WeaponFireFXBone = PRIMARY WeaponA
16669        WeaponLaunchBone = PRIMARY WeaponA
16670      End
16671      
16672      ConditionState = REALLYDAMAGED
16673        Model = UVRockBug_D
16674        Turret = Turret
16675        ShowSubObject = Turret
16676        HideSubObject = TurretUp01 
16677        WeaponFireFXBone = PRIMARY WeaponA
16678        WeaponLaunchBone = PRIMARY WeaponA
16679      End
16680      
16681      ConditionState = RUBBLE
16682        Model = UVRockBug_D
16683        Turret = Turret
16684        ShowSubObject = Turret
16685        HideSubObject = TurretUp01 
16686        WeaponFireFXBone = PRIMARY WeaponA
16687        WeaponLaunchBone = PRIMARY WeaponA
16688      End
16689  
16690      ConditionState =   WEAPONSET_PLAYER_UPGRADE
16691        Model = UVRockBug
16692        Turret = TurretUp01
16693        ShowSubObject = TurretUp01 
16694        HideSubObject = Turret
16695        WeaponFireFXBone = PRIMARY WeaponB
16696        WeaponLaunchBone = PRIMARY WeaponB
16697      End
16698      
16699      ConditionState =   WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
16700        Model = UVRockBug_D
16701        Turret = TurretUp01
16702        ShowSubObject = TurretUp01 
16703        HideSubObject = Turret
16704        WeaponFireFXBone = PRIMARY WeaponB
16705        WeaponLaunchBone = PRIMARY WeaponB
16706      End
16707      
16708      ConditionState =   WEAPONSET_PLAYER_UPGRADE RUBBLE
16709        Model = UVRockBug_D
16710        Turret = TurretUp01
16711        ShowSubObject = TurretUp01 
16712        HideSubObject = Turret
16713        WeaponFireFXBone = PRIMARY WeaponB
16714        WeaponLaunchBone = PRIMARY WeaponB
16715      End
16716  
16717      TrackMarks = EXTireTrack.tga
16718  
16719      Dust                        = RocketBuggyDust
16720      DirtSpray                   = RocketBuggyDirtSpray
16721      PowerslideSpray             = RocketBuggyDirtPowerSlide
16722  
16723      ; These parameters are only used if the model has a separate suspension, 
16724      ; and the locomotor has HasSuspension = Yes.
16725      LeftFrontTireBone           = Tire01
16726      RightFrontTireBone          = Tire02
16727      LeftRearTireBone            = Tire03
16728      RightRearTireBone           = Tire04
16729      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
16730      PowerslideRotationAddition  = 2.5   ; This speed is added to the rotation speed when powersliding.
16731  
16732    End
16733  
16734    ; ***DESIGN parameters ***
16735    DisplayName         = OBJECT:RocketBuggy
16736    Side                = GLA
16737    EditorSorting       = VEHICLE
16738    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
16739    WeaponSet
16740      Conditions = None 
16741      Weapon = PRIMARY BuggyRocketWeapon
16742    End
16743    WeaponSet
16744      Conditions = PLAYER_UPGRADE 
16745      Weapon = PRIMARY BuggyRocketWeaponUpgraded
16746    End
16747    ArmorSet
16748      Conditions      = None
16749      Armor           = TruckArmor
16750      DamageFX        = TankDamageFX
16751    End
16752    BuildCost       = 900
16753    BuildTime       = 10.0          ;in seconds    
16754    VisionRange     = 180
16755    ShroudClearingRange = 300
16756    Prerequisites
16757      Object = GLAArmsDealer
16758      Object = GLAPalace
16759    End
16760  
16761    ExperienceValue       = 50 50 100 150    ;Experience point value at each level
16762    ExperienceRequired    = 0 200 400 800  ;Experience points needed to gain each level
16763    IsTrainable           = Yes             ;Can gain experience
16764    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
16765    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
16766    CommandSet            = GLAVehicleRocketBuggyCommandSet
16767  
16768    ; *** AUDIO Parameters ***
16769    VoiceSelect = RocketBuggyVoiceSelect
16770    VoiceMove = RocketBuggyVoiceMove
16771    VoiceAttack = RocketBuggyVoiceAttack
16772    SoundMoveStart = RocketBuggyMoveStart
16773    SoundMoveStartDamaged = RocketBuggyMoveStart
16774    VoiceGuard = RocketBuggyVoiceMove
16775  
16776  
16777    UnitSpecificSounds
16778      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
16779      VoiceCreate          = RocketBuggyVoiceCreate
16780      TurretMoveStart = NoSound
16781      TurretMoveLoop = TurretMoveLoop  
16782    ; Required for the W3DTruckDraw module
16783      TruckLandingSound = RocketBuggyLand
16784      TruckPowerslideSound = RocketBuggyPowerslide
16785      VoiceCrush      = RocketBuggyVoiceCrush
16786      VoiceEnter = RocketBuggyVoiceMove
16787    End
16788  
16789    ; *** ENGINEERING Parameters ***
16790    RadarPriority = UNIT
16791    KindOf = PRELOAD SELECTABLE CAN_ATTACK DONT_AUTO_CRUSH_INFANTRY ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
16792  
16793    Body = ActiveBody ModuleTag_02
16794      MaxHealth       = 120
16795      InitialHealth   = 120
16796    End
16797    Behavior = AIUpdateInterface ModuleTag_03
16798      Turret
16799        TurretTurnRate = 90
16800        ControlledWeaponSlots = PRIMARY
16801      End
16802      AutoAcquireEnemiesWhenIdle = Yes
16803    End
16804    Locomotor = SET_NORMAL RocketBuggyLocomotor
16805    Behavior = PhysicsBehavior ModuleTag_04
16806      Mass = 50.0
16807    End
16808  
16809  ; The pop up AirDeath 
16810    Behavior = SlowDeathBehavior ModuleTag_05
16811      DeathTypes = ALL -CRUSHED -SPLATTED
16812      ProbabilityModifier = 5
16813      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
16814      DestructionDelay = 0
16815      FX = INITIAL FX_BuggyNewDeathExplosion
16816      OCL = FINAL OCL_RocketBuggyAirDeathStart
16817    End
16818  
16819    Behavior = AutoHealBehavior ModuleTag_08
16820      HealingAmount = 2
16821      HealingDelay = 1000 ; msec
16822      TriggeredBy = Upgrade_GLAJunkRepair
16823    End
16824  
16825    Behavior = WeaponSetUpgrade ModuleTag_09
16826      TriggeredBy = Upgrade_GLABuggyAmmo
16827    End
16828  
16829    Behavior = DestroyDie ModuleTag_11
16830      DeathTypes = NONE +CRUSHED +SPLATTED
16831    End
16832  
16833    ; A crushing defeat
16834    Behavior = FXListDie ModuleTag_12
16835      DeathTypes = NONE +CRUSHED +SPLATTED
16836      DeathFX = FX_CarCrush
16837    End
16838    Behavior = CreateObjectDie ModuleTag_13
16839      DeathTypes = NONE +CRUSHED +SPLATTED
16840      CreationList = OCL_RocketBuggy_CrushEffect
16841    End
16842    Behavior = CreateCrateDie ModuleTag_14
16843      CrateData = SalvageCrateData
16844      ;CrateData = EliteTankCrateData
16845      ;CrateData = HeroicTankCrateData
16846    End
16847    
16848    Behavior                 = TransitionDamageFX ModuleTag_15
16849      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
16850      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
16851    End
16852  
16853    Behavior = FlammableUpdate ModuleTag_21
16854      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
16855      AflameDamageAmount = 3       ; taking this much damage...
16856      AflameDamageDelay = 500       ; this often.
16857    End
16858  
16859    Geometry = BOX
16860    GeometryMajorRadius = 13.0
16861    GeometryMinorRadius = 9.0
16862    GeometryHeight = 7.5     
16863    GeometryIsSmall = Yes    
16864  
16865    Shadow = SHADOW_VOLUME
16866    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
16867  
16868  End
16869  
16870  ;------------------------------------------------------------------------------
16871  ;------------------------------------------------------------------------------
16872  ;GLA Rocket Buggy
16873  Object CINE_GLAVehicleRocketBuggy
16874  
16875    ; *** ART Parameters ***
16876    SelectPortrait         = SURocketBuggy_L
16877    ButtonImage            = SURocketBuggy
16878    
16879    UpgradeCameo1 = Upgrade_GLABuggyAmmo
16880    UpgradeCameo2 = Upgrade_GLAAPRockets
16881    UpgradeCameo3 = Upgrade_GLAJunkRepair
16882    ;UpgradeCameo4 = NONE
16883    ;UpgradeCameo5 = NONE
16884    
16885    Draw = W3DTruckDraw ModuleTag_01
16886      OkToChangeModelColor = Yes
16887  
16888      DefaultConditionState
16889        Model = UVRockBug
16890        Turret = Turret
16891        ShowSubObject = Turret
16892        HideSubObject = TurretUp01 
16893        WeaponFireFXBone = PRIMARY WeaponA
16894        WeaponLaunchBone = PRIMARY WeaponA
16895      End
16896      
16897      ConditionState = REALLYDAMAGED
16898        Model = UVRockBug_D
16899        Turret = Turret
16900        ShowSubObject = Turret
16901        HideSubObject = TurretUp01 
16902        WeaponFireFXBone = PRIMARY WeaponA
16903        WeaponLaunchBone = PRIMARY WeaponA
16904      End
16905      
16906      ConditionState = RUBBLE
16907        Model = UVRockBug_D
16908        Turret = Turret
16909        ShowSubObject = Turret
16910        HideSubObject = TurretUp01 
16911        WeaponFireFXBone = PRIMARY WeaponA
16912        WeaponLaunchBone = PRIMARY WeaponA
16913      End
16914  
16915      ConditionState =   WEAPONSET_PLAYER_UPGRADE
16916        Model = UVRockBug
16917        Turret = TurretUp01
16918        ShowSubObject = TurretUp01 
16919        HideSubObject = Turret
16920        WeaponFireFXBone = PRIMARY WeaponB
16921        WeaponLaunchBone = PRIMARY WeaponB
16922      End
16923      
16924      ConditionState =   WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
16925        Model = UVRockBug_D
16926        Turret = TurretUp01
16927        ShowSubObject = TurretUp01 
16928        HideSubObject = Turret
16929        WeaponFireFXBone = PRIMARY WeaponB
16930        WeaponLaunchBone = PRIMARY WeaponB
16931      End
16932      
16933      ConditionState =   WEAPONSET_PLAYER_UPGRADE RUBBLE
16934        Model = UVRockBug_D
16935        Turret = TurretUp01
16936        ShowSubObject = TurretUp01 
16937        HideSubObject = Turret
16938        WeaponFireFXBone = PRIMARY WeaponB
16939        WeaponLaunchBone = PRIMARY WeaponB
16940      End
16941  
16942      TrackMarks = EXTireTrack.tga
16943  
16944      Dust                        = RocketBuggyDust
16945      DirtSpray                   = RocketBuggyDirtSpray
16946      PowerslideSpray             = RocketBuggyDirtPowerSlide
16947  
16948      ; These parameters are only used if the model has a separate suspension, 
16949      ; and the locomotor has HasSuspension = Yes.
16950      LeftFrontTireBone           = Tire01
16951      RightFrontTireBone          = Tire02
16952      LeftRearTireBone            = Tire03
16953      RightRearTireBone           = Tire04
16954      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
16955      PowerslideRotationAddition  = 2.5   ; This speed is added to the rotation speed when powersliding.
16956  
16957    End
16958  
16959    ; ***DESIGN parameters ***
16960    DisplayName         = OBJECT:RocketBuggy
16961    Side                = GLA
16962    EditorSorting       = VEHICLE
16963    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
16964    WeaponSet
16965      Conditions = None 
16966      Weapon = PRIMARY CINE_BuggyRocketWeapon
16967    End
16968    WeaponSet
16969      Conditions = PLAYER_UPGRADE 
16970      Weapon = PRIMARY BuggyRocketWeaponUpgraded
16971    End
16972    ArmorSet
16973      Conditions      = None
16974      Armor           = TruckArmor
16975      DamageFX        = TankDamageFX
16976    End
16977    BuildCost       = 900
16978    BuildTime       = 10.0          ;in seconds    
16979    VisionRange     = 200
16980    ShroudClearingRange = 300
16981    Prerequisites
16982      Object = GLAArmsDealer
16983      Object = GLAPalace
16984    End
16985  
16986    ExperienceValue       = 50 50 100 150    ;Experience point value at each level
16987    ExperienceRequired    = 0 200 400 800  ;Experience points needed to gain each level
16988    IsTrainable           = Yes             ;Can gain experience
16989    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
16990    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
16991    CommandSet            = GLAVehicleRocketBuggyCommandSet
16992  
16993    ; *** AUDIO Parameters ***
16994    VoiceSelect = RocketBuggyVoiceSelect
16995    VoiceMove = RocketBuggyVoiceMove
16996    VoiceAttack = RocketBuggyVoiceAttack
16997    SoundMoveStart = RocketBuggyMoveStart
16998    SoundMoveStartDamaged = RocketBuggyMoveStart
16999    VoiceGuard = RocketBuggyVoiceMove
17000  
17001  
17002    UnitSpecificSounds
17003      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
17004      VoiceCreate          = RocketBuggyVoiceCreate
17005      TurretMoveStart = NoSound
17006      TurretMoveLoop = TurretMoveLoop  
17007    ; Required for the W3DTruckDraw module
17008      TruckLandingSound = RocketBuggyLand
17009      TruckPowerslideSound = RocketBuggyPowerslide
17010      VoiceCrush      = RocketBuggyVoiceCrush
17011      VoiceEnter = RocketBuggyVoiceMove
17012    End
17013  
17014    ; *** ENGINEERING Parameters ***
17015    RadarPriority = UNIT
17016    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
17017  
17018    Body = ActiveBody ModuleTag_02
17019      MaxHealth       = 120
17020      InitialHealth   = 120
17021    End
17022    Behavior = AIUpdateInterface ModuleTag_03
17023      Turret
17024        TurretTurnRate = 90
17025        ControlledWeaponSlots = PRIMARY
17026      End
17027      AutoAcquireEnemiesWhenIdle = Yes
17028    End
17029    Locomotor = SET_NORMAL CINE_RocketBuggyLocomotor
17030    Behavior = PhysicsBehavior ModuleTag_04
17031      Mass = 50.0
17032    End
17033  
17034  ; The pop up AirDeath 
17035    Behavior = SlowDeathBehavior ModuleTag_05
17036      DeathTypes = ALL -CRUSHED -SPLATTED
17037      ProbabilityModifier = 5
17038      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
17039      DestructionDelay = 0
17040      FX = INITIAL FX_BuggyNewDeathExplosion
17041      OCL = FINAL OCL_RocketBuggyAirDeathStart
17042    End
17043  
17044    Behavior = AutoHealBehavior ModuleTag_08
17045      HealingAmount = 2
17046      HealingDelay = 1000 ; msec
17047      TriggeredBy = Upgrade_GLAJunkRepair
17048    End
17049  
17050    Behavior = WeaponSetUpgrade ModuleTag_09
17051      TriggeredBy = Upgrade_GLABuggyAmmo
17052    End
17053  
17054    Behavior = DestroyDie ModuleTag_11
17055      DeathTypes = NONE +CRUSHED +SPLATTED
17056    End
17057  
17058    ; A crushing defeat
17059    Behavior = FXListDie ModuleTag_12
17060      DeathTypes = NONE +CRUSHED +SPLATTED
17061      DeathFX = FX_CarCrush
17062    End
17063    Behavior = CreateObjectDie ModuleTag_13
17064      DeathTypes = NONE +CRUSHED +SPLATTED
17065      CreationList = OCL_CrusaderTank_CrushEffect
17066    End
17067    Behavior = CreateCrateDie ModuleTag_14
17068      CrateData = SalvageCrateData
17069      ;CrateData = EliteTankCrateData
17070      ;CrateData = HeroicTankCrateData
17071    End
17072    
17073    Behavior                 = TransitionDamageFX ModuleTag_15
17074      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
17075      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
17076    End
17077  
17078    Behavior = FlammableUpdate ModuleTag_21
17079      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
17080      AflameDamageAmount = 3       ; taking this much damage...
17081      AflameDamageDelay = 500       ; this often.
17082    End
17083  
17084    Geometry = BOX
17085    GeometryMajorRadius = 13.0
17086    GeometryMinorRadius = 9.0
17087    GeometryHeight = 7.5     
17088    GeometryIsSmall = Yes    
17089  
17090    Shadow = SHADOW_VOLUME
17091    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
17092  
17093  End
17094  
17095  ;------------------------------------------------------------------------------
17096  Object StingerMissile
17097  
17098    ; *** ART Parameters ***
17099    Draw = W3DModelDraw ModuleTag_01
17100      OkToChangeModelColor = Yes
17101      ConditionState = NONE
17102        Model = UVRockBug_m
17103      End
17104    End
17105  
17106    ; ***DESIGN parameters ***
17107    DisplayName      = OBJECT:StingerMissile
17108    EditorSorting   = SYSTEM
17109    VisionRange = 0.0  
17110    ArmorSet
17111      Conditions      = None
17112      Armor           = ProjectileArmor
17113      DamageFX        = None
17114    End
17115    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
17116  
17117    ; *** ENGINEERING Parameters ***
17118    KindOf = PROJECTILE SMALL_MISSILE
17119    Body = ActiveBody ModuleTag_02
17120      MaxHealth       = 100.0
17121      InitialHealth   = 100.0
17122    End
17123  
17124  ; ---- begin Projectile death behaviors
17125    Behavior = InstantDeathBehavior DeathModuleTag_01
17126      DeathTypes = NONE +DETONATED
17127      ; we detonated normally.
17128      ; no FX, just quiet destroy ourselves
17129    End
17130    Behavior = InstantDeathBehavior DeathModuleTag_02
17131      DeathTypes = NONE +LASERED
17132      ; shot down by laser.
17133      FX         = FX_GenericMissileDisintegrate
17134      OCL        = OCL_GenericMissileDisintegrate
17135    End
17136    Behavior = InstantDeathBehavior DeathModuleTag_03
17137      DeathTypes = ALL -LASERED -DETONATED
17138      ; shot down by nonlaser.
17139      FX         = FX_GenericMissileDeath
17140    End
17141  ; ---- end Projectile death behaviors
17142      
17143    Behavior = PhysicsBehavior ModuleTag_06
17144      Mass = 1
17145    End
17146    Behavior = MissileAIUpdate ModuleTag_07
17147      TryToFollowTarget       = Yes 
17148      FuelLifetime            = 5000
17149      InitialVelocity         = 200                ; in dist/sec
17150      IgnitionDelay           = 0
17151      DistanceToTravelBeforeTurning = 5
17152      IgnitionFX              = None
17153      DistanceToTargetForLock = 100  ; If it gets within 100 of the target, it kills the target.
17154    End
17155  
17156    Behavior = WeaponBonusUpgrade Upgrade_01
17157      TriggeredBy = Upgrade_GLAAPRockets
17158    End
17159  
17160    Locomotor = SET_NORMAL StingerMissileLocomotor
17161  
17162    Geometry = Sphere
17163    GeometryIsSmall = Yes
17164    GeometryMajorRadius = 2.0
17165  
17166  End
17167  
17168  
17169  ;------------------------------------------------------------------------------
17170  Object ComancheAntiTankMissile
17171  
17172    ; *** ART Parameters ***
17173    Draw = W3DModelDraw ModuleTag_01
17174      OkToChangeModelColor = Yes
17175      ConditionState = NONE
17176        ; @todo -- need real art here
17177        Model = UVRockBug_m
17178      End
17179    End
17180  
17181    ; ***DESIGN parameters ***
17182    DisplayName      = OBJECT:Prop
17183    EditorSorting     = SYSTEM
17184    VisionRange = 0.0  
17185    ArmorSet
17186      Conditions      = None
17187      Armor           = ProjectileArmor
17188      DamageFX        = None
17189    End
17190    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
17191  
17192    ; *** ENGINEERING Parameters ***
17193    KindOf = PROJECTILE SMALL_MISSILE
17194    Body = ActiveBody ModuleTag_02
17195      MaxHealth       = 100.0
17196      InitialHealth   = 100.0
17197    End
17198  
17199  ; ---- begin Projectile death behaviors
17200    Behavior = InstantDeathBehavior DeathModuleTag_01
17201      DeathTypes = NONE +DETONATED
17202      ; we detonated normally.
17203      ; no FX, just quiet destroy ourselves
17204    End
17205    Behavior = InstantDeathBehavior DeathModuleTag_02
17206      DeathTypes = NONE +LASERED
17207      ; shot down by laser.
17208      FX         = FX_GenericMissileDisintegrate
17209      OCL        = OCL_GenericMissileDisintegrate
17210    End
17211    Behavior = InstantDeathBehavior DeathModuleTag_03
17212      DeathTypes = ALL -LASERED -DETONATED
17213      ; shot down by nonlaser.
17214      FX         = FX_GenericMissileDeath
17215    End
17216  ; ---- end Projectile death behaviors
17217      
17218    Behavior = PhysicsBehavior ModuleTag_06
17219      Mass = 1
17220    End
17221    Behavior = MissileAIUpdate ModuleTag_07
17222      TryToFollowTarget = Yes 
17223      FuelLifetime = 1000
17224      InitialVelocity = 150                ; in dist/sec
17225      IgnitionDelay = 0
17226      DistanceToTravelBeforeTurning = 10
17227      IgnitionFX = FX_BuggyMissileIgnition
17228    End
17229    Locomotor = SET_NORMAL ComancheAntiTankMissileLocomotor
17230  
17231    Geometry = Sphere
17232    GeometryIsSmall = Yes
17233    GeometryMajorRadius = 2.0
17234  
17235  End
17236  
17237  ;------------------------------------------------------------------------------
17238  Object ComancheRocketPodRocket
17239  
17240    ; *** ART Parameters ***
17241    Draw = W3DModelDraw ModuleTag_01
17242      OkToChangeModelColor = Yes
17243      ConditionState = NONE
17244        ; @todo -- need real art here
17245        Model = UVRockBug_m
17246      End
17247    End
17248  
17249    ; ***DESIGN parameters ***
17250    DisplayName      = OBJECT:Prop
17251    EditorSorting     = SYSTEM
17252    VisionRange = 0.0  
17253    ArmorSet
17254      Conditions      = None
17255      Armor           = ProjectileArmor
17256      DamageFX        = None
17257    End
17258  
17259    ; *** ENGINEERING Parameters ***
17260    KindOf = PROJECTILE SMALL_MISSILE
17261    Body = ActiveBody ModuleTag_02
17262      MaxHealth       = 100.0
17263      InitialHealth   = 100.0
17264    End
17265  
17266  ; ---- begin Projectile death behaviors
17267    Behavior = InstantDeathBehavior DeathModuleTag_01
17268      DeathTypes = NONE +DETONATED
17269      ; we detonated normally.
17270      ; no FX, just quiet destroy ourselves
17271    End
17272    Behavior = InstantDeathBehavior DeathModuleTag_02
17273      DeathTypes = NONE +LASERED
17274      ; shot down by laser.
17275      FX         = FX_GenericMissileDisintegrate
17276      OCL        = OCL_GenericMissileDisintegrate
17277    End
17278    Behavior = InstantDeathBehavior DeathModuleTag_03
17279      DeathTypes = ALL -LASERED -DETONATED
17280      ; shot down by nonlaser.
17281      FX         = FX_GenericMissileDeath
17282    End
17283  ; ---- end Projectile death behaviors
17284      
17285    Behavior = PhysicsBehavior ModuleTag_06
17286      Mass = 1
17287    End
17288    Behavior = MissileAIUpdate ModuleTag_07
17289      TryToFollowTarget = No 
17290      FuelLifetime = 1000
17291      InitialVelocity = 150                ; in dist/sec
17292      IgnitionDelay = 0
17293      DistanceToTravelBeforeTurning = 10
17294      IgnitionFX = FX_BuggyMissileIgnition
17295    End
17296    Locomotor = SET_NORMAL ComancheRocketPodLocomotor
17297    Geometry = Sphere
17298    GeometryIsSmall = Yes
17299    GeometryMajorRadius = 2.0
17300  
17301  End
17302  
17303  ;------------------------------------------------------------------------------
17304  Object RocketBuggyMissile
17305  
17306    ; *** ART Parameters ***
17307    Draw = W3DModelDraw ModuleTag_01
17308      OkToChangeModelColor = Yes
17309      ConditionState = NONE
17310        Model = UVRockBug_m
17311      End
17312    End
17313  
17314    ; ***DESIGN parameters ***
17315    EditorSorting     = SYSTEM
17316    VisionRange       = 0.0  
17317    ArmorSet
17318      Conditions      = None
17319      Armor           = ProjectileArmor
17320      DamageFX        = None
17321    End
17322  
17323    ; *** ENGINEERING Parameters ***
17324    KindOf = PROJECTILE SMALL_MISSILE
17325    Body = ActiveBody ModuleTag_02
17326      MaxHealth       = 100.0
17327      InitialHealth   = 100.0
17328    End
17329  
17330  ; ---- begin Projectile death behaviors
17331    Behavior = InstantDeathBehavior DeathModuleTag_01
17332      DeathTypes = NONE +DETONATED
17333      ; we detonated normally.
17334      ; no FX, just quiet destroy ourselves
17335    End
17336    Behavior = InstantDeathBehavior DeathModuleTag_02
17337      DeathTypes = NONE +LASERED
17338      ; shot down by laser.
17339      FX         = FX_GenericMissileDisintegrate
17340      OCL        = OCL_GenericMissileDisintegrate
17341    End
17342    Behavior = InstantDeathBehavior DeathModuleTag_03
17343      DeathTypes = ALL -LASERED -DETONATED
17344      ; shot down by nonlaser.
17345      FX         = FX_GenericMissileDeath
17346    End
17347  ; ---- end Projectile death behaviors
17348  
17349    Behavior = PhysicsBehavior ModuleTag_06
17350      Mass = 1
17351    End
17352    Behavior = MissileAIUpdate ModuleTag_07
17353      TryToFollowTarget               = Yes
17354      FuelLifetime                    = 1500
17355      InitialVelocity                 = 150                ; in dist/sec
17356      IgnitionDelay                   = 0
17357      DistanceToTravelBeforeTurning   = 3
17358      IgnitionFX                      = FX_BuggyMissileIgnition
17359    End
17360    Locomotor = SET_NORMAL RocketBuggyMissileLocomotor
17361  
17362    Behavior = WeaponBonusUpgrade ModuleTag_08
17363      TriggeredBy = Upgrade_GLAAPRockets
17364    End
17365  
17366    Geometry = Sphere
17367    GeometryIsSmall = Yes
17368    GeometryMajorRadius = 2.0
17369  
17370  End
17371  
17372  ;------------------------------------------------------------------------------
17373  Object SCUDMissile
17374  
17375    ; *** ART Parameters ***
17376    Draw = W3DModelDraw ModuleTag_01
17377      OkToChangeModelColor = Yes
17378      ConditionState = NONE
17379        Model = UVScudLchr_M
17380      End
17381      ConditionState = REALLYDAMAGED
17382        Model = UVScudLchr_DM
17383      End
17384    End
17385  
17386    ; ***DESIGN parameters ***
17387    DisplayName      = OBJECT:SCUDMissile
17388    EditorSorting   = SYSTEM
17389    VisionRange = 0.0  
17390    ArmorSet
17391      Conditions      = None
17392      ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
17393      ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
17394      ;*AntiBallisticMissile = Yes set in the Weapon.ini.
17395      Armor           = BallisticMissileArmor 
17396      DamageFX        = None
17397    End
17398  
17399    ; *** ENGINEERING Parameters ***
17400    KindOf = PROJECTILE BALLISTIC_MISSILE
17401    Body = ActiveBody ModuleTag_02
17402      MaxHealth       = 100.0
17403      InitialHealth   = 100.0
17404    End
17405  
17406  ; ---- begin Projectile death behaviors
17407    Behavior = InstantDeathBehavior DeathModuleTag_01
17408      DeathTypes = NONE +DETONATED
17409      ; we detonated normally.
17410      ; no FX, just quiet destroy ourselves
17411    End
17412    Behavior = InstantDeathBehavior DeathModuleTag_02
17413      DeathTypes = NONE +LASERED
17414      ; shot down by laser.
17415      FX         = FX_GenericMissileDisintegrate
17416      OCL        = OCL_GenericMissileDisintegrate
17417    End
17418    Behavior = InstantDeathBehavior DeathModuleTag_03
17419      DeathTypes = ALL -LASERED -DETONATED
17420      ; shot down by nonlaser.
17421      FX         = FX_GenericMissileDeath
17422    End
17423  ; ---- end Projectile death behaviors
17424      
17425    Behavior = PhysicsBehavior ModuleTag_06
17426      Mass = 1
17427    End
17428    Behavior = MissileAIUpdate ModuleTag_07
17429      TryToFollowTarget = No 
17430      FuelLifetime = 5000
17431      IgnitionDelay = 0
17432  ;   IgnitionFX = FX_ScudStormIgnition ;NOT WORKING
17433      InitialVelocity = 50                ; in dist/sec
17434      DistanceToTravelBeforeTurning = 200
17435      DistanceToTargetBeforeDiving = 200 ; When I hit this close to target, I ignore PreferredHeight.
17436    End
17437    Locomotor = SET_NORMAL SCUDMissileLocomotor
17438  
17439    Behavior = WeaponBonusUpgrade ModuleTag_08
17440      TriggeredBy = Upgrade_GLAAPRockets
17441    End
17442  
17443    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
17444    GeometryMajorRadius = 4.0
17445    GeometryHeight = 4.0
17446    GeometryIsSmall = Yes    
17447  
17448    Shadow = SHADOW_DECAL
17449  End
17450  
17451  ;------------------------------------------------------------------------------
17452  ;*********************** Cinematic Only Unit **********************************
17453  Object CINE_SCUDMissile
17454  
17455    ; *** ART Parameters ***
17456    Draw = W3DModelDraw ModuleTag_01
17457      OkToChangeModelColor = Yes
17458      ConditionState = NONE
17459        Model = UVScudLchr_M
17460      End
17461      ConditionState = REALLYDAMAGED
17462        Model = UVScudLchr_DM
17463      End
17464    End
17465  
17466    ; ***DESIGN parameters ***
17467    DisplayName      = OBJECT:SCUDMissile
17468    EditorSorting   = SYSTEM
17469    VisionRange = 0.0  
17470    ArmorSet
17471      Conditions      = None
17472      ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
17473      ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
17474      ;*AntiBallisticMissile = Yes set in the Weapon.ini.
17475      Armor           = BallisticMissileArmor 
17476      DamageFX        = None
17477    End
17478  
17479    ; *** ENGINEERING Parameters ***
17480    KindOf = PROJECTILE BALLISTIC_MISSILE
17481    Body = ActiveBody ModuleTag_02
17482      MaxHealth       = 100.0
17483      InitialHealth   = 100.0
17484    End
17485  
17486  ; ---- begin Projectile death behaviors
17487    Behavior = InstantDeathBehavior DeathModuleTag_01
17488      DeathTypes = NONE +DETONATED
17489      ; we detonated normally.
17490      ; no FX, just quiet destroy ourselves
17491    End
17492    Behavior = InstantDeathBehavior DeathModuleTag_02
17493      DeathTypes = NONE +LASERED
17494      ; shot down by laser.
17495      FX         = FX_GenericMissileDisintegrate
17496      OCL        = OCL_GenericMissileDisintegrate
17497    End
17498    Behavior = InstantDeathBehavior DeathModuleTag_03
17499      DeathTypes = ALL -LASERED -DETONATED
17500      ; shot down by nonlaser.
17501      FX         = FX_GenericMissileDeath
17502    End
17503  ; ---- end Projectile death behaviors
17504      
17505    Behavior = PhysicsBehavior ModuleTag_06
17506      Mass = 1
17507    End
17508    Behavior = MissileAIUpdate ModuleTag_07
17509      TryToFollowTarget = No 
17510      FuelLifetime = 8000
17511      IgnitionDelay = 0
17512  ;   IgnitionFX = FX_ScudStormIgnition ;NOT WORKING
17513      InitialVelocity = 50                ; in dist/sec
17514      DistanceToTravelBeforeTurning = 200
17515      DistanceToTargetBeforeDiving = 200 ; When I hit this close to target, I ignore PreferredHeight.
17516    End
17517    Locomotor = SET_NORMAL SCUDMissileLocomotor
17518  
17519    Behavior = WeaponBonusUpgrade ModuleTag_08
17520      TriggeredBy = Upgrade_GLAAPRockets
17521    End
17522  
17523    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
17524    GeometryMajorRadius = 4.0
17525    GeometryHeight = 4.0
17526    GeometryIsSmall = Yes    
17527  
17528    Shadow = SHADOW_DECAL
17529  End
17530  
17531  
17532  ;------------------------------------------------------------------------------
17533  Object TomahawkMissile
17534  
17535    ; *** ART Parameters ***
17536    Draw = W3DModelDraw ModuleTag_01
17537      OkToChangeModelColor = Yes
17538      ConditionState = NONE
17539        Model = AVTomahawk_M
17540  
17541      End
17542    End
17543  
17544    ; ***DESIGN parameters ***
17545    DisplayName      = OBJECT:TomahawkMissile
17546    EditorSorting   = SYSTEM
17547    VisionRange = 0.0  
17548    ArmorSet
17549      Conditions      = None
17550      ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
17551      ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
17552      ;*AntiBallisticMissile = Yes set in the Weapon.ini.
17553      Armor           = BallisticMissileArmor 
17554      DamageFX        = None
17555    End
17556  
17557    ; *** ENGINEERING Parameters ***
17558    KindOf = PROJECTILE BALLISTIC_MISSILE 
17559    Body = ActiveBody ModuleTag_02
17560      MaxHealth       = 200.0
17561      InitialHealth   = 100.0
17562    End
17563  
17564  ; ---- begin Projectile death behaviors
17565    Behavior = InstantDeathBehavior DeathModuleTag_01
17566      DeathTypes = NONE +DETONATED
17567      ; we detonated normally.
17568      FX          = WeaponFX_TomahawkMissileDetonation
17569    End
17570    Behavior = InstantDeathBehavior DeathModuleTag_02
17571      DeathTypes = NONE +LASERED
17572      ; shot down by laser.
17573      FX         = FX_GenericMissileDisintegrate
17574      OCL        = OCL_GenericMissileDisintegrate
17575    End
17576    Behavior = InstantDeathBehavior DeathModuleTag_03
17577      DeathTypes = ALL -LASERED -DETONATED
17578      ; shot down by nonlaser.
17579      FX         = FX_GenericMissileDeath
17580    End
17581  ; ---- end Projectile death behaviors
17582      
17583    Behavior = PhysicsBehavior ModuleTag_06
17584      Mass = 1
17585    End
17586    Behavior = MissileAIUpdate ModuleTag_07
17587      TryToFollowTarget = Yes 
17588      FuelLifetime = 4000
17589      IgnitionDelay = 0
17590      IgnitionFX = FX_TomahawkIgnition
17591      InitialVelocity = 50                ; in dist/sec
17592      DistanceToTravelBeforeTurning = 80
17593      DistanceToTargetBeforeDiving = 100 ; When I hit this close to target, I ignore PreferredHeight. 
17594      ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
17595      ; heart, being over the target counts as "there", so we'll give up and just go straight.
17596  
17597      DistanceToTargetForLock = 10 ; Short lock on, as it looks better flying.  jba.
17598    End
17599    Locomotor = SET_NORMAL TomahawkMissileLocomotor
17600  
17601    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
17602    GeometryMajorRadius = 8.0
17603    GeometryHeight = 4.0
17604    GeometryIsSmall = Yes    
17605  
17606    Shadow = SHADOW_DECAL
17607  End
17608  
17609  ;------------------------------------------------------------------------------
17610  Object NuclearCannonShell
17611  
17612    ; *** ART Parameters ***
17613    Draw = W3DModelDraw ModuleTag_01
17614      OkToChangeModelColor = Yes
17615      ConditionState = NONE
17616        Model = NVNUKECN_B
17617      End
17618    End
17619  
17620    ; ***DESIGN parameters ***
17621    DisplayName      = OBJECT:Missile
17622    EditorSorting   = SYSTEM
17623    VisionRange = 0.0  
17624    ArmorSet
17625      Conditions      = None
17626      Armor           = ProjectileArmor
17627      DamageFX        = None
17628    End
17629  
17630    ; *** ENGINEERING Parameters ***
17631    KindOf = PROJECTILE
17632    Body = ActiveBody ModuleTag_02
17633      MaxHealth       = 100.0
17634      InitialHealth   = 100.0
17635    End
17636  
17637  
17638    Behavior = FireWeaponWhenDeadBehavior ModuleTag_03
17639      DeathWeapon   = ChinaPowerPlantDeathWeapon
17640      StartsActive  = Yes
17641    End
17642  
17643    Behavior = HeightDieUpdate ModuleTag_04
17644      TargetHeight = 1.0
17645      TargetHeightIncludesStructures = No
17646      OnlyWhenMovingDown = Yes
17647      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
17648    End
17649  
17650  ; ---- begin Projectile death behaviors
17651    Behavior = InstantDeathBehavior DeathModuleTag_01
17652      DeathTypes = NONE +DETONATED
17653      ; we detonated normally.
17654      FX         = FX_NukeGLA
17655    End
17656    Behavior = InstantDeathBehavior DeathModuleTag_02
17657      DeathTypes = NONE +LASERED
17658      ; shot down by laser.
17659      FX         = FX_GenericMissileDisintegrate
17660      OCL        = OCL_GenericMissileDisintegrate
17661    End
17662    Behavior = InstantDeathBehavior DeathModuleTag_03
17663      DeathTypes = ALL -LASERED -DETONATED
17664      ; shot down by nonlaser.
17665      FX         = FX_GenericMissileDeath
17666    End
17667  ; ---- end Projectile death behaviors
17668   
17669    Behavior = PhysicsBehavior ModuleTag_09
17670      Mass = 1
17671    End
17672    Behavior = MissileAIUpdate ModuleTag_10
17673      TryToFollowTarget = No 
17674      FuelLifetime = 4000
17675      IgnitionDelay = 0
17676      IgnitionFX = FX_BuggyMissileIgnition
17677      InitialVelocity = 20                ; in dist/sec
17678      DistanceToTravelBeforeTurning = 40
17679      DistanceToTargetBeforeDiving = 50 ; When I hit this close to target, I ignore PreferredHeight. 
17680     ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
17681     ; heart, being over the target counts as "there", so we'll give up and just go straight.
17682    End
17683    Locomotor = SET_NORMAL NuclearCannonShellLocomotor
17684  
17685    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
17686    GeometryMajorRadius = 4.0
17687    GeometryHeight = 4.0
17688    GeometryIsSmall = Yes    
17689  
17690    Shadow = SHADOW_DECAL
17691  End
17692  
17693  ;------------------------------------------------------------------------------
17694  Object StrategyCenterArtilleryShell
17695  
17696    ; *** ART Parameters ***
17697    Draw = W3DModelDraw ModuleTag_01
17698      OkToChangeModelColor = Yes
17699      ConditionState = NONE
17700        Model = NVNUKECN_B
17701  
17702      End
17703    End
17704  
17705    ; ***DESIGN parameters ***
17706    DisplayName      = OBJECT:Missile
17707    EditorSorting   = SYSTEM
17708    VisionRange = 0.0  
17709    ArmorSet
17710      Conditions      = None
17711      Armor           = ProjectileArmor
17712      DamageFX        = None
17713    End
17714  
17715  
17716    ; *** ENGINEERING Parameters ***
17717    KindOf = PROJECTILE
17718    Body = ActiveBody ModuleTag_02
17719      MaxHealth       = 100.0
17720      InitialHealth   = 100.0
17721    End
17722  
17723  ; ---- begin Projectile death behaviors
17724    Behavior = InstantDeathBehavior DeathModuleTag_01
17725      DeathTypes = NONE +DETONATED
17726      ; we detonated normally.
17727      ; no FX, just quiet destroy ourselves
17728    End
17729    Behavior = InstantDeathBehavior DeathModuleTag_02
17730      DeathTypes = NONE +LASERED
17731      ; shot down by laser.
17732      FX         = FX_GenericMissileDisintegrate
17733      OCL        = OCL_GenericMissileDisintegrate
17734    End
17735    Behavior = InstantDeathBehavior DeathModuleTag_03
17736      DeathTypes = ALL -LASERED -DETONATED
17737      ; shot down by nonlaser.
17738      FX         = FX_GenericMissileDeath
17739    End
17740  ; ---- end Projectile death behaviors
17741  
17742    Behavior = PhysicsBehavior ModuleTag_04
17743      Mass = 1
17744    End
17745    Behavior = MissileAIUpdate ModuleTag_05
17746      TryToFollowTarget = No 
17747      FuelLifetime = 4000
17748      IgnitionDelay = 0
17749      IgnitionFX = FX_BuggyMissileIgnition
17750      InitialVelocity = 20                ; in dist/sec
17751      DistanceToTravelBeforeTurning = 40
17752      DistanceToTargetBeforeDiving = 50 ; When I hit this close to target, I ignore PreferredHeight. 
17753     ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
17754     ; heart, being over the target counts as "there", so we'll give up and just go straight.
17755    End
17756    Locomotor = SET_NORMAL NuclearCannonShellLocomotor
17757  
17758    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
17759    GeometryMajorRadius = 4.0
17760    GeometryHeight = 4.0
17761    GeometryIsSmall = Yes    
17762  
17763    Shadow = SHADOW_DECAL
17764  End
17765  
17766  ;------------------------------------------------------------------------------
17767  Object MissileDefenderMissile
17768  
17769    ; *** ART Parameters ***
17770    Draw = W3DModelDraw ModuleTag_01
17771      OkToChangeModelColor = Yes
17772      ConditionState = NONE
17773        Model = ExMsslTm
17774      End
17775    End
17776  
17777    ; ***DESIGN parameters ***
17778    DisplayName      = OBJECT:RangerTeamMissile
17779    EditorSorting   = SYSTEM
17780    VisionRange = 0.0  
17781    ArmorSet
17782      Conditions      = None
17783      Armor           = ProjectileArmor
17784      DamageFX        = None
17785    End
17786  
17787    ; *** ENGINEERING Parameters ***
17788    KindOf = PROJECTILE SMALL_MISSILE
17789    Body = ActiveBody ModuleTag_02
17790      MaxHealth       = 100.0
17791      InitialHealth   = 100.0
17792    End
17793  
17794  ; ---- begin Projectile death behaviors
17795    Behavior = InstantDeathBehavior DeathModuleTag_01
17796      DeathTypes = NONE +DETONATED
17797      ; we detonated normally.
17798      ; no FX, just quiet destroy ourselves
17799    End
17800    Behavior = InstantDeathBehavior DeathModuleTag_02
17801      DeathTypes = NONE +LASERED
17802      ; shot down by laser.
17803      FX         = FX_GenericMissileDisintegrate
17804      OCL        = OCL_GenericMissileDisintegrate
17805    End
17806    Behavior = InstantDeathBehavior DeathModuleTag_03
17807      DeathTypes = ALL -LASERED -DETONATED
17808      ; shot down by nonlaser.
17809      FX         = FX_GenericMissileDeath
17810    End
17811  ; ---- end Projectile death behaviors
17812      
17813    Behavior = PhysicsBehavior ModuleTag_06
17814      Mass = 1
17815    End
17816    Behavior = MissileAIUpdate ModuleTag_07
17817      TryToFollowTarget               = Yes;;;;;;;;;No 
17818      FuelLifetime                    = 3000
17819      InitialVelocity                 = 150                ; in dist/sec
17820      IgnitionDelay                   = 0
17821      DistanceToTravelBeforeTurning   = 3
17822      IgnitionFX                      = FX_BuggyMissileIgnition
17823    End
17824    Locomotor = SET_NORMAL MissileDefenderMissileLocomotor
17825    Geometry = Sphere
17826    GeometryIsSmall = Yes
17827    GeometryMajorRadius = 2.0
17828  
17829  End
17830  
17831  ;------------------------------------------------------------------------------
17832  Object TunnelDefenderMissile
17833  
17834    ; *** ART Parameters ***
17835    Draw = W3DModelDraw ModuleTag_01
17836      OkToChangeModelColor = Yes
17837      ConditionState = NONE
17838        Model = EXStinger01
17839      End
17840    End
17841   
17842    ; ***DESIGN parameters ***
17843    EditorSorting   = SYSTEM
17844    VisionRange = 0.0  
17845    ArmorSet
17846      Conditions      = None
17847      Armor           = ProjectileArmor
17848      DamageFX        = None
17849    End
17850  
17851    ; *** ENGINEERING Parameters ***
17852    KindOf = PROJECTILE SMALL_MISSILE
17853    Body = ActiveBody ModuleTag_02
17854      MaxHealth       = 100.0
17855      InitialHealth   = 100.0
17856    End
17857  
17858  ; ---- begin Projectile death behaviors
17859    Behavior = InstantDeathBehavior DeathModuleTag_01
17860      DeathTypes = NONE +DETONATED
17861      ; we detonated normally.
17862      ; no FX, just quiet destroy ourselves
17863    End
17864    Behavior = InstantDeathBehavior DeathModuleTag_02
17865      DeathTypes = NONE +LASERED
17866      ; shot down by laser.
17867      FX         = FX_GenericMissileDisintegrate
17868      OCL        = OCL_GenericMissileDisintegrate
17869    End
17870    Behavior = InstantDeathBehavior DeathModuleTag_03
17871      DeathTypes = ALL -LASERED -DETONATED
17872      ; shot down by nonlaser.
17873      FX         = FX_GenericMissileDeath
17874    End
17875  ; ---- end Projectile death behaviors
17876  
17877    Behavior = WeaponBonusUpgrade ModuleTag_08
17878      TriggeredBy = Upgrade_GLAAPRockets
17879    End
17880      
17881    Behavior = PhysicsBehavior ModuleTag_06
17882      Mass = 1
17883    End
17884    Behavior = MissileAIUpdate ModuleTag_07
17885      TryToFollowTarget             = Yes;;;;;;;;;;No 
17886      FuelLifetime                  = 1250
17887      InitialVelocity               = 150                ; in dist/sec
17888      IgnitionDelay                 = 0
17889      DistanceToTravelBeforeTurning = 20
17890      IgnitionFX                    = FX_BuggyMissileIgnition
17891    End
17892    Locomotor = SET_NORMAL TunnelDefenderMissileLocomotor
17893  
17894    Geometry = Sphere
17895    GeometryIsSmall = Yes
17896    GeometryMajorRadius = 2.0
17897  
17898  End
17899  
17900  ;------------------------------------------------------------------------------
17901  Object TechnicalRPGMissile
17902  
17903    ; *** ART Parameters ***
17904    Draw = W3DModelDraw ModuleTag_01
17905      OkToChangeModelColor = Yes
17906      DefaultConditionState
17907        Model = EXStinger01
17908      End
17909    End
17910   
17911    ; ***DESIGN parameters ***
17912    EditorSorting     = SYSTEM
17913    VisionRange       = 0.0  
17914    ArmorSet
17915      Conditions      = None
17916      Armor           = ProjectileArmor
17917      DamageFX        = None
17918    End
17919  
17920    ; *** ENGINEERING Parameters ***
17921    KindOf = PROJECTILE SMALL_MISSILE
17922    Body = ActiveBody ModuleTag_02
17923      MaxHealth       = 100.0
17924      InitialHealth   = 100.0
17925    End
17926  
17927  ; ---- begin Projectile death behaviors
17928    Behavior = InstantDeathBehavior DeathModuleTag_01
17929      DeathTypes = NONE +DETONATED
17930      ; we detonated normally.
17931      ; no FX, just quiet destroy ourselves
17932    End
17933    Behavior = InstantDeathBehavior DeathModuleTag_02
17934      DeathTypes = NONE +LASERED
17935      ; shot down by laser.
17936      FX         = FX_GenericMissileDisintegrate
17937      OCL        = OCL_GenericMissileDisintegrate
17938    End
17939    Behavior = InstantDeathBehavior DeathModuleTag_03
17940      DeathTypes = ALL -LASERED -DETONATED
17941      ; shot down by nonlaser.
17942      FX         = FX_GenericMissileDeath
17943    End
17944  ; ---- end Projectile death behaviors
17945      
17946    Behavior = PhysicsBehavior ModuleTag_06
17947      Mass = 1
17948    End
17949    Behavior = MissileAIUpdate ModuleTag_07
17950      TryToFollowTarget             = Yes
17951      FuelLifetime                  = 1000
17952      InitialVelocity               = 150                ; in dist/sec
17953      IgnitionDelay                 = 0
17954      DistanceToTravelBeforeTurning = 20
17955      IgnitionFX                    = FX_BuggyMissileIgnition
17956    End
17957    Locomotor = SET_NORMAL TechnicalRPGMissileLocomotor
17958  
17959    Geometry = Sphere
17960    GeometryIsSmall = Yes
17961    GeometryMajorRadius = 2.0
17962  
17963  End
17964  
17965  ;------------------------------------------------------------------------------
17966  Object TankHunterMissile
17967  
17968    ; *** ART Parameters ***
17969    Draw = W3DModelDraw ModuleTag_01
17970      OkToChangeModelColor = Yes
17971      ConditionState = NONE
17972        Model = EXStinger01
17973      End
17974    End
17975  
17976    ; ***DESIGN parameters ***
17977    EditorSorting   = SYSTEM
17978    VisionRange = 0.0  
17979    ArmorSet
17980      Conditions      = None
17981      Armor           = ProjectileArmor
17982      DamageFX        = None
17983    End
17984  
17985    ; *** ENGINEERING Parameters ***
17986    KindOf = PROJECTILE SMALL_MISSILE
17987    Body = ActiveBody ModuleTag_02
17988      MaxHealth       = 100.0
17989      InitialHealth   = 100.0
17990    End
17991  
17992  ; ---- begin Projectile death behaviors
17993    Behavior = InstantDeathBehavior DeathModuleTag_01
17994      DeathTypes = NONE +DETONATED
17995      ; we detonated normally.
17996      ; no FX, just quiet destroy ourselves
17997    End
17998    Behavior = InstantDeathBehavior DeathModuleTag_02
17999      DeathTypes = NONE +LASERED
18000      ; shot down by laser.
18001      FX         = FX_GenericMissileDisintegrate
18002      OCL        = OCL_GenericMissileDisintegrate
18003    End
18004    Behavior = InstantDeathBehavior DeathModuleTag_03
18005      DeathTypes = ALL -LASERED -DETONATED
18006      ; shot down by nonlaser.
18007      FX         = FX_GenericMissileDeath
18008    End
18009  ; ---- end Projectile death behaviors
18010      
18011    Behavior = PhysicsBehavior ModuleTag_06
18012      Mass = 1
18013    End
18014    Behavior = MissileAIUpdate ModuleTag_07
18015      TryToFollowTarget = Yes;;;;;;;;;;;;No 
18016      FuelLifetime = 1250
18017      InitialVelocity = 150                ; in dist/sec
18018      IgnitionDelay = 0
18019      DistanceToTravelBeforeTurning = 20
18020      IgnitionFX = FX_BuggyMissileIgnition
18021    End
18022    Locomotor = SET_NORMAL TankHunterMissileLocomotor
18023  
18024    Geometry = Sphere
18025    GeometryIsSmall = Yes
18026    GeometryMajorRadius = 2.0
18027  
18028  End
18029  
18030  
18031  ;------------------------------------------------------------------------------
18032  Object GLARocketBuggyFullDebris
18033  
18034    ; *** ART Parameters ***
18035    Draw = W3DModelDraw ModuleTag_01
18036      OkToChangeModelColor = Yes
18037  
18038      DefaultConditionState
18039        Model = UVRockBug_D1
18040        ShowSubObject = Turret
18041        HideSubObject = TurretUp01 
18042      End
18043  
18044      ConditionState =   WEAPONSET_PLAYER_UPGRADE
18045        ShowSubObject = TurretUp01 
18046        HideSubObject = Turret
18047      End
18048    End
18049  
18050    ; ***DESIGN parameters ***
18051    DisplayName           = OBJECT:RocketBuggyDebris
18052    Side                  = GLA
18053    EditorSorting         = SYSTEM
18054    TransportSlotCount    = 0
18055  
18056    ; *** AUDIO Parameters ***
18057    ; *** ENGINEERING Parameters ***
18058    RadarPriority         = UNIT
18059    KindOf                = CAN_CAST_REFLECTIONS 
18060  
18061    Body = ActiveBody ModuleTag_02
18062      MaxHealth       = 1.0
18063      InitialHealth   = 1.0
18064    End
18065  
18066    Behavior = PhysicsBehavior ModuleTag_03
18067      Mass = 50
18068      AllowBouncing = Yes
18069    End
18070    Behavior = LifetimeUpdate ModuleTag_04
18071      MinLifetime = 0   ; min lifetime in msec
18072      MaxLifetime = 0   ; max lifetime in msec
18073    End
18074  
18075    Behavior = WeaponSetUpgrade ModuleTag_05
18076      TriggeredBy = Upgrade_GLABuggyAmmo
18077    End
18078  
18079    Behavior = SlowDeathBehavior ModuleTag_06
18080      DestructionDelay          = 500
18081      DestructionDelayVariance  = 1500
18082      OCL                       = FINAL     OCL_RocketBuggyAirDeath
18083      FX                        = INITIAL   FX_RocketBuggyAirDeathGroundPart
18084      FX                        = FINAL     FX_RocketBuggyAirDeathAirPart    ; This happens in the air
18085    End
18086  
18087    Geometry = BOX
18088    GeometryMajorRadius = 9.0
18089    GeometryMinorRadius = 6.0
18090    GeometryHeight = 7.5     
18091    GeometryIsSmall = Yes    
18092  
18093  End
18094  
18095  ;------------------------------------------------------------------------------
18096  Object RocketBuggyMissileDebris
18097  
18098    ; *** ART Parameters ***
18099    Draw = W3DModelDraw ModuleTag_01
18100      OkToChangeModelColor = Yes
18101      ConditionState = NONE
18102        Model = NVMBuggy_m
18103      End
18104    End
18105  
18106    ; ***DESIGN parameters ***
18107    DisplayName      = OBJECT:RocketBuggyDebris
18108    EditorSorting     = SYSTEM
18109    ArmorSet
18110      Conditions      = None
18111      Armor           = ProjectileArmor
18112      DamageFX        = None
18113    End
18114  
18115    ; *** ENGINEERING Parameters ***
18116    Body = ActiveBody ModuleTag_02
18117      MaxHealth       = 100.0
18118      InitialHealth   = 100.0
18119    End
18120  
18121    Behavior = PhysicsBehavior ModuleTag_03
18122      Mass = 3
18123      AllowBouncing = Yes
18124    End
18125  
18126    Behavior = LifetimeUpdate ModuleTag_04
18127      MinLifetime = 0   ; min lifetime in msec
18128      MaxLifetime = 0   ; max lifetime in msec
18129    End
18130    Behavior = SlowDeathBehavior ModuleTag_05
18131      DestructionDelay = 500
18132      DestructionDelayVariance = 500
18133      FX = INITIAL FX_BuggyMissileDebris
18134      FX = FINAL WeaponFX_RocketBuggyMissileDetonation
18135    End
18136  
18137    Geometry = Sphere
18138    GeometryIsSmall = Yes
18139    GeometryMajorRadius = 2.0
18140  
18141  End
18142  
18143  ;------------------------------------------------------------------------------
18144  Object GLAVehicleQuadCannon
18145  
18146    ; *** ART Parameters ***
18147    SelectPortrait         = SUQuadCannon_L
18148    ButtonImage            = SUQuadCannon
18149    
18150    UpgradeCameo1 = Upgrade_GLAAPBullets
18151    UpgradeCameo2 = Upgrade_GLAJunkRepair
18152    ;UpgradeCameo3 = XXX
18153    ;UpgradeCameo4 = XXX
18154    ;UpgradeCameo5 = XXX
18155    
18156    Draw = W3DTankTruckDraw ModuleTag_01
18157      OkToChangeModelColor = Yes
18158  
18159      ConditionState = NONE
18160        Model = UVQuadCann
18161        Turret = TURRET
18162        TurretPitch = TURRETEL
18163        WeaponFireFXBone  = PRIMARY   BarrelMS
18164        WeaponMuzzleFlash = PRIMARY   BarrelFX
18165        WeaponRecoilBone  = PRIMARY   Barrel
18166        WeaponFireFXBone  = SECONDARY BarrelMS
18167        WeaponMuzzleFlash = SECONDARY BarrelFX
18168        WeaponRecoilBone  = SECONDARY Barrel
18169        ShowSubObject = TURRET
18170        HideSubObject = TURRETUP01 TURRETUP02 BarrelFX01 BarrelFX02 BarrelFX03 BarrelFX04  ; Since we are showing one of three turrets, we need to then hide the subobject muzzleflash
18171      End
18172        
18173      ConditionState = REALLYDAMAGED
18174        Model = UVQuadCann_D
18175        Turret = TURRET
18176        TurretPitch = TURRETEL
18177        WeaponFireFXBone  = PRIMARY   BarrelMS
18178        WeaponMuzzleFlash = PRIMARY   BarrelFX
18179        WeaponRecoilBone  = PRIMARY   Barrel
18180        WeaponFireFXBone  = SECONDARY BarrelMS
18181        WeaponMuzzleFlash = SECONDARY BarrelFX
18182        WeaponRecoilBone  = SECONDARY Barrel
18183        ShowSubObject = TURRET
18184        HideSubObject = TURRETUP01 TURRETUP02 BarrelFX01 BarrelFX02 BarrelFX03 BarrelFX04
18185      End
18186      
18187      ConditionState = RUBBLE
18188        Model = UVQuadCann_D
18189        Turret = TURRET
18190        TurretPitch = TURRETEL
18191        WeaponFireFXBone  = PRIMARY   BarrelMS
18192        WeaponMuzzleFlash = PRIMARY   BarrelFX
18193        WeaponRecoilBone  = PRIMARY   Barrel
18194        WeaponFireFXBone  = SECONDARY BarrelMS
18195        WeaponMuzzleFlash = SECONDARY BarrelFX
18196        WeaponRecoilBone  = SECONDARY Barrel
18197        ShowSubObject = TURRET
18198        HideSubObject = TURRETUP01 TURRETUP02 BarrelFX01 BarrelFX02 BarrelFX03 BarrelFX04
18199      End
18200  
18201      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
18202        Model = UVQuadCann
18203        Turret = TURRETUP01
18204        TurretPitch = TURRETEL01
18205        WeaponFireFXBone  = PRIMARY   BarrelUp01MS
18206        WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
18207        WeaponRecoilBone  = PRIMARY   BarrelUp01
18208        WeaponFireFXBone  = SECONDARY BarrelUp01MS
18209        WeaponMuzzleFlash = SECONDARY BarrelUp01FX
18210        WeaponRecoilBone  = SECONDARY BarrelUp01
18211        ShowSubObject = TURRETUP01
18212        HideSubObject = TURRET TURRETUP02 BarrelUp01FX01 BarrelUp01FX02 BarrelUp01FX03 BarrelUp01FX04
18213      End
18214      
18215      ConditionState = WEAPONSET_CRATEUPGRADE_ONE REALLYDAMAGED
18216        Model = UVQuadCann
18217        Turret = TURRETUP01
18218        TurretPitch = TURRETEL01
18219        WeaponFireFXBone  = PRIMARY   BarrelUp01MS
18220        WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
18221        WeaponRecoilBone  = PRIMARY   BarrelUp01
18222        WeaponFireFXBone  = SECONDARY BarrelUp01MS
18223        WeaponMuzzleFlash = SECONDARY BarrelUp01FX
18224        WeaponRecoilBone  = SECONDARY BarrelUp01
18225        ShowSubObject = TURRETUP01
18226        HideSubObject = TURRET TURRETUP02 BarrelUp01FX01 BarrelUp01FX02 BarrelUp01FX03 BarrelUp01FX04
18227      End
18228      
18229      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE
18230        Model = UVQuadCann
18231        Turret = TURRETUP01
18232        TurretPitch = TURRETEL01
18233        WeaponFireFXBone  = PRIMARY   BarrelUp01MS
18234        WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
18235        WeaponRecoilBone  = PRIMARY   BarrelUp01
18236        WeaponFireFXBone  = SECONDARY BarrelUp01MS
18237        WeaponMuzzleFlash = SECONDARY BarrelUp01FX
18238        WeaponRecoilBone  = SECONDARY BarrelUp01
18239        ShowSubObject = TURRETUP01
18240        HideSubObject = TURRET TURRETUP02 BarrelUp01FX01 BarrelUp01FX02 BarrelUp01FX03 BarrelUp01FX04
18241      End
18242  
18243      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
18244        Model = UVQuadCann
18245        Turret = TURRETUP02
18246        TurretPitch = TURRETEL02
18247        WeaponFireFXBone  = PRIMARY   BarrelUp02MS
18248        WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
18249        WeaponRecoilBone  = PRIMARY   BarrelUp02
18250        WeaponFireFXBone  = SECONDARY BarrelUp02MS
18251        WeaponMuzzleFlash = SECONDARY BarrelUp02FX
18252        WeaponRecoilBone  = SECONDARY BarrelUp02
18253        ShowSubObject = TURRETUP02
18254        HideSubObject = TURRETUP01 TURRET BarrelUp02FX01 BarrelUp02FX02 BarrelUp02FX03 BarrelUp02FX04
18255      End
18256      
18257      ConditionState = WEAPONSET_CRATEUPGRADE_TWO REALLYDAMAGED
18258        Model = UVQuadCann_D
18259        Turret = TURRETUP02
18260        TurretPitch = TURRETEL02
18261        WeaponFireFXBone  = PRIMARY   BarrelUp02MS
18262        WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
18263        WeaponRecoilBone  = PRIMARY   BarrelUp02
18264        WeaponFireFXBone  = SECONDARY BarrelUp02MS
18265        WeaponMuzzleFlash = SECONDARY BarrelUp02FX
18266        WeaponRecoilBone  = SECONDARY BarrelUp02
18267        ShowSubObject = TURRETUP02
18268        HideSubObject = TURRETUP01 TURRET BarrelUp02FX01 BarrelUp02FX02 BarrelUp02FX03 BarrelUp02FX04
18269      End
18270      
18271      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE
18272        Model = UVQuadCann_D
18273        Turret = TURRETUP02
18274        TurretPitch = TURRETEL02
18275        WeaponFireFXBone  = PRIMARY   BarrelUp02MS
18276        WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
18277        WeaponRecoilBone  = PRIMARY   BarrelUp02
18278        WeaponFireFXBone  = SECONDARY BarrelUp02MS
18279        WeaponMuzzleFlash = SECONDARY BarrelUp02FX
18280        WeaponRecoilBone  = SECONDARY BarrelUp02
18281        ShowSubObject = TURRETUP02
18282        HideSubObject = TURRETUP01 TURRET BarrelUp02FX01 BarrelUp02FX02 BarrelUp02FX03 BarrelUp02FX04
18283      End
18284  
18285      TrackMarks = EXTnkTrack.tga
18286  
18287      TreadAnimationRate = 2.0;  amount of tread texture to move per second
18288      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
18289      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
18290  
18291      Dust = RocketBuggyDust
18292      DirtSpray = RocketBuggyDirtSpray
18293   
18294      ; These parameters are only used if the model has a separate suspension, 
18295      ; and the locomotor has HasSuspension = Yes.
18296      LeftFrontTireBone = Tire01
18297      RightFrontTireBone = Tire02
18298      TireRotationMultiplier = 0.2   ; this * speed = rotation.
18299      PowerslideRotationAddition = 0   ; This unit doesn't powerslide.
18300    End
18301  
18302    ; ***DESIGN parameters ***
18303    DisplayName      = OBJECT:QuadCannon
18304    Side = GLA
18305    EditorSorting   = VEHICLE
18306    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
18307    WeaponSet
18308      Conditions = None 
18309      Weapon = PRIMARY QuadCannonGun
18310      Weapon = SECONDARY QuadCannonGunAir
18311    End
18312    WeaponSet
18313      Conditions = CRATEUPGRADE_ONE 
18314      Weapon = PRIMARY QuadCannonGunUpgradeOne
18315      Weapon = SECONDARY QuadCannonGunUpgradeOneAir
18316    End
18317    WeaponSet
18318      Conditions = CRATEUPGRADE_TWO 
18319      Weapon = PRIMARY QuadCannonGunUpgradeTwo
18320      Weapon = SECONDARY QuadCannonGunUpgradeTwoAir
18321    End
18322    ArmorSet
18323      Conditions      = None
18324      Armor           = AntiAirVehicle
18325      DamageFX        = TankDamageFX
18326    End
18327    BuildCost       = 700
18328    BuildTime       = 10.0          ;in seconds    
18329    VisionRange     = 150
18330    ShroudClearingRange = 300
18331    Prerequisites
18332      Object = GLAArmsDealer
18333    End
18334  
18335    CommandSet          = GLAVehicleQuadCannon
18336  
18337    ExperienceValue = 50 50 100 150    ;Experience point value at each level
18338    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
18339    IsTrainable = Yes             ;Can gain experience
18340    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
18341    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
18342  
18343    ; *** AUDIO Parameters ***
18344    VoiceSelect           = QuadCannonVoiceSelect
18345    VoiceMove             = QuadCannonVoiceMove
18346    VoiceAttack           = QuadCannonVoiceAttack
18347    VoiceAttackAir        = QuadCannonVoiceAttackAir
18348    SoundMoveStart        = QuadCannonMoveStart
18349    SoundMoveStartDamaged = QuadCannonMoveStart
18350    VoiceGuard             = QuadCannonVoiceMove
18351    UnitSpecificSounds
18352     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
18353      VoiceCreate         = QuadCannonVoiceCreate
18354     TurretMoveStart      = NoSound
18355     TurretMoveLoop       = TurretMoveLoop
18356     ; Required for the W3DTruckDraw module
18357     TruckLandingSound    = NoSound
18358     TruckPowerslideSound = NoSound
18359     VoiceSalvage         = QuadCannonVoiceSalvage
18360     VoiceCrush           = QuadCannonVoiceCrush
18361     VoiceEnter             = QuadCannonVoiceMove
18362    End
18363  
18364    Behavior = AIUpdateInterface ModuleTag_20
18365      AutoAcquireEnemiesWhenIdle = Yes
18366      MoodAttackCheckRate        = 250
18367    End
18368  
18369    ; *** ENGINEERING Parameters ***
18370    RadarPriority = UNIT
18371    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE
18372  
18373    Body = ActiveBody ModuleTag_02
18374      MaxHealth       = 220.0
18375      InitialHealth   = 220.0
18376    End
18377    
18378    Behavior = AIUpdateInterface ModuleTag_03
18379      Turret
18380        TurretTurnRate = 360
18381        TurretPitchRate = 360
18382        AllowsPitch = Yes
18383        ControlledWeaponSlots = PRIMARY SECONDARY
18384      End
18385      AutoAcquireEnemiesWhenIdle = Yes
18386    End
18387    
18388    Locomotor = SET_NORMAL QuadCannonLocomotor
18389    
18390    Behavior = PhysicsBehavior ModuleTag_04
18391      Mass = 40.0
18392    End
18393    
18394    ; Catch fire, and explode death
18395    Behavior = SlowDeathBehavior ModuleTag_05
18396      DeathTypes = ALL -CRUSHED -SPLATTED
18397      ProbabilityModifier = 411
18398      DestructionDelay = 150
18399      DestructionDelayVariance = 250
18400      OCL = FINAL    OCL_QuadCannonDeathEffect  
18401      FX  = FINAL    FX_BattleMasterExplosionOneFinal
18402    End
18403    
18404    Behavior = AutoHealBehavior ModuleTag_06
18405      HealingAmount = 2
18406      HealingDelay = 1000 ; msec
18407      TriggeredBy = Upgrade_GLAJunkRepair
18408    End
18409  
18410    Behavior = FlammableUpdate ModuleTag_08
18411      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
18412      AflameDamageAmount = 3       ; taking this much damage...
18413      AflameDamageDelay = 500       ; this often.
18414    End
18415  
18416    Behavior                 = TransitionDamageFX ModuleTag_09
18417      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
18418      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
18419    End
18420  
18421  
18422    ; A crushing defeat
18423    Behavior = FXListDie ModuleTag_10
18424      DeathTypes = NONE +CRUSHED +SPLATTED
18425      DeathFX = FX_CarCrush
18426    End
18427  
18428    Behavior = CreateCrateDie ModuleTag_11
18429      CrateData = SalvageCrateData
18430      ;CrateData = EliteTankCrateData
18431      ;CrateData = HeroicTankCrateData
18432    End
18433  
18434    Behavior = WeaponBonusUpgrade ModuleTag_12
18435      TriggeredBy = Upgrade_GLAAPBullets
18436    End 
18437  
18438    Behavior = DestroyDie ModuleTag_13
18439      DeathTypes = NONE +CRUSHED +SPLATTED
18440    End
18441      Behavior = VeterancyGainCreate ModuleTag_03
18442      StartingLevel = VETERAN
18443      ScienceRequired = SCIENCE_TechnicalTraining
18444    End
18445    Geometry = BOX
18446    GeometryMajorRadius = 18.0
18447    GeometryMinorRadius = 7.0
18448    GeometryHeight = 11.5     
18449    GeometryIsSmall = No
18450    Shadow = SHADOW_VOLUME
18451    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
18452  
18453  End
18454  
18455  ;------------------------------------------------------------------------------
18456  ;Also called Toxin Tractor && ToxinTractor
18457  Object GLAVehicleToxinTruck
18458  
18459    ; *** ART Parameters ***
18460    SelectPortrait         = SUToxinTractor_L
18461    ButtonImage            = SUToxinTractor
18462    
18463    UpgradeCameo1 = Upgrade_GLAAnthraxBeta
18464    UpgradeCameo2 = Upgrade_GLAJunkRepair
18465    ;UpgradeCameo3 = NONE
18466    ;UpgradeCameo4 = NONE
18467    ;UpgradeCameo5 = NONE
18468    
18469    Draw = W3DTruckDraw ModuleTag_01
18470      OkToChangeModelColor = Yes
18471      DefaultConditionState 
18472        Model = UVToxinTrk
18473        Turret = Turret
18474        TurretPitch = TurretEL
18475        WeaponFireFXBone = PRIMARY WeaponA
18476        WeaponLaunchBone = PRIMARY WeaponA
18477        WeaponFireFXBone = SECONDARY Spigot
18478        WeaponLaunchBone = SECONDARY Spigot
18479      End
18480      AliasConditionState WEAPONSET_PLAYER_UPGRADE
18481      ConditionState = USING_WEAPON_B 
18482        Model = UVToxinTrk
18483        ParticleSysBone = none ToxinPuddleContinuous
18484      END
18485      ConditionState = USING_WEAPON_B WEAPONSET_PLAYER_UPGRADE
18486        Model = UVToxinTrk
18487        ParticleSysBone = none AnthraxPuddleContinuous
18488      END
18489  
18490      ConditionState = REALLYDAMAGED
18491        Model = UVToxinTrk_D
18492      End
18493      AliasConditionState REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE
18494      ConditionState = USING_WEAPON_B REALLYDAMAGED
18495        Model = UVToxinTrk_D
18496        ParticleSysBone = none ToxinPuddleContinuous
18497      END
18498      ConditionState = USING_WEAPON_B REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE 
18499        Model = UVToxinTrk_D
18500        ParticleSysBone = none AnthraxPuddleContinuous
18501      END
18502  
18503      ConditionState = RUBBLE
18504        Model = UVToxinTrk_D
18505      End
18506      AliasConditionState WEAPONSET_PLAYER_UPGRADE RUBBLE
18507  
18508      TrackMarks = EXTireTrack.tga
18509      LeftFrontTireBone = Tire01
18510      RightFrontTireBone = Tire02
18511      LeftRearTireBone = Tire03
18512  
18513      RightRearTireBone = Tire04
18514      TireRotationMultiplier = 0.2   ; this * speed = rotation.
18515      PowerslideRotationAddition = 0   ; This vehicle doesn't powerslide.
18516  
18517      Dust = RocketBuggyDust
18518      DirtSpray = RocketBuggyDirtSpray
18519  
18520    End
18521  
18522    ; ***DESIGN parameters ***
18523    DisplayName         = OBJECT:ToxinTruck
18524    Side                = GLA
18525    EditorSorting       = VEHICLE
18526    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
18527    WeaponSet 
18528      Conditions        = None 
18529      Weapon            = PRIMARY     ToxinTruckGun
18530      Weapon            = SECONDARY   ToxinTruckSprayer
18531      AutoChooseSources = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
18532      AutoChooseSources = SECONDARY   NONE ;Special attack only
18533    End
18534    WeaponSet
18535      Conditions        = PLAYER_UPGRADE 
18536      Weapon            = PRIMARY     ToxinTruckGunUpgraded
18537      Weapon            = SECONDARY   ToxinTruckSprayerUpgraded
18538      AutoChooseSources = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
18539      AutoChooseSources = SECONDARY   NONE ;Special attack only
18540    End
18541    ArmorSet
18542      Conditions        = None
18543      Armor             = ToxinTruckArmor
18544      DamageFX          = TruckDamageFX
18545    End
18546    BuildCost           = 600
18547    BuildTime           = 5.0          ;in seconds    
18548    VisionRange         = 100
18549    ShroudClearingRange = 200
18550    Prerequisites
18551      Object = GLAArmsDealer
18552    End
18553  
18554    ExperienceValue     = 50 50 100 150    ;Experience point value at each level
18555    ExperienceRequired  = 0 100 150 300  ;Experience points needed to gain each level
18556    IsTrainable         = Yes             ;Can gain experience
18557    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
18558    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
18559    CommandSet          = GLAVehicleToxinTruckCommandSet
18560  
18561    ; *** AUDIO Parameters ***
18562    VoiceSelect         = ToxinTractorVoiceSelect
18563    VoiceMove           = ToxinTractorVoiceMove
18564    VoiceGuard          = ToxinTractorVoiceMove
18565    VoiceAttack         = ToxinTractorVoiceAttack
18566    SoundMoveStart      = ToxinTractorMoveStart
18567    SoundMoveStartDamaged = ToxinTractorMoveStart
18568    SoundDie            = ToxinTractorDie
18569  
18570    UnitSpecificSounds
18571      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
18572      VoiceCreate         = ToxinTractorVoiceCreate
18573      TurretMoveStart     = NoSound
18574      TurretMoveLoop      = TurretMoveLoop
18575     TruckLandingSound    = NoSound
18576     TruckPowerslideSound = NoSound
18577      VoiceCrush      = ToxinTractorVoiceCrush
18578      VoiceEnter           = ToxinTractorVoiceMove
18579      VoicePoisonLocation = ToxinTractorVoiceAttackContam
18580  
18581    End
18582  
18583    ; *** ENGINEERING Parameters ***
18584    RadarPriority         = UNIT
18585    KindOf                = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
18586  
18587    Body = ActiveBody ModuleTag_02
18588      MaxHealth           = 240.0
18589      InitialHealth       = 240.0
18590    End
18591  
18592    Behavior = AIUpdateInterface ModuleTag_03
18593      AutoAcquireEnemiesWhenIdle = Yes
18594      Turret
18595        TurretTurnRate            = 180
18596        TurretPitchRate           = 180
18597        AllowsPitch               = Yes
18598        MinPhysicalPitch          = -20 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
18599        TurretFireAngleSweep      = PRIMARY 8
18600        TurretSweepSpeedModifier  = PRIMARY 0.5    ; Sweep slower than you turn
18601        ControlledWeaponSlots     = PRIMARY
18602      End
18603    End
18604    Locomotor             = SET_NORMAL ToxinTruckLocomotor
18605    Behavior              = PhysicsBehavior ModuleTag_04
18606      Mass                = 10.0
18607    End
18608  
18609    Behavior                    = SlowDeathBehavior  ModuleTag_05
18610      DeathTypes                = ALL -CRUSHED -SPLATTED
18611      ProbabilityModifier       = 5
18612      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
18613      DestructionDelay          = 0
18614      DestructionDelayVariance  = 200
18615      OCL                       = INITIAL OCL_ToxinTractorDeathEffect
18616      FX                        = FINAL FX_ToxinTruckExplosionOneFinal
18617    End
18618    Behavior                    = InstantDeathBehavior  ModuleTag_06
18619      DeathTypes                = NONE +CRUSHED +SPLATTED
18620      FX                        = FX_CarCrush
18621      OCL                       = OCL_CrusaderTank_CrushEffect
18622    End
18623      
18624    Behavior = CreateCrateDie ModuleTag_07
18625      CrateData   = SalvageCrateData
18626      ;CrateData  = EliteTankCrateData
18627      ;CrateData  = HeroicTankCrateData
18628    End
18629  
18630    Behavior = WeaponSetUpgrade ModuleTag_08
18631      ; the Toxin Tractor gets this upgrade if we either buy the upgrade,
18632      ; or if it gets HEROIC status
18633      TriggeredBy   = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
18634    End
18635    
18636    Behavior                          = TransitionDamageFX ModuleTag_11
18637      ReallyDamagedParticleSystem1  = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
18638      ReallyDamagedFXList1          = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
18639    End
18640    
18641    Behavior = AutoHealBehavior ModuleTag_12
18642      HealingAmount   = 2
18643      HealingDelay    = 1000 ; msec
18644      TriggeredBy     = Upgrade_GLAJunkRepair
18645    End
18646  
18647    Behavior = FlammableUpdate ModuleTag_21
18648      AflameDuration          = 5000         ; If I catch fire, I'll burn for this long...
18649      AflameDamageAmount      = 3       ; taking this much damage...
18650      AflameDamageDelay       = 500       ; this often.
18651    End
18652  
18653    Behavior = FireOCLAfterWeaponCooldownUpdate ModuleTag_13
18654      WeaponSlot            = SECONDARY
18655      ConflictsWith         = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
18656      OCL                   = OCL_PoisonFieldMedium
18657      MinShotsToCreateOCL   = 4
18658      OCLLifetimePerSecond  = 10000
18659      OCLLifetimeMaxCap     = 180000
18660    End
18661    Behavior = FireOCLAfterWeaponCooldownUpdate ModuleTag_14
18662      WeaponSlot            = SECONDARY
18663      TriggeredBy           = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
18664      OCL                   = OCL_PoisonFieldUpgradedMedium
18665      MinShotsToCreateOCL   = 4
18666      OCLLifetimePerSecond  = 10000
18667      OCLLifetimeMaxCap     = 180000
18668    End
18669  
18670    Behavior = FireWeaponWhenDeadBehavior ModuleTag_15    ;These two make the right damage field at death
18671      DeathWeapon   = ToxinShellWeapon
18672      StartsActive  = Yes   
18673      ConflictsWith = Upgrade_GLAAnthraxBeta
18674    End
18675    Behavior = FireWeaponWhenDeadBehavior ModuleTag_16
18676      DeathWeapon   = ToxinShellWeaponUpgraded
18677      StartsActive  = No   
18678      TriggeredBy = Upgrade_GLAAnthraxBeta
18679    End
18680  
18681    Geometry = BOX
18682    GeometryMajorRadius = 13.0
18683    GeometryMinorRadius = 9.0
18684    GeometryHeight = 10.0   ; set to make the projectile stream look right  
18685    GeometryIsSmall = Yes    
18686    Shadow = SHADOW_VOLUME
18687    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
18688  
18689  End
18690  
18691  ;------------------------------------------------------------------------------
18692  Object ToxinTruckStreamProjectile
18693  
18694  ; Explanation - Particles can't do damage, so this is a fast shooting low 
18695  ; damage invisible missile launcher with a toxin trail for exhaust
18696  
18697    ; *** ART Parameters ***
18698    Draw = W3DModelDraw ModuleTag_01
18699      DefaultConditionState
18700        Model = NONE 
18701      End
18702    End
18703    ; Must have a draw module to be allowed to draw detonation FX
18704  
18705    ; ***DESIGN parameters ***
18706    EditorSorting     = SYSTEM
18707    VisionRange       = 0.0  
18708    ArmorSet
18709      Conditions      = None
18710      Armor           = ProjectileArmor
18711      DamageFX        = None
18712    End
18713  
18714    ; *** ENGINEERING Parameters ***
18715    KindOf            = PROJECTILE
18716    Body              = ActiveBody ModuleTag_02
18717      MaxHealth       = 100.0
18718      InitialHealth   = 100.0
18719    End
18720  
18721    Behavior = DestroyDie ModuleTag_03
18722      ;nothing
18723    End
18724      
18725    Behavior = PhysicsBehavior ModuleTag_04
18726      Mass                = 1
18727      AllowCollideForce   = No  ; toxins collide, but never apply forces when they do so
18728    End
18729  
18730    Behavior = MissileAIUpdate ModuleTag_05
18731      TryToFollowTarget               = No 
18732      FuelLifetime                    = 500
18733      InitialVelocity                 = 120                ; in dist/sec
18734      IgnitionDelay                   = 0
18735      DistanceToTravelBeforeTurning   = 2
18736      GarrisonHitKillRequiredKindOf   = INFANTRY
18737      GarrisonHitKillForbiddenKindOf  = NONE
18738      GarrisonHitKillCount            = 2
18739      GarrisonHitKillFX               = FX_ToxinStreamGarrisonBuildingHit
18740    End
18741  
18742    Locomotor = SET_NORMAL ToxinTruckStreamLocomotor
18743  
18744    Behavior = BoneFXUpdate ModuleTag_06
18745      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:ToxinTrail01 ; Covers gap at beginning of line
18746    End
18747  
18748    Behavior = BoneFXDamage ModuleTag_07
18749      ;nothing
18750    End
18751  
18752    Geometry = Sphere
18753    GeometryIsSmall = Yes
18754    GeometryMajorRadius = 2.0
18755  
18756  End
18757  
18758  ;------------------------------------------------------------------------------
18759  Object ToxinTruckStreamProjectileUpgraded
18760  
18761  ; Explanation - Particles can't do damage, so this is a fast shooting low 
18762  ; damage invisible missile launcher with a toxin trail for exhaust
18763  
18764    ; *** ART Parameters ***
18765    Draw = W3DModelDraw ModuleTag_01
18766      DefaultConditionState
18767        Model = NONE 
18768      End
18769    End
18770    ; Must have a draw module to be allowed to draw detonation FX
18771  
18772    ; ***DESIGN parameters ***
18773    EditorSorting     = SYSTEM
18774    VisionRange       = 0.0  
18775    ArmorSet
18776      Conditions      = None
18777      Armor           = ProjectileArmor
18778      DamageFX        = None
18779    End
18780  
18781    ; *** ENGINEERING Parameters ***
18782    KindOf            = PROJECTILE
18783    Body              = ActiveBody ModuleTag_02
18784      MaxHealth       = 100.0
18785      InitialHealth   = 100.0
18786    End
18787  
18788    Behavior = DestroyDie ModuleTag_03
18789      ;nothing
18790    End
18791      
18792    Behavior = PhysicsBehavior ModuleTag_04
18793      Mass = 1
18794      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
18795    End
18796  
18797    Behavior = MissileAIUpdate ModuleTag_05
18798      TryToFollowTarget               = No 
18799      FuelLifetime                    = 500
18800      InitialVelocity                 = 120                ; in dist/sec
18801      IgnitionDelay                   = 0
18802      DistanceToTravelBeforeTurning   = 2
18803      GarrisonHitKillRequiredKindOf   = INFANTRY
18804      GarrisonHitKillForbiddenKindOf  = NONE
18805      GarrisonHitKillCount            = 2
18806      GarrisonHitKillFX               = FX_ToxinStreamUpgradedGarrisonBuildingHit
18807    End
18808    Locomotor = SET_NORMAL ToxinTruckStreamLocomotor
18809  
18810    Behavior = BoneFXUpdate ModuleTag_06
18811      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:AnthraxTrail01 ; Covers gap at beginning of line
18812    End
18813  
18814    Behavior = BoneFXDamage ModuleTag_07
18815      ;nothing
18816    End
18817  
18818    Geometry = Sphere
18819    GeometryIsSmall = Yes
18820    GeometryMajorRadius = 2.0
18821  
18822  End
18823  
18824  ;------------------------------------------------------------------------------
18825  Object ToxinTruckProjectileStream
18826  
18827    ; *** ART Parameters ***
18828    Draw = W3DProjectileStreamDraw ModuleTag_01
18829      Texture       = EXToxinStream.tga
18830      Width         = 1.5
18831      TileFactor    = 2.0 ; put the texture on the line segment this many times
18832      ScrollRate    = 6.0; scroll the texture offset this fast
18833      MaxSegments   = 14 ; only play the first X if there are a ton of them. 0 means play all
18834    End
18835  
18836    ; *** ENGINEERING Parameters ***
18837    KindOf = INERT
18838    Behavior = ProjectileStreamUpdate ModuleTag_02
18839      ;nothing
18840    End
18841  
18842  End
18843  
18844  
18845  ;------------------------------------------------------------------------------
18846  Object ToxinTruckProjectileStreamUpgraded
18847  
18848    ; *** ART Parameters ***
18849    Draw = W3DProjectileStreamDraw ModuleTag_01
18850      Texture       = EXAnthraxStream.tga
18851      Width         = 1.5
18852      TileFactor    = 2.0 ; put the texture on the line segment this many times
18853      ScrollRate    = 6.0; scroll the texture offset this fast
18854      MaxSegments   = 14 ; only play the first X if there are a ton of them. 0 means play all
18855    End
18856  
18857    ; *** ENGINEERING Parameters ***
18858    KindOf = INERT
18859    Behavior = ProjectileStreamUpdate ModuleTag_02
18860      ;nothing
18861    End
18862  
18863  End
18864  
18865  ;------------------------------------------------------------------------------
18866  Object ToxinTruckSprayProjectile
18867  
18868  ; Explanation - Particles can't do damage, so this is a fast shooting low 
18869  ; damage invisible missile launcher with a flame trail for exhaust
18870  
18871    ; *** ART Parameters ***
18872    Draw = W3DModelDraw ModuleTag_01
18873      DefaultConditionState
18874        Model = NONE 
18875      End
18876    End
18877    ; Must have a draw module to be allowed to draw detonation FX
18878  
18879    ; ***DESIGN parameters ***
18880    EditorSorting     = SYSTEM
18881    VisionRange       = 0.0  
18882    ArmorSet
18883      Conditions      = None
18884      Armor           = ProjectileArmor
18885      DamageFX        = None
18886    End
18887  
18888    ; *** ENGINEERING Parameters ***
18889    KindOf = PROJECTILE
18890    Body = ActiveBody ModuleTag_02
18891      MaxHealth       = 100.0
18892      InitialHealth   = 100.0
18893    End
18894  
18895    Behavior = DestroyDie ModuleTag_03
18896      ;nothing
18897    End
18898      
18899    Behavior = PhysicsBehavior ModuleTag_04
18900      Mass = 50
18901      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
18902    End
18903  
18904    Behavior = MissileAIUpdate ModuleTag_05
18905      TryToFollowTarget = No 
18906      FuelLifetime = 1
18907      InitialVelocity = 1                ; in dist/sec
18908      IgnitionDelay = 0
18909      DistanceToTravelBeforeTurning = 0
18910      DistanceToTargetForLock = 0  ; If it gets within 100 of the target, it kills the target.
18911  
18912    End
18913  
18914    Locomotor = SET_NORMAL ToxinTruckDribbleLocomotor
18915  
18916    Geometry = Sphere
18917    GeometryIsSmall = Yes
18918    GeometryMajorRadius = 2.0
18919  
18920  End
18921  
18922  ;------------------------------------------------------------------------------
18923  Object CleanupHazardProjectileStream
18924  
18925    ; *** ART Parameters ***
18926    Draw = W3DProjectileStreamDraw ModuleTag_01
18927      Texture = EXCleanupStream.tga
18928      Width = 1.5
18929      TileFactor = 2.0 ; put the texture on the line segment this many times
18930      ScrollRate = 6.0; scroll the texture offset this fast
18931      MaxSegments = 14 ; only play the first X if there are a ton of them. 0 means play all
18932    End
18933  
18934    ; *** ENGINEERING Parameters ***
18935    KindOf = INERT
18936    Behavior = ProjectileStreamUpdate ModuleTag_02
18937      ;nothing
18938    End
18939  
18940  End
18941  
18942  ;------------------------------------------------------------------------------
18943  Object CleanupStreamProjectile
18944  
18945  ; Explanation - Particles can't do damage, so this is a fast shooting low 
18946  ; damage invisible missile launcher with a flame trail for exhaust
18947  
18948    ; *** ART Parameters ***
18949    Draw = W3DModelDraw ModuleTag_01
18950      DefaultConditionState
18951        Model = NONE 
18952      End
18953    End
18954    ; Must have a draw module to be allowed to draw detonation FX
18955  
18956    ; ***DESIGN parameters ***
18957    EditorSorting     = SYSTEM
18958    VisionRange       = 0.0  
18959    ArmorSet
18960      Conditions      = None
18961      Armor           = ProjectileArmor
18962      DamageFX        = None
18963    End
18964  
18965    ; *** ENGINEERING Parameters ***
18966    KindOf            = PROJECTILE
18967    Body              = ActiveBody ModuleTag_02
18968      MaxHealth       = 100.0
18969      InitialHealth   = 100.0
18970    End
18971  
18972    Behavior = DestroyDie ModuleTag_03
18973      ;nothing
18974    End
18975      
18976    Behavior = PhysicsBehavior ModuleTag_04
18977      Mass = 1
18978      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
18979    End
18980  
18981    Behavior = MissileAIUpdate ModuleTag_05
18982      TryToFollowTarget = No 
18983      FuelLifetime = 600
18984      InitialVelocity = 120                ; in dist/sec
18985      IgnitionDelay = 0
18986      DistanceToTravelBeforeTurning = 2
18987    End
18988  
18989    Locomotor = SET_NORMAL ToxinTruckStreamLocomotor
18990  
18991    Behavior = BoneFXUpdate ModuleTag_06
18992      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:CleanupTrail01 ; Covers gap at beginning of line
18993    End
18994  
18995    Behavior = BoneFXDamage ModuleTag_07
18996      ;nothing
18997    End
18998  
18999    Geometry = Sphere
19000    GeometryIsSmall = Yes
19001    GeometryMajorRadius = 2.0
19002  
19003  End
19004  
19005  ;------------------------------------------------------------------------------
19006  Object BioHazardCleanupStreamProjectile
19007  
19008  ; Explanation - Particles can't do damage, so this is a fast shooting low 
19009  ; damage invisible missile launcher with a flame trail for exhaust
19010  
19011    ; *** ART Parameters ***
19012    Draw = W3DModelDraw ModuleTag_01
19013      DefaultConditionState
19014        Model = NONE 
19015      End
19016    End
19017    ; Must have a draw module to be allowed to draw detonation FX
19018  
19019    ; ***DESIGN parameters ***
19020    EditorSorting     = SYSTEM
19021    VisionRange       = 0.0  
19022    ArmorSet
19023      Conditions      = None
19024      Armor           = ProjectileArmor
19025      DamageFX        = None
19026    End
19027  
19028    ; *** ENGINEERING Parameters ***
19029    KindOf            = PROJECTILE
19030    Body              = ActiveBody ModuleTag_02
19031      MaxHealth       = 100.0
19032      InitialHealth   = 100.0
19033    End
19034  
19035    Behavior = DestroyDie ModuleTag_03
19036      ;nothing
19037    End
19038      
19039    Behavior = PhysicsBehavior ModuleTag_04
19040      Mass = 1
19041      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
19042    End
19043  
19044    Behavior = MissileAIUpdate ModuleTag_05
19045      TryToFollowTarget = No 
19046      FuelLifetime = 500
19047      InitialVelocity = 120                ; in dist/sec
19048      IgnitionDelay = 0
19049      DistanceToTravelBeforeTurning = 2
19050      ;GarrisonHitKillRequiredKindOf = INFANTRY
19051      ;GarrisonHitKillForbiddenKindOf = NONE
19052      ;GarrisonHitKillCount = 2
19053      ;GarrisonHitKillFX = FX_ToxinStreamGarrisonBuildingHit
19054    End
19055  
19056    Locomotor = SET_NORMAL FasterToxinTruckStreamLocomotor
19057  
19058  
19059    Behavior = BoneFXUpdate ModuleTag_06
19060      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:CleanupTrail01 ; Covers gap at beginning of line
19061    End
19062  
19063    Behavior = BoneFXDamage ModuleTag_07
19064      ;nothing
19065    End
19066  
19067    Geometry = Sphere
19068    GeometryIsSmall = Yes
19069    GeometryMajorRadius = 2.0
19070  End
19071  
19072  
19073  ;------------------------------------------------------------------------------
19074  Object GLAVehicleBombTruck
19075  
19076    ; *** ART Parameters ***
19077    SelectPortrait         = SUBombTruck_L
19078    ButtonImage            = SUBombTruck
19079    
19080    UpgradeCameo1 = Upgrade_GLABombTruckHighExplosiveBomb
19081    UpgradeCameo2 = Upgrade_GLABombTruckBioBomb
19082    UpgradeCameo3 = Upgrade_GLAJunkRepair
19083    ;UpgradeCameo4 = NONE
19084    ;UpgradeCameo5 = NONE
19085    
19086    
19087    Draw = W3DTruckDraw ModuleTag_01
19088      OkToChangeModelColor = Yes
19089      TrackMarks = EXTireTrack.tga
19090      
19091      DefaultConditionState
19092        Model = UVBMBTRUK
19093        Animation = UVBMBTRUK.UVBMBTRUK
19094        AnimationMode = LOOP
19095  
19096        ;Display the default bombload -- and the upgrades will handle the rest!
19097        HideSubObject = Bombload02 Bombload03 Bombload04
19098      End
19099  
19100      ConditionState = REALLYDAMAGED
19101        Model = UVBMBTRUK_D
19102        Animation = UVBMBTRUK_D.UVBMBTRUK_D
19103        AnimationMode = LOOP
19104      End
19105      
19106      ConditionState = RUBBLE
19107        Model = UVBMBTRUK_D
19108      End
19109  
19110      LeftFrontTireBone = Tire01
19111      RightFrontTireBone = Tire02
19112      MidLeftFrontTireBone = Tire03
19113      MidRightFrontTireBone = Tire04
19114      LeftRearTireBone = Tire05
19115      RightRearTireBone = Tire06
19116      TireRotationMultiplier = 0.2   ; this * speed = rotation.
19117  
19118      Dust = RocketBuggyDust
19119      DirtSpray = RocketBuggyDirtSpray
19120      PowerslideSpray = RocketBuggyDirtPowerSlide
19121  
19122    End
19123  
19124    ; ***DESIGN parameters ***
19125    DisplayName      = OBJECT:BombTruck
19126    Side = GLA
19127    EditorSorting   = VEHICLE
19128    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
19129    WeaponSet
19130      Conditions = None 
19131      Weapon = PRIMARY SuicideWeapon 
19132    End
19133    ArmorSet
19134      Conditions      = None
19135      Armor           = TruckArmor
19136      DamageFX        = TruckDamageFX
19137    End
19138    BuildCost       = 1200
19139    BuildTime       = 15.0          ;in seconds    
19140    VisionRange     = 150 ; Used in attack move targeting
19141    ShroudClearingRange     = 200
19142    Prerequisites
19143      Object = GLAArmsDealer
19144      Object = GLAPalace
19145    End
19146    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
19147    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
19148    CommandSet = GLAVehicleBombTruckCommandSet
19149  
19150    ; *** AUDIO Parameters ***
19151    VoiceSelect = BombTruckVoiceSelect
19152    VoiceMove = BombTruckVoiceMove
19153    VoiceGuard = BombTruckVoiceMove
19154    VoiceAttack = BombTruckVoiceAttack
19155    SoundMoveStart = BombTruckMoveStart
19156    SoundMoveStartDamaged = BombTruckMoveStart
19157    UnitSpecificSounds
19158      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
19159      VoiceCreate                   = BombTruckVoiceCreate
19160      TurretMoveStart               = NoSound
19161      TurretMoveLoop                = NoSound
19162      TruckLandingSound             = RocketBuggyLand
19163      TruckPowerslideSound          = RocketBuggyPowerslide
19164      DisguiseStarted               = BombTruckDisguiseStarted
19165      DisguiseRevealedSuccess       = BombTruckDisguiseRevealedSuccess
19166      DisguiseRevealedFailure       = BombTruckDisguiseRevealedFailure
19167      VoiceEnter = BombTruckVoiceMove
19168    End
19169  
19170    ; *** ENGINEERING Parameters ***
19171    RadarPriority = UNIT
19172    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE DISGUISER
19173  
19174    Body = ActiveBody ModuleTag_02
19175      MaxHealth       = 220.0
19176      InitialHealth   = 220.0
19177    End
19178  
19179    ExperienceValue     = 50 50 50 50  ; Experience point value at each level
19180  
19181    Behavior = VeterancyGainCreate ModuleTag_03
19182      StartingLevel = VETERAN
19183    End
19184  
19185    Behavior = AIUpdateInterface ModuleTag_04
19186      AutoAcquireEnemiesWhenIdle = No ATTACK_BUILDINGS
19187    End
19188    Locomotor = SET_NORMAL BombTruckLocomotor
19189  
19190    Behavior = PhysicsBehavior ModuleTag_05
19191      Mass = 40.0
19192    End
19193  
19194    Behavior = AutoHealBehavior ModuleTag_06
19195      HealingAmount = 2
19196      HealingDelay = 1000 ; msec
19197      TriggeredBy = Upgrade_GLAJunkRepair
19198    End
19199  
19200    Behavior = ProductionUpdate ModuleTag_07
19201      ; nothing
19202    End
19203  
19204    Behavior = SlowDeathBehavior  ModuleTag_08
19205      DeathTypes = ALL -CRUSHED -SPLATTED
19206      ProbabilityModifier = 5
19207      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
19208      DestructionDelay = 0
19209      DestructionDelayVariance = 200
19210      FX = FINAL FX_BuggyNewDeathExplosion
19211      OCL = FINAL OCL_BombTruckDeathEffect
19212    End
19213  
19214    ;Behavior = DestroyDie
19215      ;nothing
19216    ;End
19217  
19218  
19219    ;************************************************************************************************
19220    ;* WHICH BOMB DO WE USE??? 
19221    ;* We have 2 damage possibilities -- (normal OR high explosive) 
19222    ;* So part 1 is inflicting the damage itself without creating effects
19223    ;* The complicated part is the part where we have 6 possible effect explosions based on 
19224    ;* all the possible upgrade combinations. Note that bio weapons don't inflict damage through
19225    ;* the explosion.
19226    ;*
19227    ;* DAMAGE COMBINATIONS (NO EFFECTS):
19228    ;* 1) Normal (doesn't have high explosive upgrade)
19229    ;* 2) High explosive (has high-explosive upgrade)
19230    ;*
19231    ;* EFFECT COMBINATIONS (NO DAMAGE):
19232    ;* 1) Normal (no upgrades)
19233    ;* 2) Bio (bio-bomb upgrade)
19234    ;* 3) Anthrax (bio-bomb and anthrax upgrade)
19235    ;* 4) High explosive (high explosive upgrade)
19236    ;* 5) High explosive bio (high explosive and bio-bomb upgrade)
19237    ;* 6) High explosive anthrax (high explosive, bio-bomb, and anthrax upgrades)
19238    ;************************************************************************************************
19239  
19240    ;************************************************************************************************
19241    ;* EXCLUSIVE DAMAGE POSSIBILITY 1 -- Normal explosion (can't have high-explosive upgrade)
19242    ;************************************************************************************************
19243    Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
19244      DeathWeapon   = BombTruckDefaultBombDamage
19245      StartsActive  = Yes                      ; turned on by upgrade
19246      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb
19247    End
19248  
19249    ;************************************************************************************************
19250    ;* EXCLUSIVE DAMAGE POSSIBILITY 2 -- High explosion (always plays if it has high-explosive upgrade)
19251    ;************************************************************************************************
19252    Behavior = FireWeaponWhenDeadBehavior ModuleTag_10
19253      DeathWeapon   = BombTruckHighExplosionBombDamage
19254      StartsActive  = No                      ; turned on by upgrade
19255      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
19256    End
19257  
19258    ;************************************************************************************************
19259    ;* EXCLUSIVE EFFECT COMBINATION 1 - Regular explosion (no upgrades)
19260    ;************************************************************************************************
19261    Behavior = FireWeaponWhenDeadBehavior ModuleTag_11
19262      DeathWeapon   = BombTruckDefaultBombEffect
19263      StartsActive  = Yes                      ; turned on by upgrade
19264      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
19265    End
19266  
19267    ;************************************************************************************************
19268    ;* EXCLUSIVE EFFECT COMBINATION 2 - Bio explosion 
19269    ;* Requires:    Bio upgrade
19270    ;* Can't have:  Anthrax upgrade, high explosive upgrade
19271    ;************************************************************************************************
19272    Behavior = FireWeaponWhenDeadBehavior ModuleTag_12
19273      DeathWeapon   = BombTruckBioBombEffect
19274      StartsActive  = No                      ; turned on by upgrade
19275      TriggeredBy   = Upgrade_GLABombTruckBioBomb
19276      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
19277      RequiresAllTriggers = Yes
19278    End
19279  
19280    ;************************************************************************************************
19281    ;* EXCLUSIVE EFFECT COMBINATION 3 - Anthrax explosion 
19282    ;* Requires:    Bio upgrade and anthrax upgrade
19283    ;* Can't have:  High explosive upgrade
19284    ;************************************************************************************************
19285    Behavior = FireWeaponWhenDeadBehavior ModuleTag_13
19286      DeathWeapon   = BombTruckAnthraxBombEffect
19287      StartsActive  = No                      ; turned on by upgrade
19288      TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLAAnthraxBeta
19289      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb 
19290      RequiresAllTriggers = Yes
19291    End
19292  
19293    ;************************************************************************************************
19294    ;* EXCLUSIVE EFFECT COMBINATION 4 - High explosion
19295    ;* Requires:    High explosive upgrade
19296    ;* Can't have:  Bio upgrade and anthrax upgrade
19297    ;************************************************************************************************
19298    Behavior = FireWeaponWhenDeadBehavior ModuleTag_14
19299      DeathWeapon   = BombTruckHighExplosiveBombEffect
19300      StartsActive  = No                      ; turned on by upgrade
19301      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
19302      ConflictsWith = Upgrade_GLABombTruckBioBomb
19303      RequiresAllTriggers = Yes
19304    End
19305  
19306    ;************************************************************************************************
19307    ;* EXCLUSIVE EFFECT COMBINATION 5 - High explosive bio explosion 
19308    ;* Requires:    High explosive upgrade and bio upgrade 
19309    ;* Can't have:  Anthrax upgrade
19310    ;************************************************************************************************
19311    Behavior = FireWeaponWhenDeadBehavior ModuleTag_15
19312      DeathWeapon   = BombTruckHighExplosiveBioBombEffect
19313      StartsActive  = No                      ; turned on by upgrade
19314      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
19315      ConflictsWith = Upgrade_GLAAnthraxBeta
19316      RequiresAllTriggers = Yes
19317    End
19318  
19319    ;************************************************************************************************
19320    ;* EXCLUSIVE EFFECT COMBINATION 6 - High explosive Anthrax explosion 
19321    ;* Requires:    High explosive, Bio, and anthrax upgrade
19322    ;************************************************************************************************
19323    Behavior = FireWeaponWhenDeadBehavior ModuleTag_16
19324      DeathWeapon   = BombTruckHighExplosiveAnthraxBombEffect
19325      StartsActive  = No                      ; turned on by upgrade
19326      TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
19327      RequiresAllTriggers = Yes
19328    End
19329  
19330    ;-------------------------------------------------------------------
19331    ; Wheeeee! Now we get to display the payload based on upgrades!!! 
19332    ;-------------------------------------------------------------------
19333    Behavior = SubObjectsUpgrade ModuleTag_17
19334      ;*** Bio bomb load ***
19335      TriggeredBy    = Upgrade_GLABombTruckBioBomb 
19336      ConflictsWith  = Upgrade_GLABombTruckHighExplosiveBomb
19337      ShowSubObjects = Bombload02 
19338      HideSubObjects = Bombload01 Bombload03 Bombload04
19339    End
19340    Behavior = SubObjectsUpgrade ModuleTag_18
19341      ;*** High-explosive bomb load ***
19342      TriggeredBy    = Upgrade_GLABombTruckHighExplosiveBomb
19343      ConflictsWith  = Upgrade_GLABombTruckBioBomb 
19344      ShowSubObjects = Bombload03 
19345      HideSubObjects = Bombload01 Bombload02 Bombload04
19346    End
19347    Behavior = SubObjectsUpgrade ModuleTag_19
19348      ;*** High-explosive bio bomb load ***
19349      TriggeredBy    = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb
19350      ShowSubObjects = Bombload04 
19351      HideSubObjects = Bombload01 Bombload02 Bombload03
19352      RequiresAllTriggers = Yes
19353    End
19354    ;-------------------------------------------------------------------
19355  
19356  
19357    Behavior = SpecialAbility ModuleTag_20
19358      SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
19359      UpdateModuleStartsAttack = Yes
19360      InitiateSound = BombTruckVoiceDisguise
19361    End
19362    Behavior = SpecialAbilityUpdate ModuleTag_21
19363      SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
19364      StartAbilityRange = 1000000.0
19365      ApproachRequiresLOS = No
19366    End
19367  
19368    Behavior = StealthUpdate ModuleTag_22
19369      StealthDelay                          = 1
19370      DisguisesAsTeam                       = Yes
19371      RevealDistanceFromTarget              = 100.0f
19372      OrderIdleEnemiesToAttackMeUponReveal  = Yes
19373      DisguiseFX                            = FX_BombTruckDisguise
19374      DisguiseRevealFX                      = FX_BombTruckDisguiseReveal
19375      InnateStealth                         = Yes
19376      DisguiseTransitionTime                = 2000
19377      DisguiseRevealTransitionTime          = 1000 
19378    End
19379  
19380    ; A crushing defeat
19381    Behavior = FXListDie ModuleTag_23
19382      DeathTypes = NONE +CRUSHED +SPLATTED
19383      DeathFX = FX_CarCrush
19384    End
19385    Behavior = CreateObjectDie ModuleTag_24
19386      DeathTypes = NONE +CRUSHED +SPLATTED
19387      CreationList = OCL_CrusaderTank_CrushEffect
19388    End
19389    Behavior = CreateCrateDie ModuleTag_25
19390      CrateData = SalvageCrateData
19391      ;CrateData = EliteTankCrateData
19392      ;CrateData = HeroicTankCrateData
19393    End
19394    
19395    Behavior = TransitionDamageFX ModuleTag_26
19396      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
19397      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
19398    End
19399  
19400    Behavior = FlammableUpdate ModuleTag_28
19401      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
19402      AflameDamageAmount = 3       ; taking this much damage...
19403      AflameDamageDelay = 500       ; this often.
19404    End
19405  
19406    Behavior = DestroyDie ModuleTag_29
19407      DeathTypes = NONE +CRUSHED +SPLATTED
19408    End
19409  
19410    Geometry = BOX
19411    GeometryMajorRadius = 19.0
19412    GeometryMinorRadius = 8.0
19413    GeometryHeight = 11.5     
19414    GeometryIsSmall = No    
19415    Shadow = SHADOW_VOLUME
19416    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
19417  
19418  End
19419  
19420  ;------------------------------------------------------------------------------
19421  Object GLAVehicleScudLauncher
19422  
19423    ; *** ART Parameters ***
19424    SelectPortrait         = SUScudLauncher_L
19425    ButtonImage            = SUScudLauncher_L
19426  
19427    UpgradeCameo1 = Upgrade_GLAJunkRepair
19428    UpgradeCameo2 = Upgrade_GLAAnthraxBeta
19429    ;UpgradeCameo3 = NONE
19430    ;UpgradeCameo4 = NONE
19431    ;UpgradeCameo5 = NONE
19432  
19433    Draw = W3DTruckDraw ModuleTag_01
19434      OkToChangeModelColor = Yes
19435  
19436      ProjectileBoneFeedbackEnabledSlots = PRIMARY SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
19437    
19438      DefaultConditionState
19439        Model = UVScudLchr
19440        Turret = TURRET
19441        TurretPitch = TURRETEL
19442        WeaponLaunchBone = PRIMARY WeaponA
19443        WeaponLaunchBone = SECONDARY WeaponA
19444        WeaponHideShowBone = PRIMARY MISSILE
19445        WeaponHideShowBone = SECONDARY MISSILE
19446      End
19447  
19448      ConditionState = REALLYDAMAGED
19449        Model = UVScudLchr_d
19450      End
19451      AliasConditionState = RUBBLE
19452  
19453      TrackMarks = EXTireTrack.tga
19454  
19455      Dust = ScudLauncherDust
19456      DirtSpray = RocketBuggyDirtSpray
19457      PowerslideSpray = RocketBuggyDirtPowerSlide
19458  
19459      ; These parameters are only used if the model has a separate suspension, 
19460      ; and the locomotor has HasSuspension = Yes.
19461      LeftFrontTireBone = Tire01
19462      RightFrontTireBone = Tire05
19463      LeftRearTireBone = Tire04
19464      RightRearTireBone = Tire08
19465      MidLeftFrontTireBone = Tire02
19466      MidRightFrontTireBone = Tire06
19467      MidLeftRearTireBone = Tire03
19468      MidRightRearTireBone = Tire07
19469  
19470      TireRotationMultiplier = 0.2   ; this * speed = rotation.
19471      ;PowerslideRotationAddition = 0.0   ; This speed is added to the rotation speed when powersliding.
19472  
19473    End
19474  
19475  
19476    ; ***DESIGN parameters ***
19477  
19478    DisplayName      = OBJECT:ScudLauncher
19479    Side = GLA
19480    EditorSorting   = VEHICLE
19481    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
19482    WeaponSet
19483      Conditions = None
19484      Weapon = PRIMARY SCUDLauncherGunExplosive
19485      Weapon = SECONDARY SCUDLauncherGunToxin
19486      AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
19487      AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
19488      PreferredAgainst = SECONDARY INFANTRY
19489      ShareWeaponReloadTime = Yes
19490    End
19491    WeaponSet
19492      Conditions = PLAYER_UPGRADE
19493      Weapon = PRIMARY SCUDLauncherGunExplosive
19494      Weapon = SECONDARY SCUDLauncherGunAnthrax
19495      AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
19496      AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
19497      PreferredAgainst = SECONDARY INFANTRY
19498      ShareWeaponReloadTime = Yes
19499    End
19500    ArmorSet
19501      Conditions      = None
19502      Armor           = TruckArmor
19503      DamageFX        = TankDamageFX
19504    End
19505    BuildCost       = 1200
19506    BuildTime       = 20.0          ;in seconds    
19507    VisionRange     = 180
19508    ShroudClearingRange = 300
19509    Prerequisites
19510      Object = GLAArmsDealer
19511      Object = GLAPalace
19512      Science = SCIENCE_ScudLauncher
19513    End
19514  
19515    ExperienceValue = 50 50 100 150   ;Experience point value at each level
19516    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
19517    IsTrainable = Yes             ;Can gain experience
19518    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
19519    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
19520    CommandSet           = GLAVehicleScudLauncherCommandSet
19521  
19522    ; *** AUDIO Parameters ***
19523    VoiceSelect = ScudLauncherVoiceSelect
19524    VoiceMove = ScudLauncherVoiceMove
19525    VoiceGuard = ScudLauncherVoiceMove
19526    VoiceAttack = ScudLauncherVoiceAttack
19527    SoundMoveStart = ScudLauncherMoveStart
19528    SoundMoveStartDamaged = ScudLauncherMoveStart
19529    UnitSpecificSounds
19530      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
19531      VoiceCreate       = ScudLauncherVoiceCreate
19532      TurretMoveStart = NoSound
19533      TurretMoveLoop = TurretMoveLoop
19534      TruckLandingSound = NoSound
19535      TruckPowerslideSound = NoSound
19536      VoiceCrush = ScudLauncherVoiceCrush
19537      VoiceEnter = ScudLauncherVoiceMove
19538      VoicePrimaryWeaponMode = ScudLauncherVoiceModeHiEx
19539      VoiceSecondaryWeaponMode = ScudLauncherVoiceModeAnthrax
19540    End
19541  
19542    ; *** ENGINEERING Parameters ***
19543    RadarPriority = UNIT
19544    KindOf = PRELOAD SELECTABLE CAN_ATTACK DONT_AUTO_CRUSH_INFANTRY CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
19545  
19546    Body = ActiveBody ModuleTag_02
19547      MaxHealth       = 180.0
19548      InitialHealth   = 180.0
19549    End
19550  
19551    Behavior = AIUpdateInterface ModuleTag_03
19552      Turret
19553        TurretTurnRate = 60   ; turn rate, in degrees per sec
19554        TurretPitchRate = 60
19555        FirePitch = 90  ; Instead of aiming pitchwise at the target, it will aim here
19556        AllowsPitch = Yes
19557        ControlledWeaponSlots = PRIMARY SECONDARY
19558      End
19559      AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
19560    End  
19561  
19562    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
19563    End
19564  
19565    Locomotor = SET_NORMAL ScudLauncherLocomotor
19566    Behavior = PhysicsBehavior ModuleTag_05
19567      Mass = 40.0
19568    End
19569  
19570    Behavior = AutoHealBehavior ModuleTag_06
19571      HealingAmount = 2
19572      HealingDelay = 1000 ; msec
19573      TriggeredBy = Upgrade_GLAJunkRepair
19574    End
19575  
19576    Behavior = TransitionDamageFX ModuleTag_08
19577      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
19578      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_ScudLauncherDamageTransition
19579    End
19580  
19581    ; Catch fire, and explode death
19582    Behavior = SlowDeathBehavior ModuleTag_09
19583      DeathTypes = ALL -CRUSHED -SPLATTED
19584      ProbabilityModifier = 50
19585      DestructionDelay = 2000
19586      DestructionDelayVariance = 300
19587      FX  = INITIAL  FX_CrusaderCatchFire
19588      OCL = FINAL    OCL_SCUDLauncherDeathEffect  
19589      FX  = FINAL    FX_ScudLauncherExplosionOneFinal
19590    End
19591  
19592    ; A crushing defeat
19593    Behavior = FXListDie ModuleTag_10
19594      DeathTypes = NONE +CRUSHED +SPLATTED
19595      DeathFX = FX_CarCrush
19596    End
19597  
19598    Behavior = CreateObjectDie ModuleTag_11
19599      DeathTypes = NONE +CRUSHED +SPLATTED
19600      CreationList = OCL_CrusaderTank_CrushEffect
19601    End
19602  
19603    Behavior = FlammableUpdate ModuleTag_21
19604      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
19605      AflameDamageAmount = 3       ; taking this much damage...
19606      AflameDamageDelay = 500       ; this often.
19607    End
19608  
19609    Behavior = DestroyDie ModuleTag_22
19610      DeathTypes = NONE +CRUSHED +SPLATTED
19611    End
19612  
19613    Behavior = WeaponSetUpgrade ModuleTag_23
19614      TriggeredBy = Upgrade_GLAAnthraxBeta
19615    End
19616  
19617    Geometry = BOX
19618    GeometryMajorRadius = 14.0
19619    GeometryMinorRadius = 7.0
19620    GeometryHeight = 11.5     
19621    GeometryIsSmall = No
19622    Shadow = SHADOW_VOLUME   
19623    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length 
19624  
19625  End
19626  
19627  ;------------------------------------------------------------------------------
19628  Object ChinaTankBattleMaster
19629  
19630    ; *** ART Parameters ***
19631    SelectPortrait         = SNBattlemaster_L
19632    ButtonImage            = SNBattlemaster
19633    
19634    UpgradeCameo1 = Upgrade_Nationalism
19635    UpgradeCameo2 = Upgrade_ChinaUraniumShells
19636    UpgradeCameo3 = Upgrade_ChinaNuclearTanks
19637    UpgradeCameo4 = Upgrade_ChinaT98ReactiveArmor
19638    ;UpgradeCameo5 = NONE
19639    
19640    Draw = W3DTankDraw ModuleTag_01
19641      OkToChangeModelColor = Yes
19642      DefaultConditionState
19643        Model               = NVBtMstr
19644        Turret              = Turret01
19645        WeaponFireFXBone    = PRIMARY Muzzle
19646        WeaponRecoilBone    = PRIMARY Barrel
19647        WeaponMuzzleFlash   = PRIMARY MuzzleFX
19648        WeaponLaunchBone    = PRIMARY Muzzle
19649      End
19650      ConditionState = REALLYDAMAGED
19651        Model               = NVBtMstr_D
19652        Turret              = Turret01
19653        WeaponFireFXBone    = PRIMARY Muzzle
19654        WeaponRecoilBone    = PRIMARY Barrel
19655        WeaponMuzzleFlash   = PRIMARY MuzzleFX
19656        WeaponLaunchBone    = PRIMARY Muzzle
19657      End
19658      ConditionState = RUBBLE
19659        Model               = NVBtMstr_D
19660        Turret              = Turret01
19661      End
19662  
19663      TrackMarks              = EXTnkTrack.tga
19664    End
19665  
19666    ; ***DESIGN parameters ***
19667    DisplayName      = OBJECT:BattleMaster
19668    Side = China
19669    EditorSorting   = VEHICLE
19670    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
19671    WeaponSet
19672      Conditions = None 
19673      Weapon = PRIMARY BattleMasterTankGun
19674    End
19675    ArmorSet
19676      Conditions      = None
19677      Armor           = TankArmor
19678      DamageFX        = TankDamageFX
19679    End
19680    BuildCost       = 800
19681    BuildTime       = 10.0          ;in seconds    
19682    VisionRange     = 150
19683    ShroudClearingRange = 300
19684    Prerequisites
19685      Object = ChinaWarFactory
19686    End
19687  
19688    ExperienceValue = 100 100 200 400    ;Experience point value at each level
19689    ExperienceRequired = 0 200 300 600 ;Experience points needed to gain each level
19690    IsTrainable = Yes             ;Can gain experience
19691    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
19692    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
19693    CommandSet       = ChinaVehicleBattleMasterCommandSet
19694  
19695    ; *** AUDIO Parameters ***
19696    VoiceSelect = BattleMasterTankVoiceSelect
19697    VoiceMove = BattleMasterTankVoiceMove
19698    VoiceGuard = BattleMasterTankVoiceMove
19699    VoiceAttack = BattleMasterTankVoiceAttack
19700    SoundMoveStart = BattleMasterTankMoveStart
19701    SoundMoveStartDamaged = BattleMasterTankMoveStart
19702  
19703    UnitSpecificSounds
19704      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
19705      VoiceCreate          = BattleMasterTankVoiceCreate
19706      TurretMoveStart = NoSound
19707      TurretMoveLoop = TurretMoveLoop
19708      VoiceCrush = BattleMasterTankVoiceCrush
19709      VoiceEnter = BattleMasterTankVoiceMove
19710    End
19711  
19712    ; *** ENGINEERING Parameters ***
19713    RadarPriority = UNIT
19714    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
19715  
19716    Body = ActiveBody ModuleTag_02
19717      MaxHealth       = 400.0
19718      InitialHealth   = 400.0
19719    End
19720  
19721    Behavior = AIUpdateInterface ModuleTag_03
19722      Turret
19723        TurretTurnRate = 120   ; turn rate, in degrees per sec
19724        ControlledWeaponSlots = PRIMARY
19725      End
19726      AutoAcquireEnemiesWhenIdle = Yes
19727    End
19728  
19729    Locomotor = SET_NORMAL BattleMasterLocomotor 
19730    Locomotor = SET_NORMAL_UPGRADED NuclearBattleMasterLocomotor 
19731  
19732    Behavior = HordeUpdate ModuleTag_04
19733      RubOffRadius = 150    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
19734      UpdateRate = 1000     ; how often to recheck horde status (msec)
19735      Radius = 75           ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
19736      KindOf = VEHICLE      ; what KindOf's must match to count towards horde-ness
19737      AlliesOnly = Yes      ; do we only count allies towards horde status? 
19738      ExactMatch = Yes      ; do we only count units of our exact same type towards horde status? (overrides kindof)
19739      Count = 5             ; how many units must be within Radius to grant us horde-ness
19740      Action = HORDE        ; when horde-ing, grant us the HORDE bonus
19741    End
19742  
19743    Behavior = PhysicsBehavior ModuleTag_05
19744      Mass = 40.0
19745    End
19746  
19747    Behavior = FireWeaponWhenDeadBehavior ModuleTag_06
19748      DeathWeapon   = NuclearTankDeathWeapon
19749      StartsActive  = No                        ; turned on by upgrade
19750      TriggeredBy   = Upgrade_ChinaNuclearTanks
19751    End
19752    Behavior = LocomotorSetUpgrade ModuleTag_07
19753      TriggeredBy = Upgrade_ChinaNuclearTanks
19754    End
19755  
19756    ; A crushing defeat
19757    Behavior = DestroyDie ModuleTag_08
19758      DeathTypes = NONE +CRUSHED +SPLATTED
19759    End
19760    Behavior = FXListDie ModuleTag_09
19761      DeathTypes = NONE +CRUSHED +SPLATTED
19762      DeathFX = FX_CarCrush
19763    End
19764    Behavior = CreateObjectDie ModuleTag_10
19765      DeathTypes = NONE +CRUSHED +SPLATTED
19766      CreationList = OCL_CrusaderTank_CrushEffect
19767    End
19768    Behavior = CreateCrateDie ModuleTag_11
19769      CrateData = SalvageCrateData
19770      ;CrateData = EliteTankCrateData
19771      ;CrateData = HeroicTankCrateData
19772    End
19773  
19774  
19775    Behavior = SlowDeathBehavior ModuleTag_12
19776      DeathTypes = ALL -CRUSHED -SPLATTED
19777      ProbabilityModifier = 25
19778      DestructionDelay = 200
19779      DestructionDelayVariance = 100
19780      OCL = FINAL    OCL_ChinaTankBattleMasterDebris
19781      FX  = FINAL    FX_BattleMasterExplosionOneFinal
19782    End
19783  
19784    Behavior = TransitionDamageFX ModuleTag_13
19785      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
19786      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
19787    End
19788  
19789    Behavior = FlammableUpdate ModuleTag_21
19790      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
19791      AflameDamageAmount = 3       ; taking this much damage...
19792      AflameDamageDelay = 500       ; this often.
19793    End
19794  
19795   Behavior = MaxHealthUpgrade ModuleTag_10
19796      TriggeredBy = Upgrade_ChinaT98ReactiveArmor
19797          AddMaxHealth  = 200.0
19798      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
19799   
19800   
19801    End
19802  
19803    
19804    Behavior = VeterancyGainCreate ModuleTag_03
19805      StartingLevel = VETERAN
19806      ScienceRequired = SCIENCE_ArtilleryTraining
19807    End
19808  
19809    Geometry = BOX
19810    GeometryMajorRadius = 13.0
19811    GeometryMinorRadius = 9.0
19812    GeometryHeight = 10     
19813    GeometryIsSmall = Yes
19814    Shadow = SHADOW_VOLUME    
19815    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
19816  
19817  End
19818  
19819  ;------------------------------------------------------------------------------
19820  ;**************************Required For CHI01 INTRO****************************
19821  Object CINE_ChinaTankBattleMaster
19822  
19823    ; *** ART Parameters ***
19824    SelectPortrait         = SNBattlemaster_L
19825    ButtonImage            = SNBattlemaster
19826    
19827    UpgradeCameo1 = Upgrade_Nationalism
19828    UpgradeCameo2 = Upgrade_ChinaUraniumShells
19829    UpgradeCameo3 = Upgrade_ChinaNuclearTanks
19830    ;UpgradeCameo4 = NONE
19831    ;UpgradeCameo5 = NONE
19832    
19833    Draw = W3DTankDraw ModuleTag_01
19834      OkToChangeModelColor = Yes
19835      DefaultConditionState
19836        Model               = CINE_BttlMstr
19837        Turret              = Turret01
19838        WeaponFireFXBone    = PRIMARY Muzzle
19839        WeaponRecoilBone    = PRIMARY Barrel
19840        WeaponMuzzleFlash   = PRIMARY MuzzleFX
19841        WeaponLaunchBone    = PRIMARY Muzzle
19842      End
19843      ConditionState = REALLYDAMAGED
19844        Model               = NVBtMstr_D
19845        Turret              = Turret01
19846        WeaponFireFXBone    = PRIMARY Muzzle
19847        WeaponRecoilBone    = PRIMARY Barrel
19848        WeaponMuzzleFlash   = PRIMARY MuzzleFX
19849        WeaponLaunchBone    = PRIMARY Muzzle
19850      End
19851      ConditionState = RUBBLE
19852        Model               = NVBtMstr_D
19853        Turret              = Turret01
19854      End
19855  
19856      TrackMarks              = EXTnkTrack.tga
19857      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
19858      TreadDriveSpeedFraction = 0.1  ; fraction of locomotor speed below which treads stop moving.
19859      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
19860    End
19861  
19862    ; ***DESIGN parameters ***
19863    DisplayName      = OBJECT:BattleMaster
19864    Side = China
19865    EditorSorting   = VEHICLE
19866    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
19867    WeaponSet
19868      Conditions = None 
19869      Weapon = PRIMARY BattleMasterTankGun
19870    End
19871    ArmorSet
19872      Conditions      = None
19873      Armor           = TankArmor
19874      DamageFX        = TankDamageFX
19875    End
19876    BuildCost       = 800
19877    BuildTime       = 10.0          ;in seconds    
19878    VisionRange     = 150
19879    ShroudClearingRange = 300
19880    Prerequisites
19881      Object = ChinaWarFactory
19882    End
19883  
19884    ExperienceValue = 100 100 200 400    ;Experience point value at each level
19885    ExperienceRequired = 0 200 300 600 ;Experience points needed to gain each level
19886    IsTrainable = Yes             ;Can gain experience
19887    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
19888    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
19889    CommandSet       = ChinaVehicleBattleMasterCommandSet
19890  
19891    ; *** AUDIO Parameters ***
19892    VoiceSelect = BattleMasterTankVoiceSelect
19893    VoiceMove = BattleMasterTankVoiceMove
19894    VoiceGuard = BattleMasterTankVoiceMove
19895    VoiceAttack = BattleMasterTankVoiceAttack
19896    SoundMoveStart = BattleMasterTankMoveStart
19897    SoundMoveStartDamaged = BattleMasterTankMoveStart
19898  
19899    UnitSpecificSounds
19900      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
19901      VoiceCreate          = BattleMasterTankVoiceCreate
19902      TurretMoveStart = NoSound
19903      TurretMoveLoop = TurretMoveLoop
19904      VoiceCrush = BattleMasterTankVoiceCrush
19905      VoiceEnter = BattleMasterTankVoiceMove
19906    End
19907  
19908    ; *** ENGINEERING Parameters ***
19909    RadarPriority = UNIT
19910    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
19911  
19912    Body = ActiveBody ModuleTag_02
19913      MaxHealth       = 400.0
19914      InitialHealth   = 400.0
19915    End
19916  
19917    Behavior = AIUpdateInterface ModuleTag_03
19918      Turret
19919        TurretTurnRate = 120   ; turn rate, in degrees per sec
19920        ControlledWeaponSlots = PRIMARY
19921      End
19922      AutoAcquireEnemiesWhenIdle = Yes
19923    End
19924  
19925    Locomotor = SET_NORMAL CINE_BattleMasterLocomotor
19926    Locomotor = SET_NORMAL_UPGRADED NuclearBattleMasterLocomotor
19927  
19928  
19929    Behavior = PhysicsBehavior ModuleTag_05
19930      Mass = 40.0
19931    End
19932  
19933    Behavior = FireWeaponWhenDeadBehavior ModuleTag_06
19934      DeathWeapon   = NuclearTankDeathWeapon
19935      StartsActive  = No                        ; turned on by upgrade
19936      TriggeredBy   = Upgrade_ChinaNuclearTanks
19937    End
19938    Behavior = LocomotorSetUpgrade ModuleTag_07
19939      TriggeredBy = Upgrade_ChinaNuclearTanks
19940    End
19941  
19942    ; A crushing defeat
19943    Behavior = DestroyDie ModuleTag_08
19944      DeathTypes = NONE +CRUSHED +SPLATTED
19945    End
19946    Behavior = FXListDie ModuleTag_09
19947      DeathTypes = NONE +CRUSHED +SPLATTED
19948      DeathFX = FX_CarCrush
19949    End
19950    Behavior = CreateObjectDie ModuleTag_10
19951      DeathTypes = NONE +CRUSHED +SPLATTED
19952      CreationList = OCL_CrusaderTank_CrushEffect
19953    End
19954    ;Behavior = CreateCrateDie ModuleTag_11
19955     ; CrateData = SalvageCrateData
19956      ;CrateData = EliteTankCrateData
19957      ;CrateData = HeroicTankCrateData
19958    ;End
19959  
19960  
19961    Behavior = SlowDeathBehavior ModuleTag_12
19962      DeathTypes = ALL -CRUSHED -SPLATTED
19963      ProbabilityModifier = 25
19964      DestructionDelay = 200
19965      DestructionDelayVariance = 100
19966      OCL = FINAL    OCL_ChinaTankBattleMasterDebris
19967      FX  = FINAL    FX_BattleMasterExplosionOneFinal
19968    End
19969  
19970    Behavior = TransitionDamageFX ModuleTag_13
19971      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
19972      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
19973    End
19974  
19975    Behavior = FlammableUpdate ModuleTag_21
19976      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
19977      AflameDamageAmount = 3       ; taking this much damage...
19978      AflameDamageDelay = 500       ; this often.
19979    End
19980  
19981    Geometry = BOX
19982    GeometryMajorRadius = 13.0
19983    GeometryMinorRadius = 9.0
19984    GeometryHeight = 10     
19985    GeometryIsSmall = Yes
19986    Shadow = SHADOW_VOLUME    
19987  
19988  End
19989  
19990  
19991  ;------------------------------------------------------------------------------
19992  Object ChinaVehicleBattleMasterDeadHull
19993    ; *** ART Parameters ***
19994    Draw = W3DModelDraw ModuleTag_01
19995      OkToChangeModelColor = Yes
19996  
19997      ConditionState = NONE
19998        Model = NVBtMstr_D1
19999      End
20000    End
20001  
20002    ; ***DESIGN parameters ***
20003    Side = China
20004    EditorSorting   = SYSTEM
20005    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
20006  
20007    ; *** AUDIO Parameters ***
20008    ; *** ENGINEERING Parameters ***
20009    RadarPriority = UNIT
20010    KindOf = CAN_CAST_REFLECTIONS NO_COLLIDE HULK
20011  
20012    Body = ActiveBody ModuleTag_02
20013      MaxHealth       = 1.0
20014      InitialHealth   = 1.0
20015    End
20016  
20017  
20018    Behavior = PhysicsBehavior ModuleTag_03
20019      Mass = 50
20020      AllowBouncing = Yes
20021    End
20022  
20023    Behavior = LifetimeUpdate ModuleTag_04
20024      MinLifetime = 0   ; min lifetime in msec
20025      MaxLifetime = 0   ; max lifetime in msec
20026    End
20027  
20028  
20029    Behavior = SlowDeathBehavior ModuleTag_05
20030      SinkDelay = 14000
20031      SinkRate = 2     ; in Dist/Sec
20032      DestructionDelay = 20000
20033    End
20034  
20035    Behavior = TransitionDamageFX ModuleTag_06
20036      RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
20037    End
20038  
20039    Geometry = BOX
20040    GeometryMajorRadius = 9.0
20041    GeometryMinorRadius = 6.0
20042    GeometryHeight = 7.5     
20043    GeometryIsSmall = Yes    
20044  
20045  End
20046  
20047  
20048  
20049  ;------------------------------------------------------------------------------
20050  ; this unit is never really "built"; building one triggers the random building of
20051  ; one of the other chassis. If you want a *specific* chassis, choose it explicitly;
20052  ; if you want a chassis at random, specify this.
20053  Object GLAVehicleTechnical
20054  
20055    ; *** ART Parameters ***
20056    SelectPortrait         = SUTechnical_L 
20057    ButtonImage            = SUTechnical
20058  
20059    Draw = W3DModelDraw ModuleTag_01
20060      DefaultConditionState
20061        ; give it a model so it'll show up in WB
20062        Model = UVTechTrck
20063      End
20064    End
20065  
20066    ; set cost and time fields here or else they won't work
20067    BuildCost       = 500
20068    BuildTime       = 5.0          ;in seconds    
20069  
20070    ; Needed to get the Veterancy Overlays on top of the Technical with his build variations.
20071    ;------------------------------------------------------------
20072    Behavior = VeterancyGainCreate ModuleTag_03
20073      StartingLevel = VETERAN
20074      ScienceRequired = SCIENCE_TechnicalTraining
20075    End
20076  
20077    Side = GLA
20078    EditorSorting = VEHICLE
20079    BuildVariations = GLAVehicleTechnicalChassisOne GLAVehicleTechnicalChassisTwo GLAVehicleTechnicalChassisThree
20080  
20081    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE TRANSPORT
20082  
20083  End
20084  
20085  ;------------------------------------------------------------------------------
20086  Object GLAVehicleTechnicalChassisOne
20087  
20088    ; *** ART Parameters ***
20089    SelectPortrait         = SUTechnical_L 
20090    ButtonImage            = SUTechnical
20091  
20092    UpgradeCameo1 = Upgrade_GLAAPBullets
20093    UpgradeCameo2 = Upgrade_GLAJunkRepair
20094    ;UpgradeCameo3 = NONE
20095    ;UpgradeCameo4 = NONE
20096    ;UpgradeCameo5 = NONE
20097  
20098    Draw = W3DTruckDraw ModuleTag_01
20099  
20100      ExtraPublicBone = Dum_Turret 
20101  
20102      DefaultConditionState
20103        Model         = UVTechTrck
20104      End
20105      ConditionState  = REALLYDAMAGED
20106        Model         = UVTechTrck_d
20107      End
20108      ConditionState  = RUBBLE
20109        Model         = UVTechTrck_d
20110      End
20111  
20112      OkToChangeModelColor        = Yes
20113      TrackMarks                  = EXTireTrack.tga
20114      Dust                        = TechnicalDust
20115      DirtSpray                   = RocketBuggyDirtSpray
20116      PowerslideSpray             = RocketBuggyDirtPowerSlide
20117  
20118      ; These parameters are only used if the model has a separate suspension, 
20119      ; and the locomotor has HasSuspension = Yes.
20120      LeftFrontTireBone           = Tire01
20121      RightFrontTireBone          = Tire02
20122      LeftRearTireBone            = Tire03
20123      RightRearTireBone           = Tire04
20124      TireRotationMultiplier      = 0.2        ; this * speed = rotation.
20125      PowerslideRotationAddition  = 2.5    ; This speed is added to the rotation speed when powersliding.
20126    End
20127  
20128    Draw = W3DModelDraw ModuleTag_02
20129  
20130      OkToChangeModelColor        = Yes
20131      AttachToBoneInAnotherModule = Dum_Turret
20132  
20133      ; ------------------ basic technical ------------------------
20134      DefaultConditionState
20135        Model = UITech_SKN
20136        Turret = Dum-TurManMVR
20137        TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
20138        HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
20139        IdleAnimation = UITech_SKL.UITech_STA 0 6
20140        IdleAnimation = UITech_SKL.UITech_IDA
20141        IdleAnimation = UITech_SKL.UITech_IDB
20142        AnimationMode = ONCE
20143        ShowSubObject = 20Cal
20144        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20145        WeaponFireFXBone = PRIMARY Muzzle01
20146      End
20147  
20148      ConditionState = RUBBLE MOVING TURRET_ROTATE
20149        Animation = None
20150        HideSubObject = UITech-SKN
20151        ShowSubObject = 20Cal
20152        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20153        WeaponFireFXBone = PRIMARY Muzzle01
20154      End
20155  
20156      ConditionState = MOVING
20157        Animation = UITech_SKL.UITech_MVB
20158        AnimationMode = LOOP
20159        ShowSubObject = 20Cal
20160        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20161        WeaponFireFXBone = PRIMARY Muzzle01
20162      End
20163  
20164      ConditionState = TURRET_ROTATE
20165        Animation = UITech_SKL.UITech_TNA
20166        AnimationMode = LOOP
20167        ShowSubObject = 20Cal
20168        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20169        WeaponFireFXBone = PRIMARY Muzzle01
20170      End
20171      AliasConditionState = TURRET_ROTATE MOVING
20172      AliasConditionState = TURRET_ROTATE FIRING_A
20173      AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
20174      AliasConditionState = TURRET_ROTATE RELOADING_A
20175      AliasConditionState = TURRET_ROTATE MOVING FIRING_A
20176      AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
20177      AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
20178  
20179      ConditionState = FIRING_A 
20180        Animation = UITech_SKL.UITech_ATA
20181        AnimationMode = LOOP
20182        ShowSubObject = 20Cal
20183        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20184        WeaponFireFXBone = PRIMARY Muzzle01
20185      End
20186  
20187      ; AliasConditionState is a new keyword that says,
20188      ; "give me another ConditionState exactly like the previous
20189      ; one, except with different conditions". Useful when you
20190      ; have several states that are the same with only different condition bits.
20191      AliasConditionState = BETWEEN_FIRING_SHOTS_A
20192      AliasConditionState = RELOADING_A
20193  
20194      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
20195      AliasConditionState = MOVING FIRING_A
20196      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
20197      AliasConditionState = MOVING RELOADING_A
20198  
20199      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
20200      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
20201        IdleAnimation = UITech_SKL.UITech_STA 0 6
20202        IdleAnimation = UITech_SKL.UITech_IDA
20203        IdleAnimation = UITech_SKL.UITech_IDB
20204        AnimationMode = ONCE
20205        ShowSubObject = 50Cal
20206        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20207        WeaponFireFXBone = PRIMARY Muzzle02
20208        WeaponLaunchBone = PRIMARY Muzzle02
20209      End
20210  
20211      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
20212        Animation = None
20213        HideSubObject = UITech-SKN
20214        ShowSubObject = 50Cal
20215        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20216        WeaponFireFXBone = PRIMARY Muzzle02
20217        WeaponLaunchBone = PRIMARY Muzzle02
20218      End
20219  
20220      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
20221        Animation = UITech_SKL.UITech_MVB
20222        AnimationMode = LOOP
20223        ShowSubObject = 50Cal
20224        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20225        WeaponFireFXBone = PRIMARY Muzzle02
20226        WeaponLaunchBone = PRIMARY Muzzle02
20227      End
20228  
20229      ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
20230        Animation = UITech_SKL.UITech_TNA
20231        AnimationMode = LOOP
20232        ShowSubObject = 50Cal
20233        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20234        WeaponFireFXBone = PRIMARY Muzzle02
20235        WeaponLaunchBone = PRIMARY Muzzle02
20236      End
20237      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
20238      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
20239      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
20240      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
20241      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
20242      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
20243      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
20244  
20245      ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A 
20246        Animation = UITech_SKL.UITech_ATA
20247        AnimationMode = LOOP
20248        ShowSubObject = 50Cal
20249        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20250        WeaponFireFXBone = PRIMARY Muzzle02
20251        WeaponLaunchBone = PRIMARY Muzzle02
20252      End
20253  
20254      ; AliasConditionState is a new keyword that says,
20255      ; "give me another ConditionState exactly like the previous
20256      ; one, except with different conditions". Useful when you
20257      ; have several states that are the same with only different condition bits.
20258      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
20259      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
20260  
20261      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
20262      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
20263      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
20264      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
20265  
20266      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
20267      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
20268        IdleAnimation = UITech_SKL.UITech_STA 0 6
20269        IdleAnimation = UITech_SKL.UITech_IDA
20270        IdleAnimation = UITech_SKL.UITech_IDB
20271        AnimationMode = ONCE
20272        ShowSubObject = RPG
20273        WeaponFireFXBone = PRIMARY Muzzle03
20274        WeaponLaunchBone = PRIMARY Muzzle03
20275      End
20276  
20277      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
20278        Animation = None
20279        HideSubObject = UITech-SKN
20280        ShowSubObject = RPG
20281        WeaponFireFXBone = PRIMARY Muzzle03
20282        WeaponLaunchBone = PRIMARY Muzzle03
20283      End
20284  
20285      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
20286        Animation = UITech_SKL.UITech_MVB
20287        AnimationMode = LOOP
20288        ShowSubObject = RPG
20289        WeaponFireFXBone = PRIMARY Muzzle03
20290        WeaponLaunchBone = PRIMARY Muzzle03
20291      End
20292  
20293      ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
20294        Animation = UITech_SKL.UITech_TNA
20295        AnimationMode = LOOP
20296        ShowSubObject = RPG
20297        WeaponFireFXBone = PRIMARY Muzzle03
20298        WeaponLaunchBone = PRIMARY Muzzle03
20299      End
20300      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
20301      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
20302      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
20303      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
20304      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
20305      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
20306      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
20307  
20308      ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A 
20309        Animation = UITech_SKL.UITech_ATA
20310        AnimationMode = LOOP
20311        ShowSubObject = RPG
20312        WeaponFireFXBone = PRIMARY Muzzle03
20313        WeaponLaunchBone = PRIMARY Muzzle03
20314      End
20315  
20316      ; AliasConditionState is a new keyword that says,
20317      ; "give me another ConditionState exactly like the previous
20318      ; one, except with different conditions". Useful when you
20319      ; have several states that are the same with only different condition bits.
20320      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
20321      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
20322  
20323      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
20324      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
20325      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
20326      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
20327  
20328    End
20329  
20330    ; ***DESIGN parameters ***
20331    DisplayName         = OBJECT:Technical
20332    Side                = GLA
20333    EditorSorting       = VEHICLE
20334    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
20335  
20336    WeaponSet
20337      Conditions = None 
20338      Weapon = PRIMARY TechnicalMachineGunWeapon
20339    End
20340    WeaponSet
20341      Conditions = CRATEUPGRADE_ONE 
20342      Weapon = PRIMARY TechnicalCannonWeapon
20343    End
20344    WeaponSet
20345      Conditions = CRATEUPGRADE_TWO 
20346      Weapon = PRIMARY TechnicalRPGWeapon
20347    End
20348    ArmorSet
20349      Conditions      = None
20350      Armor           = TruckArmor
20351      DamageFX        = TruckDamageFX
20352    End
20353    ;update cost and time fields in Object GLAVehicleTechnical, or else they won't work
20354    ;BuildCost            = 300
20355    ;BuildTime            = 5.0          ;in seconds    
20356    VisionRange           = 150
20357    ShroudClearingRange   = 300
20358    Prerequisites
20359      Object = GLAArmsDealer
20360    End
20361  
20362    ExperienceValue         = 25 25 50 100    ;Experience point value at each level
20363    ExperienceRequired      = 0 50 75 150  ;Experience points needed to gain each level
20364    IsTrainable             = Yes             ;Can gain experience
20365    CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
20366    CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
20367    CommandSet              = GLAVehicleTechnicalCommandSet
20368  
20369    ; *** AUDIO Parameters ***
20370    VoiceSelect = TechnicalVoiceSelect
20371    VoiceMove = TechnicalVoiceMove
20372    VoiceGuard = TechnicalVoiceMove
20373    VoiceAttack = TechnicalVoiceAttack
20374    SoundMoveStart = TechnicalMoveStart
20375    SoundMoveStartDamaged = TechnicalMoveStart
20376    SoundDie = TechnicalVoiceDie
20377    SoundEnter = HumveeEnter
20378    SoundExit = HumveeExit
20379  
20380    UnitSpecificSounds
20381    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
20382      VoiceCreate          = TechnicalVoiceCreate
20383      TurretMoveStart = NoSound
20384      TurretMoveLoop = TurretMoveLoop
20385      TruckLandingSound = RocketBuggyLand
20386      TruckPowerslideSound = RocketBuggyPowerslide
20387      VoiceSalvage = TechnicalVoiceSalvage
20388      VoiceCrush      = TechnicalVoiceCrush
20389      VoiceUnload     = TechnicalVoiceUnload
20390      VoiceEnter = TechnicalVoiceMove
20391    End
20392  
20393    ; *** ENGINEERING Parameters ***
20394    RadarPriority = UNIT
20395    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE TRANSPORT
20396  
20397    Behavior = VeterancyGainCreate ModuleTag_03
20398      StartingLevel = VETERAN
20399      ScienceRequired = SCIENCE_TechnicalTraining
20400    End
20401  
20402    Body = ActiveBody ModuleTag_04
20403      MaxHealth       = 180
20404      InitialHealth   = 180
20405    End
20406    Behavior = AIUpdateInterface ModuleTag_05
20407      Turret
20408        TurretTurnRate = 240       ; turn rate, in degrees per sec
20409        NaturalTurretAngle = 0
20410        MinIdleScanAngle = 30      ; in degrees off the natural turret angle
20411        MaxIdleScanAngle = 60      ; in degrees off the natural turret angle
20412        MinIdleScanInterval = 5000 ; in milliseconds
20413        MaxIdleScanInterval = 10000 ; in milliseconds
20414        ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
20415      End
20416      AutoAcquireEnemiesWhenIdle = Yes
20417    End
20418    Locomotor = SET_NORMAL TechnicalLocomotor
20419    Behavior = PhysicsBehavior ModuleTag_06
20420      Mass = 40.0
20421    End
20422    Behavior = AutoHealBehavior ModuleTag_07
20423      HealingAmount = 2
20424      HealingDelay = 1000 ; msec
20425      TriggeredBy = Upgrade_GLAJunkRepair
20426    End
20427  
20428    Behavior = FlammableUpdate ModuleTag_09
20429      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
20430      AflameDamageAmount = 3       ; taking this much damage...
20431      AflameDamageDelay = 500       ; this often.
20432    End
20433  
20434    Behavior                 = TransitionDamageFX ModuleTag_10
20435      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
20436      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
20437    End
20438  
20439    Behavior = DestroyDie ModuleTag_11
20440      DeathTypes = NONE +CRUSHED +SPLATTED
20441    End
20442  
20443    ; A crushing defeat
20444    Behavior = FXListDie ModuleTag_12
20445      DeathTypes = NONE +CRUSHED +SPLATTED
20446      DeathFX = FX_CarCrush
20447    End
20448    Behavior = CreateObjectDie ModuleTag_13
20449      DeathTypes = NONE +CRUSHED +SPLATTED
20450      CreationList = OCL_TechnicalJeep_CrushEffect
20451    End
20452    Behavior = CreateCrateDie ModuleTag_14
20453      CrateData = SalvageCrateData
20454      ;CrateData = EliteTankCrateData
20455      ;CrateData = HeroicTankCrateData
20456    End
20457  
20458    Behavior = SlowDeathBehavior ModuleTag_15
20459      DeathTypes = ALL -CRUSHED -SPLATTED
20460      DestructionDelay = 500
20461      DestructionDelayVariance = 1500
20462      OCL = INITIAL OCL_TechnicalAirDeathStart
20463      FX = INITIAL FX_RocketBuggyAirDeathGroundPart
20464      OCL = FINAL OCL_RocketBuggyAirDeath
20465      FX = FINAL FX_RocketBuggyAirDeathAirPart    ; This happens in the air
20466    End
20467  
20468    Behavior = TransportContain ModuleTag_16
20469      Slots = 5
20470      AllowInsideKindOf   = INFANTRY
20471      DamagePercentToUnits = 10%
20472      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
20473     End
20474  
20475    Behavior = WeaponBonusUpgrade ModuleTag_17 ; Not a full weapon set switch, just a number tweak reflected in a weapon. 
20476      TriggeredBy = Upgrade_GLAAPBullets
20477    End 
20478  
20479    Geometry = BOX
20480    GeometryMajorRadius = 18.0
20481    GeometryMinorRadius = 9.0
20482    GeometryHeight = 7.5     
20483    GeometryIsSmall = No    
20484    Shadow = SHADOW_VOLUME
20485    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
20486  
20487  End
20488  
20489  ;------------------------------------------------------------------------------
20490  ObjectReskin GLAVehicleTechnicalChassisTwo GLAVehicleTechnicalChassisOne
20491  
20492    ; *** ART Parameters ***
20493    Draw = W3DTruckDraw ModuleTag_01
20494  
20495      ExtraPublicBone = Dum_Turret 
20496  
20497      DefaultConditionState
20498        Model = UVTechVan
20499      End
20500  
20501      ConditionState = REALLYDAMAGED
20502        Model = UVTechVan_d
20503      End
20504      ConditionState = RUBBLE
20505        Model = UVTechVan_d
20506      End
20507  
20508      OkToChangeModelColor = Yes
20509      TrackMarks = EXTireTrack.tga
20510      Dust = TechnicalDust
20511  
20512      ;DirtSpray = RocketBuggyDirtSpray
20513      PowerslideSpray = RocketBuggyDirtPowerSlide
20514  
20515      ; These parameters are only used if the model has a separate suspension, 
20516      ; and the locomotor has HasSuspension = Yes.
20517      LeftFrontTireBone = Tire01
20518      RightFrontTireBone = Tire02
20519      LeftRearTireBone = Tire03
20520      RightRearTireBone = Tire04
20521      TireRotationMultiplier = 0.2        ; this * speed = rotation.
20522      PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
20523    End
20524  
20525    Draw = W3DModelDraw ModuleTag_02
20526      OkToChangeModelColor = Yes
20527      AttachToBoneInAnotherModule = Dum_Turret
20528  
20529      ; ------------------ basic technical ------------------------
20530      DefaultConditionState
20531        Model = UITech_SKN
20532        Turret = Dum-TurManMVR
20533        TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
20534        HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
20535        IdleAnimation = UITech_SKL.UITech_STA 0 6
20536        IdleAnimation = UITech_SKL.UITech_IDA
20537        IdleAnimation = UITech_SKL.UITech_IDB
20538        AnimationMode = ONCE
20539        ShowSubObject = 20Cal
20540        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20541        WeaponFireFXBone = PRIMARY Muzzle01
20542      End
20543  
20544      ConditionState = RUBBLE MOVING TURRET_ROTATE
20545        Animation = None
20546        HideSubObject = UITech-SKN
20547        ShowSubObject = 20Cal
20548        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20549        WeaponFireFXBone = PRIMARY Muzzle01
20550      End
20551  
20552      ConditionState = MOVING
20553        Animation = UITech_SKL.UITech_MVB
20554        AnimationMode = LOOP
20555        ShowSubObject = 20Cal
20556        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20557        WeaponFireFXBone = PRIMARY Muzzle01
20558      End
20559  
20560      ConditionState = TURRET_ROTATE
20561        Animation = UITech_SKL.UITech_TNA
20562        AnimationMode = LOOP
20563        ShowSubObject = 20Cal
20564        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20565        WeaponFireFXBone = PRIMARY Muzzle01
20566      End
20567      AliasConditionState = TURRET_ROTATE MOVING
20568      AliasConditionState = TURRET_ROTATE FIRING_A
20569      AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
20570      AliasConditionState = TURRET_ROTATE RELOADING_A
20571      AliasConditionState = TURRET_ROTATE MOVING FIRING_A
20572      AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
20573      AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
20574  
20575      ConditionState = FIRING_A 
20576        Animation = UITech_SKL.UITech_ATA
20577        AnimationMode = LOOP
20578        ShowSubObject = 20Cal
20579        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20580        WeaponFireFXBone = PRIMARY Muzzle01
20581      End
20582  
20583      ; AliasConditionState is a new keyword that says,
20584      ; "give me another ConditionState exactly like the previous
20585      ; one, except with different conditions". Useful when you
20586      ; have several states that are the same with only different condition bits.
20587      AliasConditionState = BETWEEN_FIRING_SHOTS_A
20588      AliasConditionState = RELOADING_A
20589  
20590      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
20591      AliasConditionState = MOVING FIRING_A
20592      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
20593      AliasConditionState = MOVING RELOADING_A
20594  
20595      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
20596      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
20597        IdleAnimation = UITech_SKL.UITech_STA 0 6
20598        IdleAnimation = UITech_SKL.UITech_IDA
20599        IdleAnimation = UITech_SKL.UITech_IDB
20600        AnimationMode = ONCE
20601        ShowSubObject = 50Cal
20602        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20603        WeaponFireFXBone = PRIMARY Muzzle02
20604        WeaponLaunchBone = PRIMARY Muzzle02
20605      End
20606  
20607      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
20608        Animation = None
20609        HideSubObject = UITech-SKN
20610        ShowSubObject = 50Cal
20611        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20612        WeaponFireFXBone = PRIMARY Muzzle02
20613        WeaponLaunchBone = PRIMARY Muzzle02
20614      End
20615  
20616      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
20617        Animation = UITech_SKL.UITech_MVB
20618        AnimationMode = LOOP
20619        ShowSubObject = 50Cal
20620        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20621        WeaponFireFXBone = PRIMARY Muzzle02
20622        WeaponLaunchBone = PRIMARY Muzzle02
20623      End
20624  
20625      ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
20626        Animation = UITech_SKL.UITech_TNA
20627        AnimationMode = LOOP
20628        ShowSubObject = 50Cal
20629        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20630        WeaponFireFXBone = PRIMARY Muzzle02
20631        WeaponLaunchBone = PRIMARY Muzzle02
20632      End
20633      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
20634      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
20635      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
20636      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
20637      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
20638      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
20639      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
20640  
20641      ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A
20642        Animation = UITech_SKL.UITech_ATA
20643        AnimationMode = LOOP
20644        ShowSubObject = 50Cal
20645        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20646        WeaponFireFXBone = PRIMARY Muzzle02
20647        WeaponLaunchBone = PRIMARY Muzzle02
20648      End
20649  
20650      ; AliasConditionState is a new keyword that says,
20651      ; "give me another ConditionState exactly like the previous
20652      ; one, except with different conditions". Useful when you
20653      ; have several states that are the same with only different condition bits.
20654      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
20655      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
20656  
20657      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
20658      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
20659      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
20660      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
20661  
20662  
20663      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
20664      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
20665        IdleAnimation = UITech_SKL.UITech_STA 0 6
20666        IdleAnimation = UITech_SKL.UITech_IDA
20667        IdleAnimation = UITech_SKL.UITech_IDB
20668        AnimationMode = ONCE
20669        ShowSubObject = RPG
20670        WeaponFireFXBone = PRIMARY Muzzle03
20671        WeaponLaunchBone = PRIMARY Muzzle03
20672      End
20673  
20674      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
20675        Animation = None
20676        HideSubObject = UITech-SKN
20677        ShowSubObject = RPG
20678        WeaponFireFXBone = PRIMARY Muzzle03
20679        WeaponLaunchBone = PRIMARY Muzzle03
20680      End
20681  
20682      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
20683        Animation = UITech_SKL.UITech_MVB
20684        AnimationMode = LOOP
20685        ShowSubObject = RPG
20686        WeaponFireFXBone = PRIMARY Muzzle03
20687        WeaponLaunchBone = PRIMARY Muzzle03
20688      End
20689  
20690      ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
20691        Animation = UITech_SKL.UITech_TNA
20692        AnimationMode = LOOP
20693        ShowSubObject = RPG
20694        WeaponFireFXBone = PRIMARY Muzzle03
20695        WeaponLaunchBone = PRIMARY Muzzle03
20696      End
20697      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
20698      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
20699      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
20700      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
20701      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
20702      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
20703      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
20704  
20705      ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A
20706        Animation = UITech_SKL.UITech_ATA
20707        AnimationMode = LOOP
20708        ShowSubObject = RPG
20709        WeaponFireFXBone = PRIMARY Muzzle03
20710        WeaponLaunchBone = PRIMARY Muzzle03
20711      End
20712  
20713      ; AliasConditionState is a new keyword that says,
20714      ; "give me another ConditionState exactly like the previous
20715      ; one, except with different conditions". Useful when you
20716      ; have several states that are the same with only different condition bits.
20717      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
20718      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
20719  
20720      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
20721      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
20722      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
20723      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
20724  
20725    End 
20726    
20727   ; Behavior = CreateObjectDie ModuleTag_13
20728   ;   DeathTypes = NONE +CRUSHED +SPLATTED
20729   ;   CreationList = OCL_TechnicalVan_CrushEffect
20730   ; End
20731  
20732    Geometry = BOX
20733    GeometryMajorRadius = 16.0
20734    GeometryMinorRadius = 8.0
20735    GeometryHeight = 7.5     
20736    GeometryIsSmall = Yes  
20737    
20738  
20739  End
20740  
20741  ;------------------------------------------------------------------------------
20742  ObjectReskin GLAVehicleTechnicalChassisThree GLAVehicleTechnicalChassisOne
20743  
20744    ; *** ART Parameters ***
20745    Draw = W3DTruckDraw ModuleTag_01
20746  
20747      ExtraPublicBone = Dum_Turret 
20748  
20749      DefaultConditionState
20750        Model = UVTechJeep
20751      End
20752  
20753      ConditionState = REALLYDAMAGED
20754        Model = UVTechJeep_d
20755      End
20756      ConditionState = RUBBLE
20757        Model = UVTechJeep_d
20758      End
20759  
20760      OkToChangeModelColor = Yes
20761      TrackMarks = EXTireTrack.tga
20762      Dust = TechnicalDust
20763  
20764      ;DirtSpray = RocketBuggyDirtSpray
20765      PowerslideSpray = RocketBuggyDirtPowerSlide
20766  
20767      ; These parameters are only used if the model has a separate suspension, 
20768      ; and the locomotor has HasSuspension = Yes.
20769      LeftFrontTireBone = Tire01
20770      RightFrontTireBone = Tire02
20771      LeftRearTireBone = Tire03
20772      RightRearTireBone = Tire04
20773      TireRotationMultiplier = 0.2        ; this * speed = rotation.
20774      PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
20775    End
20776  
20777    Draw = W3DModelDraw ModuleTag_02
20778      OkToChangeModelColor = Yes
20779      AttachToBoneInAnotherModule = Dum_Turret
20780  
20781      ; ------------------ basic technical ------------------------
20782      DefaultConditionState
20783        Model = UITech_SKN
20784        Turret = Dum-TurManMVR
20785        TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
20786        HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
20787        IdleAnimation = UITech_SKL.UITech_STA 0 6
20788        IdleAnimation = UITech_SKL.UITech_IDA
20789        IdleAnimation = UITech_SKL.UITech_IDB
20790        AnimationMode = ONCE
20791        ShowSubObject = 20Cal
20792        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20793        WeaponFireFXBone = PRIMARY Muzzle01
20794      End
20795  
20796      ConditionState = RUBBLE MOVING TURRET_ROTATE
20797        Animation = None
20798        HideSubObject = UITech-SKN
20799        ShowSubObject = 20Cal
20800        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20801        WeaponFireFXBone = PRIMARY Muzzle01
20802      End
20803  
20804      ConditionState = MOVING
20805        Animation = UITech_SKL.UITech_MVB
20806        AnimationMode = LOOP
20807        ShowSubObject = 20Cal
20808        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20809        WeaponFireFXBone = PRIMARY Muzzle01
20810      End
20811  
20812      ConditionState = TURRET_ROTATE
20813        Animation = UITech_SKL.UITech_TNA
20814        AnimationMode = LOOP
20815        ShowSubObject = 20Cal
20816        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20817        WeaponFireFXBone = PRIMARY Muzzle01
20818      End
20819      AliasConditionState = TURRET_ROTATE MOVING
20820      AliasConditionState = TURRET_ROTATE FIRING_A
20821      AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
20822      AliasConditionState = TURRET_ROTATE RELOADING_A
20823      AliasConditionState = TURRET_ROTATE MOVING FIRING_A
20824      AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
20825      AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
20826  
20827      ConditionState = FIRING_A
20828        Animation = UITech_SKL.UITech_ATA
20829        AnimationMode = LOOP
20830        ShowSubObject = 20Cal
20831        WeaponMuzzleFlash = PRIMARY MuzzleFX01
20832        WeaponFireFXBone = PRIMARY Muzzle01
20833      End
20834  
20835      ; AliasConditionState is a new keyword that says,
20836      ; "give me another ConditionState exactly like the previous
20837      ; one, except with different conditions". Useful when you
20838      ; have several states that are the same with only different condition bits.
20839      AliasConditionState = BETWEEN_FIRING_SHOTS_A
20840      AliasConditionState = RELOADING_A
20841  
20842      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
20843      AliasConditionState = MOVING FIRING_A
20844      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
20845      AliasConditionState = MOVING RELOADING_A
20846  
20847      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
20848      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
20849        IdleAnimation = UITech_SKL.UITech_STA 0 6
20850        IdleAnimation = UITech_SKL.UITech_IDA
20851        IdleAnimation = UITech_SKL.UITech_IDB
20852        AnimationMode = ONCE
20853        ShowSubObject = 50Cal
20854        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20855        WeaponFireFXBone = PRIMARY Muzzle02
20856        WeaponLaunchBone = PRIMARY Muzzle02
20857      End
20858  
20859      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
20860        Animation = None
20861        HideSubObject = UITech-SKN
20862        ShowSubObject = 50Cal
20863        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20864        WeaponFireFXBone = PRIMARY Muzzle02
20865        WeaponLaunchBone = PRIMARY Muzzle02
20866      End
20867  
20868      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
20869        Animation = UITech_SKL.UITech_MVB
20870        AnimationMode = LOOP
20871        ShowSubObject = 50Cal
20872        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20873        WeaponFireFXBone = PRIMARY Muzzle02
20874        WeaponLaunchBone = PRIMARY Muzzle02
20875      End
20876  
20877      ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
20878        Animation = UITech_SKL.UITech_TNA
20879        AnimationMode = LOOP
20880        ShowSubObject = 50Cal
20881        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20882        WeaponFireFXBone = PRIMARY Muzzle02
20883        WeaponLaunchBone = PRIMARY Muzzle02
20884      End
20885      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
20886      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
20887      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
20888      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
20889      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
20890      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
20891      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
20892  
20893      ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A
20894        Animation = UITech_SKL.UITech_ATA
20895        AnimationMode = LOOP
20896        ShowSubObject = 50Cal
20897        WeaponMuzzleFlash = PRIMARY MuzzleFX02
20898        WeaponFireFXBone = PRIMARY Muzzle02
20899        WeaponLaunchBone = PRIMARY Muzzle02
20900      End
20901  
20902      ; AliasConditionState is a new keyword that says,
20903      ; "give me another ConditionState exactly like the previous
20904      ; one, except with different conditions". Useful when you
20905      ; have several states that are the same with only different condition bits.
20906      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
20907      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
20908  
20909      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
20910      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
20911      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
20912      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
20913  
20914      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
20915      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
20916        IdleAnimation = UITech_SKL.UITech_STA 0 6
20917        IdleAnimation = UITech_SKL.UITech_IDA
20918        IdleAnimation = UITech_SKL.UITech_IDB
20919        AnimationMode = ONCE
20920        ShowSubObject = RPG
20921        WeaponFireFXBone = PRIMARY Muzzle03
20922        WeaponLaunchBone = PRIMARY Muzzle03
20923      End
20924  
20925      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
20926        Animation = None
20927        HideSubObject = UITech-SKN
20928        ShowSubObject = RPG
20929        WeaponFireFXBone = PRIMARY Muzzle03
20930        WeaponLaunchBone = PRIMARY Muzzle03
20931      End
20932  
20933      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
20934        Animation = UITech_SKL.UITech_MVB
20935        AnimationMode = LOOP
20936        ShowSubObject = RPG
20937        WeaponFireFXBone = PRIMARY Muzzle03
20938        WeaponLaunchBone = PRIMARY Muzzle03
20939      End
20940  
20941      ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
20942        Animation = UITech_SKL.UITech_TNA
20943        AnimationMode = LOOP
20944        ShowSubObject = RPG
20945        WeaponFireFXBone = PRIMARY Muzzle03
20946        WeaponLaunchBone = PRIMARY Muzzle03
20947      End
20948      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
20949      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
20950      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
20951      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
20952      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
20953      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
20954      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
20955  
20956      ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A
20957        Animation = UITech_SKL.UITech_ATA
20958        AnimationMode = LOOP
20959        ShowSubObject = RPG
20960        WeaponFireFXBone = PRIMARY Muzzle03
20961        WeaponLaunchBone = PRIMARY Muzzle03
20962      End
20963  
20964      ; AliasConditionState is a new keyword that says,
20965      ; "give me another ConditionState exactly like the previous
20966      ; one, except with different conditions". Useful when you
20967      ; have several states that are the same with only different condition bits.
20968      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
20969      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
20970  
20971      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
20972      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
20973      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
20974      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
20975  
20976    End  
20977    
20978   ; Behavior = CreateObjectDie ModuleTag_13
20979   ;   DeathTypes = NONE +CRUSHED +SPLATTED
20980   ;   CreationList = OCL_TechnicalJeep_CrushEffect
20981   ; End
20982    
20983    Geometry = BOX
20984    GeometryMajorRadius = 14.0
20985    GeometryMinorRadius = 9.0
20986    GeometryHeight = 9.5     
20987    GeometryIsSmall = Yes    
20988    
20989  
20990  End
20991  
20992  ;------------------------------------------------------------------------------
20993  Object ChinaTankOverlord
20994  
20995    ; *** ART Parameters ***
20996    SelectPortrait         = SNOverlord_L
20997    ButtonImage            = SNOverlord
20998    
20999    UpgradeCameo1 = Upgrade_ChinaUraniumShells
21000    UpgradeCameo2 = Upgrade_ChinaNuclearTanks
21001    UpgradeCameo3 = Upgrade_ChinaOverlordBattleBunker
21002    UpgradeCameo4 = Upgrade_ChinaOverlordGattlingCannon
21003    UpgradeCameo5 = Upgrade_ChinaOverlordPropagandaTower
21004    
21005    
21006    Draw = W3DOverlordTankDraw ModuleTag_01
21007      ConditionState        = NONE
21008        Model               = NVOvrlrd
21009        Animation           = NVOvrlrd.NVOvrlrd
21010        AnimationMode       = LOOP
21011        Turret              = Turret01
21012        WeaponFireFXBone    = PRIMARY Muzzle
21013        WeaponRecoilBone    = PRIMARY Barrel
21014        WeaponMuzzleFlash   = PRIMARY MuzzleFX
21015        WeaponLaunchBone = PRIMARY Muzzle
21016      End
21017      ConditionState        = REALLYDAMAGED
21018        Model               = NVOvrlrd_d
21019        Animation           = NVOvrlrd_d.NVOvrlrd_d
21020        AnimationMode       = LOOP
21021        Turret              = Turret01
21022        WeaponFireFXBone    = PRIMARY Muzzle
21023        WeaponRecoilBone    = PRIMARY Barrel
21024        WeaponMuzzleFlash   = PRIMARY MuzzleFX
21025        WeaponLaunchBone = PRIMARY Muzzle
21026      End
21027  
21028      ConditionState        = RUBBLE
21029        Model               = NVOvrlrd_d
21030        Turret              = Turret01
21031        WeaponFireFXBone    = PRIMARY Muzzle
21032        WeaponRecoilBone    = PRIMARY Barrel
21033        WeaponMuzzleFlash   = PRIMARY MuzzleFX
21034        WeaponLaunchBone = PRIMARY Muzzle
21035      End
21036  
21037      TrackMarks           = EXTnkTrack.tga
21038      OkToChangeModelColor = Yes
21039      TreadAnimationRate = 2.0;  amount of tread texture to move per second
21040      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
21041      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
21042    End
21043  
21044    ; ***DESIGN parameters ***
21045    DisplayName         = OBJECT:Overlord
21046    Side                = China
21047    EditorSorting       = VEHICLE
21048    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
21049    WeaponSet
21050      Conditions        = None 
21051      Weapon            = PRIMARY OverlordTankGun
21052    End
21053    ArmorSet
21054      Conditions        = None
21055      Armor             = TankArmor
21056      DamageFX          = TankDamageFX
21057    End
21058    BuildCost       = 2000
21059    BuildTime       = 20.0          ;in seconds    
21060    VisionRange     = 150
21061    ShroudClearingRange = 200
21062    Prerequisites
21063      Object = ChinaWarFactory
21064      Object = ChinaPropagandaCenter
21065    End
21066  
21067    ExperienceValue = 200 200 400 600   ;Experience point value at each level
21068    ExperienceRequired = 0 400 600 1200  ;Experience points needed to gain each level
21069    IsTrainable = Yes             ;Can gain experience
21070    CrusherLevel           = 3  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
21071    CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
21072    CommandSet = ChinaTankOverlordDefaultCommandSet
21073  
21074    ; *** AUDIO Parameters ***
21075    VoiceSelect = OverlordTankVoiceSelect
21076    SoundMoveStart = OverlordTankMoveStart
21077    SoundMoveStartDamaged = OverlordTankMoveStart
21078    VoiceMove = OverlordTankVoiceMove
21079    VoiceGuard = OverlordTankVoiceMove
21080    VoiceAttack = OverlordTankVoiceAttack
21081  
21082    UnitSpecificSounds
21083      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
21084      VoiceCreate          = OverlordTankVoiceCreate
21085      TurretMoveStart = NoSound
21086      TurretMoveLoop = OverlordTankTurretMoveLoop
21087      VoiceCrush = OverlordTankVoiceCrush
21088      VoiceEnter = OverlordTankVoiceMove
21089      VoiceUnload     = OverlordTankVoiceUnload
21090    End
21091  
21092    ; *** ENGINEERING Parameters ***
21093    RadarPriority = UNIT
21094    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE HUGE_VEHICLE
21095    
21096    Body = ActiveBody ModuleTag_02
21097      MaxHealth       = 1100.0
21098      InitialHealth   = 1100.0
21099    End
21100  
21101    Behavior = TransportAIUpdate ModuleTag_03
21102      Turret
21103        TurretTurnRate = 60 ;30 ;15   // turn rate, in degrees per sec
21104        ControlledWeaponSlots = PRIMARY
21105      End
21106      AutoAcquireEnemiesWhenIdle = Yes
21107    End
21108  
21109    Locomotor = SET_NORMAL OverlordLocomotor
21110    Locomotor = SET_NORMAL_UPGRADED NuclearOverlordLocomotor
21111  
21112    Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
21113      DeathWeapon   = NuclearTankDeathWeapon
21114      StartsActive  = No                        ; turned on by upgrade
21115      TriggeredBy   = Upgrade_ChinaNuclearTanks
21116    End
21117    Behavior = LocomotorSetUpgrade ModuleTag_05
21118      TriggeredBy = Upgrade_ChinaNuclearTanks
21119    End
21120  
21121    Behavior = OverlordContain ModuleTag_06 ; Like Transport, but when full, passes transport queries along to first passenger (redirects like tunnel) 
21122      Slots                 = 1
21123      DamagePercentToUnits        = 100%
21124      AllowInsideKindOf     = PORTABLE_STRUCTURE
21125      PassengersAllowedToFire = Yes
21126      PassengersInTurret = Yes ; My passengers ride in my turret, that's where the Firepoint bones are
21127    End
21128  
21129    Behavior = ObjectCreationUpgrade ModuleTag_07
21130      UpgradeObject = OCL_OverlordGattlingCannon
21131      TriggeredBy   = Upgrade_ChinaOverlordGattlingCannon
21132      ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
21133    End
21134    Behavior = ObjectCreationUpgrade ModuleTag_08
21135      UpgradeObject = OCL_OverlordPropagandaTower
21136      TriggeredBy   = Upgrade_ChinaOverlordPropagandaTower
21137      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
21138    End
21139    Behavior = ObjectCreationUpgrade ModuleTag_09
21140      UpgradeObject = OCL_OverlordBattleBunker
21141      TriggeredBy   = Upgrade_ChinaOverlordBattleBunker
21142      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
21143    End
21144    Behavior = ProductionUpdate ModuleTag_10
21145      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
21146    End
21147    Behavior = CommandSetUpgrade ModuleTag_11
21148      CommandSet = ChinaTankOverlordGattlingCannonCommandSet
21149      TriggeredBy   = Upgrade_ChinaOverlordGattlingCannon
21150      ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
21151    End
21152    Behavior = CommandSetUpgrade ModuleTag_12
21153      CommandSet = ChinaTankOverlordPropagandaTowerCommandSet
21154      TriggeredBy   = Upgrade_ChinaOverlordPropagandaTower
21155      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
21156    End
21157    Behavior = CommandSetUpgrade ModuleTag_13
21158      CommandSet = ChinaTankOverlordBattleBunkerCommandSet
21159      TriggeredBy   = Upgrade_ChinaOverlordBattleBunker
21160      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
21161    End
21162  
21163    Behavior = PhysicsBehavior ModuleTag_14
21164      Mass = 50.0
21165    End
21166  
21167  
21168  
21169    ; Smoke for a bit then explode
21170  ;  Behavior = SlowDeathBehavior
21171  ;;    ProbabilityModifier = 25
21172  ;    DestructionDelay = 1500
21173  ;    DestructionDelayVariance = 500
21174  ;    FX  = INITIAL   FX_OverlordSmoke
21175  ;    OCL = FINAL     OCL_ChinaTankOverlordDebris
21176  ;    FX  = FINAL     FX_GenericTankDeathExplosion
21177  ;  End
21178    
21179    ; Catch fire, and explode death
21180  ;  Behavior = SlowDeathBehavior
21181  ;;    ProbabilityModifier = 25
21182  ;    DestructionDelay = 2000
21183  ;    DestructionDelayVariance = 300
21184  ;    FX  = INITIAL  FX_CrusaderCatchFire
21185  ;    OCL = FINAL    OCL_ChinaTankOverlordDebris
21186  ;    FX  = FINAL    FX_GenericTankDeathExplosion 
21187  ;  End
21188  
21189    ; Just explode death
21190    Behavior = SlowDeathBehavior ModuleTag_16
21191      ProbabilityModifier = 25
21192      DestructionDelay = 200
21193      DestructionDelayVariance = 100
21194      OCL = FINAL    OCL_ChinaTankOverlordDebris
21195      FX  = FINAL    FX_OverlordExplosionOneFinal
21196    End
21197    Behavior = CreateCrateDie ModuleTag_17
21198      CrateData = SalvageCrateData
21199      ;CrateData = EliteTankCrateData
21200      ;CrateData = HeroicTankCrateData
21201    End
21202  
21203    Behavior = TransitionDamageFX ModuleTag_18
21204      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
21205      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_OverlordDamageTransition
21206    End
21207  
21208    Behavior = FlammableUpdate ModuleTag_21
21209      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
21210      AflameDamageAmount = 3       ; taking this much damage...
21211      AflameDamageDelay = 500       ; this often.
21212    End
21213  
21214    Geometry = BOX
21215    GeometryMajorRadius = 26.0
21216    GeometryMinorRadius = 13.0
21217    GeometryHeight = 15.0     
21218    GeometryIsSmall = No
21219    Shadow = SHADOW_VOLUME     
21220    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
21221  
21222  End
21223  
21224  ;------------------------------------------------------------------------------
21225  Object ChinaTankOverlordGattlingCannon
21226  
21227    ; *** ART Parameters ***
21228    SelectPortrait         = SNGatTower_L
21229    ButtonImage            = SNGatTower
21230    
21231    ;UpgradeCameo1 = Upgrade_Nationalism
21232    UpgradeCameo1 = Upgrade_ChinaUraniumShells
21233    UpgradeCameo2 = Upgrade_ChinaNuclearTanks
21234    ;UpgradeCameo4 = NONE
21235    UpgradeCameo5 = Upgrade_ChinaOverlordGattlingCannon
21236    
21237    
21238    Draw                    = W3DDependencyModelDraw ModuleTag_01
21239      OkToChangeModelColor  = Yes
21240      AttachToBoneInContainer = FIREPOINT01
21241  
21242      DefaultConditionState
21243        Model               = NVOvrlrd_G
21244        Turret              = TURRET01
21245        TurretPitch         = TURRETEL
21246        WeaponFireFXBone    = PRIMARY Muzzle
21247        WeaponMuzzleFlash   = PRIMARY MuzzleFX
21248        WeaponFireFXBone    = SECONDARY Muzzle
21249        WeaponMuzzleFlash   = SECONDARY MuzzleFX
21250      End
21251      ConditionState        = CONTINUOUS_FIRE_SLOW
21252        Model               = NVOvrlrd_G
21253        Animation           = NVOvrlrd_G.NVOvrlrd_G
21254        AnimationMode       = LOOP
21255        AnimationSpeedFactorRange = 0.1 0.1 ;set this state to animate  s l o w l y
21256      End
21257       ConditionState       = CONTINUOUS_FIRE_MEAN
21258        Model               = NVOvrlrd_G
21259        Animation           = NVOvrlrd_G.NVOvrlrd_G
21260        AnimationMode       = LOOP
21261        AnimationSpeedFactorRange = 0.2 0.2 ;set this state to animate  medium-fast
21262      End
21263      ConditionState        = CONTINUOUS_FIRE_FAST
21264        Model               = NVOvrlrd_G
21265        Animation           = NVOvrlrd_G.NVOvrlrd_G
21266        AnimationMode       = LOOP
21267        AnimationSpeedFactorRange = 0.3 0.3 ;set this state to animate  vryfst
21268        ParticleSysBone    = Muzzle01 GattlingMuzzleSmoke
21269        ParticleSysBone    = Muzzle02 GattlingMuzzleSmoke
21270      End
21271  
21272      ConditionState        = REALLYDAMAGED 
21273        Model               = NVOvrlrd_GD
21274        Turret              = TURRET01
21275        TurretPitch         = TURRETEL
21276        WeaponFireFXBone    = PRIMARY Muzzle
21277        WeaponMuzzleFlash   = PRIMARY MuzzleFX
21278        WeaponFireFXBone    = SECONDARY Muzzle
21279        WeaponMuzzleFlash   = SECONDARY MuzzleFX
21280        ParticleSysBone     = Smoke01 SmokeFactionMedium
21281        ParticleSysBone     = Smoke02 SmokeFactionMedium
21282        ParticleSysBone     = Smoke03 SmokeFactionMedium
21283        ParticleSysBone     = SparkM01 SparksMedium
21284        ParticleSysBone     = SparkM02 SparksMedium
21285      End
21286      ConditionState        = CONTINUOUS_FIRE_SLOW REALLYDAMAGED 
21287        Model               = NVOvrlrd_GD
21288        Animation           = NVOvrlrd_G.NVOvrlrd_G
21289        AnimationMode       = LOOP
21290        AnimationSpeedFactorRange = 0.1 0.1 ;set this state to animate  s l o w l y
21291      End
21292       ConditionState       = CONTINUOUS_FIRE_MEAN REALLYDAMAGED 
21293        Model               = NVOvrlrd_GD
21294        Animation           = NVOvrlrd_G.NVOvrlrd_G
21295        AnimationMode       = LOOP
21296        AnimationSpeedFactorRange = 0.2 0.2 ;set this state to animate  medium-fast
21297      End
21298      ConditionState        = CONTINUOUS_FIRE_FAST REALLYDAMAGED 
21299        Model               = NVOvrlrd_GD
21300        Animation           = NVOvrlrd_G.NVOvrlrd_G
21301        AnimationMode       = LOOP
21302        AnimationSpeedFactorRange = 0.3 0.3 ;set this state to animate  vryfst
21303        ParticleSysBone    = Muzzle01 GattlingMuzzleSmoke
21304        ParticleSysBone    = Muzzle02 GattlingMuzzleSmoke
21305      End
21306  
21307    End
21308  
21309    ; ***DESIGN parameters ***
21310    Side             = China
21311    EditorSorting    = SYSTEM
21312    TransportSlotCount = 1
21313    WeaponSet
21314      Conditions          = None 
21315      Weapon              = PRIMARY   GattlingBuildingGun
21316      Weapon              = SECONDARY GattlingBuildingGunAir
21317      PreferredAgainst    = SECONDARY BALLISTIC_MISSILE AIRCRAFT
21318    End
21319    
21320    ArmorSet
21321      Conditions     = None
21322      Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
21323    End
21324    VisionRange     = 200
21325  
21326    ; *** AUDIO Parameters ***
21327    UnitSpecificSounds
21328      TurretMoveStart = NoSound
21329      TurretMoveLoop  = NoSound ;TurretMoveLoop
21330      VoiceRapidFire  = NoSound
21331    End
21332  
21333    ; *** ENGINEERING Parameters ***
21334    KindOf            = PRELOAD PORTABLE_STRUCTURE CAN_ATTACK CLICK_THROUGH IGNORED_IN_GUI
21335      Body            = StructureBody ModuleTag_02
21336      MaxHealth       = 100.0
21337      InitialHealth   = 100.0
21338    End
21339  
21340    Behavior = AIUpdateInterface ModuleTag_03
21341      Turret
21342        ControlledWeaponSlots = PRIMARY SECONDARY
21343        TurretTurnRate      = 60   // turn rate, in degrees per sec
21344        TurretPitchRate     = 60
21345        AllowsPitch         = Yes
21346      End
21347      AutoAcquireEnemiesWhenIdle = Yes 
21348    End
21349  
21350    Behavior             = DestroyDie ModuleTag_04
21351      ;nothing
21352    End
21353  
21354    Behavior = WeaponBonusUpgrade ModuleTag_05
21355      TriggeredBy = Upgrade_ChinaChainGuns
21356    End
21357  
21358    Behavior = StealthDetectorUpdate ModuleTag_06
21359      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
21360      ;DetectionRange = ??? ;   Defaults to VisionRange
21361      CanDetectWhileContained   = Yes
21362    End
21363  
21364    Geometry            = BOX
21365    GeometryMajorRadius = 8.0
21366    GeometryMinorRadius = 8.0
21367    GeometryHeight      = 9.0
21368    GeometryIsSmall     = No      
21369    Shadow              = SHADOW_VOLUME
21370    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
21371  
21372  End
21373  
21374  ;------------------------------------------------------------------------------
21375  Object ChinaTankOverlordPropagandaTower
21376  
21377    ; *** ART Parameters ***
21378    SelectPortrait         = SNPropSpeaker_L
21379    ButtonImage            = SNPropSpeaker
21380    
21381    UpgradeCameo1 = Upgrade_Nationalism
21382    UpgradeCameo2 = Upgrade_ChinaUraniumShells
21383    UpgradeCameo3 = Upgrade_ChinaNuclearTanks
21384    ;UpgradeCameo4 = NONE
21385    UpgradeCameo5 = Upgrade_ChinaOverlordPropagandaTower
21386    
21387    Draw                    = W3DDependencyModelDraw ModuleTag_01
21388      OkToChangeModelColor  = Yes
21389      AttachToBoneInContainer = FIREPOINT01
21390  
21391      ConditionState = NONE
21392        Model         = NVOvrlrd_S
21393        Animation     = NVOvrlrd_S.NVOvrlrd_S
21394        AnimationMode = LOOP
21395      End
21396      ConditionState = REALLYDAMAGED
21397        Model         = NVOvrlrd_SD
21398        ParticleSysBone = Smoke01 SmolderingSmoke
21399        ParticleSysBone = Smoke02 SmolderingSmoke
21400        ParticleSysBone = Flame01 SmolderingFire
21401        ParticleSysBone = Flame01 SmolderingFlameCore
21402        ParticleSysBone = Spark01 LiveWireSparks
21403      End
21404      ; night
21405      ConditionState = NIGHT
21406        Model         = NVOvrlrd_S
21407        Animation     = NVOvrlrd_S.NVOvrlrd_S
21408        AnimationMode = LOOP
21409      End 
21410    End
21411  
21412    PlacementViewAngle = -45
21413  
21414    ; ***DESIGN parameters ***
21415    Side             = China
21416    EditorSorting    = SYSTEM
21417    TransportSlotCount = 1
21418    
21419    ArmorSet
21420      Conditions     = None
21421      Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
21422    End
21423    VisionRange     = 200
21424  
21425    ; *** AUDIO Parameters ***
21426    UnitSpecificSounds
21427     TurretMoveStart = NoSound
21428      TurretMoveLoop  = NoSound ;TurretMoveLoop
21429    End
21430  
21431    ; *** ENGINEERING Parameters ***
21432    KindOf            = PRELOAD PORTABLE_STRUCTURE CAN_ATTACK CLICK_THROUGH IGNORED_IN_GUI
21433      Body            = StructureBody ModuleTag_02
21434      MaxHealth       = 100.0
21435      InitialHealth   = 100.0
21436    End
21437  
21438    Behavior = AIUpdateInterface ModuleTag_03
21439      ;<No Data>
21440    End
21441    
21442    Behavior        = PropagandaTowerBehavior ModuleTag_04
21443      Radius                = 150.0
21444      DelayBetweenUpdates   = 2000 ; in milliseconds
21445      HealPercentEachSecond = 1%   ; get this % of max health every second 
21446      PulseFX               = FX_OverlordPropagandaTowerPropagandaPulse ;plays as often as DelayBetweenUpdates
21447      UpgradeRequired       = Upgrade_ChinaSubliminalMessaging
21448      UpgradedHealPercentEachSecond = 2%   ; get this % of max health every second 
21449      UpgradedPulseFX       = FX_OverlordPropagandaTowerSubliminalPulse ;plays as often as DelayBetweenUpdates
21450  
21451    End
21452  
21453    Behavior             = DestroyDie ModuleTag_05
21454      ;<No Data>
21455    End
21456  
21457    Geometry            = BOX
21458    GeometryMajorRadius = 6.0
21459    GeometryMinorRadius = 6.0
21460    GeometryHeight      = 10.0
21461    GeometryIsSmall     = No      
21462    Shadow              = SHADOW_VOLUME
21463    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
21464  
21465  End
21466  
21467  ;------------------------------------------------------------------------------
21468  Object ChinaTankOverlordBattleBunker
21469  
21470    ; *** ART Parameters ***
21471    SelectPortrait         = SNBunker_L
21472    ButtonImage            = SNBunker
21473    
21474    ;UpgradeCameo1 = Upgrade_Nationalism
21475    UpgradeCameo1 = Upgrade_ChinaUraniumShells
21476    UpgradeCameo2 = Upgrade_ChinaNuclearTanks
21477    ;UpgradeCameo4 = NONE
21478    UpgradeCameo5 = Upgrade_ChinaOverlordBattleBunker
21479    
21480    Draw                    = W3DDependencyModelDraw ModuleTag_01
21481      OkToChangeModelColor  = Yes
21482      AttachToBoneInContainer = FIREPOINT01
21483  
21484      ConditionState = NONE
21485        Model         = NVOvrlrd_B
21486      End
21487      ConditionState = REALLYDAMAGED
21488        Model         = NVOvrlrd_BD
21489        ParticleSysBone = Smoke01 SmolderingSmoke
21490        ParticleSysBone = Smoke02 SmolderingSmoke
21491        ParticleSysBone = Flame01 SmolderingFire
21492        ParticleSysBone = Flame01 SmolderingFlameCore
21493        ParticleSysBone = Spark01 LiveWireSparks
21494      End
21495      ; night
21496      ConditionState = NIGHT
21497        Model         = NVOvrlrd_B
21498      End 
21499      ConditionState = NIGHT REALLYDAMAGED
21500        Model         = NVOvrlrd_BD
21501        ParticleSysBone = Smoke01 SmolderingSmoke
21502        ParticleSysBone = Smoke02 SmolderingSmoke
21503        ParticleSysBone = Flame01 SmolderingFire
21504        ParticleSysBone = Flame01 SmolderingFlameCore
21505        ParticleSysBone = Spark01 LiveWireSparks
21506      End
21507    End
21508  
21509    PlacementViewAngle = -45
21510  
21511    ; ***DESIGN parameters ***
21512    Side             = China
21513    EditorSorting    = SYSTEM
21514    TransportSlotCount = 1
21515    
21516    ArmorSet
21517      Conditions     = None
21518      Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
21519    End
21520    VisionRange     = 200
21521  
21522    ; *** AUDIO Parameters ***
21523    UnitSpecificSounds
21524      TurretMoveStart = NoSound
21525      TurretMoveLoop  = NoSound ;TurretMoveLoop
21526      VoiceUnload     = OverlordTankVoiceUnload
21527    End
21528  
21529    ; *** ENGINEERING Parameters ***
21530    KindOf            = PRELOAD PORTABLE_STRUCTURE CLICK_THROUGH IGNORED_IN_GUI
21531      Body            = StructureBody ModuleTag_02
21532      MaxHealth       = 100.0
21533      InitialHealth   = 100.0
21534    End
21535  
21536    Behavior = TransportContain ModuleTag_03
21537      Slots                 = 5
21538      PassengersAllowedToFire = Yes
21539      AllowInsideKindOf  = INFANTRY
21540      EnterSound      = GarrisonEnter
21541      ExitSound       = GarrisonExit
21542      DamagePercentToUnits  = 50%
21543    End
21544  
21545    Behavior             = DestroyDie ModuleTag_04
21546      ;nothing
21547    End
21548  
21549    Geometry            = BOX
21550    GeometryMajorRadius = 6.0
21551    GeometryMinorRadius = 6.0
21552    GeometryHeight      = 10.0
21553    GeometryIsSmall     = No      
21554    Shadow              = SHADOW_VOLUME
21555    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
21556  
21557  End
21558  
21559  ; -----------------------------------------------------------------------------
21560  
21561  Object ChinaTankOverlordBarrelDebris
21562  
21563    ; *** ART Parameters ***
21564    Draw = W3DModelDraw ModuleTag_01
21565      OkToChangeModelColor = Yes
21566  
21567      ConditionState = NONE
21568        Model = NVOvrlrd_D3
21569      End
21570    End
21571  
21572    ; ***DESIGN parameters ***
21573  ;  DisplayName      = OBJECT:RocketBuggyDebris
21574  
21575    EditorSorting   = DEBRIS
21576    Side = China
21577  
21578    ; *** AUDIO Parameters ***
21579    ; *** ENGINEERING Parameters ***
21580  ;  RadarPriority = UNIT
21581  ;  KindOf = PRELOAD CAN_CAST_REFLECTIONS 
21582  
21583    Body = ActiveBody ModuleTag_02
21584      MaxHealth       = 1.0
21585      InitialHealth   = 1.0
21586    End
21587  
21588    Behavior = PhysicsBehavior ModuleTag_03
21589      Mass = 50
21590      AllowBouncing = Yes
21591    End
21592  
21593    Behavior = LifetimeUpdate ModuleTag_04
21594      MinLifetime = 10000   ; min lifetime in msec
21595      MaxLifetime = 15000   ; max lifetime in msec
21596    End
21597  
21598  
21599    Behavior = SlowDeathBehavior ModuleTag_05
21600      SinkDelay = 1000
21601      SinkRate = 1     ; in Dist/Sec
21602      DestructionDelay = 2000
21603    End
21604  
21605    Geometry = BOX
21606    GeometryMajorRadius = 9.0
21607    GeometryMinorRadius = 6.0
21608    GeometryHeight = 7.5     
21609    GeometryIsSmall = Yes    
21610  
21611  
21612  End
21613  
21614  ;------------------------------------------------------------------------------
21615  Object ChinaTankOverlordDeadHull
21616  
21617    ; *** ART Parameters ***
21618    Draw = W3DModelDraw ModuleTag_01
21619      OkToChangeModelColor = Yes
21620  
21621      ConditionState = NONE
21622        Model = NVOvrlrd_D1
21623      End
21624    End
21625  
21626    ; ***DESIGN parameters ***
21627    DisplayName      = OBJECT:Overlord
21628    Side = China
21629    EditorSorting   = SYSTEM
21630    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
21631  
21632    ; *** AUDIO Parameters ***
21633    ; *** ENGINEERING Parameters ***
21634    RadarPriority = UNIT
21635    KindOf = CAN_CAST_REFLECTIONS NO_COLLIDE HULK
21636  
21637    Body = ActiveBody ModuleTag_02
21638      MaxHealth       = 1.0
21639      InitialHealth   = 1.0
21640    End
21641  
21642  
21643    Behavior = PhysicsBehavior ModuleTag_03
21644      Mass = 50
21645      AllowBouncing = Yes
21646    End
21647  
21648    Behavior = LifetimeUpdate ModuleTag_04
21649      MinLifetime = 0   ; min lifetime in msec
21650      MaxLifetime = 0   ; max lifetime in msec
21651    End
21652  
21653  
21654    Behavior = SlowDeathBehavior ModuleTag_05
21655      SinkDelay = 14000
21656      SinkRate = 2     ; in Dist/Sec
21657      DestructionDelay = 20000
21658    End
21659  
21660    Behavior = TransitionDamageFX ModuleTag_06
21661      RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
21662    End
21663  
21664    Geometry = BOX
21665    GeometryMajorRadius = 9.0
21666    GeometryMinorRadius = 6.0
21667    GeometryHeight = 7.5     
21668    GeometryIsSmall = Yes    
21669  
21670  End
21671  
21672  ;------------------------------------------------------------------------------
21673  ;******************************* Cinematic-Only unit **************************
21674  Object CINE_ChinaTankOverlord
21675  
21676    ; *** ART Parameters ***
21677    SelectPortrait         = SNOverlord_L
21678    ButtonImage            = SNOverlord
21679    
21680    ;UpgradeCameo1 = Upgrade_Nationalism
21681    UpgradeCameo1 = Upgrade_ChinaUraniumShells
21682    UpgradeCameo2 = Upgrade_ChinaNuclearTanks
21683    ;UpgradeCameo4 = NONE
21684    ;UpgradeCameo5 = NONE
21685    
21686    
21687    Draw = W3DOverlordTankDraw ModuleTag_01
21688      ConditionState        = NONE
21689        Model               = NVOvrlrd
21690        Animation           = NVOvrlrd.NVOvrlrd
21691        AnimationMode       = LOOP
21692        Turret              = Turret01
21693        WeaponFireFXBone    = PRIMARY Muzzle
21694        WeaponRecoilBone    = PRIMARY Barrel
21695        WeaponMuzzleFlash   = PRIMARY MuzzleFX
21696        WeaponLaunchBone = PRIMARY Muzzle
21697      End
21698      ConditionState        = REALLYDAMAGED
21699        Model               = NVOvrlrd_d
21700        Animation           = NVOvrlrd_d.NVOvrlrd_d
21701        AnimationMode       = LOOP
21702        Turret              = Turret01
21703        WeaponFireFXBone    = PRIMARY Muzzle
21704        WeaponRecoilBone    = PRIMARY Barrel
21705        WeaponMuzzleFlash   = PRIMARY MuzzleFX
21706        WeaponLaunchBone = PRIMARY Muzzle
21707      End
21708  
21709      ConditionState        = RUBBLE
21710        Model               = NVOvrlrd_d
21711        Turret              = Turret01
21712        WeaponFireFXBone    = PRIMARY Muzzle
21713        WeaponRecoilBone    = PRIMARY Barrel
21714        WeaponMuzzleFlash   = PRIMARY MuzzleFX
21715        WeaponLaunchBone = PRIMARY Muzzle
21716      End
21717  
21718      TrackMarks           = EXTnkTrack.tga
21719      OkToChangeModelColor = Yes
21720      TreadAnimationRate = 2.0;  amount of tread texture to move per second
21721      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
21722      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
21723    End
21724  
21725    ; ***DESIGN parameters ***
21726    DisplayName         = OBJECT:Overlord
21727    Side                = China
21728    EditorSorting       = VEHICLE
21729    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
21730    WeaponSet
21731      Conditions        = None 
21732      Weapon            = PRIMARY OverlordTankGun
21733    End
21734    ArmorSet
21735      Conditions        = None
21736      Armor             = TankArmor
21737      DamageFX          = TankDamageFX
21738    End
21739    BuildCost       = 1800
21740    BuildTime       = 20.0          ;in seconds    
21741    VisionRange     = 150
21742    ShroudClearingRange = 200
21743    Prerequisites
21744      Object = ChinaWarFactory
21745      Object = ChinaPropagandaCenter
21746    End
21747  
21748    ExperienceValue = 200 200 400 600   ;Experience point value at each level
21749    ExperienceRequired = 0 400 600 1200  ;Experience points needed to gain each level
21750    IsTrainable = Yes             ;Can gain experience
21751    CrusherLevel           = 3  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
21752    CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
21753    CommandSet = ChinaTankOverlordDefaultCommandSet
21754  
21755    ; *** AUDIO Parameters ***
21756    VoiceSelect = OverlordTankVoiceSelect
21757    SoundMoveStart = OverlordTankMoveStart
21758    SoundMoveStartDamaged = OverlordTankMoveStart
21759    VoiceMove = OverlordTankVoiceMove
21760    VoiceGuard = OverlordTankVoiceMove
21761    VoiceAttack = OverlordTankVoiceAttack
21762    UnitSpecificSounds
21763      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
21764      VoiceCreate          = OverlordTankVoiceCreate
21765      TurretMoveStart = NoSound
21766      TurretMoveLoop = OverlordTankTurretMoveLoop
21767      VoiceCrush = OverlordTankVoiceCrush
21768      VoiceEnter = OverlordTankVoiceMove
21769    End
21770  
21771    ; *** ENGINEERING Parameters ***
21772    RadarPriority = UNIT
21773    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE HUGE_VEHICLE
21774    
21775    Body = ActiveBody ModuleTag_02
21776      MaxHealth       = 1100.0
21777      InitialHealth   = 1100.0
21778    End
21779  
21780    Behavior = TransportAIUpdate ModuleTag_03
21781      Turret
21782        TurretTurnRate = 60 ;30 ;15   // turn rate, in degrees per sec
21783        ControlledWeaponSlots = PRIMARY
21784      End
21785      AutoAcquireEnemiesWhenIdle = Yes
21786    End
21787  
21788    Locomotor = SET_NORMAL CINE_OverlordLocomotor
21789    Locomotor = SET_NORMAL_UPGRADED NuclearOverlordLocomotor
21790  
21791    Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
21792      DeathWeapon   = NuclearTankDeathWeapon
21793      StartsActive  = No                        ; turned on by upgrade
21794      TriggeredBy   = Upgrade_ChinaNuclearTanks
21795    End
21796    Behavior = LocomotorSetUpgrade ModuleTag_05
21797      TriggeredBy = Upgrade_ChinaNuclearTanks
21798    End
21799  
21800    Behavior = OverlordContain ModuleTag_06 ; Like Transport, but when full, passes transport queries along to first passenger (redirects like tunnel) 
21801      Slots                 = 1
21802      DamagePercentToUnits        = 100%
21803      AllowInsideKindOf     = PORTABLE_STRUCTURE
21804      PassengersAllowedToFire = Yes
21805      PassengersInTurret = Yes ; My passengers ride in my turret, that's where the Firepoint bones are
21806    End
21807  
21808    Behavior = ObjectCreationUpgrade ModuleTag_07
21809      UpgradeObject = OCL_OverlordGattlingCannon
21810      TriggeredBy   = Upgrade_ChinaOverlordGattlingCannon
21811      ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
21812    End
21813    Behavior = ObjectCreationUpgrade ModuleTag_08
21814      UpgradeObject = OCL_OverlordPropagandaTower
21815      TriggeredBy   = Upgrade_ChinaOverlordPropagandaTower
21816      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
21817    End
21818    Behavior = ObjectCreationUpgrade ModuleTag_09
21819      UpgradeObject = OCL_OverlordBattleBunker
21820      TriggeredBy   = Upgrade_ChinaOverlordBattleBunker
21821      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
21822    End
21823    Behavior = ProductionUpdate ModuleTag_10
21824      ; nothing
21825    End
21826    Behavior = CommandSetUpgrade ModuleTag_11
21827      CommandSet = ChinaTankOverlordGattlingCannonCommandSet
21828      TriggeredBy   = Upgrade_ChinaOverlordGattlingCannon
21829      ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
21830    End
21831    Behavior = CommandSetUpgrade ModuleTag_12
21832      CommandSet = ChinaTankOverlordPropagandaTowerCommandSet
21833      TriggeredBy   = Upgrade_ChinaOverlordPropagandaTower
21834      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
21835    End
21836    Behavior = CommandSetUpgrade ModuleTag_13
21837      CommandSet = ChinaTankOverlordBattleBunkerCommandSet
21838      TriggeredBy   = Upgrade_ChinaOverlordBattleBunker
21839      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
21840    End
21841  
21842    Behavior = PhysicsBehavior ModuleTag_14
21843      Mass = 50.0
21844    End
21845  
21846  
21847  
21848    ; Smoke for a bit then explode
21849  ;  Behavior = SlowDeathBehavior
21850  ;;    ProbabilityModifier = 25
21851  ;    DestructionDelay = 1500
21852  ;    DestructionDelayVariance = 500
21853  ;    FX  = INITIAL   FX_OverlordSmoke
21854  ;    OCL = FINAL     OCL_ChinaTankOverlordDebris
21855  ;    FX  = FINAL     FX_GenericTankDeathExplosion
21856  ;  End
21857    
21858    ; Catch fire, and explode death
21859  ;  Behavior = SlowDeathBehavior
21860  ;;    ProbabilityModifier = 25
21861  ;    DestructionDelay = 2000
21862  ;    DestructionDelayVariance = 300
21863  ;    FX  = INITIAL  FX_CrusaderCatchFire
21864  ;    OCL = FINAL    OCL_ChinaTankOverlordDebris
21865  ;    FX  = FINAL    FX_GenericTankDeathExplosion 
21866  ;  End
21867  
21868    ; Just explode death
21869    Behavior = SlowDeathBehavior ModuleTag_16
21870      ProbabilityModifier = 25
21871      DestructionDelay = 200
21872      DestructionDelayVariance = 100
21873      OCL = FINAL    OCL_ChinaTankOverlordDebris
21874      FX  = FINAL    FX_OverlordExplosionOneFinal
21875    End
21876    Behavior = CreateCrateDie ModuleTag_17
21877      CrateData = SalvageCrateData
21878      ;CrateData = EliteTankCrateData
21879      ;CrateData = HeroicTankCrateData
21880    End
21881  
21882    Behavior = TransitionDamageFX ModuleTag_18
21883      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
21884      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_OverlordDamageTransition
21885    End
21886  
21887    Behavior = FlammableUpdate ModuleTag_21
21888      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
21889      AflameDamageAmount = 3       ; taking this much damage...
21890      AflameDamageDelay = 500       ; this often.
21891    End
21892  
21893    Geometry = BOX
21894    GeometryMajorRadius = 26.0
21895    GeometryMinorRadius = 13.0
21896    GeometryHeight = 15.0     
21897    GeometryIsSmall = No
21898    Shadow = SHADOW_VOLUME     
21899    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
21900  
21901  End
21902  
21903  ;------------------------------------------------------------------------------
21904  ;China Dragon Tank
21905  Object ChinaTankDragon
21906  
21907    ; *** ART Parameters ***
21908    SelectPortrait         = SNDragonTank_L
21909    ButtonImage            = SNDragonTank
21910    
21911    UpgradeCameo1 = Upgrade_ChinaBlackNapalm
21912    ;UpgradeCameo2 = NONE
21913    ;UpgradeCameo3 = NONE
21914    ;UpgradeCameo4 = NONE
21915    ;UpgradeCameo5 = NONE
21916    
21917    Draw = W3DTankDraw ModuleTag_01
21918      OkToChangeModelColor = Yes
21919  
21920      DefaultConditionState
21921        Model = NVDragon
21922        Turret = Turret
21923        TurretPitch = TURRETEL
21924        WeaponFireFXBone = PRIMARY WeaponA
21925        WeaponLaunchBone = PRIMARY WeaponA
21926        WeaponFireFXBone = SECONDARY WeaponA
21927        WeaponLaunchBone = SECONDARY WeaponA
21928      End
21929      ConditionState = REALLYDAMAGED
21930        Model = NVDragon_D
21931        Turret = Turret
21932        TurretPitch = TURRETEL
21933        WeaponFireFXBone = PRIMARY WeaponA
21934        WeaponLaunchBone = PRIMARY WeaponA
21935        WeaponFireFXBone = SECONDARY WeaponA
21936        WeaponLaunchBone = SECONDARY WeaponA
21937      End
21938      ConditionState = RUBBLE
21939        Model = NVDragon_D
21940        Turret = Turret
21941        TurretPitch = TURRETEL
21942        WeaponFireFXBone = PRIMARY WeaponA
21943        WeaponLaunchBone = PRIMARY WeaponA
21944        WeaponFireFXBone = SECONDARY WeaponA
21945        WeaponLaunchBone = SECONDARY WeaponA
21946      End
21947      
21948      TrackMarks              = EXTnkTrack.tga
21949      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
21950      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
21951      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
21952    End
21953  
21954    ; ***DESIGN parameters ***
21955    DisplayName      = OBJECT:Dragon
21956    Side = China
21957    EditorSorting   = VEHICLE
21958    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
21959  
21960    WeaponSet
21961      Conditions = None 
21962      Weapon = PRIMARY DragonTankFlameWeapon
21963      Weapon = SECONDARY DragonTankFireWallWeapon
21964      AutoChooseSources = SECONDARY NONE
21965  
21966    End
21967    WeaponSet
21968      Conditions = PLAYER_UPGRADE 
21969      Weapon = PRIMARY DragonTankFlameWeaponUpgraded
21970      Weapon = SECONDARY DragonTankFireWallWeaponUpgraded
21971      AutoChooseSources = SECONDARY NONE
21972      Weapon            = TERTIARY AmbulanceCleanHazardWeapon 
21973      AutoChooseSources = TERTIARY NONE
21974      WeaponLockSharedAcrossSets = Yes ; This set is so similar to the default set that it can hold the weapon lock
21975    End
21976  
21977    ArmorSet
21978      Conditions      = None
21979      Armor           = DragonTankArmor
21980      DamageFX        = TankDamageFX
21981    End
21982    BuildCost       = 800
21983    BuildTime       = 10.0          ;in seconds    
21984    VisionRange     = 100
21985    ShroudClearingRange = 200
21986    Prerequisites
21987      Object = ChinaWarFactory
21988    End
21989  
21990    ExperienceValue = 50 50 100 150    ;Experience point value at each level
21991    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
21992    IsTrainable = Yes             ;Can gain experience
21993    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
21994    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
21995    CommandSet    = ChinaTankDragonCommandSet
21996  
21997    ; *** AUDIO Parameters ***
21998    VoiceSelect = DragonTankVoiceSelect
21999    VoiceMove = DragonTankVoiceMove
22000    VoiceGuard = DragonTankVoiceMove
22001    VoiceAttack = DragonTankVoiceAttack
22002    SoundMoveStart = DragonTankMoveStart
22003    SoundMoveStartDamaged = DragonTankMoveStart
22004  
22005    UnitSpecificSounds
22006      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
22007      VoiceCreate     = DragonTankVoiceCreate
22008      TurretMoveStart = NoSound
22009      TurretMoveLoop = TurretMoveLoop
22010      VoiceEnter = DragonTankVoiceMove
22011      VoiceFlameLocation = DragonTankVoiceFireStorm
22012    End
22013  
22014  
22015    ; *** ENGINEERING Parameters ***
22016    RadarPriority = UNIT
22017    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
22018    
22019    Body = ActiveBody ModuleTag_02
22020      MaxHealth       = 280.0
22021      InitialHealth   = 280.0
22022    End
22023    Behavior = AIUpdateInterface ModuleTag_03
22024      Turret
22025        TurretTurnRate = 120
22026        TurretPitchRate = 120
22027        AllowsPitch = Yes
22028        MinPhysicalPitch = -15
22029  
22030        TurretFireAngleSweep = PRIMARY 10
22031        TurretFireAngleSweep = SECONDARY 60
22032        TurretSweepSpeedModifier = PRIMARY 0.5    ; Sweep slower than you turn (aim for 30 for art)
22033        TurretSweepSpeedModifier = SECONDARY 2.0  ; Sweep faster than you turn
22034        ControlledWeaponSlots = PRIMARY SECONDARY
22035      End
22036      AutoAcquireEnemiesWhenIdle = Yes
22037    End
22038    Locomotor = SET_NORMAL DragonLocomotor
22039    Behavior = PhysicsBehavior ModuleTag_04
22040      Mass = 50.0
22041    End
22042  
22043  
22044    Behavior = WeaponSetUpgrade ModuleTag_05
22045      TriggeredBy = Upgrade_ChinaBlackNapalm
22046    End
22047  
22048    ; A crushing defeat
22049    Behavior = DestroyDie ModuleTag_06
22050      DeathTypes = NONE +CRUSHED +SPLATTED
22051    End
22052    Behavior = FXListDie ModuleTag_07
22053      DeathTypes = NONE +CRUSHED +SPLATTED
22054      DeathFX = FX_CarCrush
22055    End
22056    Behavior = CreateObjectDie ModuleTag_08
22057      DeathTypes = NONE +CRUSHED +SPLATTED
22058      CreationList = OCL_CrusaderTank_CrushEffect
22059    End
22060    Behavior = CreateCrateDie ModuleTag_09
22061      CrateData = SalvageCrateData
22062      ;CrateData = EliteTankCrateData
22063      ;CrateData = HeroicTankCrateData
22064    End
22065  
22066  
22067    ; just explode death
22068    Behavior = SlowDeathBehavior ModuleTag_10
22069      DeathTypes = ALL -CRUSHED -SPLATTED
22070  ;    ProbabilityModifier = 33
22071      DestructionDelay = 500
22072      DestructionDelayVariance = 500
22073      FX  = INITIAL  FX_BattleMasterExplosionOneFinal
22074      OCL = FINAL    OCL_DragonDebris
22075      FX  = FINAL    FX_DragonTankDeathExplosionFinal
22076    End
22077    
22078    ; Catch fire, and explode death
22079  ;  Behavior = SlowDeathBehavior
22080  ;    DeathTypes = ALL -CRUSHED -SPLATTED
22081  ;;    ProbabilityModifier = 33
22082  ;    DestructionDelay = 2000
22083  ;    DestructionDelayVariance = 300
22084  ;    FX  = INITIAL  FX_CrusaderCatchFire
22085  ;    OCL = FINAL    OCL_DragonDebris  
22086  ;    FX  = FINAL    FX_GenericTankDeathExplosion 
22087  ;  End
22088  
22089    ; Napalm spills out, and explode death
22090  ;  Behavior = SlowDeathBehavior
22091  ;    DeathTypes = ALL -CRUSHED -SPLATTED
22092  ;;    ProbabilityModifier = 34
22093  ;    DestructionDelay = 2000
22094  ;    DestructionDelayVariance = 300
22095  ;    FX  = INITIAL  FX_DragonNapalmSpill
22096  ;    OCL = FINAL    OCL_DragonDebris  
22097  ;    FX  = FINAL    FX_DragonTankDeathExplosionFinal
22098  ;  End
22099  
22100    ; Turret fly off death
22101  ;  Behavior = SlowDeathBehavior
22102  ;    DeathTypes = ALL -CRUSHED -SPLATTED
22103  ;;    ProbabilityModifier = 25
22104  ;    DestructionDelay = 500
22105  ;    DestructionDelayVariance = 100
22106  ;    FX  = INITIAL  FX_GenericTankDeathEffect
22107  ;    OCL = MIDPOINT OCL_DragonDebris
22108  ;    FX  = FINAL    FX_GenericTankDeathExplosionFinal
22109  ;  End
22110  
22111  
22112    Behavior = FlammableUpdate ModuleTag_12
22113      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
22114      AflameDamageAmount = 3       ; taking this much damage...
22115      AflameDamageDelay = 500       ; this often.
22116    End
22117  
22118    Behavior = TransitionDamageFX ModuleTag_13
22119  ;   ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
22120      ReallyDamagedParticleSystem2 = Bone:Smoke RandomBone:Yes Psys:DragonTransitionFire
22121      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_DragonDamageTransition
22122    End
22123  
22124  
22125    Geometry = BOX
22126    GeometryMajorRadius = 15.0
22127    GeometryMinorRadius = 10.0
22128    GeometryHeight = 11.0   ; Height set to allow clear clipping of projectile stream  
22129    GeometryIsSmall = Yes
22130    Shadow = SHADOW_VOLUME    
22131    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
22132  
22133  End
22134  
22135  ;------------------------------------------------------------------------------
22136  Object ChinaTankDragonDeadHull
22137  
22138    ; *** ART Parameters ***
22139    Draw = W3DModelDraw ModuleTag_01
22140      OkToChangeModelColor = Yes
22141  
22142      ConditionState = NONE
22143        Model = NVDragon_D1
22144      End
22145    End
22146  
22147    ; ***DESIGN parameters ***
22148    DisplayName      = OBJECT:Overlord
22149    Side = China
22150    EditorSorting   = SYSTEM
22151    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
22152  
22153    ; *** AUDIO Parameters ***
22154    ; *** ENGINEERING Parameters ***
22155    RadarPriority = UNIT
22156    KindOf = CAN_CAST_REFLECTIONS NO_COLLIDE HULK
22157  
22158    Body = ActiveBody ModuleTag_02
22159      MaxHealth       = 1.0
22160      InitialHealth   = 1.0
22161    End
22162  
22163  
22164    Behavior = PhysicsBehavior ModuleTag_03
22165      Mass = 50
22166      AllowBouncing = Yes
22167    End
22168  
22169    Behavior = LifetimeUpdate ModuleTag_04
22170      MinLifetime = 0   ; min lifetime in msec
22171      MaxLifetime = 0   ; max lifetime in msec
22172    End
22173  
22174  
22175    Behavior = SlowDeathBehavior ModuleTag_05
22176      SinkDelay = 14000
22177      SinkRate = 2     ; in Dist/Sec
22178      DestructionDelay = 20000
22179    End
22180  
22181    Behavior = TransitionDamageFX ModuleTag_06
22182      RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
22183    End
22184  
22185    Geometry = BOX
22186    GeometryMajorRadius = 9.0
22187    GeometryMinorRadius = 6.0
22188    GeometryHeight = 7.5     
22189    GeometryIsSmall = Yes    
22190  
22191  End
22192  
22193  ;------------------------------------------------------------------------------
22194  Object DragonTankFlameProjectile
22195  
22196  ; Explanation - Particles can't do damage, so this is a fast shooting low 
22197  ; damage invisible missile launcher with a flame trail for exhaust
22198  
22199    ; *** ART Parameters ***
22200    Draw = W3DModelDraw ModuleTag_01
22201      OkToChangeModelColor = Yes
22202      ConditionState = NONE
22203        Model = NULL 
22204      End
22205    End
22206    ; Must have a draw module to be allowed to draw detonation FX
22207  
22208    ; ***DESIGN parameters ***
22209    EditorSorting     = SYSTEM
22210    VisionRange       = 0.0  
22211    ArmorSet
22212      Conditions      = None
22213      Armor           = ProjectileArmor
22214      DamageFX        = None
22215    End
22216  
22217    ; *** ENGINEERING Parameters ***
22218    KindOf            = PROJECTILE
22219    Body              = ActiveBody ModuleTag_02
22220      MaxHealth       = 100.0
22221      InitialHealth   = 100.0
22222    End
22223  
22224    Behavior = DestroyDie ModuleTag_03
22225      ;nothing
22226    End
22227      
22228    Behavior = PhysicsBehavior ModuleTag_04
22229      Mass = 1
22230      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
22231    End
22232    Behavior = MissileAIUpdate ModuleTag_05
22233      TryToFollowTarget = No 
22234      FuelLifetime = 350
22235      DetonateOnNoFuel = Yes
22236      InitialVelocity = 120                ; in dist/sec
22237      IgnitionDelay = 0
22238      DistanceToTravelBeforeTurning = 2
22239      GarrisonHitKillRequiredKindOf = INFANTRY
22240      GarrisonHitKillForbiddenKindOf = NONE
22241      GarrisonHitKillCount = 2
22242      GarrisonHitKillFX = FX_DragonFlameGarrisonBuildingHit
22243      DistanceToTargetForLock = 0  ; If it gets within 100 of the target, it kills the target.
22244  
22245    End
22246    Locomotor = SET_NORMAL DragonTankFlameLocomotor
22247  
22248    Behavior = BoneFXUpdate ModuleTag_06
22249      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail01 ; Covers gap at beginning of line
22250      PristineParticleSystem2  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail02
22251      PristineParticleSystem3  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail03
22252      PristineParticleSystem4 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail04
22253      PristineParticleSystem5 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail06
22254  
22255      PristineParticleSystem6 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerSmoke01
22256    End
22257  
22258    Behavior = BoneFXDamage ModuleTag_07
22259      ;nothing
22260    End
22261  
22262    Geometry = Sphere
22263    GeometryIsSmall = Yes
22264    GeometryMajorRadius = 2.0
22265  
22266  End
22267  
22268  ;------------------------------------------------------------------------------
22269  ;------------------------------------------
22270  ;------------------------------------------------------------------------------
22271  
22272  
22273  ;------------------------------------------------------------------------------
22274  Object FlamethrowerProjectileStream
22275  
22276    ; *** ART Parameters ***
22277    Draw = W3DProjectileStreamDraw ModuleTag_01
22278      Texture = EXfthrowerStream.tga
22279      Width = 1.5
22280      TileFactor = 3.0 ; put the texture on the line segment this many times
22281      ScrollRate = 2.0; scroll the texture offset this fast
22282      MaxSegments = 4 ; only play the first X if there are a ton of them. 0 means play all
22283    End
22284  
22285    ; *** ENGINEERING Parameters ***
22286    KindOf = INERT
22287    Behavior = ProjectileStreamUpdate ModuleTag_02
22288      ;nothing
22289    End
22290  
22291  End
22292  
22293  ;------------------------------------------------------------------------------
22294  Object DragonTankFlameProjectileUpgraded
22295  
22296  ; Explanation - Particles can't do damage, so this is a fast shooting low 
22297  ; damage invisible missile launcher with a flame trail for exhaust
22298  
22299    ; *** ART Parameters ***
22300    Draw = W3DModelDraw ModuleTag_01
22301      OkToChangeModelColor = Yes
22302      ConditionState = NONE
22303        Model = NULL 
22304      End
22305    End
22306    ; Must have a draw module to be allowed to draw detonation FX
22307  
22308    ; ***DESIGN parameters ***
22309    EditorSorting     = SYSTEM
22310    VisionRange       = 0.0  
22311    ArmorSet
22312      Conditions      = None
22313      Armor           = ProjectileArmor
22314      DamageFX        = None
22315    End
22316  
22317    ; *** ENGINEERING Parameters ***
22318    KindOf            = PROJECTILE
22319    Body              = ActiveBody ModuleTag_02
22320      MaxHealth       = 100.0
22321      InitialHealth   = 100.0
22322    End
22323  
22324    Behavior = DestroyDie ModuleTag_03
22325      ;nothing
22326    End
22327      
22328    Behavior = PhysicsBehavior ModuleTag_04
22329      Mass = 1
22330      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
22331    End
22332    Behavior = MissileAIUpdate ModuleTag_05
22333      TryToFollowTarget = No 
22334      FuelLifetime = 350
22335      DetonateOnNoFuel = Yes
22336      InitialVelocity = 120                ; in dist/sec
22337      IgnitionDelay = 0
22338      DistanceToTravelBeforeTurning = 2
22339      GarrisonHitKillRequiredKindOf = INFANTRY
22340      GarrisonHitKillForbiddenKindOf = NONE
22341      GarrisonHitKillCount = 2
22342      GarrisonHitKillFX = FX_DragonFlameGarrisonBuildingHit
22343      DistanceToTargetForLock = 0  ; If it gets within 100 of the target, it kills the target.
22344  
22345    End
22346    Locomotor = SET_NORMAL DragonTankFlameLocomotor
22347  
22348    Behavior = BoneFXUpdate ModuleTag_06
22349      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail01Upgraded ; Covers gap at beginning of line
22350      PristineParticleSystem2  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail02Upgraded
22351      PristineParticleSystem3  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail03Upgraded
22352      PristineParticleSystem4 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail04Upgraded
22353      PristineParticleSystem5 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail06Upgraded
22354  
22355      PristineParticleSystem6 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerSmoke01
22356    End
22357  
22358    Behavior = BoneFXDamage ModuleTag_07
22359      ;nothing
22360    End
22361  
22362    Geometry = Sphere
22363    GeometryIsSmall = Yes
22364    GeometryMajorRadius = 2.0
22365  
22366  End
22367  
22368  ;------------------------------------------------------------------------------
22369  Object FlamethrowerProjectileStreamUpgraded
22370  
22371    ; *** ART Parameters ***
22372    Draw = W3DProjectileStreamDraw ModuleTag_01
22373      Texture = EXfthrowerStreamUpgraded.tga
22374      Width = 1.5
22375      TileFactor = 3.0 ; put the texture on the line segment this many times
22376      ScrollRate = 2.0; scroll the texture offset this fast
22377      MaxSegments = 4 ; only play the first X if there are a ton of them. 0 means play all
22378    End
22379  
22380    ; *** ENGINEERING Parameters ***
22381    KindOf = INERT
22382    Behavior = ProjectileStreamUpdate ModuleTag_02
22383      ;nothing
22384    End
22385  
22386  End
22387  
22388  ;------------------------------------------------------------------------------
22389  Object PointDefenseLaserBeam
22390    ; *** ART Parameters ***
22391    Draw = W3DLaserDraw ModuleTag_01
22392      Texture = EXLaser.tga
22393      NumBeams = 3                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
22394  
22395      InnerBeamWidth = 0.4            ;The total width of beam
22396      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
22397  
22398      OuterBeamWidth = 1.2            ;The total width of beam
22399      OuterColor = R:255 G:0 B:0  A:150 ;The outside color of the laser (cool)
22400      
22401      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
22402      ;FadeLifetime = 0                ;Laser will fade and delete.
22403  
22404      ;@todo -- add shot ability functionality (instead of instant point A to B)
22405    End
22406  
22407    KindOf = IMMOBILE
22408    ClientUpdate = LaserUpdate ModuleTag_02
22409      MuzzleParticleSystem = PaladinPointDefenseLaserFlare
22410      ParentFireBoneName   = Laser
22411      ParentFireBoneOnTurret = Yes
22412    End
22413  
22414    ;Used as a weapon, this is essentially a fast pulse laser. Adjusting
22415    ;the lifetime values will determine how long it renders. The damage
22416    ;is applied immediately, so lifetime doesn't matter.
22417    Behavior = LifetimeUpdate ModuleTag_03
22418      MinLifetime = 95   ; min lifetime in msec
22419      MaxLifetime = 95   ; max lifetime in msec
22420    End
22421  End
22422  
22423  
22424  ;------------------------------------------------------------------------------
22425  Object LaserBeam
22426    ; *** ART Parameters ***
22427    Draw = W3DLaserDraw ModuleTag_01
22428      Texture = EXLaser.tga
22429      NumBeams = 3                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
22430  
22431      InnerBeamWidth = 0.4            ;The total width of beam
22432      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
22433  
22434      OuterBeamWidth = 1.2            ;The total width of beam
22435      OuterColor = R:255 G:0 B:0  A:150 ;The outside color of the laser (cool)
22436      
22437      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
22438      ;FadeLifetime = 0                ;Laser will fade and delete.
22439  
22440      ;@todo -- add shot ability functionality (instead of instant point A to B)
22441    End
22442  
22443    KindOf = IMMOBILE
22444    ClientUpdate = LaserUpdate ModuleTag_02
22445      MuzzleParticleSystem = GenericLaserFlare
22446      ParentFireBoneName   = Muzzle01
22447      TargetParticleSystem = GenericLaserFlare
22448    End
22449  End
22450  
22451  ;------------------------------------------------------------------------------
22452  Object ParticleUplinkCannon_MediumConnectorLaser
22453    ; *** ART Parameters ***
22454    Draw = W3DLaserDraw ModuleTag_01
22455      Texture = EXLaser.tga
22456      NumBeams = 4                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
22457  
22458      InnerBeamWidth = 0.4            ;The total width of beam
22459      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
22460  
22461      OuterBeamWidth = 1.2            ;The total width of beam
22462      OuterColor = R:0 G:0 B:255  A:150 ;The outside color of the laser (cool)
22463      
22464      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
22465      ;FadeLifetime = 0                ;Laser will fade and delete.
22466  
22467      ;@todo -- add shot ability functionality (instead of instant point A to B)
22468    End
22469  
22470    KindOf = IMMOBILE
22471  
22472    ClientUpdate = LaserUpdate ModuleTag_02
22473      ;MuzzleParticleSystem = None
22474      ;TargetParticleSystem = None
22475    End
22476  End
22477  
22478  ;------------------------------------------------------------------------------
22479  Object ParticleUplinkCannon_IntenseConnectorLaser
22480    ; *** ART Parameters ***
22481    Draw = W3DLaserDraw ModuleTag_01
22482      Texture = EXLaser.tga
22483      NumBeams = 5                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
22484  
22485      InnerBeamWidth = 0.6            ;The total width of beam
22486      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
22487  
22488      OuterBeamWidth = 2.0            ;The total width of beam
22489      OuterColor = R:0 G:0 B:255  A:150 ;The outside color of the laser (cool)
22490      
22491      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
22492      ;FadeLifetime = 0                ;Laser will fade and delete.
22493  
22494      ;@todo -- add shot ability functionality (instead of instant point A to B)
22495    End
22496  
22497    KindOf = IMMOBILE
22498  
22499    ClientUpdate = LaserUpdate ModuleTag_02
22500      ;MuzzleParticleSystem = None
22501      ;TargetParticleSystem = None
22502    End
22503  End
22504  
22505  ;------------------------------------------------------------------------------
22506  Object ParticleUplinkCannon_OrbitalLaser
22507    ; *** ART Parameters ***
22508    Draw = W3DLaserDraw ModuleTag_01
22509      Texture = EXNoise02.tga
22510      NumBeams = 12                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
22511  
22512      Tile = Yes                        ;The height of the texture will determine how many times to tile the texture to fit without scaling.
22513      ScrollRate = -1.75                ;Scrolls the texture offset this fast -- towards(-) away(+)
22514      TilingScalar = 0.15               ;Stretches tiling if value > 1.0, otherwise shrinks it (1.0 is natural)
22515  
22516      InnerBeamWidth = 0.6            ;The total width of beam
22517      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
22518  
22519      OuterBeamWidth = 26.0            ;The total width of beam
22520      OuterColor = R:0 G:0 B:255  A:150 ;The outside color of the laser (cool)
22521      
22522      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
22523      ;FadeLifetime = 0                ;Laser will fade and delete.
22524  
22525      ;@todo -- add shot ability functionality (instead of instant point A to B)
22526    End
22527  
22528    ; *** DESIGN Parameters ***
22529    VisionRange = 100
22530    ShroudClearingRange = 120
22531  
22532    ; *** ENGINEERING Parameters ***
22533    KindOf = IMMOBILE
22534  
22535    ClientUpdate = LaserUpdate ModuleTag_02
22536      ;MuzzleParticleSystem = None
22537      ;TargetParticleSystem = None
22538    End
22539  End
22540  
22541  
22542  
22543  ;------------------------------------------------------------------------------
22544  Object BinaryDataStream
22545    ; *** ART Parameters ***
22546    Draw = W3DLaserDraw ModuleTag_01
22547      Texture = EXBinaryStream.tga
22548      NumBeams = 1                      ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data. Current max: 10
22549      InnerBeamWidth = 4                ;The total width of beam
22550      InnerColor = R:0 G:255 B:0 A:180  ;The inside color of the laser (hot)
22551      Tile = Yes                        ;The height of the texture will determine how many times to tile the texture to fit without scaling.
22552      ScrollRate = -0.25                 ;Scrolls the texture offset this fast -- towards(-) away(+)
22553      Segments = 20                     ;Number of segments -- more segments give smoother curve (but more joints) Current max: 20
22554      ArcHeight = 30.0                  ;The height of the arc
22555      SegmentOverlapRatio = 0.0000      ;This value overlaps(+) or separates(-) the segments by ratio
22556      TilingScalar = 0.25                ;Stretches tiling if value > 1.0, otherwise shrinks it (1.0 is natural)
22557   End
22558  
22559    KindOf = IMMOBILE
22560    ClientUpdate = LaserUpdate ModuleTag_02
22561      ;nothing
22562    End
22563  End
22564  
22565  ;------------------------------------------------------------------------------
22566  Object ChinaVehicleTroopCrawler
22567  
22568    ; *** ART Parameters ***
22569    SelectPortrait         = SNTransport_L
22570    ButtonImage            = SNTransport
22571    
22572    ;UpgradeCameo1 = NONE
22573    ;UpgradeCameo2 = NONE
22574    ;UpgradeCameo3 = NONE
22575    ;UpgradeCameo4 = NONE
22576    ;UpgradeCameo5 = NONE
22577    
22578    Draw = W3DTruckDraw ModuleTag_01
22579      OkToChangeModelColor = Yes
22580      ConditionState = NONE
22581        Model = NVTCrawler
22582        ;note, the IRSonar particle system is added in StealthDetectorUpdate.cpp, not here
22583      End
22584      ConditionState       = REALLYDAMAGED RUBBLE ; THIS IS VERY IMPORTANT... DO NOT REMOVE 'RUBBLE' UNDER PENALTY OF DEATH MLorenzen
22585                                                  ; @todo find out why a non-animating model like this has such trouble matching
22586                                                  ; reallydamaged against moving against rubble, etc.
22587        Model              = NVTCrawler_D
22588      End
22589  
22590      TrackMarks = EXTireTrack.tga
22591  
22592      Dust = RocketBuggyDust
22593      DirtSpray = RocketBuggyDirtSpray
22594      ; PowerslideSpray = RocketBuggyDirtPowerSlide doesn't powerslide
22595  
22596      ; These parameters are only used if the model has a separate suspension, 
22597      ; and the locomotor has HasSuspension = Yes.
22598      LeftFrontTireBone     = Wheel01
22599      RightFrontTireBone    = Wheel08
22600      LeftRearTireBone      = Wheel03
22601      RightRearTireBone     = Wheel05
22602      MidLeftFrontTireBone  = Wheel02
22603      MidRightFrontTireBone = Wheel07
22604      MidLeftRearTireBone   = Wheel04
22605      MidRightRearTireBone  = Wheel06
22606  
22607      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
22608      PowerslideRotationAddition  = 0   ; This vehicle doesn't powerslide.
22609  
22610    End
22611  
22612  
22613    ; ***DESIGN parameters ***
22614    DisplayName      = OBJECT:TroopCrawler
22615    Side = China
22616    EditorSorting   = VEHICLE
22617    TransportSlotCount = 8                 ;Just enough to fit into a Chinook.
22618    WeaponSet
22619      Conditions = None 
22620      Weapon = PRIMARY TroopCrawlerAssault
22621    End
22622    ArmorSet
22623      Conditions      = None
22624      Armor           = TankArmor
22625      DamageFX        = TankDamageFX
22626    End
22627    BuildCost       = 1400
22628    BuildTime       = 15.0          ;in seconds    
22629    VisionRange     = 175           ;Needs to see farther and match it's weapon range -- else troop crawlers will get slaughtered against tanks!
22630    ShroudClearingRange = 400
22631    Prerequisites
22632      Object = ChinaWarFactory
22633    End
22634    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
22635    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
22636    CommandSet = ChinaTroopCrawlerCommandSet
22637  
22638    ; *** AUDIO Parameters ***
22639    VoiceSelect = TroopCrawlerVoiceSelect
22640    VoiceMove = TroopCrawlerVoiceMove
22641    VoiceGuard = TroopCrawlerVoiceMove
22642    VoiceAttack = TroopCrawlerVoiceAttack
22643    SoundMoveStart = TroopCrawlerMoveStart
22644    SoundMoveStartDamaged = TroopCrawlerMoveStart
22645    SoundEnter = HumveeEnter
22646    SoundExit = HumveeExit
22647    UnitSpecificSounds
22648      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
22649      VoiceCreate     = TroopCrawlerVoiceCreate
22650      TurretMoveStart = NoSound
22651      TurretMoveLoop = TurretMoveLoop
22652      TruckLandingSound = NoSound ;RocketBuggyLand
22653      TruckPowerslideSound = NoSound ;RocketBuggyPowerslide
22654      VoiceCrush = TroopCrawlerVoiceCrush
22655      VoiceUnload   = TroopCrawlerVoiceUnload
22656      VoiceEnter = TroopCrawlerVoiceMove
22657    End
22658  
22659  
22660   ; *** ENGINEERING Parameters ***
22661    RadarPriority = UNIT
22662    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS TRANSPORT VEHICLE SCORE
22663    
22664    Body = ActiveBody ModuleTag_02
22665      MaxHealth       = 240.0
22666      InitialHealth   = 240.0
22667    End
22668    Behavior = StealthDetectorUpdate ModuleTag_03
22669      DetectionRate             = 900   ; how often to rescan for stealthed things in my sight (msec)
22670      ;DetectionRange           = ??? ;Dustin, enable this for independant balancing!
22671      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
22672      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
22673      PingSound                 = IRPing
22674      LoudPingSound             = IRPingLoud
22675      IRParticleSysName         = IRDetectSonar
22676      IRBrightParticleSysName   = IRDetectSonarBright
22677      IRGridParticleSysName     = IRDetectGrid
22678      IRBeaconParticleSysName   = IRLenzflare
22679      IRParticleSysBone         = IRFX
22680    End
22681  
22682  ;OBSOLETE
22683  ;  Behavior = AIUpdateInterface ModuleTag_04
22684  ;    Turret
22685  ;      ControlledWeaponSlots = PRIMARY
22686  ;    End
22687  ;  End
22688    Behavior = AssaultTransportAIUpdate ModuleTag_NewAI
22689      MembersGetHealedAtLifeRatio = 0.5
22690    End
22691  
22692    Locomotor = SET_NORMAL TroopCrawlerLocomotor 
22693    Behavior = PhysicsBehavior ModuleTag_05
22694      Mass = 50.0
22695    End
22696    Behavior = TransportContain ModuleTag_06
22697      Slots                 = 8
22698      PassengersAllowedToFire = Yes
22699      InitialPayload        = ChinaInfantryRedguard 8
22700      ScatterNearbyOnExit   = No
22701      HealthRegen%PerSec    = 10
22702      DamagePercentToUnits  = 10%
22703      AllowInsideKindOf     = INFANTRY
22704      ExitDelay         = 250
22705      NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
22706      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
22707    End
22708  
22709    Behavior = SlowDeathBehavior ModuleTag_07
22710      DeathTypes = ALL -CRUSHED -SPLATTED
22711      DestructionDelay = 1
22712      FX  = FINAL    FX_SupplyTruckExplosionOneFinal
22713      OCL = FINAL    OCL_FinalTroopCrawlerDebris
22714    End
22715  
22716    Behavior                 = TransitionDamageFX ModuleTag_08
22717      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
22718      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
22719    End
22720  
22721    Behavior = DestroyDie ModuleTag_09
22722      DeathTypes = NONE +CRUSHED +SPLATTED
22723    End
22724  
22725    Behavior = FXListDie ModuleTag_10
22726      DeathTypes = NONE +CRUSHED +SPLATTED
22727      DeathFX = FX_CarCrush
22728    End
22729  
22730    ; A crushing defeat
22731    Behavior = FXListDie ModuleTag_11
22732      DeathTypes = NONE +CRUSHED +SPLATTED
22733      DeathFX = FX_CarCrush
22734    End
22735  
22736    Behavior = CreateCrateDie ModuleTag_12
22737      CrateData = SalvageCrateData
22738      ;CrateData = EliteTankCrateData
22739      ;CrateData = HeroicTankCrateData
22740    End
22741  
22742    Behavior = FlammableUpdate ModuleTag_21
22743      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
22744      AflameDamageAmount = 3       ; taking this much damage...
22745      AflameDamageDelay = 500       ; this often.
22746    End
22747  
22748    Geometry = BOX
22749    GeometryMajorRadius = 22.0
22750    GeometryMinorRadius = 9.0
22751    GeometryHeight = 13.0     
22752    GeometryIsSmall = No
22753    Shadow = SHADOW_VOLUME
22754    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
22755  
22756  End
22757  ;------------------------------------------------------------------------------
22758  Object ChinaVehicleTroopCrawlerDeadHull
22759  
22760    ; *** ART Parameters ***
22761    Draw = W3DModelDraw ModuleTag_01
22762      OkToChangeModelColor = Yes
22763  
22764      ConditionState = NONE
22765        Model = NVTCrawler_D1
22766      End
22767    End
22768  
22769    ; ***DESIGN parameters ***
22770    Side = China
22771    EditorSorting   = SYSTEM
22772    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
22773  
22774    ; *** AUDIO Parameters ***
22775    ; *** ENGINEERING Parameters ***
22776    RadarPriority = UNIT
22777    KindOf = CAN_CAST_REFLECTIONS IMMOBILE NO_COLLIDE HULK
22778  
22779    Body = ActiveBody ModuleTag_02
22780      MaxHealth       = 1.0
22781      InitialHealth   = 1.0
22782    End
22783  
22784    Behavior = PhysicsBehavior ModuleTag_Hulk03
22785      Mass = 100.0
22786      AllowBouncing = Yes
22787      KillWhenRestingOnGround = Yes
22788    End
22789    Behavior = LifetimeUpdate ModuleTag_Hulk04
22790      MinLifetime = 1500   ; min lifetime in msec
22791      MaxLifetime = 1600   ; max lifetime in msec
22792    End
22793  
22794    Behavior = SlowDeathBehavior ModuleTag_Hulk05
22795      SinkDelay         = 1500
22796      SinkRate          = 2     ; in Dist/Sec
22797      DestructionDelay  = 8000
22798    End
22799  
22800  
22801    Geometry = BOX
22802    GeometryMajorRadius = 9.0
22803    GeometryMinorRadius = 6.0
22804    GeometryHeight = 7.5     
22805    GeometryIsSmall = Yes    
22806  
22807  End
22808  
22809  ;------------------------------------------------------------------------------
22810  Object ChinaVehicleTroopCrawlerEmpty
22811  
22812    ; *** ART Parameters ***
22813    SelectPortrait         = SNTransport_L
22814    ButtonImage            = SNTransport
22815    Draw = W3DTankDraw ModuleTag_01
22816      OkToChangeModelColor = Yes
22817      TrackMarks = EXTireTrack.tga
22818      ConditionState = NONE
22819        Model = NVTCrawler
22820      End
22821      ConditionState       = REALLYDAMAGED
22822        Model              = NVTCrawler_D
22823      End
22824      ConditionState       = RUBBLE
22825        Model              = NVTCrawler_D
22826      End
22827    End
22828  
22829    ; ***DESIGN parameters ***
22830    DisplayName      = OBJECT:TroopCrawler
22831    Side = China
22832    EditorSorting   = VEHICLE
22833    TransportSlotCount = 8                 ;how many "slots" we take in a transport (0 == not transportable)
22834    WeaponSet
22835      Conditions = None 
22836      Weapon = PRIMARY TroopCrawlerAssault
22837    End
22838    ArmorSet
22839      Conditions      = None
22840      Armor           = TankArmor
22841      DamageFX        = TankDamageFX
22842    End
22843    BuildCost       = 700
22844    BuildTime       = 1.0          ;in seconds    
22845    VisionRange     = 150
22846    ShroudClearingRange = 150
22847    Prerequisites
22848      Object = ChinaWarFactory
22849    End
22850    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
22851    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
22852    CommandSet = ChinaTroopCrawlerCommandSet
22853  
22854    ; *** AUDIO Parameters ***
22855    VoiceSelect = TroopCrawlerVoiceSelect
22856    VoiceMove = TroopCrawlerVoiceMove
22857    VoiceGuard = TroopCrawlerVoiceMove
22858    VoiceAttack = TroopCrawlerVoiceAttack
22859    SoundMoveStart = TroopCrawlerMoveStart
22860    SoundMoveStartDamaged = TroopCrawlerMoveStart
22861  
22862    UnitSpecificSounds
22863      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
22864      VoiceCreate     = TroopCrawlerVoiceCreate
22865      TurretMoveStart = NoSound
22866      TurretMoveLoop  = TurretMoveLoop
22867      VoiceUnload     = TroopCrawlerVoiceUnload
22868      VoiceEnter = TroopCrawlerVoiceMove
22869    End
22870  
22871  
22872    ; *** ENGINEERING Parameters ***
22873    RadarPriority = UNIT
22874    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS TRANSPORT VEHICLE SCORE
22875    
22876    Body = ActiveBody ModuleTag_02
22877      MaxHealth       = 200.0
22878      InitialHealth   = 200.0
22879    End
22880    Behavior = AIUpdateInterface ModuleTag_03
22881      Turret
22882        ControlledWeaponSlots = PRIMARY
22883      End
22884    End
22885    Locomotor = SET_NORMAL TroopCrawlerLocomotor 
22886    Behavior = PhysicsBehavior ModuleTag_04
22887      Mass = 50.0
22888    End
22889  
22890  
22891    Behavior = SlowDeathBehavior  ModuleTag_05
22892      DeathTypes = ALL -CRUSHED -SPLATTED
22893      ProbabilityModifier = 5
22894      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
22895      DestructionDelay = 0
22896      DestructionDelayVariance = 200
22897      FX = FINAL FX_BuggyNewDeathExplosion
22898      OCL = FINAL OCL_FinalTroopCrawlerDebris
22899    End
22900      
22901    Behavior = TransportContain ModuleTag_06
22902      Slots = 8
22903      PassengersAllowedToFire = Yes
22904      HealthRegen%PerSec = 10
22905      DamagePercentToUnits = 10%
22906      AllowInsideKindOf  = INFANTRY
22907    End
22908  
22909  
22910    ; A crushing defeat
22911    Behavior = FXListDie ModuleTag_07
22912      DeathTypes = NONE +CRUSHED +SPLATTED
22913      DeathFX = FX_CarCrush
22914    End
22915    Behavior = CreateObjectDie ModuleTag_08
22916      DeathTypes = NONE +CRUSHED +SPLATTED
22917      CreationList = OCL_CrusaderTank_CrushEffect
22918    End
22919    Behavior = CreateCrateDie ModuleTag_09
22920      CrateData = SalvageCrateData
22921      ;CrateData = EliteTankCrateData
22922      ;CrateData = HeroicTankCrateData
22923    End
22924  
22925    Behavior = FlammableUpdate ModuleTag_21
22926      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
22927      AflameDamageAmount = 3       ; taking this much damage...
22928      AflameDamageDelay = 500       ; this often.
22929    End
22930  
22931    Geometry = BOX
22932    GeometryMajorRadius = 22.0
22933    GeometryMinorRadius = 9.0
22934    GeometryHeight = 13.0     
22935    GeometryIsSmall = No
22936    Shadow = SHADOW_VOLUME 
22937    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length   
22938  
22939  End
22940  
22941  
22942  ;------------------------------------------------------------------------------
22943  Object ChinaVehicleInfernoCannon
22944  
22945    ; *** ART Parameters ***
22946    SelectPortrait         = SNInferno_L
22947    ButtonImage            = SNInferno
22948    
22949    UpgradeCameo1 = Upgrade_ChinaBlackNapalm
22950    ;UpgradeCameo2 = NONE
22951    ;UpgradeCameo3 = NONE
22952    ;UpgradeCameo4 = NONE
22953    ;UpgradeCameo5 = NONE
22954    
22955    Draw                    = W3DTankDraw ModuleTag_01
22956      OkToChangeModelColor  = Yes
22957      ConditionState        = NONE
22958        Model               = NVInferno
22959        Turret              = Turret
22960        TurretPitch         = TurretEL
22961        WeaponFireFXBone    = PRIMARY Muzzle
22962        WeaponRecoilBone    = PRIMARY Barrel
22963        WeaponMuzzleFlash   = PRIMARY MuzzleFX
22964        WeaponLaunchBone = PRIMARY Muzzle
22965      End
22966      
22967      ConditionState        = RUBBLE REALLYDAMAGED
22968        Model               = NVInferno_D
22969        Turret              = Turret
22970        TurretPitch         = TurretEL
22971        WeaponFireFXBone    = PRIMARY Muzzle
22972        WeaponRecoilBone    = PRIMARY Barrel
22973        WeaponMuzzleFlash   = PRIMARY MuzzleFX
22974        WeaponLaunchBone = PRIMARY Muzzle
22975      End
22976      
22977      TrackMarks           = EXTnkTrack.tga
22978      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
22979    End
22980  
22981    ; ***DESIGN parameters ***
22982    DisplayName        = OBJECT:InfernoCannon
22983    Side               = China
22984    EditorSorting      = VEHICLE
22985    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
22986    WeaponSet
22987      Conditions       = None 
22988      Weapon           = PRIMARY InfernoCannonGun
22989    End
22990    WeaponSet
22991      Conditions       = PLAYER_UPGRADE 
22992      Weapon           = PRIMARY InfernoCannonGunUpgraded
22993    End
22994    ArmorSet
22995      Conditions      = None
22996      Armor           = TankArmor
22997      DamageFX        = TankDamageFX
22998    End
22999    BuildCost          = 1000
23000    BuildTime          = 15.0          ;in seconds    
23001    VisionRange        = 180
23002    ShroudClearingRange = 300
23003    Prerequisites
23004      Object           = ChinaWarFactory
23005      Object           = ChinaPropagandaCenter
23006    End
23007  
23008    ExperienceValue = 50 50 100 150    ;Experience point value at each level
23009    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
23010    IsTrainable = Yes             ;Can gain experience
23011    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
23012    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
23013    CommandSet      = ChinaVehicleInfernoCannonCommandSet
23014  
23015    ; *** AUDIO Parameters ***
23016    VoiceSelect       = InfernoCannonVoiceSelect
23017    VoiceMove         = InfernoCannonVoiceMove
23018    VoiceGuard        = InfernoCannonVoiceMove
23019    VoiceAttack       = InfernoCannonVoiceAttack
23020    SoundMoveStart    = InfernoCannonMoveStart
23021    SoundMoveStartDamaged = InfernoCannonMoveStart
23022    UnitSpecificSounds
23023      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
23024      VoiceCreate     = InfernoCannonVoiceCreate
23025      TurretMoveStart = NoSound
23026      TurretMoveLoop  = NoSound
23027      VoiceCrush          = InfernoCannonVoiceCrush
23028      VoiceEnter         = InfernoCannonVoiceMove
23029    End
23030  
23031  
23032    ; *** ENGINEERING Parameters ***
23033    RadarPriority     = UNIT
23034    KindOf            = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
23035    
23036    Body              = ActiveBody ModuleTag_02
23037      MaxHealth       = 120.0
23038      InitialHealth   = 120.0
23039    End
23040  
23041  
23042  
23043    Behavior = AIUpdateInterface ModuleTag_04
23044      Turret
23045        TurretTurnRate = 100
23046        TurretPitchRate = 100
23047        AllowsPitch = Yes
23048        FirePitch = 45
23049        ControlledWeaponSlots = PRIMARY
23050      End
23051      AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
23052    End
23053    Locomotor = SET_NORMAL InfernoLocomotor
23054    Behavior = PhysicsBehavior ModuleTag_05
23055      Mass = 50.0
23056    End
23057  
23058    ; A crushing defeat
23059    Behavior               = FXListDie ModuleTag_06
23060      DeathTypes = NONE +CRUSHED +SPLATTED
23061      DeathFX         = FX_CarCrush
23062    End
23063    Behavior               = CreateObjectDie ModuleTag_07
23064      DeathTypes = NONE +CRUSHED +SPLATTED
23065      CreationList    = OCL_CrusaderTank_CrushEffect
23066    End
23067    Behavior = SlowDeathBehavior ModuleTag_08
23068      DeathTypes = ALL -CRUSHED -SPLATTED
23069      ProbabilityModifier = 50
23070      DestructionDelay = 2000
23071      DestructionDelayVariance = 300
23072      FX  = INITIAL  FX_CrusaderCatchFire  
23073      FX  = FINAL    FX_GenericTankDeathExplosion 
23074      OCL = FINAL    OCL_InfernoCannonDeathEffect
23075    End
23076  
23077    Behavior                 = TransitionDamageFX ModuleTag_09
23078      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
23079      ReallyDamagedFXList1 = Loc: X:-7 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
23080    End
23081  
23082    Behavior         = CreateCrateDie ModuleTag_10
23083      CrateData = SalvageCrateData
23084      ;CrateData = EliteTankCrateData
23085      ;CrateData = HeroicTankCrateData
23086    End
23087  
23088    Behavior      = WeaponSetUpgrade ModuleTag_11
23089      TriggeredBy = Upgrade_ChinaBlackNapalm
23090    End
23091  
23092    Behavior = FlammableUpdate ModuleTag_21
23093      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
23094      AflameDamageAmount = 3       ; taking this much damage...
23095      AflameDamageDelay = 500       ; this often.
23096    End
23097  
23098    Behavior = DestroyDie ModuleTag_22
23099      DeathTypes = NONE +CRUSHED +SPLATTED
23100    End
23101  
23102    Geometry            = BOX
23103    GeometryMajorRadius = 15.0
23104    GeometryMinorRadius = 10.0
23105    GeometryHeight      = 15.0     
23106    GeometryIsSmall     = Yes
23107    Shadow              = SHADOW_VOLUME 
23108    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length   
23109  
23110  End
23111  
23112  ;------------------------------------------------------------------------------
23113  ;***************************** Cinematic-Only unit ****************************
23114  Object CINE_ChinaVehicleInfernoCannon
23115  
23116    ; *** ART Parameters ***
23117    SelectPortrait         = SNInferno_L
23118    ButtonImage            = SNInferno
23119    
23120    UpgradeCameo1 = Upgrade_ChinaBlackNapalm
23121    ;UpgradeCameo2 = NONE
23122    ;UpgradeCameo3 = NONE
23123    ;UpgradeCameo4 = NONE
23124    ;UpgradeCameo5 = NONE
23125    
23126    Draw                    = W3DTankDraw ModuleTag_01
23127      OkToChangeModelColor  = Yes
23128      ConditionState        = NONE
23129        Model               = NVInferno
23130        Turret              = Turret
23131        TurretPitch         = TurretEL
23132        WeaponFireFXBone    = PRIMARY Muzzle
23133        WeaponRecoilBone    = PRIMARY Barrel
23134        WeaponMuzzleFlash   = PRIMARY MuzzleFX
23135        WeaponLaunchBone = PRIMARY Muzzle
23136      End
23137      
23138      ConditionState        = RUBBLE REALLYDAMAGED
23139        Model               = NVInferno_D
23140        Turret              = Turret
23141        TurretPitch         = TurretEL
23142        WeaponFireFXBone    = PRIMARY Muzzle
23143        WeaponRecoilBone    = PRIMARY Barrel
23144        WeaponMuzzleFlash   = PRIMARY MuzzleFX
23145        WeaponLaunchBone = PRIMARY Muzzle
23146      End
23147      
23148      TrackMarks           = EXTnkTrack.tga
23149      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
23150    End
23151  
23152    ; ***DESIGN parameters ***
23153    DisplayName        = OBJECT:InfernoCannon
23154    Side               = China
23155    EditorSorting      = VEHICLE
23156    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
23157    WeaponSet
23158      Conditions       = None 
23159      Weapon           = PRIMARY InfernoCannonGun
23160    End
23161    ArmorSet
23162      Conditions      = None
23163      Armor           = TankArmor
23164      DamageFX        = TankDamageFX
23165    End
23166    BuildCost          = 900
23167    BuildTime          = 15.0          ;in seconds    
23168    VisionRange        = 300
23169    ShroudClearingRange = 300
23170    Prerequisites
23171      Object           = ChinaWarFactory
23172      Object           = ChinaPropagandaCenter
23173    End
23174  
23175    ExperienceValue = 50 50 100 150    ;Experience point value at each level
23176    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
23177    IsTrainable = Yes             ;Can gain experience
23178    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
23179    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
23180    CommandSet      = ChinaVehicleInfernoCannonCommandSet
23181  
23182    ; *** AUDIO Parameters ***
23183    VoiceSelect       = InfernoCannonVoiceSelect
23184    VoiceMove         = InfernoCannonVoiceMove
23185    VoiceGuard        = InfernoCannonVoiceMove
23186    VoiceAttack       = InfernoCannonVoiceAttack
23187    SoundMoveStart    = InfernoCannonMoveStart
23188    SoundMoveStartDamaged = InfernoCannonMoveStart
23189    UnitSpecificSounds
23190      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
23191      VoiceCreate     = InfernoCannonVoiceCreate
23192      TurretMoveStart = NoSound
23193      TurretMoveLoop  = NoSound
23194      VoiceCrush          = InfernoCannonVoiceCrush
23195      VoiceEnter         = InfernoCannonVoiceMove
23196    End
23197  
23198  
23199    ; *** ENGINEERING Parameters ***
23200    RadarPriority     = UNIT
23201    KindOf            = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
23202    
23203    Body              = ActiveBody ModuleTag_02
23204      MaxHealth       = 120.0
23205      InitialHealth   = 120.0
23206    End
23207  
23208    Behavior = VeterancyGainCreate ModuleTag_03
23209      StartingLevel = VETERAN
23210      ScienceRequired = SCIENCE_ArtilleryTraining
23211    End
23212  
23213    Behavior = AIUpdateInterface ModuleTag_04
23214      Turret
23215        TurretTurnRate = 100
23216        TurretPitchRate = 100
23217        AllowsPitch = Yes
23218        FirePitch = 45
23219        ControlledWeaponSlots = PRIMARY
23220      End
23221      AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
23222    End
23223    Locomotor = SET_NORMAL CINE_InfernoLocomotor
23224    Behavior = PhysicsBehavior ModuleTag_05
23225      Mass = 50.0
23226    End
23227  
23228    ; A crushing defeat
23229    Behavior               = FXListDie ModuleTag_06
23230      DeathTypes = NONE +CRUSHED +SPLATTED
23231      DeathFX         = FX_CarCrush
23232    End
23233    Behavior               = CreateObjectDie ModuleTag_07
23234      DeathTypes = NONE +CRUSHED +SPLATTED
23235      CreationList    = OCL_CrusaderTank_CrushEffect
23236    End
23237    Behavior = SlowDeathBehavior ModuleTag_08
23238      DeathTypes = ALL -CRUSHED -SPLATTED
23239      ProbabilityModifier = 50
23240      DestructionDelay = 2000
23241      DestructionDelayVariance = 300
23242      FX  = INITIAL  FX_CrusaderCatchFire  
23243      FX  = FINAL    FX_GenericTankDeathExplosion 
23244      OCL = FINAL    OCL_InfernoCannonDeathEffect
23245    End
23246  
23247    Behavior                 = TransitionDamageFX ModuleTag_09
23248      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
23249      ReallyDamagedFXList1 = Loc: X:-7 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
23250    End
23251  
23252    Behavior         = CreateCrateDie ModuleTag_10
23253      CrateData = SalvageCrateData
23254      ;CrateData = EliteTankCrateData
23255      ;CrateData = HeroicTankCrateData
23256    End
23257  
23258    Behavior = DestroyDie ModuleTag_11
23259      DeathTypes = NONE +CRUSHED +SPLATTED
23260    End
23261  
23262    Behavior = FlammableUpdate ModuleTag_21
23263      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
23264      AflameDamageAmount = 3       ; taking this much damage...
23265      AflameDamageDelay = 500       ; this often.
23266    End
23267  
23268    Geometry            = BOX
23269    GeometryMajorRadius = 15.0
23270    GeometryMinorRadius = 10.0
23271    GeometryHeight      = 15.0     
23272    GeometryIsSmall     = Yes
23273    Shadow              = SHADOW_VOLUME    
23274  
23275  End
23276  
23277  ;------------------------------------------------------------------------------
23278  ;Also called NukeCannon
23279  Object ChinaVehicleNukeLauncher
23280  
23281    ; *** ART Parameters ***
23282    SelectPortrait         = SNNukeCannon_L
23283    ButtonImage            = SNNukeCannon_L
23284    
23285    ;UpgradeCameo1 = NONE
23286    ;UpgradeCameo2 = NONE
23287    ;UpgradeCameo3 = NONE
23288    ;UpgradeCameo4 = NONE
23289    ;UpgradeCameo5 = NONE
23290  
23291    Draw = W3DTankDraw ModuleTag_01
23292      
23293      InitialRecoilSpeed   = 120
23294      MaxRecoilDistance    = 8
23295      RecoilSettleSpeed    = 6
23296  
23297      OkToChangeModelColor = Yes
23298  
23299      ExtraPublicBone = Turret01
23300  
23301      DefaultConditionState
23302        Model                           = NVNukeCn
23303        WeaponLaunchBone                = PRIMARY Muzzle
23304        WeaponMuzzleFlash               = PRIMARY MuzzleFX
23305        WeaponFireFXBone                = PRIMARY Muzzle
23306        WeaponRecoilBone                = PRIMARY Barrel
23307        HideSubObject                   = TURRET01      ;Hide controlled turret
23308        ShowSubObject                   = TURRETFRONT TURRETBACK  ;Show pack/unpack animated turret
23309        Turret                          = Turret01
23310        TurretPitch                     = TurretEL
23311      End
23312        
23313      ConditionState                    = RUBBLE
23314        Model                           = NVNukeCn_D
23315        WeaponLaunchBone                = PRIMARY Muzzle
23316        WeaponMuzzleFlash               = PRIMARY MuzzleFX
23317        WeaponRecoilBone                = PRIMARY Barrel
23318        HideSubObject                   = TURRET01      ;Hide controlled turret
23319        ShowSubObject                   = TURRETFRONT TURRETBACK  ;Show pack/unpack animated turret
23320        Turret                          = Turret01
23321        TurretPitch                     = TurretEL
23322      End
23323  
23324      ;*** PACKED STATE -- ready to move ***
23325      ConditionState    = MOVING
23326        Animation       = NVNukeCn.NVNukeCn
23327        AnimationMode   = ONCE_BACKWARDS
23328        Flags           = START_FRAME_FIRST
23329      End
23330      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
23331      AliasConditionState = BETWEEN_FIRING_SHOTS_A
23332      ;***
23333      ConditionState    = REALLYDAMAGED MOVING
23334        Model           = NVNukeCn_D
23335        Animation       = NVNukeCn_D.NVNukeCn_D
23336        AnimationMode   = ONCE_BACKWARDS
23337        Flags           = START_FRAME_FIRST
23338      End
23339      AliasConditionState = REALLYDAMAGED MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
23340       
23341  
23342      ;*** UNPACKING STATE  -- preparing to fire ***
23343      ConditionState    = UNPACKING
23344        Animation       = NVNukeCn.NVNukeCn
23345        AnimationMode   = ONCE
23346      End
23347      AliasConditionState = UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
23348      ;***
23349      ConditionState    = REALLYDAMAGED UNPACKING
23350        Model           = NVNukeCn_D
23351        Animation       = NVNukeCn_D.NVNukeCn_D
23352        AnimationMode   = ONCE
23353      End
23354      AliasConditionState = REALLYDAMAGED UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
23355  
23356      ;*** PACKING STATE -- preparing to move ***
23357      ConditionState    = PACKING
23358        Animation       = NVNukeCn.NVNukeCn
23359        AnimationMode   = ONCE_BACKWARDS
23360        Flags           = START_FRAME_LAST
23361      End
23362  
23363      AliasConditionState = PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
23364      ;***
23365      ConditionState    = REALLYDAMAGED PACKING
23366        Model           = NVNukeCn_D
23367        Animation       = NVNukeCn_D.NVNukeCn_D
23368        AnimationMode   = ONCE_BACKWARDS
23369        Flags           = START_FRAME_LAST
23370      End
23371      AliasConditionState = REALLYDAMAGED PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
23372  
23373      ;*** DEPLOYED STATE -- ready to fire ***
23374      ConditionState  = DEPLOYED 
23375        Animation       = NVNukeCn.NVNukeCn
23376        AnimationMode   = ONCE
23377        Flags           = START_FRAME_LAST
23378        TransitionKey   = TRANS_FIRING_A
23379        HideSubObject   = TURRETFRONT TURRETBACK   ;Hide pack/unpack animated turret
23380        ShowSubObject   = TURRET01      ;Show controlled turret
23381      End
23382      AliasConditionState = DEPLOYED FIRING_A
23383      AliasConditionState = DEPLOYED BETWEEN_FIRING_SHOTS_A
23384      AliasConditionState = DEPLOYED RELOADING_A
23385      AliasConditionState = DEPLOYED MOVING
23386  
23387      ConditionState  = DEPLOYED REALLYDAMAGED
23388        Model           = NVNukeCn_D
23389        Animation       = NVNukeCn_D.NVNukeCn_D
23390        AnimationMode   = ONCE
23391        Flags           = START_FRAME_LAST
23392        TransitionKey   = TRANS_FIRING_A
23393        HideSubObject   = TURRETFRONT TURRETBACK  ;Hide pack/unpack animated turret
23394        ShowSubObject   = TURRET01      ;Show controlled turret
23395      End
23396      AliasConditionState = DEPLOYED REALLYDAMAGED FIRING_A
23397      AliasConditionState = DEPLOYED REALLYDAMAGED BETWEEN_FIRING_SHOTS_A
23398      AliasConditionState = DEPLOYED REALLYDAMAGED RELOADING_A
23399      AliasConditionState = DEPLOYED REALLYDAMAGED MOVING
23400      
23401      TrackMarks              = EXTnkTrack.tga
23402      TreadAnimationRate      = 4.0  ; amount of tread texture to move per second
23403    End
23404  
23405    ; ***DESIGN parameters ***
23406    DisplayName      = OBJECT:NukeLauncher
23407    Side = China
23408    EditorSorting   = VEHICLE
23409    TransportSlotCount = 10                 ;how many "slots" we take in a transport (0 == not transportable)
23410    WeaponSet
23411      Conditions = None 
23412      Weapon = PRIMARY NukeCannonGun
23413      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
23414    End
23415    ArmorSet
23416      Conditions      = None
23417      Armor           = TankArmor
23418      DamageFX        = TankDamageFX
23419    End
23420    BuildCost       = 1600
23421    BuildTime       = 20.0          ;in seconds    
23422    VisionRange     = 180
23423    ShroudClearingRange = 350
23424    Prerequisites
23425      Object = ChinaWarFactory
23426      Object = ChinaPropagandaCenter
23427      Science = SCIENCE_ArtilleryTraining
23428    End
23429  
23430    ExperienceValue = 50 100 200 400    ;Experience point value at each level
23431    ExperienceRequired = 0 400 600 1000  ;Experience points needed to gain each level
23432    IsTrainable = Yes             ;Can gain experience
23433    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
23434    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
23435    CommandSet    = ChinaVehicleNukeCannonCommandSet
23436  
23437    ; *** AUDIO Parameters ***
23438    VoiceSelect           = NukeCannonVoiceSelect
23439    VoiceMove             = NukeCannonVoiceMove
23440    VoiceGuard            = NukeCannonVoiceMove
23441    VoiceAttack           = NukeCannonVoiceAttack
23442    SoundMoveStart        = NukeCannonMoveStart
23443    SoundMoveStartDamaged = NukeCannonMoveStart
23444    UnitSpecificSounds
23445      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
23446      VoiceCreate         = NukeCannonVoiceCreate
23447      TurretMoveStart     = NoSound
23448      TurretMoveLoop      = NukeCannonTurretMoveLoop
23449      VoiceEnter          = NukeCannonVoiceMove
23450      Deploy              = NukeCannonDeploy
23451      Undeploy            = NukeCannonUnDeploy
23452    End
23453  
23454  
23455    ; *** ENGINEERING Parameters ***
23456    RadarPriority = UNIT
23457    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
23458    
23459    Body = ActiveBody ModuleTag_02
23460      MaxHealth       = 240.0
23461      InitialHealth   = 240.0
23462    End
23463  
23464  
23465  
23466    Behavior = DeployStyleAIUpdate ModuleTag_04
23467      Turret
23468        TurretTurnRate        = 80
23469        TurretPitchRate       = 80
23470        FirePitch             = 0            ; Instead of aiming pitchwise at the target, it will aim here
23471        AllowsPitch           = Yes
23472        RecenterTime          = 5000         ; how long to wait during idle before recentering
23473        ControlledWeaponSlots = PRIMARY
23474        NaturalTurretAngle    = 0
23475        InitiallyDisabled     = Yes
23476      End
23477      AutoAcquireEnemiesWhenIdle = No
23478      PackTime = 3333
23479      UnpackTime = 3333
23480      TurretsFunctionOnlyWhenDeployed = Yes
23481      TurretsMustCenterBeforePacking = Yes
23482    End
23483  
23484    Locomotor = SET_NORMAL ChinaNukeCannonLocomotor
23485    Behavior = PhysicsBehavior ModuleTag_05
23486      Mass = 50.0
23487    End
23488  
23489    Behavior = SlowDeathBehavior ModuleTag_06
23490      DeathTypes = ALL -CRUSHED -SPLATTED
23491      DestructionDelay  = 500
23492      DestructionDelayVariance  = 100
23493      FX  = INITIAL  FX_BattleMasterExplosionOneFinal
23494      OCL = INITIAL  OCL_RadiationFieldSmall
23495      OCL = MIDPOINT OCL_ChinaVehicleNukeCannonDie
23496      OCL = FINAL    OCL_RadiationFieldSmall
23497      FX  = FINAL    FX_ChinaVehicleNukeCannonDeathExplosion
23498    End
23499      
23500    ; A crushing defeat
23501    Behavior = FXListDie ModuleTag_07
23502      DeathTypes = NONE +CRUSHED +SPLATTED
23503      DeathFX = FX_CarCrush
23504    End
23505    Behavior = CreateObjectDie ModuleTag_08
23506      DeathTypes = NONE +CRUSHED +SPLATTED
23507      CreationList = OCL_CrusaderTank_CrushEffect
23508    End
23509    Behavior = CreateCrateDie ModuleTag_09
23510      CrateData = SalvageCrateData
23511      ;CrateData = EliteTankCrateData
23512      ;CrateData = HeroicTankCrateData
23513    End
23514  
23515    Behavior                 = TransitionDamageFX ModuleTag_10
23516      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
23517      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
23518    End
23519  
23520    Behavior = DestroyDie ModuleTag_11
23521      DeathTypes = NONE +CRUSHED +SPLATTED
23522    End
23523  
23524    Behavior = FlammableUpdate ModuleTag_21
23525      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
23526      AflameDamageAmount = 3       ; taking this much damage...
23527      AflameDamageDelay = 500       ; this often.
23528    End
23529  
23530    Geometry = BOX
23531    GeometryMajorRadius = 32.0
23532    GeometryMinorRadius = 10.0
23533    GeometryHeight = 17.0     
23534    GeometryIsSmall = No
23535    Shadow = SHADOW_VOLUME
23536    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
23537  
23538  End
23539  
23540  ;-----------------------------------------------------------------------------------------------------
23541  ;******************************* Cinematic Onlt Unit *************************************************
23542  Object CINE_ChinaVehicleNukeLauncher
23543  
23544    ; *** ART Parameters ***
23545    SelectPortrait         = SNNukeCannon_L
23546    ButtonImage            = SNNukeCannon
23547    
23548    ;UpgradeCameo1 = NONE
23549    ;UpgradeCameo2 = NONE
23550    ;UpgradeCameo3 = NONE
23551    ;UpgradeCameo4 = NONE
23552    ;UpgradeCameo5 = NONE
23553  
23554    Draw = W3DTankDraw ModuleTag_01
23555      
23556      InitialRecoilSpeed   = 120
23557      MaxRecoilDistance    = 8
23558      RecoilSettleSpeed    = 6
23559  
23560      OkToChangeModelColor = Yes
23561  
23562      ExtraPublicBone = Turret01
23563  
23564      DefaultConditionState
23565        Model                           = NVNukeCn
23566        WeaponLaunchBone                = PRIMARY Muzzle
23567        WeaponMuzzleFlash               = PRIMARY MuzzleFX
23568        WeaponFireFXBone                = PRIMARY Muzzle
23569        WeaponRecoilBone                = PRIMARY Barrel
23570        HideSubObject                   = TURRET01      ;Hide controlled turret
23571        ShowSubObject                   = TURRETFRONT TURRETBACK  ;Show pack/unpack animated turret
23572        Turret                          = Turret01
23573        TurretPitch                     = TurretEL
23574      End
23575        
23576      ConditionState                    = RUBBLE
23577        Model                           = NVNukeCn_D
23578        WeaponLaunchBone                = PRIMARY Muzzle
23579        WeaponMuzzleFlash               = PRIMARY MuzzleFX
23580        WeaponRecoilBone                = PRIMARY Barrel
23581        HideSubObject                   = TURRET01      ;Hide controlled turret
23582        ShowSubObject                   = TURRETFRONT TURRETBACK  ;Show pack/unpack animated turret
23583        Turret                          = Turret01
23584        TurretPitch                     = TurretEL
23585      End
23586  
23587      ;*** PACKED STATE -- ready to move ***
23588      ConditionState    = MOVING
23589        Animation       = NVNukeCn.NVNukeCn
23590        AnimationMode   = ONCE_BACKWARDS
23591        Flags           = START_FRAME_FIRST
23592      End
23593      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
23594      AliasConditionState = BETWEEN_FIRING_SHOTS_A
23595      ;***
23596      ConditionState    = REALLYDAMAGED MOVING
23597        Model           = NVNukeCn_D
23598        Animation       = NVNukeCn_D.NVNukeCn_D
23599        AnimationMode   = ONCE_BACKWARDS
23600        Flags           = START_FRAME_FIRST
23601      End
23602      AliasConditionState = REALLYDAMAGED MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
23603       
23604  
23605      ;*** UNPACKING STATE  -- preparing to fire ***
23606      ConditionState    = UNPACKING
23607        Animation       = NVNukeCn.NVNukeCn
23608        AnimationMode   = ONCE
23609      End
23610      AliasConditionState = UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
23611      ;***
23612      ConditionState    = REALLYDAMAGED UNPACKING
23613        Model           = NVNukeCn_D
23614        Animation       = NVNukeCn_D.NVNukeCn_D
23615        AnimationMode   = ONCE
23616      End
23617      AliasConditionState = REALLYDAMAGED UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
23618  
23619      ;*** PACKING STATE -- preparing to move ***
23620      ConditionState    = PACKING
23621        Animation       = NVNukeCn.NVNukeCn
23622        AnimationMode   = ONCE_BACKWARDS
23623        Flags           = START_FRAME_LAST
23624      End
23625  
23626      AliasConditionState = PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
23627      ;***
23628      ConditionState    = REALLYDAMAGED PACKING
23629        Model           = NVNukeCn_D
23630        Animation       = NVNukeCn_D.NVNukeCn_D
23631        AnimationMode   = ONCE_BACKWARDS
23632        Flags           = START_FRAME_LAST
23633      End
23634      AliasConditionState = REALLYDAMAGED PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
23635  
23636      ;*** DEPLOYED STATE -- ready to fire ***
23637      ConditionState  = DEPLOYED 
23638        Animation       = NVNukeCn.NVNukeCn
23639        AnimationMode   = ONCE
23640        Flags           = START_FRAME_LAST
23641        TransitionKey   = TRANS_FIRING_A
23642        HideSubObject   = TURRETFRONT TURRETBACK   ;Hide pack/unpack animated turret
23643        ShowSubObject   = TURRET01      ;Show controlled turret
23644      End
23645      AliasConditionState = DEPLOYED FIRING_A
23646      AliasConditionState = DEPLOYED BETWEEN_FIRING_SHOTS_A
23647      AliasConditionState = DEPLOYED RELOADING_A
23648      AliasConditionState = DEPLOYED MOVING
23649  
23650      ConditionState  = DEPLOYED REALLYDAMAGED
23651        Model           = NVNukeCn_D
23652        Animation       = NVNukeCn_D.NVNukeCn_D
23653        AnimationMode   = ONCE
23654        Flags           = START_FRAME_LAST
23655        TransitionKey   = TRANS_FIRING_A
23656        HideSubObject   = TURRETFRONT TURRETBACK  ;Hide pack/unpack animated turret
23657        ShowSubObject   = TURRET01      ;Show controlled turret
23658      End
23659      AliasConditionState = DEPLOYED REALLYDAMAGED FIRING_A
23660      AliasConditionState = DEPLOYED REALLYDAMAGED BETWEEN_FIRING_SHOTS_A
23661      AliasConditionState = DEPLOYED REALLYDAMAGED RELOADING_A
23662      AliasConditionState = DEPLOYED REALLYDAMAGED MOVING
23663      
23664      TrackMarks              = EXTnkTrack.tga
23665      TreadAnimationRate      = 4.0  ; amount of tread texture to move per second
23666    End
23667  
23668    ; ***DESIGN parameters ***
23669    DisplayName      = OBJECT:NukeLauncher
23670    Side = China
23671    EditorSorting   = VEHICLE
23672    TransportSlotCount = 10                 ;how many "slots" we take in a transport (0 == not transportable)
23673    WeaponSet
23674      Conditions = None 
23675      Weapon = PRIMARY CINE_NukeCannonGun
23676      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
23677    End
23678    ArmorSet
23679      Conditions      = None
23680      Armor           = TankArmor
23681      DamageFX        = TankDamageFX
23682    End
23683    BuildCost       = 1600
23684    BuildTime       = 20.0          ;in seconds    
23685    VisionRange     = 180
23686    ShroudClearingRange = 350
23687    Prerequisites
23688      Object = ChinaWarFactory
23689      Object = ChinaPropagandaCenter
23690      Science = SCIENCE_NukeLauncher
23691    End
23692  
23693    ExperienceValue = 50 100 200 400    ;Experience point value at each level
23694    ExperienceRequired = 0 400 600 1000  ;Experience points needed to gain each level
23695    IsTrainable = Yes             ;Can gain experience
23696    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
23697    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
23698    CommandSet    = ChinaVehicleNukeCannonCommandSet
23699  
23700    ; *** AUDIO Parameters ***
23701    VoiceSelect           = NukeCannonVoiceSelect
23702    VoiceMove             = NukeCannonVoiceMove
23703    VoiceGuard            = NukeCannonVoiceMove
23704    VoiceAttack           = NukeCannonVoiceAttack
23705    SoundMoveStart        = NukeCannonMoveStart
23706    SoundMoveStartDamaged = NukeCannonMoveStart
23707    UnitSpecificSounds
23708      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
23709      VoiceCreate         = NukeCannonVoiceCreate
23710      TurretMoveStart     = NoSound
23711      TurretMoveLoop      = NukeCannonTurretMoveLoop
23712      VoiceEnter          = NukeCannonVoiceMove
23713      Deploy              = NukeCannonDeploy
23714      Undeploy            = NukeCannonUnDeploy
23715    End
23716  
23717  
23718    ; *** ENGINEERING Parameters ***
23719    RadarPriority = UNIT
23720    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
23721    
23722    Body = ActiveBody ModuleTag_02
23723      MaxHealth       = 240.0
23724      InitialHealth   = 240.0
23725    End
23726  
23727    Behavior = VeterancyGainCreate ModuleTag_03
23728      StartingLevel = VETERAN
23729      ScienceRequired = SCIENCE_ArtilleryTraining
23730    End
23731  
23732    Behavior = DeployStyleAIUpdate ModuleTag_04
23733      Turret
23734        TurretTurnRate        = 80
23735        TurretPitchRate       = 80
23736        FirePitch             = 0            ; Instead of aiming pitchwise at the target, it will aim here
23737        AllowsPitch           = Yes
23738        RecenterTime          = 5000         ; how long to wait during idle before recentering
23739        ControlledWeaponSlots = PRIMARY
23740        NaturalTurretAngle    = 0
23741        InitiallyDisabled     = Yes
23742      End
23743      AutoAcquireEnemiesWhenIdle = No
23744      PackTime = 3333
23745      UnpackTime = 3333
23746      TurretsFunctionOnlyWhenDeployed = Yes
23747      TurretsMustCenterBeforePacking = Yes
23748    End
23749  
23750    Locomotor = SET_NORMAL ChinaNukeCannonLocomotor
23751    Behavior = PhysicsBehavior ModuleTag_05
23752      Mass = 50.0
23753    End
23754  
23755    Behavior = SlowDeathBehavior ModuleTag_06
23756      DeathTypes = ALL -CRUSHED -SPLATTED
23757      DestructionDelay  = 500
23758      DestructionDelayVariance  = 100
23759      FX  = INITIAL  FX_BattleMasterExplosionOneFinal
23760      OCL = INITIAL  OCL_RadiationFieldSmall
23761      OCL = MIDPOINT OCL_ChinaVehicleNukeCannonDie
23762      OCL = FINAL    OCL_RadiationFieldSmall
23763      FX  = FINAL    FX_ChinaVehicleNukeCannonDeathExplosion
23764    End
23765      
23766    ; A crushing defeat
23767    Behavior = FXListDie ModuleTag_07
23768      DeathTypes = NONE +CRUSHED +SPLATTED
23769      DeathFX = FX_CarCrush
23770    End
23771    Behavior = CreateObjectDie ModuleTag_08
23772      DeathTypes = NONE +CRUSHED +SPLATTED
23773      CreationList = OCL_CrusaderTank_CrushEffect
23774    End
23775    Behavior = CreateCrateDie ModuleTag_09
23776      CrateData = SalvageCrateData
23777      ;CrateData = EliteTankCrateData
23778      ;CrateData = HeroicTankCrateData
23779    End
23780  
23781    Behavior                 = TransitionDamageFX ModuleTag_10
23782      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
23783      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
23784    End
23785  
23786    Behavior = DestroyDie ModuleTag_11
23787      DeathTypes = NONE +CRUSHED +SPLATTED
23788    End
23789  
23790    Behavior = FlammableUpdate ModuleTag_21
23791      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
23792      AflameDamageAmount = 3       ; taking this much damage...
23793      AflameDamageDelay = 500       ; this often.
23794    End
23795  
23796    Geometry = BOX
23797    GeometryMajorRadius = 32.0
23798    GeometryMinorRadius = 10.0
23799    GeometryHeight = 17.0     
23800    GeometryIsSmall = No
23801    Shadow = SHADOW_VOLUME
23802    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
23803  
23804  End
23805  
23806  ;------------------------------------------------------------------------------
23807  Object ChinaTankGattling
23808  
23809    ; *** ART Parameters ***
23810    SelectPortrait         = SNGatlingTank_L
23811    ButtonImage            = SNGatlingTank
23812    
23813    ;UpgradeCameo1 = Upgrade_Nationalism
23814    UpgradeCameo1 = Upgrade_ChinaChainGuns
23815    ;UpgradeCameo3 = NONE
23816    ;UpgradeCameo4 = NONE
23817    ;UpgradeCameo5 = NONE
23818    
23819    Draw                      = W3DTankDraw ModuleTag_01
23820      OkToChangeModelColor    = Yes
23821      
23822      DefaultConditionState        
23823        Model               = NVGattTank
23824        Animation           = NVGattTank.NVGattTank
23825        AnimationMode       = MANUAL
23826        Turret              = TURRET01
23827        TurretPitch         = TURRETEL01
23828        WeaponMuzzleFlash   = PRIMARY   MuzzleFX
23829        WeaponFireFXBone    = PRIMARY   Muzzle
23830        WeaponMuzzleFlash   = SECONDARY MuzzleFX
23831        WeaponFireFXBone    = SECONDARY Muzzle
23832      End
23833  
23834      ConditionState        = REALLYDAMAGED RUBBLE         
23835        Model               = NVGattTank_D
23836      End
23837  
23838  
23839      ;-----pristine attacking----------------------
23840      ConditionState        = ATTACKING
23841        Model               = NVGattTank
23842        Animation           = NVGattTank.NVGattTank
23843        AnimationMode       = LOOP
23844        AnimationSpeedFactorRange = 0.5 0.5 ;set this state to animate  s l o w l y
23845      End
23846  
23847      ConditionState        = CONTINUOUS_FIRE_SLOW ATTACKING
23848        Model               = NVGattTank
23849        Animation           = NVGattTank.NVGattTank
23850        AnimationMode       = LOOP
23851        AnimationSpeedFactorRange = 0.8 0.8 ;set this state to animate  s l o w l y
23852      End
23853  
23854      ConditionState        = CONTINUOUS_FIRE_MEAN ATTACKING
23855        Model               = NVGattTank
23856        Animation           = NVGattTank.NVGattTank
23857        AnimationMode       = LOOP
23858        AnimationSpeedFactorRange = 1.5 1.5 ;set this state to animate  medium-fast
23859      End
23860  
23861      ConditionState        = CONTINUOUS_FIRE_FAST ATTACKING
23862        Model               = NVGattTank
23863        Animation           = NVGattTank.NVGattTank
23864        AnimationMode       = LOOP
23865        ParticleSysBone     = Muzzle01 GattlingMuzzleSmoke
23866        AnimationSpeedFactorRange = 3.0 3.0 ;set this state to animate  vryfst
23867      End
23868  
23869      ;-----damaged attacking----------------------
23870      ConditionState  REALLYDAMAGED ATTACKING         
23871        Model               = NVGattTank_D
23872        Animation           = NVGattTank_D.NVGattTank_D
23873        AnimationMode       = LOOP
23874        AnimationSpeedFactorRange = 0.5 0.5 ;set this state to animate  extemely sloowly
23875      End
23876      ConditionState        = CONTINUOUS_FIRE_SLOW REALLYDAMAGED ATTACKING
23877        Model               = NVGattTank_D
23878        Animation           = NVGattTank_D.NVGattTank_D
23879        AnimationMode       = LOOP
23880        AnimationSpeedFactorRange = 0.8 0.8 ;set this state to animate  s l o w l y
23881      End
23882  
23883      ConditionState        = CONTINUOUS_FIRE_MEAN REALLYDAMAGED ATTACKING
23884        Model               = NVGattTank_D
23885        Animation           = NVGattTank_D.NVGattTank_D
23886        AnimationMode       = LOOP
23887        AnimationSpeedFactorRange = 1.5 1.5 ;set this state to animate  medium-fast
23888      End
23889  
23890      ConditionState        = CONTINUOUS_FIRE_FAST REALLYDAMAGED ATTACKING
23891        Model               = NVGattTank_D
23892        Animation           = NVGattTank_D.NVGattTank_D
23893        AnimationMode       = LOOP
23894        ParticleSysBone     = Muzzle01 GattlingMuzzleSmoke
23895        AnimationSpeedFactorRange = 3.0 3.0 ;set this state to animate  vryfst
23896      End
23897  
23898  
23899  
23900  
23901      TrackMarks              = EXTnkTrack.tga
23902      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
23903      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
23904      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
23905    End
23906  
23907    ; ***DESIGN parameters ***
23908    DisplayName               = OBJECT:GattlingTank
23909    Side                      = China
23910    EditorSorting             = VEHICLE
23911    TransportSlotCount        = 3            ;how many "slots" we take in a transport (0 == not transportable)
23912  
23913    WeaponSet
23914      Conditions              = None 
23915      Weapon                  = PRIMARY   GattlingTankGun
23916      PreferredAgainst        = PRIMARY   AIRCRAFT
23917      Weapon                  = SECONDARY GattlingTankGunAir
23918    End
23919  
23920    ArmorSet
23921      Conditions    = None
23922      Armor         = AntiAirVehicle
23923      DamageFX      = TankDamageFX
23924    End
23925    BuildCost       = 800
23926    BuildTime       = 10.0          ;in seconds    
23927    VisionRange     = 150
23928    ShroudClearingRange = 360
23929    Prerequisites
23930      Object        = ChinaWarFactory
23931    End
23932  
23933    ExperienceValue = 50 50 100 150  ;Experience point value at each level
23934    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
23935    IsTrainable = Yes             ;Can gain experience
23936    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
23937    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
23938    CommandSet      = ChinaVehicleGattlingTankCommandSet
23939  
23940    Behavior = AIUpdateInterface ModuleTag_20
23941      AutoAcquireEnemiesWhenIdle = Yes
23942      MoodAttackCheckRate        = 250
23943    End
23944  
23945    ; *** AUDIO Parameters ***
23946    VoiceSelect     = GattlingTankVoiceSelect
23947    VoiceMove       = GattlingTankVoiceMove
23948    VoiceGuard      = GattlingTankVoiceMove
23949    VoiceAttack     = GattlingTankVoiceAttack
23950    SoundMoveStart  = GattlingTankMoveStart
23951    SoundMoveStartDamaged = GattlingTankMoveStart
23952  
23953    UnitSpecificSounds
23954      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
23955      VoiceCreate     = GattlingTankVoiceCreate
23956      TurretMoveStart = NoSound
23957      TurretMoveLoop  = TurretMoveLoopLoud
23958      VoiceCrush      = GattlingTankVoiceCrush
23959      VoiceEnter      = GattlingTankVoiceMove
23960      VoiceRapidFire  = GattlingTankVoiceRapid
23961    End
23962  
23963    ; *** ENGINEERING Parameters ***
23964    RadarPriority     = UNIT
23965    KindOf            = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
23966    
23967    Body              = ActiveBody ModuleTag_02
23968      MaxHealth       = 300.0
23969      InitialHealth   = 300.0
23970    End
23971    Behavior = AIUpdateInterface ModuleTag_03
23972      Turret
23973        ControlledWeaponSlots = PRIMARY SECONDARY
23974        TurretTurnRate      = 180   // turn rate, in degrees per sec
23975        TurretPitchRate     = 180
23976        AllowsPitch         = Yes
23977        FiresWhileTurning   = Yes
23978        NaturalTurretPitch  = 45 ; this keeps it aimed half way between land and sky
23979                                 ; since you never know from whence cometh danger
23980      End
23981      AutoAcquireEnemiesWhenIdle = Yes
23982    End
23983    Locomotor       = SET_NORMAL GattlingTankLocomotor
23984    Behavior          = PhysicsBehavior ModuleTag_04
23985      Mass            = 40.0
23986    End
23987  
23988  ;  Behavior               = DestroyDie 
23989  ;    ;nothing
23990  ;  End
23991      
23992    ; Just explode death
23993    Behavior = SlowDeathBehavior ModuleTag_05
23994      ProbabilityModifier = 19
23995      DestructionDelay = 200
23996      DestructionDelayVariance = 100
23997  
23998      SinkRate = 0.5     ; in Dist/Sec
23999  
24000      OCL = FINAL    OCL_ChinaTankGattlingDebris
24001      FX  = FINAL    FX_GattlingExplosionOneFinal
24002    End
24003  
24004    Behavior = CreateCrateDie ModuleTag_06
24005      CrateData = SalvageCrateData
24006      ;CrateData = EliteTankCrateData
24007      ;CrateData = HeroicTankCrateData
24008    End
24009  
24010    Behavior = TransitionDamageFX ModuleTag_07
24011      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
24012      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
24013    End
24014  
24015    Behavior = FlammableUpdate ModuleTag_21
24016      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
24017      AflameDamageAmount = 3       ; taking this much damage...
24018      AflameDamageDelay = 500       ; this often.
24019    End
24020  
24021    Behavior = WeaponBonusUpgrade ModuleTag_22
24022      TriggeredBy = Upgrade_ChinaChainGuns
24023    End
24024      Behavior = VeterancyGainCreate ModuleTag_03
24025      StartingLevel = VETERAN
24026      ScienceRequired = SCIENCE_ArtilleryTraining
24027    End
24028  
24029    Geometry            = BOX
24030    GeometryMajorRadius = 15.0
24031    GeometryMinorRadius = 10.0
24032  
24033    GeometryHeight      = 15.0     
24034    GeometryIsSmall     = Yes
24035    Shadow              = SHADOW_VOLUME
24036    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
24037  
24038  End
24039  
24040  ;------------------------------------------------------------------------------
24041  Object GLALightTank
24042  
24043    ; *** ART Parameters ***
24044    Draw                      = W3DTankDraw ModuleTag_01
24045      OkToChangeModelColor    = Yes
24046      
24047      DefaultConditionState          
24048        Model                 = UVLiteTank
24049        WeaponMuzzleFlash     = PRIMARY MuzzleFX
24050      End
24051  
24052      TrackMarks              = EXTnkTrack.tga
24053      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
24054      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
24055      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
24056    End
24057  
24058    ; ***DESIGN parameters ***
24059    DisplayName               = OBJECT:Scorpion
24060    Side                      = GLA
24061    EditorSorting             = VEHICLE
24062    TransportSlotCount        = 3            ;how many "slots" we take in a transport (0 == not transportable)
24063    WeaponSet
24064      Conditions              = None 
24065      Weapon                  = PRIMARY CrusaderTankGun
24066    End
24067    ArmorSet
24068      Conditions    = None
24069      Armor         = TruckArmor
24070      DamageFX      = TankDamageFX
24071    End
24072    BuildCost       = 900
24073    BuildTime       = 10.0          ;in seconds    
24074    VisionRange     = 200
24075    ShroudClearingRange = 200
24076    Prerequisites
24077      Object        = GLAArmsDealer
24078    End
24079  
24080    ExperienceValue = 50 100 150 400    ;Experience point value at each level
24081    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
24082    IsTrainable = Yes             ;Can gain experience
24083    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
24084    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
24085  
24086    ; *** AUDIO Parameters ***
24087  
24088    VoiceSelect     = ScorpionTankVoiceSelect
24089    VoiceMove       = ScorpionTankVoiceMove
24090    VoiceGuard      = ScorpionTankVoiceMove
24091    VoiceAttack     = ScorpionTankVoiceAttack
24092    SoundMoveStart  = ScorpionTankMoveStart
24093    SoundMoveStartDamaged = ScorpionTankMoveStart
24094  
24095    UnitSpecificSounds
24096      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
24097      VoiceCreate     = ScorpionTankVoiceCreate
24098      TurretMoveStart = NoSound
24099      TurretMoveLoop  = TurretMoveLoop
24100      VoiceCrush      = ScorpionTankVoiceCrush
24101      VoiceEnter      = ScorpionTankVoiceMove
24102    End
24103  
24104    ; *** ENGINEERING Parameters ***
24105    RadarPriority     = UNIT
24106    KindOf            = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
24107    
24108    Body              = ActiveBody ModuleTag_02
24109      MaxHealth       = 200.0
24110      InitialHealth   = 200.0
24111    End
24112    Behavior = AIUpdateInterface ModuleTag_03
24113      Turret
24114        ControlledWeaponSlots    = PRIMARY
24115      End
24116      AutoAcquireEnemiesWhenIdle = Yes
24117    End
24118    Locomotor       = SET_NORMAL BasicTankLocomotor
24119    Behavior          = PhysicsBehavior ModuleTag_04
24120      Mass            = 40.0
24121    End
24122  
24123    Behavior               = DestroyDie ModuleTag_05
24124      ;nothing
24125    End
24126      
24127    ; A crushing defeat
24128    Behavior             = FXListDie ModuleTag_06
24129      DeathTypes = NONE +CRUSHED +SPLATTED
24130      DeathFX       = FX_CarCrush
24131    End
24132    Behavior             = CreateObjectDie ModuleTag_07
24133      DeathTypes = NONE +CRUSHED +SPLATTED
24134      CreationList  = OCL_CrusaderTank_CrushEffect
24135    End
24136    Behavior             = CreateCrateDie ModuleTag_08
24137      CrateData     = SalvageCrateData
24138      ;CrateData     = EliteTankCrateData
24139      ;CrateData     = HeroicTankCrateData
24140    End
24141  
24142    Behavior = FlammableUpdate ModuleTag_21
24143      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
24144      AflameDamageAmount = 3       ; taking this much damage...
24145      AflameDamageDelay = 500       ; this often.
24146    End
24147  
24148  
24149    Geometry            = BOX
24150    GeometryMajorRadius = 15.0
24151    GeometryMinorRadius = 10.0
24152  
24153    GeometryHeight      = 15.0     
24154    GeometryIsSmall     = Yes
24155    Shadow              = SHADOW_VOLUME
24156    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
24157  
24158  End
24159  
24160  ;------------------------------------------------------------------------------
24161  ;China Supply Truck
24162  Object ChinaVehicleSupplyTruck
24163  
24164    ; *** ART Parameters ***
24165    
24166    SelectPortrait         = SNSupplyTruck_L
24167    ButtonImage            = SNSupplyTruck
24168    
24169    ;UpgradeCameo1 = NONE
24170    ;UpgradeCameo2 = NONE
24171    ;UpgradeCameo3 = NONE
24172    ;UpgradeCameo4 = NONE
24173    ;UpgradeCameo5 = NONE
24174    
24175    Draw = W3DTruckDraw ModuleTag_01
24176      OkToChangeModelColor = Yes
24177      
24178      DefaultConditionState
24179        Model           = NVSSUPPLYTK
24180        HideSubObject   = Cargo01
24181      End
24182      
24183      ConditionState    = REALLYDAMAGED
24184        Model           = NVSSUPPLYTK_D
24185      End
24186      
24187      ConditionState    = RUBBLE
24188        Model           = NVSSUPPLYTK_D
24189      End
24190      
24191      ConditionState    = CARRYING
24192        ShowSubObject   = Cargo01
24193      End
24194      
24195      ConditionState    = REALLYDAMAGED CARRYING
24196        Model           = NVSSUPPLYTK_D
24197        ShowSubObject   = Cargo01
24198      End
24199      
24200      ConditionState    = RUBBLE CARRYING
24201        Model           = NVSSUPPLYTK_D
24202        ShowSubObject   = Cargo01
24203      End
24204      
24205      TrackMarks              = EXTireTrack.tga
24206  
24207      LeftFrontTireBone           = Tire01
24208      RightFrontTireBone          = Tire02
24209      MidLeftRearTireBone         = Tire03
24210      MidRightRearTireBone        = Tire04
24211      LeftRearTireBone            = Tire05
24212      RightRearTireBone           = Tire06
24213      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
24214      PowerslideRotationAddition  = 2.5   ; This speed is added to the rotation speed when powersliding.
24215  
24216      Dust                    = RocketBuggyDust
24217      DirtSpray               = RocketBuggyDirtSpray
24218      PowerslideSpray         = RocketBuggyDirtPowerSlide
24219  
24220    End
24221  
24222    ; ***DESIGN parameters ***
24223    DisplayName         = OBJECT:SupplyTruck
24224    Side                = China
24225    EditorSorting       = VEHICLE
24226    TransportSlotCount  = 2                 ;how many "slots" we take in a transport (0 == not transportable)
24227    BuildCost           = 600
24228    BuildTime           = 10.0      ;in seconds
24229    VisionRange         = 150
24230    ShroudClearingRange = 300
24231    Prerequisites
24232      Object = ChinaSupplyCenter
24233    End
24234  
24235    ArmorSet
24236      Conditions      = None
24237      Armor           = TruckArmor
24238      DamageFX        = TankDamageFX
24239    End
24240    CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
24241    CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
24242    CommandSet              = ChinaSupplyTruckCommandSet
24243    ; *** AUDIO Parameters ***
24244    VoiceSelect             = SupplyTruckVoiceSelect
24245    VoiceMove               = SupplyTruckVoiceMove
24246    VoiceAttack             = SupplyTruckVoiceAttack
24247    SoundMoveStart          = SupplyTruckMoveStart
24248    SoundMoveStartDamaged = SupplyTruckMoveStart
24249    UnitSpecificSounds
24250      VoiceCreate           = SupplyTruckVoiceCreate
24251      TruckLandingSound     = NoSound
24252      TruckPowerslideSound  = NoSound
24253      VoiceSupply           = SupplyTruckVoiceSupply
24254      VoiceCrush            = SupplyTruckVoiceCrush
24255      VoiceEnter            = SupplyTruckVoiceMove
24256  
24257    End
24258  
24259    ; *** ENGINEERING Parameters ***
24260    RadarPriority = UNIT
24261    ;@todo lorenzen removed the CAN_ATTACK from the chinasupplytruck... ok?
24262    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE HARVESTER SCORE
24263    
24264    Body = ActiveBody ModuleTag_02
24265      MaxHealth       = 300.0
24266      InitialHealth   = 300.0
24267    End
24268    Behavior = SupplyTruckAIUpdate ModuleTag_03
24269      MaxBoxes = 4
24270      SupplyCenterActionDelay = 400     ; ms for whole thing (one transaction)
24271      SupplyWarehouseActionDelay = 1000 ; ms per box (many small transactions)
24272      SupplyWarehouseScanDistance = 700 ;350 ; Max distance to look for a warehouse, or we go home.  (Direct dock command on warehouse overrides, and no max on Center Scan)
24273      SuppliesDepletedVoice = SupplyTruckVoiceSuppliesDepleted
24274    End
24275    Locomotor = SET_NORMAL SupplyTruckLocomotor
24276    Behavior = PhysicsBehavior ModuleTag_04
24277      Mass = 5.0
24278    End
24279  
24280    ExperienceValue    = 50 50 50 50 ;Experience point value at each level
24281  
24282    Behavior = SlowDeathBehavior ModuleTag_05
24283      DeathTypes = ALL -CRUSHED -SPLATTED
24284      DestructionDelay = 200
24285      DestructionDelayVariance = 100
24286      FX  = FINAL    FX_SupplyTruckExplosionOneFinal
24287      OCL = FINAL    OCL_ChinaSupplyTruckDeathEffect
24288    End
24289      
24290    Behavior = FXListDie ModuleTag_06
24291      DeathTypes = NONE +CRUSHED +SPLATTED
24292      DeathFX = FX_CarCrush
24293    End
24294    
24295    Behavior = CreateObjectDie ModuleTag_07
24296      DeathTypes = NONE +CRUSHED +SPLATTED
24297      CreationList = OCL_ChinaSupplyTruck_CrushEffect
24298    End
24299  
24300    Behavior                       = TransitionDamageFX ModuleTag_08
24301      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
24302      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
24303    End
24304  
24305    Behavior = FlammableUpdate ModuleTag_10
24306      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
24307      AflameDamageAmount = 3       ; taking this much damage...
24308      AflameDamageDelay = 500       ; this often.
24309    End
24310  
24311    ; A crushing defeat
24312    Behavior = DestroyDie ModuleTag_11
24313      DeathTypes = NONE +CRUSHED +SPLATTED
24314    End
24315  
24316    Behavior        = CreateCrateDie ModuleTag_12
24317      CrateData     = SalvageCrateData
24318    End
24319  
24320    Geometry = BOX
24321    GeometryMajorRadius = 17.0
24322    GeometryMinorRadius = 7.0
24323    GeometryHeight = 14.0     
24324    GeometryIsSmall = No
24325    Shadow = SHADOW_VOLUME
24326    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
24327  
24328  End
24329  
24330  ;------------------------------------------------------------------------------
24331  ;USA Construction Dozer or USDozer
24332  Object AmericaVehicleDozer
24333  
24334    ; *** ART Parameters ***
24335    SelectPortrait         = SACDozer_L
24336    ButtonImage            = SACDozer
24337    
24338    ;UpgradeCameo1 = NONE
24339    ;UpgradeCameo2 = NONE
24340    ;UpgradeCameo3 = NONE
24341    ;UpgradeCameo4 = NONE
24342    ;UpgradeCameo5 = NONE
24343    
24344    Draw = W3DTruckDraw ModuleTag_01
24345  
24346      OkToChangeModelColor = Yes
24347  
24348      DefaultConditionState
24349        Model             = AVCONSTDOZ_A
24350        ParticleSysBone   = EXHAUSTFX01 DozerSmokeLight
24351        WaitForStateToFinishIfPossible = TRANS_DIGGING
24352      End
24353  
24354      ConditionState = PREATTACK_A 
24355        Animation         = AVCONSTDOZ_A.AVCONSTDOZ_A
24356        AnimationMode     = ONCE
24357        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
24358        ParticleSysBone   = DIRTFX01 DozerDirtFall ;gush of dirt
24359        TransitionKey     = TRANS_DIGGING
24360      End
24361  
24362      ConditionState = MOVING
24363        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
24364        WaitForStateToFinishIfPossible = TRANS_DIGGING
24365      End
24366  
24367      ConditionState      = REALLYDAMAGED RUBBLE
24368        Model             = AVCONSTDOZ_AD
24369        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
24370        WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
24371      End
24372  
24373      ConditionState = PREATTACK_A REALLYDAMAGED RUBBLE
24374        Model             = AVCONSTDOZ_AD
24375        Animation         = AVCONSTDOZ_AD.AVCONSTDOZ_AD
24376        AnimationMode     = ONCE
24377        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
24378        TransitionKey     = TRANS_DIGGING_DAMAGED
24379      End
24380  
24381      ConditionState      = MOVING REALLYDAMAGED RUBBLE
24382        Model             = AVCONSTDOZ_AD
24383        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
24384        WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
24385      End
24386  
24387  
24388      TrackMarks            = EXTireTrack2.tga
24389      Dust                  = RocketBuggyDust
24390      DirtSpray             = RocketBuggyDirtSpray
24391  
24392      ; These parameters are only used if the model has a separate suspension, 
24393      ; and the locomotor has HasSuspension = Yes.
24394  
24395      LeftFrontTireBone     = TIRE01
24396      RightFrontTireBone    = TIRE02
24397      LeftRearTireBone      = TIRE03
24398      RightRearTireBone     = TIRE04
24399  
24400      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
24401      PowerslideRotationAddition  = 0   ; This vehicle doesn't powerslide.
24402  
24403    End
24404  
24405  
24406  
24407    ; ***DESIGN parameters ***
24408    DisplayName         = OBJECT:Dozer
24409    Side                = America
24410    EditorSorting       = VEHICLE
24411    TransportSlotCount  = 5 ;how many "slots" we take in a transport (0 == not transportable)
24412    BuildCost           = 1000
24413    BuildTime           = 5.0 ; in seconds
24414    VisionRange         = 200
24415    ShroudClearingRange = 200
24416  
24417    WeaponSet
24418      Conditions = None 
24419      Weapon = PRIMARY None
24420    End
24421    WeaponSet
24422      Conditions = MINE_CLEARING_DETAIL 
24423      Weapon = PRIMARY DozerMineDisarmingWeapon
24424    End
24425  
24426    ArmorSet
24427      Conditions        = None
24428      Armor             = DozerArmor ;Special Explosion-Proof Armor
24429      DamageFX          = TankDamageFX
24430    End
24431    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
24432    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
24433    CommandSet          = AmericaDozerCommandSet
24434  
24435    ; *** AUDIO Parameters ***
24436    VoiceSelect         = DozerUSAVoiceSelect
24437    VoiceMove           = DozerUSAVoiceMove
24438    VoiceGuard          = DozerUSAVoiceMove
24439    VoiceTaskComplete   = DozerUSAVoiceBuildComplete
24440    SoundMoveStart      = DozerUSAMoveStart
24441    SoundMoveStartDamaged = DozerUSAMoveStart
24442    UnitSpecificSounds
24443      VoiceCreate           = DozerUSAVoiceCreate
24444      VoiceNoBuild          = DozerUSAVoiceBuildNot
24445      VoiceCrush            = DozerUSAVoiceCrush
24446      VoiceRepair           = DozerUSAVoiceRepair
24447      VoiceDisarm           = DozerUSAVoiceClearMine
24448      TruckLandingSound     = NoSound
24449      TruckPowerslideSound  = NoSound
24450      VoiceEnter            = DozerUSAVoiceMove
24451      VoiceBuildResponse    = DozerUSAVoiceBuild
24452    End
24453  
24454    ; *** ENGINEERING Parameters ***
24455    RadarPriority       = UNIT
24456    KindOf              = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER
24457   
24458    Body                = ActiveBody ModuleTag_02
24459      MaxHealth         = 250.0
24460      InitialHealth     = 250.0
24461    End
24462    Behavior = DozerAIUpdate ModuleTag_03
24463      RepairHealthPercentPerSecond = 2%    ; % of max health to repair each second
24464      BoredTime                    = 5000  ; in milliseconds
24465      BoredRange                   = 150   ; when bored, we look this far away to do something
24466      ; the only "enemies" that workers can acquire are mines, to be disarmed...
24467      AutoAcquireEnemiesWhenIdle   = Yes
24468    End
24469  
24470    Locomotor = SET_NORMAL AmericaVehicleDozerLocomotor
24471  
24472    Behavior            = PhysicsBehavior ModuleTag_04
24473      Mass              = 75.0
24474    End
24475  
24476    Behavior = StealthDetectorUpdate ModuleTag_05
24477      DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
24478      ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
24479      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
24480      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
24481      ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
24482    End
24483  
24484    Behavior                 = TransitionDamageFX ModuleTag_06
24485      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
24486      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
24487    End
24488  
24489    ; Catch fire, and explode death
24490    Behavior = SlowDeathBehavior ModuleTag_07
24491      DeathTypes = ALL -CRUSHED -SPLATTED
24492      ProbabilityModifier = 100
24493      DestructionDelay = 1500
24494      DestructionDelayVariance = 600
24495      FX  = INITIAL  FX_CrusaderCatchFire
24496      OCL = FINAL    OCL_AmericaDozerExplode  
24497      FX  = FINAL    FX_BattleMasterExplosionOneFinal
24498    End   
24499  
24500    Behavior = CreateCrateDie ModuleTag_CratesChange
24501      CrateData = SalvageCrateData
24502    End
24503    
24504    Behavior = FlammableUpdate ModuleTag_21
24505      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
24506      AflameDamageAmount = 3       ; taking this much damage...
24507      AflameDamageDelay = 500       ; this often.
24508    End
24509  
24510    ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_22
24511    End
24512  
24513    Behavior               = FXListDie ModuleTag_23
24514      DeathTypes = NONE +CRUSHED +SPLATTED
24515      DeathFX         = FX_CarCrush
24516    End
24517  
24518    Behavior = DestroyDie ModuleTag_24
24519      DeathTypes = NONE +CRUSHED +SPLATTED
24520    End
24521  
24522    ;----------------------- Command Set Changes -----------------------
24523    Behavior = CommandSetUpgrade ModuleTag_commandup
24524      CommandSet = AmericaDozerCommandSetTech
24525      TriggeredBy   = Upgrade_AmericaDozerUpgrade
24526    End
24527    Behavior = CommandSetUpgrade ModuleTag_commandup2
24528      CommandSet = AmericaDozerCommandSet
24529      TriggeredBy   = Upgrade_AmericaDozerUpgradeDefault
24530    End
24531    ; releases the upgrade otherwise you cannot switch between them since they've already been purchased
24532    Behavior = ObjectCreationUpgrade ModuleTag_commandup3
24533      UpgradeObject = OCL_AmericaCommandsetupgraderelease
24534      TriggeredBy   = Upgrade_AmericaDozerUpgrade Upgrade_AmericaDozerUpgradeDefault
24535    End
24536    ;------------------------------------------------------------------
24537  
24538    Behavior = ProductionUpdate ModuleTag_25
24539      ;MaxQueueEntries = 1
24540    End
24541  
24542  
24543    Geometry            = BOX
24544    GeometryMajorRadius = 15.0
24545    GeometryMinorRadius = 10.0
24546    GeometryHeight      = 15.0     
24547    GeometryIsSmall     = Yes
24548    Shadow              = SHADOW_VOLUME
24549    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
24550  
24551  End
24552  
24553  ;------------------------------------------------------------------------------
24554  ; Note, this is really a Civ dozer that's used only for eye-candy purposes.
24555  ; It doesn't have mine-disarming ability. It probably shouldn't even have Dozer
24556  ; ability, but I have left that in for now. But don't use this for true Dozer purposes.
24557  ;
24558  Object GLAVehicleDozer
24559  
24560    ; *** ART Parameters ***
24561    SelectPortrait         = SNDozer_L
24562    ButtonImage            = SNDozer
24563    Draw = W3DModelDraw ModuleTag_01
24564      OkToChangeModelColor = Yes
24565      DefaultConditionState
24566        Model = AVCONSTDOZ
24567      End
24568    End
24569  
24570    ; ***DESIGN parameters ***
24571    DisplayName      = OBJECT:Dozer
24572    Side = GLA
24573    EditorSorting   = VEHICLE
24574    TransportSlotCount = 5                 ;how many "slots" we take in a transport (0 == not transportable)
24575    BuildCost       = 100
24576    BuildTime       = 5.0 ;in seconds
24577    VisionRange     = 150
24578    ShroudClearingRange = 300
24579  
24580    ArmorSet
24581      Conditions        = None
24582      Armor             = TankArmor
24583      DamageFX          = TankDamageFX
24584    End
24585    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
24586    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
24587    CommandSet      = GLADozerCommandSet
24588  
24589    ; *** AUDIO Parameters ***
24590    SoundMoveStart   = NoSound
24591  
24592    ; *** ENGINEERING Parameters ***
24593    RadarPriority = UNIT
24594    KindOf = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER
24595    
24596    Body = ActiveBody ModuleTag_02
24597      MaxHealth       = 1000.0
24598      InitialHealth   = 1000.0
24599    End
24600    Behavior = DozerAIUpdate ModuleTag_03
24601      RepairHealthPercentPerSecond = 2%    ; % of max health to repair each second
24602      BoredTime                    = 5000  ; in milliseconds
24603      BoredRange                   = 150   ; when bored, we look this far away to do something
24604    End
24605    Locomotor                    = SET_NORMAL BasicTankLocomotor
24606    Behavior = PhysicsBehavior ModuleTag_04
24607      Mass = 75.0
24608    End
24609  
24610    Behavior = DestroyDie ModuleTag_05
24611      ;nothing
24612    End
24613      
24614    Behavior = FlammableUpdate ModuleTag_21
24615      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
24616      AflameDamageAmount = 3       ; taking this much damage...
24617      AflameDamageDelay = 500       ; this often.
24618    End
24619  
24620    Geometry = BOX
24621    GeometryMajorRadius = 15.0
24622    GeometryMinorRadius = 10.0
24623    GeometryHeight = 15.0     
24624    GeometryIsSmall = Yes    
24625    Shadow = SHADOW_VOLUME
24626    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
24627  
24628  End
24629  
24630  ;------------------------------------------------------------------------------
24631  ;China Construction Dozer
24632  Object ChinaVehicleDozer
24633  
24634    ; *** ART Parameters ***
24635    SelectPortrait         = SNDozer_L
24636    ButtonImage            = SNDozer
24637    
24638    ;UpgradeCameo1 = NONE
24639    ;UpgradeCameo2 = NONE
24640    ;UpgradeCameo3 = NONE
24641    ;UpgradeCameo4 = NONE
24642    ;UpgradeCameo5 = NONE
24643  
24644    Draw                      = W3DTankDraw ModuleTag_01
24645  
24646      OkToChangeModelColor    = Yes
24647  
24648      DefaultConditionState
24649        Model                 = NVCONSTDOZ_A
24650        ParticleSysBone       = EXHAUST01 DozerSmokeLight
24651      End
24652      ConditionState          = MOVING
24653        ParticleSysBone       = EXHAUST01 DozerSmokeHeavy
24654      End
24655      ConditionState = FIRING_A MOVING PREATTACK_A 
24656        Model = NVCONSTDOZ_A
24657        Animation = NVCONSTDOZ_A.NVCONSTDOZ_A
24658        AnimationMode = ONCE
24659        ParticleSysBone = EXHAUST01 DozerSmokeHeavy
24660        ParticleSysBone = DIRTFX01 DozerDirtFall
24661      End
24662      AliasConditionState = ATTACKING FIRING_A MOVING
24663  
24664      ConditionState          = REALLYDAMAGED RUBBLE
24665        Model                 = NVCONSTDOZ_AD
24666      End
24667      ConditionState          = MOVING REALLYDAMAGED RUBBLE
24668        Model                 = NVCONSTDOZ_AD
24669        ParticleSysBone       = EXHAUST01 DozerSmokeHeavy
24670      End
24671      ConditionState = FIRING_A MOVING PREATTACK_A REALLYDAMAGED RUBBLE
24672        Model = NVCONSTDOZ_AD
24673        Animation = NVCONSTDOZ_AD.NVCONSTDOZ_AD
24674        AnimationMode = ONCE
24675        ParticleSysBone = EXHAUST01 DozerSmokeHeavy
24676        ParticleSysBone = DIRTFX01 DozerDirtFall
24677      End
24678      AliasConditionState = ATTACKING FIRING_A MOVING REALLYDAMAGED RUBBLE
24679      
24680      TrackMarks           = EXTnkTrack.tga
24681      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
24682    End
24683  
24684    ; ***DESIGN parameters ***
24685    DisplayName         = OBJECT:Dozer
24686    Side                = China
24687    EditorSorting       = VEHICLE
24688    TransportSlotCount  = 5                 ;how many "slots" we take in a transport (0 == not transportable)
24689    BuildCost           = 1000
24690    BuildTime           = 5.0 ;in seconds
24691    VisionRange         = 150
24692    ShroudClearingRange = 300
24693  
24694    WeaponSet
24695      Conditions = None 
24696      Weapon = PRIMARY None
24697    End
24698    WeaponSet
24699      Conditions = MINE_CLEARING_DETAIL 
24700      Weapon = PRIMARY DozerMineDisarmingWeapon
24701    End
24702  
24703    ArmorSet
24704      Conditions        = None
24705      Armor             = DozerArmor ;Special Explosion-Proof Armor
24706      DamageFX          = TankDamageFX
24707    End
24708    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
24709    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
24710    CommandSet          = ChinaDozerCommandSet
24711  
24712    ; *** AUDIO Parameters ***
24713    VoiceSelect         = DozerChinaVoiceSelect
24714    VoiceMove           = DozerChinaVoiceMove
24715    VoiceEnter          = DozerChinaVoiceMove
24716    VoiceTaskComplete   = DozerChinaVoiceBuildComplete
24717    SoundMoveStart      = DozerChinaMoveStart
24718    SoundMoveStartDamaged = DozerChinaMoveStart
24719  
24720    UnitSpecificSounds
24721      VoiceCreate       = DozerChinaVoiceCreate
24722      VoiceCrush        = DozerChinaVoiceCrush
24723      VoiceNoBuild      = DozerChinaVoiceBuildNot
24724      VoiceRepair       = DozerChinaVoiceRepair
24725      VoiceDisarm       = DozerChinaVoiceClearMine
24726      VoiceEnter        = DozerChinaVoiceMove
24727      VoiceBuildResponse = DozerChinaVoiceBuild
24728    End
24729   
24730  
24731  
24732    ; *** ENGINEERING Parameters ***
24733    RadarPriority       = UNIT
24734    KindOf              = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER 
24735    
24736    Body                = ActiveBody ModuleTag_02
24737      MaxHealth         = 250.0
24738      InitialHealth     = 250.0
24739    End
24740    Behavior = DozerAIUpdate ModuleTag_03
24741      RepairHealthPercentPerSecond = 2%    ; % of max health to repair each second
24742      BoredTime                    = 5000  ; in milliseconds
24743      BoredRange                   = 150   ; when bored, we look this far away to do something
24744      ; the only "enemies" that workers can acquire are mines, to be disarmed...
24745      AutoAcquireEnemiesWhenIdle   = Yes
24746    End
24747    Locomotor                    = SET_NORMAL ChinaVehicleDozerLocomotor
24748    Behavior            = PhysicsBehavior ModuleTag_04
24749      Mass              = 75.0
24750    End
24751  
24752    Behavior = StealthDetectorUpdate ModuleTag_05
24753      DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
24754      ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
24755      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
24756      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
24757      ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
24758    End
24759    
24760    Behavior                 = TransitionDamageFX ModuleTag_06
24761      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
24762      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
24763    End
24764    
24765    ; Catch fire, and explode death
24766    Behavior = SlowDeathBehavior ModuleTag_07
24767      DeathTypes = ALL -CRUSHED -SPLATTED
24768      ProbabilityModifier = 100
24769      DestructionDelay = 1500
24770      DestructionDelayVariance = 600
24771      FX  = INITIAL  FX_CrusaderCatchFire
24772      OCL = FINAL    OCL_ChinaDozerExplode  
24773      FX  = FINAL    FX_BattleMasterExplosionOneFinal
24774    End 
24775  
24776    Behavior = CreateCrateDie ModuleTag_09
24777      CrateData = SalvageCrateData
24778    End
24779      
24780    Behavior = FlammableUpdate ModuleTag_21
24781      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
24782      AflameDamageAmount = 3       ; taking this much damage...
24783      AflameDamageDelay = 500       ; this often.
24784    End
24785  
24786    Behavior               = FXListDie ModuleTag_22
24787      DeathTypes = NONE +CRUSHED +SPLATTED
24788      DeathFX         = FX_CarCrush
24789    End
24790  
24791    Behavior = DestroyDie ModuleTag_23
24792      DeathTypes = NONE +CRUSHED +SPLATTED
24793    End
24794  
24795    ;----------------------- Command Set Changes -----------------------
24796    Behavior = CommandSetUpgrade ModuleTag_commandup
24797      CommandSet = ChinaDozerCommandSetTech
24798      TriggeredBy   = Upgrade_ChinaDozerUpgrade
24799    End
24800    Behavior = CommandSetUpgrade ModuleTag_commandup2
24801      CommandSet = ChinaDozerCommandSet
24802      TriggeredBy   = Upgrade_ChinaDozerUpgradeDefault
24803    End
24804    ; releases the upgrade otherwise you cannot switch between them since they've already been purchased
24805    Behavior = ObjectCreationUpgrade ModuleTag_commandup3
24806      UpgradeObject = OCL_ChinaCommandsetupgraderelease
24807      TriggeredBy   = Upgrade_ChinaDozerUpgrade Upgrade_ChinaDozerUpgradeDefault
24808    End
24809    ;------------------------------------------------------------------
24810  
24811    Behavior = ProductionUpdate ModuleTag_24
24812      ;MaxQueueEntries = 1
24813    End
24814  
24815  
24816    Geometry            = BOX
24817    GeometryMajorRadius = 17.0;new radius to align mine sweeping position
24818    ;GeometryMajorRadius = 21.0;old radius
24819    GeometryMinorRadius = 10.0
24820    GeometryHeight      = 15.0     
24821    GeometryIsSmall     = NO
24822    Shadow              = SHADOW_VOLUME
24823    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
24824  
24825  End
24826  
24827  ;------------------------------------------------------------------------------
24828  Object ScorpionMissile
24829  
24830    ; *** ART Parameters ***
24831    Draw = W3DModelDraw ModuleTag_01
24832      OkToChangeModelColor = Yes
24833      ConditionState = NONE
24834        Model = UVScorpion_m
24835      End
24836    End
24837  
24838    ; ***DESIGN parameters ***
24839    DisplayName      = OBJECT:Missile
24840    EditorSorting   = SYSTEM
24841    VisionRange = 0.0  
24842    ArmorSet
24843      Conditions      = None
24844      Armor           = ProjectileArmor
24845      DamageFX        = None
24846    End
24847  
24848    ; *** ENGINEERING Parameters ***
24849    KindOf = PROJECTILE SMALL_MISSILE
24850    Body = ActiveBody ModuleTag_02
24851      MaxHealth       = 100.0
24852      InitialHealth   = 100.0
24853    End
24854  
24855  ; ---- begin Projectile death behaviors
24856    Behavior = InstantDeathBehavior DeathModuleTag_01
24857      DeathTypes = NONE +DETONATED
24858      ; we detonated normally.
24859      ; no FX, just quiet destroy ourselves
24860    End
24861    Behavior = InstantDeathBehavior DeathModuleTag_02
24862      DeathTypes = NONE +LASERED
24863      ; shot down by laser.
24864      FX         = FX_GenericMissileDisintegrate
24865      OCL        = OCL_GenericMissileDisintegrate
24866    End
24867    Behavior = InstantDeathBehavior DeathModuleTag_03
24868      DeathTypes = ALL -LASERED -DETONATED
24869      ; shot down by nonlaser.
24870      FX         = FX_GenericMissileDeath
24871    End
24872  ; ---- end Projectile death behaviors
24873      
24874    Behavior = PhysicsBehavior ModuleTag_06
24875      Mass = 1
24876    End
24877    Behavior = MissileAIUpdate ModuleTag_07
24878      TryToFollowTarget = Yes 
24879      FuelLifetime = 4000
24880      InitialVelocity = 150                ; in dist/sec
24881      IgnitionDelay = 0
24882      DistanceToTravelBeforeTurning = 30
24883      IgnitionFX = FX_JetMissileIgnition
24884    End
24885    Locomotor = SET_NORMAL ScorpionMissileLocomotor
24886  
24887  
24888    Behavior = WeaponBonusUpgrade ModuleTag_08
24889      TriggeredBy = Upgrade_GLAAPRockets
24890    End
24891  
24892    Geometry = Sphere
24893    GeometryIsSmall = Yes
24894    GeometryMajorRadius = 1.0
24895    
24896  
24897  End
24898  
24899  ;------------------------------------------------------------------------------
24900  Object RangerFlashBangGrenade
24901  
24902    ; *** ART Parameters ***
24903    Draw = W3DModelDraw ModuleTag_01
24904      OkToChangeModelColor = Yes
24905      ConditionState = NONE
24906        Model = NVMBuggy_m
24907      End
24908    End
24909  
24910    ; ***DESIGN parameters ***
24911    DisplayName      = OBJECT:FlashBangGrenade
24912    EditorSorting   = SYSTEM
24913    ArmorSet
24914      Armor = ProjectileArmor
24915    End
24916    VisionRange = 0.0  
24917  
24918    ; *** ENGINEERING Parameters ***
24919    KindOf = PROJECTILE
24920    Body = ActiveBody ModuleTag_02
24921      MaxHealth       = 100.0
24922      InitialHealth   = 100.0
24923    End
24924  
24925    Behavior = DestroyDie ModuleTag_03
24926      ;nothing
24927    End
24928      
24929    Behavior = PhysicsBehavior ModuleTag_04
24930      Mass = 1
24931    End
24932  
24933    Behavior = DumbProjectileBehavior ModuleTag_05
24934      ; To tweak a Bezier path, please see GS
24935      FirstHeight                     = 50  ; Height of Bezier control points above highest intervening terrain
24936      SecondHeight                    = 150
24937      FirstPercentIndent              = 30% ; Percentage of shot distance control points are placed
24938      SecondPercentIndent             = 70%
24939      GarrisonHitKillRequiredKindOf   = INFANTRY
24940      GarrisonHitKillForbiddenKindOf  = NONE
24941      GarrisonHitKillCount            = 10  ; ensure that a single grenade clears out all garrisoned buildings.
24942      GarrisonHitKillFX               = FX_FlashBangGarrisonBuildingHit
24943      FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
24944    End
24945  
24946    Geometry = Sphere
24947    GeometryIsSmall = Yes
24948    GeometryMajorRadius = 1.0
24949  
24950  End
24951  
24952  ;------------------------------------------------------------------------------
24953  Object ScorpionTankShell
24954  
24955    ; *** ART Parameters ***
24956    Draw = W3DModelDraw ModuleTag_01
24957      ConditionState = NONE
24958        Model = AVTankShel
24959      End
24960    End
24961  
24962    ; ***DESIGN parameters ***
24963    DisplayName       = OBJECT:TankShell
24964    EditorSorting     = SYSTEM
24965    ArmorSet
24966      Armor = ProjectileArmor
24967    End
24968    VisionRange = 0.0
24969  
24970    ; *** ENGINEERING Parameters ***
24971    KindOf = PROJECTILE
24972    Body = ActiveBody ModuleTag_02
24973      MaxHealth       = 100.0
24974      InitialHealth   = 100.0
24975    End
24976  
24977    Behavior = DestroyDie ModuleTag_03
24978      ;nothing
24979    End
24980  
24981    Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
24982      DeathWeapon   = ToxinShellWeapon
24983      StartsActive  = No                      ; turned on by upgrade
24984      TriggeredBy   = Upgrade_GLAToxinShells    
24985      ConflictsWith = Upgrade_GLAAnthraxBeta      
24986    End
24987  
24988    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
24989      DeathWeapon   = ToxinShellWeaponUpgraded
24990      StartsActive  = No                      ; turned on by upgrade
24991      TriggeredBy   = Upgrade_GLAToxinShells Upgrade_GLAAnthraxBeta         
24992      RequiresAllTriggers = Yes ;TriggeredBy is an AND, not an OR like it normally is
24993    End
24994  
24995    Behavior = DumbProjectileBehavior ModuleTag_06
24996      DetonateCallsKill = Yes
24997      ; To tweak a Bezier path, please see GS
24998      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
24999      SecondHeight = 10
25000      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
25001      SecondPercentIndent = 90%
25002      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
25003    End
25004  
25005    Behavior = PhysicsBehavior ModuleTag_07
25006      Mass = 0.01 ; can't be zero, but we want it tiny so that it travels nearly straight
25007    End
25008  
25009  ; The Toxin explosions don't want to double up on particles, so only play this effect if we don't have Toxin
25010    Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
25011      DeathWeapon   = ScoprionTankGunFXWeapon
25012      StartsActive  = Yes
25013      ConflictsWith = Upgrade_GLAToxinShells      
25014    End
25015  
25016    Geometry = Sphere
25017    GeometryIsSmall = Yes
25018    GeometryMajorRadius = 1.0
25019  
25020  End
25021  
25022  ;------------------------------------------------------------------------------
25023  Object MarauderTankShell
25024  
25025    ; *** ART Parameters ***
25026    Draw = W3DModelDraw ModuleTag_01
25027      ConditionState = NONE
25028        Model = AVTankShel
25029      End
25030    End
25031  
25032    ; ***DESIGN parameters ***
25033    DisplayName       = OBJECT:TankShell
25034    EditorSorting     = SYSTEM
25035    ArmorSet
25036      Armor = ProjectileArmor
25037    End
25038    VisionRange = 0.0
25039  
25040    ; *** ENGINEERING Parameters ***
25041    KindOf = PROJECTILE
25042    Body = ActiveBody ModuleTag_02
25043      MaxHealth       = 100.0
25044      InitialHealth   = 100.0
25045    End
25046  
25047    Behavior = DestroyDie ModuleTag_03
25048      ;nothing
25049    End
25050  
25051    Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
25052      DeathWeapon   = ToxinShellWeapon
25053      StartsActive  = No                      ; turned on by upgrade
25054      TriggeredBy   = Upgrade_GLAToxinShells          
25055      ConflictsWith = Upgrade_GLAAnthraxBeta      
25056    End
25057  
25058    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
25059      DeathWeapon   = ToxinShellWeaponUpgraded
25060      StartsActive  = No                      ; turned on by upgrade
25061      TriggeredBy   = Upgrade_GLAToxinShells Upgrade_GLAAnthraxBeta         
25062      RequiresAllTriggers = Yes ;TriggeredBy is an AND, not an OR like it normally is
25063    End
25064  
25065    Behavior = DumbProjectileBehavior ModuleTag_06
25066      DetonateCallsKill = Yes
25067      ; To tweak a Bezier path, please see GS
25068      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
25069      SecondHeight = 10
25070      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
25071      SecondPercentIndent = 90%
25072      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
25073    End
25074  
25075   Behavior = PhysicsBehavior ModuleTag_07
25076      Mass = 0.01 ; can't be zero, but we want it tiny so that it travels nearly straight
25077    End
25078  
25079    Geometry = Sphere
25080    GeometryIsSmall = Yes
25081    GeometryMajorRadius = 1.0
25082  
25083  End
25084  
25085  ;------------------------------------------------------------------------------
25086  Object GenericTankShell
25087  
25088    ; *** ART Parameters ***
25089    Draw = W3DModelDraw ModuleTag_01
25090      ConditionState = NONE
25091        Model = AVTankShel
25092      End
25093    End
25094  
25095    ; ***DESIGN parameters ***
25096    DisplayName       = OBJECT:TankShell
25097    EditorSorting     = SYSTEM
25098    ArmorSet
25099      Armor = ProjectileArmor
25100    End
25101    VisionRange = 0.0  
25102  
25103    ; *** ENGINEERING Parameters ***
25104    KindOf = PROJECTILE
25105    Body = ActiveBody ModuleTag_02
25106      MaxHealth       = 100.0
25107      InitialHealth   = 100.0
25108    End
25109  
25110    Behavior = DestroyDie ModuleTag_03
25111      ;nothing
25112    End
25113      
25114    Behavior = DumbProjectileBehavior ModuleTag_04
25115      ; To tweak a Bezier path, please see GS
25116      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
25117      SecondHeight = 10
25118      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
25119      SecondPercentIndent = 90%
25120      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
25121    End
25122  
25123    Behavior = PhysicsBehavior ModuleTag_05
25124      Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
25125    End
25126  
25127    Geometry = Sphere
25128    GeometryIsSmall = Yes
25129    GeometryMajorRadius = 1.0
25130  
25131  End
25132  
25133  ;------------------------------------------------------------------------------
25134  Object BattleMasterTankShell
25135  
25136    ; *** ART Parameters ***
25137    Draw = W3DModelDraw ModuleTag_01
25138      ConditionState = NONE
25139        Model = AVTankShel
25140      End
25141    End
25142  
25143    ; ***DESIGN parameters ***
25144    DisplayName       = OBJECT:TankShell
25145    EditorSorting     = SYSTEM
25146    ArmorSet
25147      Armor = ProjectileArmor
25148    End
25149    VisionRange = 0.0  
25150  
25151    ; *** ENGINEERING Parameters ***
25152    KindOf = PROJECTILE
25153    Body = ActiveBody ModuleTag_02
25154      MaxHealth       = 100.0
25155      InitialHealth   = 100.0
25156    End
25157  
25158    Behavior = DestroyDie ModuleTag_03
25159      ;nothing
25160    End
25161      
25162    Behavior = DumbProjectileBehavior ModuleTag_04
25163      ; To tweak a Bezier path, please see GS
25164      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
25165      SecondHeight = 10
25166      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
25167      SecondPercentIndent = 90%
25168      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
25169    End
25170  
25171    Behavior = PhysicsBehavior ModuleTag_05
25172      Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
25173    End
25174  
25175    Behavior = WeaponBonusUpgrade ModuleTag_06 
25176      TriggeredBy = Upgrade_ChinaUraniumShells
25177    End
25178  
25179    Geometry = Sphere
25180    GeometryIsSmall = Yes
25181    GeometryMajorRadius = 1.0
25182  
25183  End
25184  
25185  ;------------------------------------------------------------------------------
25186  Object OverlordTankShell
25187  
25188    ; *** ART Parameters ***
25189    Draw = W3DModelDraw ModuleTag_01
25190      ConditionState = NONE
25191        Model = AVTankShel
25192      End
25193    End
25194  
25195    ; ***DESIGN parameters ***
25196    DisplayName       = OBJECT:TankShell
25197    EditorSorting     = SYSTEM
25198    ArmorSet
25199      Armor = ProjectileArmor
25200    End
25201    VisionRange = 0.0  
25202  
25203    ; *** ENGINEERING Parameters ***
25204    KindOf = PROJECTILE
25205    Body = ActiveBody ModuleTag_02
25206      MaxHealth       = 100.0
25207      InitialHealth   = 100.0
25208    End
25209  
25210    Behavior = DestroyDie ModuleTag_03
25211      ;nothing
25212    End
25213      
25214    Behavior = DumbProjectileBehavior ModuleTag_04
25215      ; To tweak a Bezier path, please see GS
25216      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
25217      SecondHeight = 10
25218      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
25219      SecondPercentIndent = 90%
25220      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
25221    End
25222  
25223    Behavior = PhysicsBehavior ModuleTag_05
25224      Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
25225    End
25226  
25227    Behavior = WeaponBonusUpgrade ModuleTag_06 
25228      TriggeredBy = Upgrade_ChinaUraniumShells
25229    End
25230  
25231    Geometry = Sphere
25232    GeometryIsSmall = Yes
25233    GeometryMajorRadius = 1.0
25234  
25235  End
25236  
25237  
25238  
25239  
25240  ;------------------------------------------------------------------------------
25241  Object NukeCannonShell
25242  
25243    ; *** ART Parameters ***
25244    Draw = W3DModelDraw ModuleTag_01
25245      ConditionState = NONE
25246        Model = AVTankShel
25247      End
25248    End
25249  
25250    ; ***DESIGN parameters ***
25251    DisplayName       = OBJECT:TankShell
25252    EditorSorting     = SYSTEM
25253    ArmorSet
25254      Armor = ProjectileArmor
25255    End
25256    VisionRange = 0.0  
25257  
25258  
25259    ; *** AUDIO Parameters ***
25260    SoundAmbient = NukeCannonIncomingWhistle
25261  
25262    ; *** ENGINEERING Parameters ***
25263    KindOf = PROJECTILE
25264    Body = ActiveBody ModuleTag_02
25265      MaxHealth       = 100.0
25266      InitialHealth   = 100.0
25267    End
25268  
25269    Behavior = DestroyDie ModuleTag_03
25270      ;nothing
25271    End
25272      
25273    Behavior = DumbProjectileBehavior ModuleTag_04
25274      ; To tweak a Bezier path, please see GS
25275      FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
25276      SecondHeight = 150
25277      FirstPercentIndent = 30% ; Percentage of shot distance control points are placed
25278      SecondPercentIndent = 70%
25279      FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
25280    End
25281  
25282    Behavior = PhysicsBehavior ModuleTag_05
25283      Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
25284    End
25285  
25286    Geometry = Sphere
25287    GeometryIsSmall = Yes
25288    GeometryMajorRadius = 1.0
25289  
25290  End
25291  
25292  ;------------------------------------------------------------------------------
25293  Object InfernoTankShell
25294  
25295    ; *** ART Parameters ***
25296    Draw = W3DModelDraw ModuleTag_01
25297      ConditionState        = NONE
25298        Model               = AVTankShel
25299        ParticleSysBone     = None InfernoTrail
25300      End
25301    End
25302  
25303    ; *** AUDIO Parameters ***
25304    SoundAmbient = InfernoCannonIncomingWhistle
25305  
25306    ; ***DESIGN parameters ***
25307    DisplayName       = OBJECT:TankShell
25308    EditorSorting     = SYSTEM
25309    ArmorSet
25310      Armor = ProjectileArmor
25311    End
25312    VisionRange = 0.0  
25313  
25314    ; *** ENGINEERING Parameters ***
25315    KindOf = PROJECTILE
25316    Body = ActiveBody ModuleTag_02
25317      MaxHealth       = 100.0
25318      InitialHealth   = 100.0
25319    End
25320  
25321    Behavior = DestroyDie ModuleTag_03
25322      ;nothing
25323    End
25324      
25325    Behavior = DumbProjectileBehavior ModuleTag_09
25326      DetonateCallsKill = Yes
25327      ; To tweak a Bezier path, please see GS
25328      FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
25329      SecondHeight = 150
25330      FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
25331      SecondPercentIndent = 90%
25332      FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
25333    End
25334  
25335    Behavior = PhysicsBehavior ModuleTag_05
25336      Mass = 10
25337    End
25338  
25339    Behavior = HeightDieUpdate ModuleTag_06
25340      TargetHeight = 1.0
25341      TargetHeightIncludesStructures = Yes
25342      OnlyWhenMovingDown = Yes
25343      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
25344    End
25345  
25346    Behavior = FireWeaponWhenDeadBehavior ModuleTag_07
25347      DeathWeapon   = SmallFireFieldCreationWeapon
25348      StartsActive  = Yes
25349    End
25350  
25351    Geometry = Sphere
25352    GeometryIsSmall = Yes
25353    GeometryMajorRadius = 1.0
25354  
25355  End
25356  
25357  
25358  ;------------------------------------------------------------------------------
25359  Object InfernoTankShellUpgraded
25360  
25361    ; *** ART Parameters ***
25362    Draw = W3DModelDraw ModuleTag_01
25363      ConditionState        = NONE
25364        Model               = AVTankShel
25365        ParticleSysBone     = None InfernoTrailUpgraded
25366      End
25367    End
25368  
25369    ; *** AUDIO Parameters ***
25370    SoundAmbient = InfernoCannonIncomingWhistle
25371  
25372    ; ***DESIGN parameters ***
25373    DisplayName       = OBJECT:TankShell
25374    EditorSorting     = SYSTEM
25375    ArmorSet
25376      Armor = ProjectileArmor
25377    End
25378    VisionRange = 0.0  
25379  
25380    ; *** ENGINEERING Parameters ***
25381    KindOf = PROJECTILE
25382    Body = ActiveBody ModuleTag_02
25383      MaxHealth       = 100.0
25384      InitialHealth   = 100.0
25385    End
25386  
25387    Behavior = DestroyDie ModuleTag_03
25388      ;nothing
25389    End
25390      
25391    Behavior = DumbProjectileBehavior ModuleTag_09
25392      DetonateCallsKill = Yes
25393      ; To tweak a Bezier path, please see GS
25394      FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
25395      SecondHeight = 150
25396      FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
25397      SecondPercentIndent = 90%
25398      FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
25399    End
25400  
25401    Behavior = PhysicsBehavior ModuleTag_05
25402      Mass = 10
25403    End
25404  
25405    Behavior = HeightDieUpdate ModuleTag_06
25406      TargetHeight = 1.0
25407      TargetHeightIncludesStructures = Yes
25408      OnlyWhenMovingDown = Yes
25409      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
25410    End
25411  
25412    Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
25413      DeathWeapon   = SmallFireFieldUpgradedCreationWeapon
25414      StartsActive  = Yes
25415    End
25416  
25417   
25418    Geometry = Sphere
25419    GeometryIsSmall = Yes
25420    GeometryMajorRadius = 1.0
25421  
25422  End
25423  
25424  ;------------------------------------------------------------------------------
25425  Object DeadTankHulk
25426  
25427    ; *** ART Parameters ***
25428    Draw = W3DModelDraw ModuleTag_01
25429      DefaultConditionState
25430        Model = GXMammoth_CH
25431      End
25432    End
25433  
25434    ; ***DESIGN parameters ***
25435    EditorSorting   = DEBRIS
25436  
25437    ; *** ENGINEERING Parameters ***
25438    KindOf =  NO_COLLIDE HULK
25439  
25440    Behavior = PhysicsBehavior ModuleTag_03
25441      Mass = 100.0
25442      AllowBouncing = Yes
25443      KillWhenRestingOnGround = Yes
25444    End
25445    Behavior = LifetimeUpdate ModuleTag_04
25446      MinLifetime = 1500   ; min lifetime in msec
25447      MaxLifetime = 1600   ; max lifetime in msec
25448    End
25449  
25450    Behavior = SlowDeathBehavior ModuleTag_05
25451      SinkDelay         = 1500
25452      SinkRate          = 2     ; in Dist/Sec
25453      DestructionDelay  = 8000
25454    End
25455  
25456  End
25457  
25458  ;------------------------------------------------------------------------------
25459  Object InfernoCannonHulk
25460  
25461    ; *** ART Parameters ***
25462    Draw = W3DModelDraw ModuleTag_01
25463      DefaultConditionState
25464        Model = NVInferno_D1
25465      End
25466    End
25467  
25468    ; ***DESIGN parameters ***
25469    EditorSorting   = DEBRIS
25470  
25471    ; *** ENGINEERING Parameters ***
25472    KindOf =  NO_COLLIDE HULK
25473  
25474    Behavior = PhysicsBehavior ModuleTag_03
25475      Mass = 100.0
25476      AllowBouncing = Yes
25477      KillWhenRestingOnGround = Yes
25478    End
25479    Behavior = LifetimeUpdate ModuleTag_04
25480      MinLifetime = 1500   ; min lifetime in msec
25481      MaxLifetime = 1600   ; max lifetime in msec
25482    End
25483  
25484    Behavior = SlowDeathBehavior ModuleTag_05
25485      SinkDelay         = 1500
25486      SinkRate          = 2     ; in Dist/Sec
25487      DestructionDelay  = 8000
25488    End
25489  
25490  End
25491  
25492  ;------------------------------------------------------------------------------
25493  Object DeadChinaSupplyTruckHulk
25494  
25495    ; *** ART Parameters ***
25496    Draw = W3DModelDraw ModuleTag_01
25497      DefaultConditionState
25498        Model = NVSSupplyTK_D1
25499      End
25500    End
25501  
25502    ; ***DESIGN parameters ***
25503    EditorSorting   = DEBRIS
25504  
25505    ; *** ENGINEERING Parameters ***
25506    KindOf =  NO_COLLIDE HULK
25507  
25508    Behavior = PhysicsBehavior ModuleTag_03
25509      Mass = 100.0
25510      AllowBouncing = Yes
25511      KillWhenRestingOnGround = Yes
25512    End
25513    Behavior = LifetimeUpdate ModuleTag_04
25514      MinLifetime = 1500   ; min lifetime in msec
25515      MaxLifetime = 1600   ; max lifetime in msec
25516    End
25517  
25518    Behavior = SlowDeathBehavior ModuleTag_05
25519      SinkDelay         = 1500
25520      SinkRate          = 2     ; in Dist/Sec
25521      DestructionDelay  = 8000
25522    End
25523  
25524  End
25525  
25526  ;------------------------------------------------------------------------------
25527  Object DeadChinaGattlingTankHulk
25528  
25529    ; *** ART Parameters ***
25530    Draw = W3DModelDraw ModuleTag_01
25531      DefaultConditionState
25532        Model = NVGattTank_D1
25533      End
25534    End
25535  
25536    ; ***DESIGN parameters ***
25537    EditorSorting   = DEBRIS
25538  
25539    ; *** ENGINEERING Parameters ***
25540    KindOf =  NO_COLLIDE HULK
25541  
25542    Behavior = PhysicsBehavior ModuleTag_03
25543      Mass = 100.0
25544      AllowBouncing = Yes
25545      KillWhenRestingOnGround = Yes
25546    End
25547    Behavior = LifetimeUpdate ModuleTag_04
25548      MinLifetime = 1500   ; min lifetime in msec
25549      MaxLifetime = 1600   ; max lifetime in msec
25550    End
25551  
25552    Behavior = SlowDeathBehavior ModuleTag_05
25553      SinkDelay                 = 1500
25554      SinkDelayVariance         = 1500
25555      SinkRate                  = 2     ; in Dist/Sec
25556      DestructionDelay          = 12000
25557      DestructionDelayVariance  = 4000
25558    End
25559  
25560  End
25561  
25562  ;------------------------------------------------------------------------------
25563  Object AmericaVehicleAmbulanceDeadHull
25564  
25565    ; *** ART Parameters ***
25566    Draw = W3DModelDraw ModuleTag_01
25567      ConditionState = NONE
25568        Model = AVAmbulance_D1
25569      End
25570    End
25571  
25572    ; ***DESIGN parameters ***
25573    EditorSorting   = DEBRIS
25574  
25575    ; *** ENGINEERING Parameters ***
25576    KindOf =  NO_COLLIDE HULK
25577  
25578    Behavior = PhysicsBehavior ModuleTag_03
25579      Mass = 100.0
25580      AllowBouncing = Yes
25581      KillWhenRestingOnGround = Yes
25582    End
25583    Behavior = LifetimeUpdate ModuleTag_04
25584      MinLifetime = 1500   ; min lifetime in msec
25585      MaxLifetime = 1600   ; max lifetime in msec
25586    End
25587  
25588    Behavior = SlowDeathBehavior ModuleTag_05
25589      SinkDelay                 = 1500
25590      SinkDelayVariance         = 1500
25591      SinkRate                  = 2     ; in Dist/Sec
25592      DestructionDelay          = 12000
25593      DestructionDelayVariance  = 4000
25594    End
25595    
25596  
25597  End
25598  
25599  ;------------------------------------------------------------------------------
25600  Object DeadSCUDLauncherHulk
25601  
25602    ; *** ART Parameters ***
25603    Draw = W3DModelDraw ModuleTag_01
25604      DefaultConditionState
25605        Model = UVScudLchr_d1
25606      End
25607    End
25608  
25609    ; ***DESIGN parameters ***
25610    EditorSorting   = DEBRIS
25611  
25612    ; *** ENGINEERING Parameters ***
25613    KindOf =  NO_COLLIDE HULK
25614  
25615    Behavior = PhysicsBehavior ModuleTag_03
25616      Mass = 100.0
25617      AllowBouncing = Yes
25618      KillWhenRestingOnGround = Yes
25619    End
25620    Behavior = LifetimeUpdate ModuleTag_04
25621      MinLifetime = 1500   ; min lifetime in msec
25622      MaxLifetime = 1600   ; max lifetime in msec
25623    End
25624  
25625    Behavior = SlowDeathBehavior ModuleTag_05
25626      SinkDelay         = 1500
25627      SinkRate          = 2     ; in Dist/Sec
25628      DestructionDelay  = 8000
25629    End
25630  
25631  End
25632  
25633  ;------------------------------------------------------------------------------
25634  Object DeadToxinTractorHulk
25635  
25636    ; *** ART Parameters ***
25637    Draw = W3DModelDraw ModuleTag_01
25638      DefaultConditionState
25639        Model = UVToxinTrk_d1
25640      End
25641    End
25642  
25643    ; ***DESIGN parameters ***
25644    EditorSorting   = DEBRIS
25645  
25646    ; *** ENGINEERING Parameters ***
25647    KindOf =  NO_COLLIDE HULK
25648  
25649    Behavior = PhysicsBehavior ModuleTag_03
25650      Mass = 100.0
25651      AllowBouncing = Yes
25652      KillWhenRestingOnGround = Yes
25653    End
25654    Behavior = LifetimeUpdate ModuleTag_04
25655      MinLifetime = 1500   ; min lifetime in msec
25656      MaxLifetime = 1600   ; max lifetime in msec
25657    End
25658  
25659    Behavior = SlowDeathBehavior ModuleTag_05
25660      SinkDelay         = 1500
25661      SinkRate          = 2    ; in Dist/Sec
25662      DestructionDelay  = 16000
25663    End
25664  
25665  End
25666  
25667  ;------------------------------------------------------------------------------
25668  Object DeadQuadCannonHulk
25669  
25670    ; *** ART Parameters ***
25671    Draw = W3DModelDraw ModuleTag_01
25672      DefaultConditionState
25673        Model = UVQuadCann_d1
25674      End
25675    End
25676  
25677    ; ***DESIGN parameters ***
25678    EditorSorting   = DEBRIS
25679  
25680    ; *** ENGINEERING Parameters ***
25681    KindOf =  NO_COLLIDE HULK
25682  
25683    Behavior = PhysicsBehavior ModuleTag_03
25684      Mass = 100.0
25685      AllowBouncing = Yes
25686      KillWhenRestingOnGround = Yes
25687    End
25688    Behavior = LifetimeUpdate ModuleTag_04
25689      MinLifetime = 1500   ; min lifetime in msec
25690      MaxLifetime = 1600   ; max lifetime in msec
25691    End
25692  
25693    Behavior = SlowDeathBehavior ModuleTag_05
25694      SinkDelay         = 1500
25695      SinkRate          = 2    ; in Dist/Sec
25696      DestructionDelay  = 16000
25697    End
25698  
25699  End
25700  
25701  ;------------------------------------------------------------------------------
25702  Object DeadBombTruckHulk
25703  
25704    ; *** ART Parameters ***
25705    Draw = W3DModelDraw ModuleTag_01
25706      DefaultConditionState
25707        Model = UVBmbTruk_d1
25708      End
25709    End
25710  
25711    ; ***DESIGN parameters ***
25712    EditorSorting   = DEBRIS
25713  
25714    ; *** ENGINEERING Parameters ***
25715    KindOf =  NO_COLLIDE HULK
25716  
25717    Behavior = PhysicsBehavior ModuleTag_03
25718      Mass = 100.0
25719      AllowBouncing = Yes
25720      KillWhenRestingOnGround = Yes
25721    End
25722    Behavior = LifetimeUpdate ModuleTag_04
25723      MinLifetime = 1500   ; min lifetime in msec
25724      MaxLifetime = 1600   ; max lifetime in msec
25725    End
25726  
25727    Behavior = SlowDeathBehavior ModuleTag_05
25728      SinkDelay         = 1500
25729      SinkRate          = 2    ; in Dist/Sec
25730      DestructionDelay  = 16000
25731    End
25732  
25733  End
25734  
25735  ;------------------------------------------------------------------------------
25736  Object DeadTechnicalVanHulk
25737  
25738    ; *** ART Parameters ***
25739    Draw = W3DModelDraw ModuleTag_01
25740      DefaultConditionState
25741        Model = UVTECHVAN_d1
25742      End
25743    End
25744  
25745    ; ***DESIGN parameters ***
25746    EditorSorting   = DEBRIS
25747  
25748    ; *** ENGINEERING Parameters ***
25749    KindOf =  NO_COLLIDE HULK
25750  
25751    Behavior = PhysicsBehavior ModuleTag_03
25752      Mass = 100.0
25753      AllowBouncing = Yes
25754      KillWhenRestingOnGround = Yes
25755    End
25756    Behavior = LifetimeUpdate ModuleTag_04
25757      MinLifetime = 1500   ; min lifetime in msec
25758      MaxLifetime = 1600   ; max lifetime in msec
25759    End
25760  
25761    Behavior = SlowDeathBehavior ModuleTag_05
25762      SinkDelay         = 1500
25763      SinkRate          = 2    ; in Dist/Sec
25764      DestructionDelay  = 16000
25765    End
25766  
25767  End
25768  
25769  ;------------------------------------------------------------------------------
25770  Object DeadTechnicalJeepHulk
25771  
25772    ; *** ART Parameters ***
25773    Draw = W3DModelDraw ModuleTag_01
25774      DefaultConditionState
25775        Model = UVTECHJEEP_d1
25776      End
25777    End
25778  
25779    ; ***DESIGN parameters ***
25780    EditorSorting   = DEBRIS
25781  
25782    ; *** ENGINEERING Parameters ***
25783    KindOf =  NO_COLLIDE HULK
25784  
25785    Behavior = PhysicsBehavior ModuleTag_03
25786      Mass = 100.0
25787      AllowBouncing = Yes
25788      KillWhenRestingOnGround = Yes
25789    End
25790    Behavior = LifetimeUpdate ModuleTag_04
25791      MinLifetime = 1500   ; min lifetime in msec
25792      MaxLifetime = 1600   ; max lifetime in msec
25793    End
25794  
25795    Behavior = SlowDeathBehavior ModuleTag_05
25796      SinkDelay         = 1500
25797      SinkRate          = 2    ; in Dist/Sec
25798      DestructionDelay  = 16000
25799    End
25800  
25801  End
25802  
25803  ;------------------------------------------------------------------------------
25804  Object DeadTechnicalTruckHulk
25805  
25806    ; *** ART Parameters ***
25807    Draw = W3DModelDraw ModuleTag_01
25808      DefaultConditionState
25809        Model = UVTECHTRCK_d1
25810      End
25811    End
25812  
25813    ; ***DESIGN parameters ***
25814    EditorSorting   = DEBRIS
25815  
25816    ; *** ENGINEERING Parameters ***
25817    KindOf =  NO_COLLIDE HULK
25818  
25819    Behavior = PhysicsBehavior ModuleTag_03
25820      Mass = 100.0
25821      AllowBouncing = Yes
25822      KillWhenRestingOnGround = Yes
25823    End
25824    Behavior = LifetimeUpdate ModuleTag_04
25825      MinLifetime = 1500   ; min lifetime in msec
25826      MaxLifetime = 1600   ; max lifetime in msec
25827    End
25828  
25829    Behavior = SlowDeathBehavior ModuleTag_05
25830      SinkDelay         = 1500
25831      SinkRate          = 2    ; in Dist/Sec
25832      DestructionDelay  = 16000
25833    End
25834  
25835  End
25836  
25837  ;------------------------------------------------------------------------------
25838  Object DeadRocketBuggyHulk
25839  
25840    ; *** ART Parameters ***
25841    Draw = W3DModelDraw ModuleTag_01
25842      DefaultConditionState
25843        Model = UVRockBug_D1
25844      End
25845    End
25846  
25847    ; ***DESIGN parameters ***
25848    EditorSorting   = DEBRIS
25849  
25850    ; *** ENGINEERING Parameters ***
25851    KindOf =  NO_COLLIDE HULK
25852  
25853    Behavior = PhysicsBehavior ModuleTag_03
25854      Mass = 100.0
25855      AllowBouncing = Yes
25856      KillWhenRestingOnGround = Yes
25857    End
25858    Behavior = LifetimeUpdate ModuleTag_04
25859      MinLifetime = 1500   ; min lifetime in msec
25860      MaxLifetime = 1600   ; max lifetime in msec
25861    End
25862  
25863    Behavior = SlowDeathBehavior ModuleTag_05
25864      SinkDelay         = 1500
25865      SinkRate          = 2    ; in Dist/Sec
25866      DestructionDelay  = 16000
25867    End
25868  
25869  End
25870  
25871  ;------------------------------------------------------------------------------
25872  ; POW Trucks are cut. sorry. (srj)
25873  ;Object DeadGLAPOWTruckHulk
25874  ;  ; *** ART Parameters ***
25875  ;  Draw = W3DModelDraw ModuleTag_01
25876  ;    DefaultConditionState
25877  ;      Model = UVPOWTruck_d1
25878  ;    End
25879  ;  End
25880  ;  ; ***DESIGN parameters ***
25881  ;  EditorSorting   = DEBRIS
25882  ;  ; *** ENGINEERING Parameters ***
25883  ;  KindOf =  NO_COLLIDE HULK
25884  ;  Behavior = PhysicsBehavior ModuleTag_03
25885  ;    Mass = 100.0
25886  ;    AllowBouncing = Yes
25887  ;    KillWhenRestingOnGround = Yes
25888  ;  End
25889  ;  Behavior = LifetimeUpdate ModuleTag_04
25890  ;    MinLifetime = 1500   ; min lifetime in msec
25891  ;    MaxLifetime = 1600   ; max lifetime in msec
25892  ;  End
25893  ;  Behavior = SlowDeathBehavior ModuleTag_05
25894  ;    SinkDelay         = 1500
25895  ;    SinkRate          = 2    ; in Dist/Sec
25896  ;    DestructionDelay  = 16000
25897  ;  End
25898  ;End
25899  
25900  ;---------------------------------------------------------------------------
25901  ; POW Trucks are cut. sorry. (srj)
25902  ;Object DeadChinaPOWTruckHulk
25903  ;  ; *** ART Parameters ***
25904  ;  Draw = W3DModelDraw ModuleTag_01
25905  ;    ConditionState = NONE
25906  ;      Model = NVPOWTrck_d1
25907  ;    End
25908  ;  End
25909  ;
25910  ;  ; ***DESIGN parameters ***
25911  ;  EditorSorting   = DEBRIS
25912  ;  ; *** ENGINEERING Parameters ***
25913  ;  KindOf =  NO_COLLIDE HULK
25914  ;  Behavior = PhysicsBehavior ModuleTag_03
25915  ;    Mass = 100.0
25916  ;    AllowBouncing = Yes
25917  ;    KillWhenRestingOnGround = Yes
25918  ;  End
25919  ;  Behavior = LifetimeUpdate ModuleTag_04
25920  ;    MinLifetime = 1500   ; min lifetime in msec
25921  ;    MaxLifetime = 1600   ; max lifetime in msec
25922  ;  End
25923  ;  Behavior = SlowDeathBehavior ModuleTag_05
25924  ;    SinkDelay         = 1500
25925  ;    SinkRate          = 2    ; in Dist/Sec
25926  ;    DestructionDelay  = 16000
25927  ;  End
25928  ;End
25929  
25930  ;---------------------------------------------------------------------------
25931  Object DeadCrusaderHulk
25932  
25933    ; *** ART Parameters ***
25934    Draw = W3DModelDraw ModuleTag_01
25935      ConditionState = NONE
25936        Model = AVLeopard_D1
25937      End
25938    End
25939  
25940    ; ***DESIGN parameters ***
25941    EditorSorting   = DEBRIS
25942  
25943    ; *** ENGINEERING Parameters ***
25944    KindOf =  NO_COLLIDE HULK
25945  
25946    Behavior = PhysicsBehavior ModuleTag_03
25947      Mass = 100.0
25948      AllowBouncing = Yes
25949      KillWhenRestingOnGround = Yes
25950    End
25951    Behavior = LifetimeUpdate ModuleTag_04
25952      MinLifetime = 1500   ; min lifetime in msec
25953      MaxLifetime = 1600   ; max lifetime in msec
25954    End
25955  
25956    Behavior = SlowDeathBehavior ModuleTag_05
25957      SinkDelay         = 1500
25958      SinkRate          = 2     ; in Dist/Sec
25959      DestructionDelay  = 8000
25960    End
25961  End
25962  
25963  ;------------------------------------------------------------------------------
25964  Object DeadPaladinHulk
25965  
25966    ; *** ART Parameters ***
25967    Draw = W3DModelDraw ModuleTag_01
25968      ConditionState = NONE
25969        Model = AVPaladin_D1
25970      End
25971    End
25972  
25973    ; ***DESIGN parameters ***
25974    EditorSorting   = DEBRIS
25975  
25976    ; *** ENGINEERING Parameters ***
25977    KindOf =  NO_COLLIDE HULK
25978  
25979    Behavior = PhysicsBehavior ModuleTag_03
25980      Mass = 100.0
25981      AllowBouncing = Yes
25982      KillWhenRestingOnGround = Yes
25983    End
25984    Behavior = LifetimeUpdate ModuleTag_04
25985      MinLifetime = 1500   ; min lifetime in msec
25986      MaxLifetime = 1600   ; max lifetime in msec
25987    End
25988  
25989    Behavior = SlowDeathBehavior ModuleTag_05
25990      SinkDelay         = 1500
25991      SinkRate          = 2     ; in Dist/Sec
25992      DestructionDelay  = 8000
25993    End
25994  End
25995  
25996  ;------------------------------------------------------------------------------
25997  Object DeadMarauderHulk
25998  
25999    ; *** ART Parameters ***
26000    Draw = W3DModelDraw ModuleTag_01
26001      ConditionState = NONE
26002        Model = UVMarauder_D1
26003      End
26004    End
26005  
26006    ; ***DESIGN parameters ***
26007    EditorSorting   = DEBRIS
26008  
26009    ; *** ENGINEERING Parameters ***
26010    KindOf =  NO_COLLIDE HULK
26011  
26012    Behavior = PhysicsBehavior ModuleTag_03
26013      Mass = 100.0
26014      AllowBouncing = Yes
26015      KillWhenRestingOnGround = Yes
26016    End
26017    Behavior = LifetimeUpdate ModuleTag_04
26018      MinLifetime = 1500   ; min lifetime in msec
26019      MaxLifetime = 1600   ; max lifetime in msec
26020    End
26021  
26022    Behavior = SlowDeathBehavior ModuleTag_05
26023      SinkDelay         = 1500
26024      SinkRate          = 2     ; in Dist/Sec
26025      DestructionDelay  = 12000
26026    End
26027  End
26028  
26029  ;------------------------------------------------------------------------------
26030  Object DeadScorpionHulk
26031  
26032    ; *** ART Parameters ***
26033    Draw = W3DModelDraw ModuleTag_01
26034      ConditionState = NONE
26035        Model = UVLiteTank_D1
26036      End
26037    End
26038  
26039    ; ***DESIGN parameters ***
26040    EditorSorting   = DEBRIS
26041  
26042    ; *** ENGINEERING Parameters ***
26043    KindOf =  NO_COLLIDE HULK
26044  
26045    Behavior = PhysicsBehavior ModuleTag_03
26046      Mass = 100.0
26047      AllowBouncing = Yes
26048      KillWhenRestingOnGround = Yes
26049    End
26050    Behavior = LifetimeUpdate ModuleTag_04
26051      MinLifetime = 1500   ; min lifetime in msec
26052      MaxLifetime = 1600   ; max lifetime in msec
26053    End
26054  
26055    Behavior = SlowDeathBehavior ModuleTag_05
26056      SinkDelay         = 1500
26057      SinkRate          = 2     ; in Dist/Sec
26058      DestructionDelay  = 12000
26059    End
26060  End
26061  
26062  ;------------------------------------------------------------------------------
26063  ; POW Trucks are cut. sorry. (srj)
26064  ;Object DeadAmericanPOWTruckHulk
26065  ;  ; *** ART Parameters ***
26066  ;  Draw = W3DModelDraw ModuleTag_01
26067  ;    ConditionState = NONE
26068  ;      Model = AVPOWTruck_D1
26069  ;    End
26070  ;  End
26071  ;  ; ***DESIGN parameters ***
26072  ;  EditorSorting   = DEBRIS
26073  ;  ; *** ENGINEERING Parameters ***
26074  ;  KindOf =  NO_COLLIDE HULK
26075  ;  Behavior = PhysicsBehavior ModuleTag_03
26076  ;    Mass = 100.0
26077  ;    AllowBouncing = Yes
26078  ;    KillWhenRestingOnGround = Yes
26079  ;  End
26080  ;  Behavior = LifetimeUpdate ModuleTag_04
26081  ;    MinLifetime = 1500   ; min lifetime in msec
26082  ;    MaxLifetime = 1600   ; max lifetime in msec
26083  ;  End
26084  ;  Behavior = SlowDeathBehavior ModuleTag_05
26085  ;    SinkDelay         = 1500
26086  ;    SinkRate          = 2     ; in Dist/Sec
26087  ;    DestructionDelay  = 12000
26088  ;  End
26089  ;End
26090  
26091  ;------------------------------------------------------------------------------
26092  Object DestroyedMilitiaTank
26093  
26094    ; *** ART Parameters ***
26095    Draw = W3DModelDraw ModuleTag_01
26096      ConditionState = NONE
26097        Model = CVTank_D1
26098      End
26099    End
26100  
26101    ; ***DESIGN parameters ***
26102    EditorSorting   = DEBRIS
26103  
26104    ; *** ENGINEERING Parameters ***
26105    KindOf = NONE HULK
26106  
26107    Behavior = PhysicsBehavior ModuleTag_03
26108      Mass = 100.0
26109      AllowBouncing = Yes
26110      KillWhenRestingOnGround = Yes
26111    End
26112    Behavior = LifetimeUpdate ModuleTag_04
26113      MinLifetime = 10000   ; min lifetime in msec
26114      MaxLifetime = 15000   ; max lifetime in msec
26115    End
26116  
26117    Behavior = SlowDeathBehavior ModuleTag_05
26118      SinkDelay = 4000
26119      SinkRate = 2     ; in Dist/Sec
26120      DestructionDelay = 8000
26121    End
26122  End
26123  
26124  ;------------------------------------------------------------------------------
26125  Object DeadRadarVanHulk
26126  
26127    ; *** ART Parameters ***
26128    Draw = W3DModelDraw ModuleTag_01
26129      ConditionState = NONE
26130        Model = UVRadarVan_D1
26131      End
26132    End
26133  
26134    ; ***DESIGN parameters ***
26135    EditorSorting   = DEBRIS
26136  
26137    ; *** ENGINEERING Parameters ***
26138    KindOf =  NO_COLLIDE HULK
26139  
26140    Behavior = PhysicsBehavior ModuleTag_03
26141      Mass = 100.0
26142      AllowBouncing = Yes
26143      KillWhenRestingOnGround = Yes
26144    End
26145    Behavior = LifetimeUpdate ModuleTag_04
26146      MinLifetime = 1500   ; min lifetime in msec
26147      MaxLifetime = 1600   ; max lifetime in msec
26148    End
26149  
26150    Behavior = SlowDeathBehavior ModuleTag_05
26151      SinkDelay         = 1500
26152      SinkRate          = 2     ; in Dist/Sec
26153      DestructionDelay  = 16000
26154    End
26155  
26156  End
26157  
26158  ;------------------------------------------------------------------------------
26159  Object ChinaDeadDozerHulk
26160  
26161    ; *** ART Parameters ***
26162    Draw                = W3DModelDraw ModuleTag_01
26163      ConditionState    = NONE
26164        Model           = nvconstdoz_D1
26165      End
26166    End
26167  
26168    ; ***DESIGN parameters ***
26169    EditorSorting       = DEBRIS
26170  
26171    ; *** ENGINEERING Parameters ***
26172    KindOf              =  NO_COLLIDE HULK
26173  
26174    Behavior                  = PhysicsBehavior ModuleTag_03
26175      Mass                    = 100.0
26176      AllowBouncing           = Yes
26177      KillWhenRestingOnGround = Yes
26178    End
26179    Behavior = LifetimeUpdate ModuleTag_04
26180      MinLifetime = 1500   ; min lifetime in msec
26181      MaxLifetime = 1600   ; max lifetime in msec
26182    End
26183  
26184    Behavior = SlowDeathBehavior ModuleTag_05
26185      SinkDelay        = 1500
26186      SinkRate            = 2     ; in Dist/Sec
26187      DestructionDelay = 8000
26188    End
26189  
26190  End
26191  
26192  ;------------------------------------------------------------------------------
26193  Object AmericaDeadDozerHulk
26194  
26195    ; *** ART Parameters ***
26196    Draw                = W3DModelDraw ModuleTag_01
26197      ConditionState    = NONE
26198        Model           = avconstdoz_D1
26199      End
26200    End
26201  
26202    ; ***DESIGN parameters ***
26203    EditorSorting       = DEBRIS
26204  
26205    ; *** ENGINEERING Parameters ***
26206    KindOf              =  NO_COLLIDE HULK
26207  
26208    Behavior                  = PhysicsBehavior ModuleTag_03
26209      Mass                    = 100.0
26210      AllowBouncing           = Yes
26211      KillWhenRestingOnGround = Yes
26212    End
26213    Behavior = LifetimeUpdate ModuleTag_04
26214      MinLifetime = 1500   ; min lifetime in msec
26215      MaxLifetime = 1600   ; max lifetime in msec
26216    End
26217  
26218    Behavior = SlowDeathBehavior ModuleTag_05
26219      SinkDelay        = 1500
26220      SinkRate            = 2     ; in Dist/Sec
26221      DestructionDelay = 8000
26222    End
26223  
26224  End
26225  
26226  ;------------------------------------------------------------------------------
26227  Object AmericaScoutDroneHulk
26228    ; *** ART Parameters ***
26229    Draw                = W3DModelDraw ModuleTag_01
26230      ConditionState    = NONE
26231        Model           = AVScoutDr_D1
26232      End
26233    End
26234  
26235    ; ***DESIGN parameters ***
26236    EditorSorting       = DEBRIS
26237  
26238    ; *** ENGINEERING Parameters ***
26239    KindOf              =  NO_COLLIDE HULK
26240  
26241    Behavior                  = PhysicsBehavior ModuleTag_03
26242      Mass                    = 10.0
26243      AllowBouncing           = Yes
26244      KillWhenRestingOnGround = Yes
26245    End
26246    Behavior = LifetimeUpdate ModuleTag_04
26247      MinLifetime = 1500   ; min lifetime in msec
26248      MaxLifetime = 1600   ; max lifetime in msec
26249    End
26250  
26251    Behavior = SlowDeathBehavior ModuleTag_05
26252      SinkDelay        = 1500
26253      SinkRate            = 2     ; in Dist/Sec
26254      DestructionDelay = 8000
26255    End
26256  End
26257  
26258  ;------------------------------------------------------------------------------
26259  Object AmericaBattleDroneHulk
26260    ; *** ART Parameters ***
26261    Draw                = W3DModelDraw ModuleTag_01
26262      ConditionState    = NONE
26263        Model           = AVBattleDr_D1
26264      End
26265    End
26266  
26267    ; ***DESIGN parameters ***
26268    EditorSorting       = DEBRIS
26269  
26270    ; *** ENGINEERING Parameters ***
26271    KindOf              =  NO_COLLIDE HULK
26272  
26273    Behavior                  = PhysicsBehavior ModuleTag_03
26274      Mass                    = 10.0
26275      AllowBouncing           = Yes
26276      KillWhenRestingOnGround = Yes
26277    End
26278    Behavior = LifetimeUpdate ModuleTag_04
26279      MinLifetime = 1500   ; min lifetime in msec
26280      MaxLifetime = 1600   ; max lifetime in msec
26281    End
26282  
26283    Behavior = SlowDeathBehavior ModuleTag_05
26284      SinkDelay        = 1500
26285      SinkRate            = 2     ; in Dist/Sec
26286      DestructionDelay = 8000
26287    End
26288  End
26289  
26290  ;------------------------------------------------------------------------------
26291  Object AmericaJetA10Thunderbolt
26292  
26293    ; *** ART Parameters ***
26294    SelectPortrait         = SAWarthog_L
26295    ButtonImage            = SAWarthog
26296  
26297    Draw = W3DModelDraw ModuleTag_01
26298  
26299      OkToChangeModelColor = Yes
26300  
26301      ExtraPublicBone = WeaponA01
26302      ExtraPublicBone = WeaponA02
26303      ExtraPublicBone = WeaponA03
26304      ExtraPublicBone = WeaponA04
26305      ExtraPublicBone = WeaponA05
26306      ExtraPublicBone = WeaponA06
26307  
26308      DefaultConditionState
26309        Model             = AVWarthog
26310        WeaponMuzzleFlash = PRIMARY MuzzleFX01
26311        WeaponFireFXBone  = PRIMARY Muzzle01
26312        ParticleSysBone = Engine01 JetBlackTrailThin
26313        ParticleSysBone = Engine02 JetBlackTrailThin
26314        ParticleSysBone = Wingtip01 JetContrailThin
26315        ParticleSysBone = Wingtip02 JetContrailThin
26316      End
26317  
26318      ConditionState      = REALLYDAMAGED
26319        Model             = AVWarthog_D
26320        WeaponMuzzleFlash = PRIMARY MuzzleFX01
26321        WeaponFireFXBone  = PRIMARY Muzzle01
26322      End
26323      AliasConditionState  = RUBBLE
26324  
26325    End
26326  
26327    ; ***DESIGN parameters ***
26328    DisplayName         = OBJECT:A10Thunderbolt
26329    EditorSorting       = VEHICLE
26330    Side                = America
26331    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
26332    VisionRange         = 300.0 
26333    ShroudClearingRange = 300
26334    Prerequisites
26335      Object = AmericaAirfield
26336    End
26337    WeaponSet
26338      Conditions = None 
26339      Weapon = PRIMARY A10ThunderboltVulcan
26340    End
26341    ArmorSet
26342      Conditions      = None
26343      Armor           = AirplaneArmor
26344      DamageFX        = None
26345    End
26346  
26347    ExperienceValue = 50 100 150 400    ;Experience point value at each level
26348    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
26349    IsTrainable = Yes             ;Can gain experience
26350  
26351    ; *** AUDIO Parameters ***
26352    SoundAmbient = A10ThunderboltAmbientLoop
26353    SoundAmbientRubble    = NoSound
26354    UnitSpecificSounds
26355      SoundEject = PilotSoundEject
26356      VoiceEject = PilotVoiceEject
26357      StartDive  = A10ThunderboltDive
26358    End
26359  
26360    ; *** ENGINEERING Parameters ***
26361    RadarPriority = UNIT
26362    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE AIRCRAFT SCORE IGNORED_IN_GUI
26363    Body = ActiveBody ModuleTag_02
26364      MaxHealth       = 600.0
26365      InitialHealth   = 600.0
26366    End
26367  
26368    ExperienceValue     = 40 40 40 40  ; Experience point value at each level
26369  
26370    Behavior                          = JetSlowDeathBehavior ModuleTag_03
26371      DestructionDelay                = 99999999  ; destruction will happen when we
26372      RollRate                        = 0.0
26373      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
26374      PitchRate                       = 0.0
26375      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
26376      FXInitialDeath                  = FX_JetDeathInitial
26377      OCLInitialDeath                 = None
26378      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
26379      FXSecondary                     = FX_JetDeathSecondary
26380      OCLSecondary                    = None
26381      FXHitGround                     = FX_JetDeathHitGround
26382      OCLHitGround                    = OCL_A10DeathHitGround
26383      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
26384      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
26385      OCLFinalBlowUp                  = OCL_A10DeathFinalBlowUp
26386    End
26387  
26388    Behavior = PhysicsBehavior ModuleTag_05
26389      Mass = 500.0
26390    End
26391  
26392    ;SCRIPTED SUPPORT: These special power is triggered directly 
26393    ;from the transport without creating a transport. This is done 
26394    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
26395    ;which also prevents creating the payload transport.
26396    Behavior    = OCLSpecialPower ModuleTag_06
26397      SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike ;@@KRIS@@
26398      UpgradeOCL           = SCIENCE_A10ThunderboltMissileStrike3 SUPERWEAPON_A10ThunderboltMissileStrike3
26399      UpgradeOCL           = SCIENCE_A10ThunderboltMissileStrike2 SUPERWEAPON_A10ThunderboltMissileStrike2
26400      OCL                  = SUPERWEAPON_A10ThunderboltMissileStrike1
26401      CreateLocation       = USE_OWNER_OBJECT
26402    End
26403  
26404    Behavior = DeliverPayloadAIUpdate ModuleTag_07
26405    End
26406    Locomotor = SET_NORMAL A10ThunderboltLocomotor
26407  
26408    Behavior = FlammableUpdate ModuleTag_21
26409      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
26410      AflameDamageAmount = 3       ; taking this much damage...
26411      AflameDamageDelay = 500       ; this often.
26412    End
26413  
26414    ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_22
26415    End
26416  
26417    Geometry = Cylinder
26418    GeometryIsSmall = Yes
26419    GeometryMajorRadius = 10.0
26420    GeometryMinorRadius = 10.0
26421    GeometryHeight = 10.0
26422    Shadow = SHADOW_VOLUME
26423    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
26424  
26425  End
26426  
26427  ;------------------------------------------------------------------------------
26428  Object AmericaVehicleChinook
26429  
26430    ; *** ART Parameters ***
26431    SelectPortrait         = SAChinook_L
26432    ButtonImage            = SAChinook
26433    
26434    ;UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
26435    ;UpgradeCameo2 = NONE
26436    ;UpgradeCameo3 = NONE
26437    ;UpgradeCameo4 = NONE
26438    ;UpgradeCameo5 = NONE
26439  
26440    Draw = W3DModelDraw                         ModuleTag_01 ; Helicopter 
26441  
26442      ExtraPublicBone = RopeStart
26443      ExtraPublicBone = RopeEnd
26444  
26445      DefaultConditionState
26446        Model = AVChinook
26447        Animation = AVChinook.AVChinook
26448        AnimationMode = LOOP
26449      End
26450  
26451      ConditionState = REALLYDAMAGED
26452        Model = AVChinook_d
26453        Animation = AVChinook_d.AVChinook_d
26454        AnimationMode = LOOP
26455      End
26456  
26457      ConditionState = RUBBLE
26458        Model = AVChinook_d
26459        Animation = AVChinook_d.AVChinook_d
26460        AnimationMode = LOOP
26461      End
26462  
26463      ConditionState = RUBBLE SPECIAL_DAMAGED
26464        Model = AVChinook_d
26465        HideSubObject = Props01
26466        HideSubObject = Props02
26467      End
26468  
26469      OkToChangeModelColor = Yes
26470    End
26471  
26472    Draw = W3DModelDraw                         ModuleTag_02 ; Cargo net 
26473      ConditionState = NONE
26474        Model = None  ; Nothing here
26475        TransitionKey = TRANS_Empty
26476        WaitForStateToFinishIfPossible = TRANS_Unloading
26477      End
26478  
26479      ConditionState = DYING 
26480        Model = None  ; Nothing here
26481      End
26482      AliasConditionState = RUBBLE
26483      AliasConditionState = CARRYING RUBBLE
26484      AliasConditionState = DOCKING RUBBLE
26485      AliasConditionState = DOCKING CARRYING RUBBLE
26486   
26487       ConditionState = CARRYING
26488        Model = AVChinook_A ;Carrying a full wobbly net of stuff
26489        Animation = AVChinook_A.AVChinook_A
26490        AnimationMode = LOOP
26491        TransitionKey = TRANS_Full
26492        WaitForStateToFinishIfPossible = TRANS_PickingUp
26493      End
26494  
26495      ConditionState = DOCKING
26496        Model = AVChinook_A1MSH ;Lowering an empty net, pulling up with stuff
26497        Animation = AVChinook_A1SK.AVChinook_A1
26498        AnimationMode = ONCE_BACKWARDS
26499        Flags = START_FRAME_LAST
26500        AnimationSpeedFactorRange = .75 .75
26501        TransitionKey = TRANS_PickingUp
26502        WaitForStateToFinishIfPossible = TRANS_Unloading  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
26503      End
26504  
26505      ConditionState = DOCKING CARRYING
26506        Model = AVChinook_A1MSH ; Lowering a full net, letting stuff fall out, and pulling up an empty net
26507        Animation = AVChinook_A1SK.AVChinook_A1
26508        AnimationMode = ONCE
26509        AnimationSpeedFactorRange = 2.75 2.75
26510        TransitionKey = TRANS_Unloading
26511        WaitForStateToFinishIfPossible = TRANS_PickingUp  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
26512      End
26513    End
26514  
26515    ; ***DESIGN parameters ***
26516    DisplayName         = OBJECT:Chinook
26517    EditorSorting       = VEHICLE
26518    Side                = America
26519    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
26520    VisionRange         = 300.0 
26521    ShroudClearingRange = 600
26522    BuildCost           = 1200
26523    BuildTime           = 10.0          ;in seconds  
26524    Prerequisites
26525     ; Object = AmericaSupplyCenter
26526    End
26527    ExperienceValue     = 50 50 50 50 ;Experience point value at each level
26528    IsTrainable         = No  
26529    CommandSet          = AmericaVehicleChinookCommandSet
26530    ArmorSet
26531      Conditions      = None
26532      Armor           = ChinookArmor
26533      DamageFX        = None
26534    End
26535  
26536    ; *** AUDIO Parameters ***
26537    VoiceSelect     = ChinookVoiceSelect
26538    VoiceMove       = ChinookVoiceMove
26539    VoiceAttack     = ChinookVoiceAttack
26540    SoundAmbient    = ChinookAmbientLoop
26541    SoundAmbientRubble    = NoSound
26542    SoundDie        = ChinookVoiceFalling
26543    SoundEnter      = HumveeEnter
26544    SoundExit       = HumveeExit
26545    UnitSpecificSounds
26546      VoiceCreate         = ChinookVoiceCreate
26547      VoiceSupply         = ChinookVoiceSupply
26548      VoiceUnload         = ChinookVoiceUnload
26549      VoiceCombatDrop     = ChinookVoiceCombatDrop
26550      VoiceClearBuilding  = RangerVoiceClearBuilding ;Special combat drop that clears buildings!
26551      VoiceGarrison       = ChinookVoiceMove
26552    End
26553  
26554    ; *** ENGINEERING Parameters ***
26555    RadarPriority   = UNIT
26556    ; note that, although Chinooks aren't produced at helipads, we want to set this KINDOF so that they can land at
26557    ; (well, "near" actually) an Airfield to get healed...
26558    ; also note that we should NOT set CAN_ATTACK for chinooks. they can't attack. so there.
26559    KindOf          = PRELOAD CAN_CAST_REFLECTIONS SELECTABLE VEHICLE TRANSPORT AIRCRAFT HARVESTER SCORE PRODUCED_AT_HELIPAD
26560  
26561    Body = ActiveBody ModuleTag_03
26562      MaxHealth       = 300.0
26563      InitialHealth   = 300.0
26564    End
26565  
26566    Behavior = FXListDie ModuleTag_05
26567      DeathFX = FX_HelicopterStartDeath
26568    End
26569  
26570    Behavior                       = TransitionDamageFX ModuleTag_06
26571      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
26572      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
26573    End
26574  
26575    Behavior = ChinookAIUpdate ModuleTag_07
26576      MaxBoxes                = 8
26577      SupplyCenterActionDelay = 3000     ; ms for whole thing (one transaction)
26578      SupplyWarehouseActionDelay = 1250  ; 875 ; ms per box (many small transactions)
26579      SupplyWarehouseScanDistance = 700 ;350 ; Max distance to look for a warehouse, or we go home.  (Direct dock command on warehouse overrides, and no max on Center Scan)
26580      SuppliesDepletedVoice = ChinookVoiceSuppliesDepleted
26581      NumRopes                = 4
26582      ; these define how long we can wait, once a guy is on-rope, before throwing another
26583      ; guy onto that same rope. (Hint: you don't want to use zero.) Omit entirely
26584      ; and we'll wait for each guy to clear before spawning another.
26585      PerRopeDelayMin         = 900
26586      PerRopeDelayMax         = 1500
26587      RopeWidth               = 0.5
26588      RopeColor               = R:0 G:0 B:0
26589      RopeWobbleLen           = 10
26590      RopeWobbleAmplitude     = 0.25
26591      RopeWobbleRate          = 180
26592      RopeFinalHeight         = 10    ; stop this far above ground
26593      RappelSpeed             = 30
26594      MinDropHeight           = 40      ; if dropping into a tall bldg, go at least this far above it
26595  
26596    End
26597    Locomotor = SET_NORMAL    ChinookLocomotor
26598    Locomotor = SET_TAXIING   BasicHelicopterTaxiLocomotor
26599  
26600    Behavior = TransportContain ModuleTag_08
26601      Slots                 = 8
26602      DamagePercentToUnits  = 100%
26603      AllowInsideKindOf     = INFANTRY VEHICLE
26604      ForbidInsideKindOf    = AIRCRAFT HUGE_VEHICLE
26605      ExitDelay             = 100
26606      NumberOfExitPaths     = 1
26607    End
26608    Behavior = PhysicsBehavior ModuleTag_09
26609      Mass = 50.0
26610    End
26611    Behavior = HelicopterSlowDeathBehavior ModuleTag_10
26612      DestructionDelay                = 99999999        ; the destruction delay
26613      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
26614      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
26615      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
26616      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
26617      SoundDeathLoop                  = ComancheDamagedLoop
26618      MinSelfSpin                     = 100                     ; in degrees per second
26619      MaxSelfSpin                     = 300                     ; in degrees per second
26620      SelfSpinUpdateDelay             = 100                     ; in milliseconds
26621      SelfSpinUpdateAmount            = 10                      ; in degrees   
26622      FallHowFast                     = 12.0%                   ; fraction of gravity, lower = take longer to fall
26623      MinBladeFlyOffDelay             = 1500                    ; in milliseconds
26624      MaxBladeFlyOffDelay             = 1500                    ; in milliseconds
26625      AttachParticle                  = SootySmokeTrail
26626      AttachParticleBone              = Propeller02
26627      BladeObjectName                 = ComancheBlades
26628      BladeBoneName                   = Propeller01    
26629      FXBlade                         = FX_HelicopterBladeExplosion
26630      OCLBlade                        = OCL_HelicopterBladeExplosion
26631      FXHitGround                     = FX_HelicopterHitGround
26632      OCLHitGround                    = OCL_HelicopterHitGround
26633      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
26634      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
26635      DelayFromGroundToFinalDeath     = 30
26636      FinalRubbleObject               = ChinookRubbleHull
26637    End
26638  
26639    Behavior = FlammableUpdate ModuleTag_21
26640      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
26641      AflameDamageAmount = 3       ; taking this much damage...
26642      AflameDamageDelay = 500       ; this often.
26643    End
26644  
26645    Geometry              = BOX
26646    GeometryMajorRadius   = 20.0
26647    GeometryMinorRadius   = 6.0
26648    GeometryHeight        = 12.0     
26649    GeometryIsSmall       = No
26650    Shadow                = SHADOW_VOLUME    
26651    ShadowSizeX           = 89  ; minimum elevation angle above horizon. Used to limit shadow length
26652  
26653  End
26654  
26655  ;------------------------------------------------------------------------------
26656  Object AmericaTankPaladin
26657  
26658    ; *** ART Parameters ***
26659    SelectPortrait         = SAPaladin_L
26660    ButtonImage            = SAPaladin_L
26661    
26662    UpgradeCameo1 = Upgrade_AmericaBattleDrone
26663    UpgradeCameo2 = Upgrade_AmericaScoutDrone
26664    UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
26665    UpgradeCameo4 = Upgrade_AmericaCompositeArmor
26666    ;UpgradeCameo5 = NONE
26667  
26668    Draw = W3DTankDraw ModuleTag_01
26669      
26670      ExtraPublicBone = Laser 
26671  
26672      ConditionState        = NONE
26673        Model               = AVPaladin
26674        Turret              = Turret01
26675        WeaponFireFXBone    = PRIMARY TurretMS
26676        WeaponRecoilBone    = PRIMARY Barrel
26677        WeaponMuzzleFlash   = PRIMARY TurretFX
26678        WeaponLaunchBone = PRIMARY TurretMS
26679      End
26680      
26681      ConditionState        = REALLYDAMAGED
26682        Model               = AVPaladin_D
26683        Turret              = Turret01
26684        WeaponFireFXBone    = PRIMARY TurretMS
26685        WeaponRecoilBone    = PRIMARY Barrel
26686        WeaponMuzzleFlash   = PRIMARY TurretFX
26687        WeaponLaunchBone = PRIMARY TurretMS
26688      End
26689      
26690      ConditionState        = RUBBLE
26691        Model               = AVPaladin_D
26692        Turret              = Turret01
26693        WeaponFireFXBone    = PRIMARY TurretMS
26694        WeaponRecoilBone    = PRIMARY Barrel
26695        WeaponMuzzleFlash   = PRIMARY TurretFX
26696        WeaponLaunchBone = PRIMARY TurretMS
26697      End
26698      
26699      TrackMarks           = EXTnkTrack.tga
26700      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
26701      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
26702      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
26703      OkToChangeModelColor = Yes
26704    End
26705  
26706    ; ***DESIGN parameters ***
26707    DisplayName      = OBJECT:Paladin
26708    Side = America
26709    EditorSorting   = VEHICLE
26710    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
26711    WeaponSet
26712      Conditions = None 
26713      Weapon = PRIMARY PaladinTankGun
26714    End
26715    ArmorSet
26716      Conditions      = None
26717      Armor           = TankArmor
26718      DamageFX        = TankDamageFX
26719    End
26720    ;ArmorSet
26721    ;  Conditions      = PLAYER_UPGRADE
26722    ;  Armor           = UpgradedTankArmor
26723    ;  DamageFX        = TankDamageFX
26724    ;End
26725    BuildCost       = 1100
26726    BuildTime       = 12.0          ;in seconds    
26727    VisionRange     = 150
26728    ShroudClearingRange = 300
26729    Prerequisites
26730      Object = AmericaWarFactory
26731      Science = SCIENCE_PaladinTank
26732    End
26733  
26734    ExperienceValue        = 100 100 200 400 ;Experience point value at each level
26735    ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level
26736  
26737    IsTrainable     = Yes  ;Can gain experience
26738    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
26739    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
26740    CommandSet      = AmericaTankPaladinCommandSet
26741      
26742    ; *** AUDIO Parameters ***
26743    VoiceSelect = PaladinTankVoiceSelect
26744    VoiceMove = PaladinTankVoiceMove
26745    VoiceGuard = PaladinTankVoiceMove
26746    VoiceAttack = PaladinTankVoiceAttack
26747    SoundMoveStart = PaladinTankMoveStart
26748    SoundMoveStartDamaged = PaladinTankMoveStart
26749  
26750    UnitSpecificSounds
26751      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
26752      VoiceCreate     = PaladinTankVoiceCreate
26753      TurretMoveLoop = TurretMoveLoop
26754      SoundEject = PilotSoundEject
26755      VoiceEject = PilotVoiceEject
26756      VoiceCrush = PaladinTankVoiceCrush
26757      VoiceEnter = PaladinTankVoiceMove
26758    End
26759  
26760    ; *** ENGINEERING Parameters ***
26761    RadarPriority = UNIT
26762    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
26763    
26764    Body = ActiveBody ModuleTag_02
26765      MaxHealth       = 600.0
26766      InitialHealth   = 600.0
26767    End
26768  
26769    Behavior = AIUpdateInterface ModuleTag_03
26770      Turret
26771        TurretTurnRate = 180 ;60   // turn rate, in degrees per sec
26772        ControlledWeaponSlots = PRIMARY
26773      End
26774      ;AltTurret
26775      ;  TurretTurnRate = 9000;
26776      ;  ControlledWeaponSlots = SECONDARY
26777      ;End
26778      AutoAcquireEnemiesWhenIdle = Yes
26779    End
26780    Locomotor = SET_NORMAL CrusaderLocomotor
26781    Behavior = PhysicsBehavior ModuleTag_04
26782      Mass = 50.0
26783    End
26784    
26785    ; Turret fly off death
26786    Behavior = SlowDeathBehavior ModuleTag_05
26787      DeathTypes = ALL -CRUSHED -SPLATTED
26788      ProbabilityModifier = 50
26789  ;    ModifierBonusPerOverkillPercent = 30%  ; negative means less likely to pick this in the face of much damage, positive means more likely
26790      DestructionDelay = 500
26791      DestructionDelayVariance = 100
26792      FX  = INITIAL  FX_GenericTankDeathEffect
26793      FX  = FINAL    FX_GenericTankDeathExplosion
26794      OCL = FINAL    OCL_PaladinTankDeathEffect
26795    End
26796    
26797    ; Catch fire, and explode death
26798    Behavior = SlowDeathBehavior ModuleTag_06
26799      DeathTypes = ALL -CRUSHED -SPLATTED
26800      ProbabilityModifier = 50
26801      DestructionDelay = 2000
26802      DestructionDelayVariance = 300
26803      FX  = INITIAL  FX_CrusaderCatchFire
26804      OCL = FINAL    OCL_PaladinTankDeathEffect
26805      FX  = FINAL    FX_GenericTankDeathExplosion 
26806    End
26807  
26808    Behavior = PointDefenseLaserUpdate ModuleTag_07
26809      WeaponTemplate        = PaladinPointDefenseLaser
26810      PrimaryTargetTypes    = BALLISTIC_MISSILE SMALL_MISSILE
26811      SecondaryTargetTypes  = INFANTRY
26812      ScanRate              = 500
26813      ScanRange             = 120.0
26814      PredictTargetVelocityFactor = 3.0
26815    End
26816  
26817    Behavior = ObjectCreationUpgrade ModuleTag_08
26818      UpgradeObject = OCL_AmericanBattleDrone
26819      TriggeredBy   = Upgrade_AmericaBattleDrone
26820      ConflictsWith = Upgrade_AmericaScoutDrone
26821    End
26822    Behavior = ObjectCreationUpgrade ModuleTag_09
26823      UpgradeObject = OCL_AmericanScoutDrone
26824      TriggeredBy   = Upgrade_AmericaScoutDrone
26825      ConflictsWith = Upgrade_AmericaBattleDrone
26826    End
26827    Behavior = ProductionUpdate ModuleTag_10
26828      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
26829    End
26830  
26831    Behavior = ExperienceScalarUpgrade ModuleTag_11
26832      TriggeredBy = Upgrade_AmericaAdvancedTraining
26833      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
26834    End
26835  
26836    Behavior = TransitionDamageFX ModuleTag_12
26837      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
26838      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
26839    End
26840  
26841    Behavior = FXListDie ModuleTag_13
26842      DeathTypes = NONE +CRUSHED +SPLATTED
26843      DeathFX = FX_CarCrush
26844    End
26845    Behavior = CreateObjectDie ModuleTag_14
26846      DeathTypes = NONE +CRUSHED +SPLATTED
26847      CreationList = OCL_CrusaderTank_CrushEffect
26848    End
26849    Behavior = DestroyDie ModuleTag_15
26850      DeathTypes = NONE +CRUSHED +SPLATTED
26851    End
26852    Behavior = CreateCrateDie ModuleTag_16
26853      CrateData = SalvageCrateData
26854      ;CrateData = EliteTankCrateData
26855      ;CrateData = HeroicTankCrateData
26856    End
26857    Behavior = EjectPilotDie ModuleTag_17
26858      DeathTypes = ALL -CRUSHED -SPLATTED
26859      ExemptStatus = HIJACKED
26860      GroundCreationList = OCL_EjectPilotOnGround
26861      AirCreationList = OCL_EjectPilotViaParachute
26862      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
26863    End
26864  
26865    Behavior = MaxHealthUpgrade ModuleTag_18
26866      TriggeredBy   = Upgrade_AmericaCompositeArmor
26867      AddMaxHealth  = 100.0
26868      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
26869    End
26870  
26871    Behavior = FlammableUpdate ModuleTag_21
26872      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
26873      AflameDamageAmount = 3       ; taking this much damage...
26874      AflameDamageDelay = 500       ; this often.
26875    End
26876  
26877    Geometry = BOX
26878    GeometryMajorRadius = 15.0
26879    GeometryMinorRadius = 10.0
26880    GeometryHeight = 10.0     
26881    GeometryIsSmall = Yes    
26882    Shadow = SHADOW_VOLUME
26883    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
26884  
26885  End
26886  
26887  ;------------------------------------------------------------------------------
26888  ;
26889  ; Jason Bender sez:
26890  ; This unit is used in GLA04. It is part of a secondary objective. The player gets a medal for capturing him.
26891  ; This unit is never human-controllable!
26892  ;
26893  Object ChinaAmbassador
26894  
26895      ; *** ART Parameters ***
26896    Draw = W3DModelDraw ModuleTag_01
26897      OkToChangeModelColor = Yes
26898  
26899      DefaultConditionState
26900        Model = NIAMBSDR_SKN
26901        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
26902        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
26903        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
26904        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
26905        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
26906        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
26907        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
26908        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDA
26909        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDB
26910        AnimationMode = ONCE
26911        TransitionKey = TRANS_Stand
26912      End
26913          
26914      ConditionState = MOVING
26915        Animation = NIAMBSDR_SKL.NIAMBSDR_RNA ;***was using WKA but it doesn't exist so I changed it to kill the assert -- Kris 
26916        AnimationMode = LOOP
26917        Flags = RANDOMSTART
26918      End
26919  
26920      ConditionState = MOVING PANICKING
26921        Animation = NIAMBSDR_SKL.NIAMBSDR_RNA 
26922        AnimationMode = LOOP
26923        Flags = RANDOMSTART
26924      End
26925  
26926      ConditionState = DYING
26927        Animation = NIAMBSDR_SKL.NIAMBSDR_DTA
26928        Animation = NIAMBSDR_SKL.NIAMBSDR_DTB
26929        AnimationMode = ONCE
26930        TransitionKey = TRANS_Dying
26931      End
26932  
26933      ;TransitionState = TRANS_Dying TRANS_Flailing
26934      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD1
26935      ;  AnimationMode = ONCE
26936      ;End
26937  
26938      ;ConditionState = DYING EXPLODED_FLAILING
26939      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD2
26940      ;  AnimationMode = LOOP
26941      ;  TransitionKey = TRANS_Flailing
26942      ;End
26943  
26944      ;ConditionState = DYING EXPLODED_BOUNCING
26945      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD3
26946      ;  AnimationMode = ONCE
26947      ;  TransitionKey = None
26948      ;End
26949    End
26950  
26951    ; ***DESIGN parameters ***
26952    Buildable           = No
26953    DisplayName         = OBJECT:Ambassador
26954    Side                = China
26955    EditorSorting       = INFANTRY
26956    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
26957    WeaponSet
26958      ; no weapons
26959    End
26960    ArmorSet
26961      Conditions      = None
26962      Armor           = HumanArmor
26963      DamageFX        = InfantryDamageFX
26964    End
26965    VisionRange = 150
26966    ShroudClearingRange = 150
26967  
26968    ExperienceValue = 50 100 150 400    ;Experience point value at each level
26969    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
26970    IsTrainable = Yes             ;Can gain experience
26971  
26972    ; *** AUDIO Parameters ***
26973    SoundDie = RedGuardVoiceDie
26974  
26975    ; *** ENGINEERING Parameters ***
26976    RadarPriority = UNIT
26977    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
26978  
26979    Body = ActiveBody ModuleTag_02
26980      MaxHealth       = 50.0
26981      InitialHealth   = 50.0
26982    End
26983  
26984    Behavior = AIUpdateInterface ModuleTag_03
26985      AutoAcquireEnemiesWhenIdle = Yes
26986    End
26987    Locomotor = SET_NORMAL BasicHumanLocomotor
26988    Behavior = PhysicsBehavior ModuleTag_04
26989      Mass = 5.0
26990    End
26991    Behavior = SlowDeathBehavior ModuleTag_05
26992      SinkDelay = 3000
26993      SinkRate = 0.5     ; in Dist/Sec
26994      DestructionDelay = 8000
26995    End
26996   
26997    Behavior = SquishCollide ModuleTag_06
26998      ;nothing
26999    End
27000  
27001    Behavior = FXListDie ModuleTag_07
27002      DeathTypes = ALL -CRUSHED -SPLATTED
27003      DeathFX = FX_GIDie
27004    End
27005    Behavior = FXListDie ModuleTag_08
27006      DeathTypes = NONE +CRUSHED +SPLATTED
27007      DeathFX = FX_GIDieCrushed
27008    End
27009  
27010    Behavior = PoisonedBehavior ModuleTag_09
27011      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
27012      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
27013    End
27014   
27015    Geometry = CYLINDER
27016    Scale = 0.95                            ;Scaling
27017    GeometryMajorRadius = 1.0
27018    GeometryMinorRadius = 1.0
27019    GeometryHeight = 2.0
27020    GeometryIsSmall = Yes
27021    Shadow = SHADOW_DECAL
27022    ShadowSizeX = 9
27023    ShadowSizeY = 9
27024    ShadowTexture = ShadowI
27025    BuildCompletion = APPEARS_AT_RALLY_POINT
27026  
27027  End
27028  
27029  ;------------------------------------------------------------------------------
27030  Object AmericaInfantryBiohazardTech
27031  
27032    ; This unit is by default NOT buildable. In GLA06 this is buildable from the
27033    ; barracks of the enemy AI. (The map.ini file is overridden there make it 
27034    ; buildable = Yes (jkmcd)
27035    Buildable = No
27036  
27037      ; *** ART Parameters ***
27038    Draw = W3DModelDraw ModuleTag_01
27039      OkToChangeModelColor = Yes
27040  
27041      ;NORMAL STANDING
27042      DefaultConditionState
27043        Model = AITECH_SKN
27044        IdleAnimation = AITECH_SKL.AITECH_STA 0 21
27045        ;Regular spice animations
27046        IdleAnimation = AITECH_SKL.AITECH_IDA
27047        IdleAnimation = AITECH_SKL.AITECH_IDB
27048        AnimationMode = ONCE
27049        WeaponLaunchBone = PRIMARY BIOGUNFX
27050        TransitionKey = TRANS_Stand
27051      End
27052  
27053      ; NORMAL ATTACK
27054      ConditionState = FIRING_A
27055        Animation = AITECH_SKL.AITECH_STA
27056        AnimationMode = LOOP
27057        TransitionKey = TRANS_FiringA
27058      End
27059      AliasConditionState = BETWEEN_FIRING_SHOTS_A
27060      AliasConditionState = RELOADING_A
27061      AliasConditionState = FIRING_A REALLYDAMAGED
27062      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
27063      AliasConditionState = RELOADING_A REALLYDAMAGED
27064  
27065  
27066      ConditionState = MOVING FIRING_A 
27067        Animation = AITECH_SKL.AITECH_WKB 15
27068        AnimationMode = LOOP
27069        Flags = RANDOMSTART
27070        TransitionKey = None
27071        ParticleSysBone     = None InfantryDustTrails
27072      End
27073      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
27074      AliasConditionState = MOVING RELOADING_A
27075  
27076      ConditionState = MOVING
27077        Animation = AITECH_SKL.AITECH_WKA 15
27078        AnimationMode = LOOP
27079        Flags = RANDOMSTART
27080        TransitionKey = None
27081        ParticleSysBone     = None InfantryDustTrails
27082      End
27083  
27084      ConditionState = DYING
27085        Animation = AITECH_SKL.AITECH_DTA
27086        Animation = AITECH_SKL.AITECH_DTB
27087        AnimationMode = ONCE
27088        TransitionKey = TRANS_Dying
27089      End
27090  
27091      TransitionState = TRANS_Dying TRANS_Flailing
27092        Animation = AITECH_SKL.AITECH_ADTD1
27093        AnimationMode = ONCE
27094      End
27095  
27096      ConditionState = DYING EXPLODED_FLAILING
27097        Animation = AITECH_SKL.AITECH_ADTD2
27098        AnimationMode = LOOP
27099        TransitionKey = TRANS_Flailing
27100      End
27101  
27102      ConditionState = DYING EXPLODED_BOUNCING
27103        Animation = AITECH_SKL.AITECH_ADTD3
27104        AnimationMode = ONCE
27105        TransitionKey = None
27106      End
27107  
27108      ConditionState = SPECIAL_CHEERING
27109        Animation = AITECH_SKL.AITECH_CHA
27110        AnimationMode = LOOP
27111      End
27112  
27113      ;PARACHUTING ANIMATIONS
27114      ConditionState = FREEFALL
27115        Animation = AITECH_SKL.AITECH_PFL
27116        AnimationMode = LOOP
27117        TransitionKey = TRANS_Falling
27118      End
27119      AliasConditionState = FREEFALL REALLYDAMAGED
27120      AliasConditionState = FREEFALL DYING
27121      ConditionState = PARACHUTING
27122        Animation = AITECH_SKL.AITECH_PHG
27123        AnimationMode = LOOP
27124        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
27125        TransitionKey = TRANS_Chute
27126      End
27127      AliasConditionState = PARACHUTING REALLYDAMAGED
27128      AliasConditionState = PARACHUTING DYING
27129      TransitionState = TRANS_Falling TRANS_Chute
27130        Animation = AITECH_SKL.AITECH_POP
27131        AnimationMode = ONCE
27132        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
27133      End
27134      TransitionState = TRANS_Chute TRANS_Stand
27135        Animation = AITECH_SKL.AITECH_PDN
27136        AnimationMode = ONCE
27137      End
27138  
27139    End
27140  
27141    ; ***DESIGN parameters ***
27142    DisplayName         = OBJECT:BioHazardTech
27143    Side                = America
27144    EditorSorting       = INFANTRY
27145    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
27146    
27147    WeaponSet 
27148      ;*** Fully automated and driven by the CleanupHazardUpdate ***
27149      Conditions        = None 
27150      Weapon            = PRIMARY BioHazardTechCleanHazardWeapon 
27151      AutoChooseSources = PRIMARY NONE
27152    End
27153    ArmorSet
27154      Conditions      = None
27155      Armor           = HazMatHumanArmor
27156      DamageFX        = InfantryDamageFX
27157    End
27158  
27159    VisionRange = 100
27160    ShroudClearingRange = 400
27161    Prerequisites
27162      Object = AmericaBarracks
27163    End
27164    BuildCost = 200
27165    BuildTime = 5.0          ;in seconds  
27166    
27167    ExperienceValue = 50 100 150 400    ;Experience point value at each level
27168    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
27169    IsTrainable = Yes             ;Can gain experience
27170    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
27171    CommandSet          = AmericaInfantryHazMatCommandSet
27172  
27173    ; *** AUDIO Parameters ***
27174    VoiceSelect   = NoSound
27175    VoiceMove     = NoSound
27176    VoiceAttack   = NoSound
27177    SoundDie      = RebelVoiceDie
27178    UnitSpecificFX
27179      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
27180    End
27181  
27182    ; *** ENGINEERING Parameters ***
27183    RadarPriority = UNIT
27184    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
27185  
27186    Body = ActiveBody ModuleTag_02
27187  
27188      MaxHealth       = 100.0
27189      InitialHealth   = 100.0
27190    End
27191  
27192    Behavior = CleanupHazardUpdate ModuleTag_03
27193      WeaponSlot            = PRIMARY
27194      ScanRate              = 1000
27195      ScanRange             = 100.0
27196    End
27197  
27198    ;Can be ordered to clean up a larger area with the ability to move around at an extended range.
27199    Behavior = CleanupAreaPower ModuleTag_04
27200      SpecialPowerTemplate          = SpecialAbilityAmbulanceCleanupArea
27201      MaxMoveDistanceFromLocation   = 300.0 ;allows the unit to move around while cleaning up
27202    End
27203  
27204    Behavior = AIUpdateInterface ModuleTag_05
27205      AutoAcquireEnemiesWhenIdle = No
27206    End
27207    Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
27208      ScanRate = 1000 ; once a second.
27209      ScanRange = 300 ;
27210      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
27211      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
27212    End
27213  
27214    Locomotor = SET_NORMAL HazMatHumanLocomotor
27215  
27216    Behavior = ExperienceScalarUpgrade ModuleTag_07
27217      TriggeredBy = Upgrade_AmericaAdvancedTraining
27218      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
27219    End
27220  
27221    Behavior = PhysicsBehavior ModuleTag_08
27222      Mass = 5.0
27223    End
27224    Behavior = ProductionUpdate ModuleTag_09
27225      ; nothing
27226    End
27227  
27228    Behavior = SquishCollide ModuleTag_10
27229      ;nothing
27230    End
27231  
27232  ; --- begin Death modules ---
27233    Behavior = SlowDeathBehavior ModuleTag_Death01
27234      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
27235      SinkDelay           = 3000
27236      SinkRate            = 0.5     ; in Dist/Sec
27237      DestructionDelay    = 8000
27238      FX                  = INITIAL FX_GIDie
27239    End
27240    Behavior = SlowDeathBehavior ModuleTag_Death02
27241      DeathTypes          = NONE +CRUSHED +SPLATTED
27242      SinkDelay           = 3000
27243      SinkRate            = 0.5     ; in Dist/Sec
27244      DestructionDelay    = 8000
27245      FX                  = INITIAL FX_GIDieCrushed
27246    End
27247    Behavior = SlowDeathBehavior ModuleTag_Death03
27248      DeathTypes          = NONE +EXPLODED
27249      SinkDelay           = 3000
27250      SinkRate            = 0.5     ; in Dist/Sec
27251      DestructionDelay    = 8000
27252      FX                  = INITIAL FX_GIDie
27253      FlingForce          = 8
27254      FlingForceVariance  = 3
27255      FlingPitch          = 60
27256      FlingPitchVariance  = 10
27257    End
27258    Behavior = SlowDeathBehavior ModuleTag_Death04
27259      DeathTypes          = NONE +BURNED
27260      DestructionDelay    = 0
27261      FX                  = INITIAL FX_GIDie
27262      OCL                 = INITIAL OCL_FlamingInfantry
27263    End
27264    Behavior = SlowDeathBehavior ModuleTag_Death05
27265      DeathTypes          = NONE +POISONED
27266      DestructionDelay    = 0
27267      FX                  = INITIAL FX_GIDie
27268      OCL                 = INITIAL OCL_ToxicInfantry
27269    End
27270  ; --- end Death modules ---
27271  
27272    Geometry = CYLINDER
27273    Scale = 0.95                            ;Scaling
27274    GeometryMajorRadius = 1.0
27275    GeometryMinorRadius = 1.0
27276    GeometryHeight = 8.0
27277  
27278    GeometryIsSmall = Yes
27279    Shadow = SHADOW_DECAL
27280    ShadowSizeX = 9;
27281    ShadowSizeY = 9;
27282    ShadowTexture = ShadowI;
27283    BuildCompletion = APPEARS_AT_RALLY_POINT
27284  End
27285  
27286  ;------------------------------------------------------------------------------
27287  Object CINE_AmericaInfantryBiohazardTech
27288  
27289    ; This unit is by default NOT buildable. In GLA06 this is buildable from the
27290    ; barracks of the enemy AI. (The map.ini file is overridden there make it 
27291    ; buildable = Yes (jkmcd)
27292    Buildable = No
27293  
27294      ; *** ART Parameters ***
27295    Draw = W3DModelDraw ModuleTag_01
27296      OkToChangeModelColor = Yes
27297  
27298      ;NORMAL STANDING
27299      DefaultConditionState
27300        Model = AITECH_SKN
27301        IdleAnimation = AITECH_SKL.AITECH_STA 0 21
27302        ;Regular spice animations
27303        IdleAnimation = AITECH_SKL.AITECH_IDA
27304        IdleAnimation = AITECH_SKL.AITECH_IDB
27305        AnimationMode = ONCE
27306        WeaponLaunchBone = PRIMARY BIOGUNFX
27307        TransitionKey = TRANS_Stand
27308      End
27309  
27310      ; NORMAL ATTACK
27311      ConditionState = FIRING_A
27312        Animation = AITECH_SKL.AITECH_ATA
27313        AnimationMode = LOOP
27314        TransitionKey = TRANS_FiringA
27315      End
27316      AliasConditionState = BETWEEN_FIRING_SHOTS_A
27317      AliasConditionState = RELOADING_A
27318      AliasConditionState = FIRING_A REALLYDAMAGED
27319      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
27320      AliasConditionState = RELOADING_A REALLYDAMAGED
27321  
27322  
27323      ConditionState = MOVING FIRING_A 
27324        Animation = AITECH_SKL.AITECH_WKB 15
27325        AnimationMode = LOOP
27326        Flags = RANDOMSTART
27327        TransitionKey = None
27328        ParticleSysBone     = None InfantryDustTrails
27329      End
27330      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
27331      AliasConditionState = MOVING RELOADING_A
27332  
27333      ConditionState = MOVING
27334        Animation = AITECH_SKL.AITECH_WKA 15
27335        AnimationMode = LOOP
27336        Flags = RANDOMSTART
27337        TransitionKey = None
27338        ParticleSysBone     = None InfantryDustTrails
27339      End
27340  
27341      ConditionState = DYING
27342        Animation = AITECH_SKL.AITECH_DTA
27343        Animation = AITECH_SKL.AITECH_DTB
27344        AnimationMode = ONCE
27345        TransitionKey = TRANS_Dying
27346      End
27347  
27348      TransitionState = TRANS_Dying TRANS_Flailing
27349        Animation = AITECH_SKL.AITECH_ADTD1
27350        AnimationMode = ONCE
27351      End
27352  
27353      ConditionState = DYING EXPLODED_FLAILING
27354        Animation = AITECH_SKL.AITECH_ADTD2
27355        AnimationMode = LOOP
27356        TransitionKey = TRANS_Flailing
27357      End
27358  
27359      ConditionState = DYING EXPLODED_BOUNCING
27360        Animation = AITECH_SKL.AITECH_ADTD3
27361        AnimationMode = ONCE
27362        TransitionKey = None
27363      End
27364  
27365      ConditionState = SPECIAL_CHEERING
27366        Animation = AITECH_SKL.AITECH_CHA
27367        AnimationMode = LOOP
27368      End
27369  
27370      ;PARACHUTING ANIMATIONS
27371      ConditionState = FREEFALL
27372        Animation = AITECH_SKL.AITECH_PFL
27373        AnimationMode = LOOP
27374        TransitionKey = TRANS_Falling
27375      End
27376      AliasConditionState = FREEFALL REALLYDAMAGED
27377      AliasConditionState = FREEFALL DYING
27378      ConditionState = PARACHUTING
27379        Animation = AITECH_SKL.AITECH_PHG
27380        AnimationMode = LOOP
27381        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
27382        TransitionKey = TRANS_Chute
27383      End
27384      AliasConditionState = PARACHUTING REALLYDAMAGED
27385      AliasConditionState = PARACHUTING DYING
27386      TransitionState = TRANS_Falling TRANS_Chute
27387        Animation = AITECH_SKL.AITECH_POP
27388        AnimationMode = ONCE
27389        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
27390      End
27391      TransitionState = TRANS_Chute TRANS_Stand
27392        Animation = AITECH_SKL.AITECH_PDN
27393        AnimationMode = ONCE
27394      End
27395  
27396    End
27397  
27398    ; ***DESIGN parameters ***
27399    DisplayName         = OBJECT:BioHazardTech
27400    Side                = America
27401    EditorSorting       = INFANTRY
27402    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
27403    
27404    WeaponSet 
27405      ;*** Fully automated and driven by the CleanupHazardUpdate ***
27406      Conditions        = None 
27407      Weapon            = PRIMARY BioHazardTechCleanHazardWeapon 
27408      AutoChooseSources = PRIMARY NONE
27409    End
27410    ArmorSet
27411      Conditions      = None
27412      Armor           = HazMatHumanArmor
27413      DamageFX        = InfantryDamageFX
27414    End
27415  
27416    VisionRange = 100
27417    ShroudClearingRange = 400
27418    Prerequisites
27419      Object = AmericaBarracks
27420    End
27421    BuildCost = 200
27422    BuildTime = 5.0          ;in seconds  
27423    
27424    ExperienceValue = 50 100 150 400    ;Experience point value at each level
27425    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
27426    IsTrainable = Yes             ;Can gain experience
27427    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
27428    CommandSet          = AmericaInfantryHazMatCommandSet
27429  
27430    ; *** AUDIO Parameters ***
27431    VoiceSelect   = NoSound
27432    VoiceMove     = NoSound
27433    VoiceAttack   = NoSound
27434    SoundDie      = RebelVoiceDie
27435    UnitSpecificFX
27436      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
27437    End
27438  
27439    ; *** ENGINEERING Parameters ***
27440    RadarPriority = UNIT
27441    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
27442  
27443    Body = ActiveBody ModuleTag_02
27444  
27445      MaxHealth       = 100.0
27446      InitialHealth   = 100.0
27447    End
27448  
27449    Behavior = CleanupHazardUpdate ModuleTag_03
27450      WeaponSlot            = PRIMARY
27451      ScanRate              = 1000
27452      ScanRange             = 100.0
27453    End
27454  
27455    ;Can be ordered to clean up a larger area with the ability to move around at an extended range.
27456    Behavior = CleanupAreaPower ModuleTag_04
27457      SpecialPowerTemplate          = SpecialAbilityAmbulanceCleanupArea
27458      MaxMoveDistanceFromLocation   = 300.0 ;allows the unit to move around while cleaning up
27459    End
27460  
27461    Behavior = AIUpdateInterface ModuleTag_05
27462      AutoAcquireEnemiesWhenIdle = No
27463    End
27464    Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
27465      ScanRate = 1000 ; once a second.
27466      ScanRange = 300 ;
27467      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
27468      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
27469    End
27470  
27471    Locomotor = SET_NORMAL CINE_HazMatHumanLocomotor
27472  
27473    Behavior = ExperienceScalarUpgrade ModuleTag_07
27474      TriggeredBy = Upgrade_AmericaAdvancedTraining
27475      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
27476    End
27477  
27478    Behavior = PhysicsBehavior ModuleTag_08
27479      Mass = 5.0
27480    End
27481    Behavior = ProductionUpdate ModuleTag_09
27482      ; nothing
27483    End
27484  
27485    Behavior = SquishCollide ModuleTag_10
27486      ;nothing
27487    End
27488  
27489  ; --- begin Death modules ---
27490    Behavior = SlowDeathBehavior ModuleTag_Death01
27491      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
27492      SinkDelay           = 3000
27493      SinkRate            = 0.5     ; in Dist/Sec
27494      DestructionDelay    = 8000
27495      FX                  = INITIAL FX_GIDie
27496    End
27497    Behavior = SlowDeathBehavior ModuleTag_Death02
27498      DeathTypes          = NONE +CRUSHED +SPLATTED
27499      SinkDelay           = 3000
27500      SinkRate            = 0.5     ; in Dist/Sec
27501      DestructionDelay    = 8000
27502      FX                  = INITIAL FX_GIDieCrushed
27503    End
27504    Behavior = SlowDeathBehavior ModuleTag_Death03
27505      DeathTypes          = NONE +EXPLODED
27506      SinkDelay           = 3000
27507      SinkRate            = 0.5     ; in Dist/Sec
27508      DestructionDelay    = 8000
27509      FX                  = INITIAL FX_GIDie
27510      FlingForce          = 8
27511      FlingForceVariance  = 3
27512      FlingPitch          = 60
27513      FlingPitchVariance  = 10
27514    End
27515    Behavior = SlowDeathBehavior ModuleTag_Death04
27516      DeathTypes          = NONE +BURNED
27517      DestructionDelay    = 0
27518      FX                  = INITIAL FX_GIDie
27519      OCL                 = INITIAL OCL_FlamingInfantry
27520    End
27521    Behavior = SlowDeathBehavior ModuleTag_Death05
27522      DeathTypes          = NONE +POISONED
27523      DestructionDelay    = 0
27524      FX                  = INITIAL FX_GIDie
27525      OCL                 = INITIAL OCL_ToxicInfantry
27526    End
27527  ; --- end Death modules ---
27528  
27529    Geometry = CYLINDER
27530    Scale = 0.95                            ;Scaling
27531    GeometryMajorRadius = 1.0
27532    GeometryMinorRadius = 1.0
27533    GeometryHeight = 8.0
27534  
27535    GeometryIsSmall = Yes
27536    Shadow = SHADOW_DECAL
27537    ShadowSizeX = 9;
27538    ShadowSizeY = 9;
27539    ShadowTexture = ShadowI;
27540    BuildCompletion = APPEARS_AT_RALLY_POINT
27541  End
27542  
27543  ;------------------------------------------------------------------------------
27544  ;
27545  ;
27546  ; Jason Bender sez:
27547  ; This unit is used in a mission for "color".
27548  ; This unit is never human-controllable!
27549  ;
27550  Object ChinaInfantryOfficer
27551  
27552      ; *** ART Parameters ***
27553    Draw = W3DModelDraw ModuleTag_01
27554      OkToChangeModelColor = Yes
27555  
27556      ;NORMAL STANDING
27557      DefaultConditionState
27558        Model = NIOFCR_SKN
27559        IdleAnimation = NIOFCR_SKL.NIOFCR_STA 0 21
27560        ;Regular spice animations
27561        IdleAnimation = NIOFCR_SKL.NIOFCR_IDA
27562        IdleAnimation = NIOFCR_SKL.NIOFCR_IDB
27563        AnimationMode = ONCE
27564        WeaponFireFXBone = PRIMARY Muzzle
27565        WeaponMuzzleFlash = PRIMARY MuzzleFX
27566        TransitionKey = TRANS_STAND
27567      End
27568  
27569      ConditionState    = MOVING
27570        Animation       = NIOFCR_SKL.NIOFCR_RNA
27571        AnimationMode   = LOOP
27572        ParticleSysBone     = None InfantryDustTrails
27573      End
27574  
27575      ; NORMAL ATTACK
27576      ;--------------------------------------------------------
27577      ; Drawing gun
27578      ConditionState  = PREATTACK_A
27579        Animation     = NIOFCR_SKL.NIOFCR_ATAST
27580        AnimationMode = ONCE
27581      End
27582      AliasConditionState = PREATTACK_A MOVING
27583      AliasConditionState = PREATTACK_A FIRING_A
27584      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
27585  
27586      ; Firing gun
27587      ConditionState  = FIRING_A
27588        Animation     = NIOFCR_SKL.NIOFCR_ATALP
27589        AnimationMode = LOOP
27590        TransitionKey = TRANS_FIRING_A
27591      End
27592      ConditionState  = BETWEEN_FIRING_SHOTS_A
27593        Animation     = NIOFCR_SKL.NIOFCR_ATALP
27594        AnimationMode = LOOP
27595        TransitionKey = TRANS_FIRING_A
27596      End
27597      AliasConditionState = RELOADING_A
27598      AliasConditionState = MOVING FIRING_A
27599      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
27600      AliasConditionState = MOVING RELOADING_A
27601  
27602      ; This transition allows him to put his gun away when he's finished attacking.
27603      TransitionState = TRANS_FIRING_A TRANS_STAND
27604        Animation     = NIOFCR_SKL.NIOFCR_ATAED
27605        AnimationMode = ONCE
27606      End
27607      ;--------------------------------------------------------
27608  
27609      ConditionState  = DYING
27610        Animation     = NIOFCR_SKL.NIOFCR_DTA
27611        Animation     = NIOFCR_SKL.NIOFCR_DTB
27612        AnimationMode = ONCE
27613        TransitionKey = TRANS_Dying
27614      End
27615  
27616      TransitionState = TRANS_Dying TRANS_Flailing
27617        Animation = NIOFCR_SKL.NIOFCR_ADTE1
27618        AnimationMode = ONCE
27619      End
27620  
27621      ConditionState = DYING EXPLODED_FLAILING
27622        Animation = NIOFCR_SKL.NIOFCR_ADTE2
27623        AnimationMode = LOOP
27624        TransitionKey = TRANS_Flailing
27625      End
27626  
27627      ConditionState = DYING EXPLODED_BOUNCING
27628        Animation = NIOFCR_SKL.NIOFCR_ADTE3
27629        AnimationMode = ONCE
27630        TransitionKey = None
27631      End
27632  
27633      ConditionState  = SPECIAL_CHEERING
27634        Animation     = NIOFCR_SKL.NIOFCR_CHA
27635        AnimationMode = LOOP
27636      End
27637  
27638      ;PARACHUTING ANIMATIONS
27639  
27640      ;@TODO - MISSING ANIMATION FILE
27641      ;ConditionState   = FREEFALL
27642      ;  Animation      = NIOFCR_SKL.NIOFCR_PFL
27643      ;  AnimationMode  = LOOP
27644      ;  TransitionKey  = TRANS_Falling
27645      ;End
27646      ;AliasConditionState = FREEFALL REALLYDAMAGED
27647      ;AliasConditionState = FREEFALL DYING
27648      ConditionState  = PARACHUTING
27649        Animation     = NIOFCR_SKL.NIOFCR_PHG
27650        AnimationMode = LOOP
27651        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
27652        TransitionKey = TRANS_Chute
27653      End
27654      AliasConditionState = PARACHUTING REALLYDAMAGED
27655      AliasConditionState = PARACHUTING DYING
27656      TransitionState = TRANS_Falling TRANS_Chute
27657        Animation     = NIOFCR_SKL.NIOFCR_POP
27658        AnimationMode = ONCE
27659        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
27660      End
27661      TransitionState = TRANS_Chute TRANS_STAND
27662        Animation     = NIOFCR_SKL.NIOFCR_PTD
27663        AnimationMode = ONCE
27664      End
27665  
27666    End
27667  
27668    ; ***DESIGN parameters ***
27669    DisplayName      = OBJECT:Officer
27670    Side = America
27671    EditorSorting = INFANTRY
27672    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
27673    WeaponSet
27674      Conditions = None 
27675      Weapon = PRIMARY AmericaOfficerMachineGun
27676    End
27677    ArmorSet
27678      Conditions      = None
27679      Armor           = HumanArmor
27680      DamageFX        = InfantryDamageFX
27681    End
27682    VisionRange = 150
27683    ShroudClearingRange = 150
27684    Prerequisites
27685      Object = AmericaBarracks
27686      Object = USAAdvLab
27687      Science = SCIENCE_StealthFighter
27688    End
27689  
27690    BuildCost     = 1000
27691    BuildTime     = 30.0          ;in seconds      
27692  
27693    ; *** AUDIO Parameters ***
27694    VoiceSelect = RedGuardVoiceSelect
27695    VoiceGroupSelect = BattleCrySound
27696    VoiceMove = RedGuardVoiceMove
27697    VoiceAttack = RedGuardVoiceAttack
27698    SoundDie = RedGuardVoiceDie
27699    SoundDieFire = DieByFireChina
27700    SoundDieToxin = DieByToxinChina
27701  
27702    ; *** ENGINEERING Parameters ***
27703    RadarPriority = UNIT
27704    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY 
27705    Body = ActiveBody ModuleTag_02
27706      MaxHealth       = 100.0
27707      InitialHealth   = 100.0
27708    End
27709  
27710    Behavior = AIUpdateInterface ModuleTag_03
27711      AutoAcquireEnemiesWhenIdle = Yes
27712    End
27713    Locomotor = SET_NORMAL BasicHumanLocomotor
27714    Behavior = PhysicsBehavior ModuleTag_04
27715      Mass = 5.0
27716    End
27717   
27718    Behavior = SquishCollide ModuleTag_06
27719      ;nothing
27720    End
27721    Behavior = AIUpdateInterface ModuleTag_03
27722      AutoAcquireEnemiesWhenIdle = no Stealthed
27723      MoodAttackCheckRate        = 250
27724    End
27725  
27726    Behavior = HackInternetAIUpdate ModuleTag_03
27727      UnpackTime          = 7300 ;animation time is 7300 (changing this will scale anim speed)
27728      PackTime            = 5133 ;animation time is 5133 (changing this will scale anim speed)
27729      CashUpdateDelay     = 20000
27730      RegularCashAmount   = 5
27731      VeteranCashAmount   = 6
27732      EliteCashAmount     = 8
27733      HeroicCashAmount    = 10
27734      XpPerCashUpdate     = 1
27735      PackUnpackVariationFactor = 0.5 ;Adds + or - 20% to pack and unpack time randomly.
27736    End
27737  
27738    Behavior = StealthDetectorUpdate ModuleTag_08
27739      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
27740      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
27741      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
27742      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
27743    End
27744  
27745    Behavior = StealthUpdate ModuleTag_07
27746      StealthDelay                = 2500 ; msec
27747      StealthForbiddenConditions  = USING_ABILITY
27748      HintDetectableConditions    = USING_ABILITY
27749      InnateStealth               = Yes
27750      OrderIdleEnemiesToAttackMeUponReveal  = Yes
27751    End
27752  
27753    Behavior = SpecialAbility ModuleTag_04
27754      SpecialPowerTemplate = SpecialAbilityHackerDisableBuilding
27755      UpdateModuleStartsAttack = Yes
27756      InitiateSound         = HackerVoiceHack
27757    End
27758  
27759    Behavior = SpecialAbilityUpdate ModuleTag_05
27760      SpecialPowerTemplate = SpecialAbilityHackerDisableBuilding
27761      StartAbilityRange = 150.0
27762      UnpackTime      = 1000 ;animation time is 7300 (changing this will scale anim speed)
27763      PackTime        = 1000 ;animation time is 5133 (changing this will scale anim speed)
27764      PreparationTime = 7000
27765  
27766      ;PersistentPrepTime = 500 ; old setting
27767      PersistentPrepTime = 333 ; NOTE! This drives how often the disable effect gets triggered
27768                               ; This is also how often a new particle system effect is spawned
27769      EffectDuration = 30000
27770      SpecialObject = BinaryDataStream
27771      DisableFXParticleSystem = DisabledEffectBinaryShower0
27772      PackSound       = HackerPack
27773      UnpackSound     = HackerUnpack
27774      PrepSoundLoop   = HackerPrepLoop
27775      AwardXPForTriggering  = 0    ;Careful, this is persistant so it's a DoT xp gain!
27776      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
27777    End
27778  
27779  
27780    Behavior = PhysicsBehavior ModuleTag_06
27781      Mass = 5.0
27782    End
27783  
27784    Behavior = SquishCollide ModuleTag_08
27785      ;nothing
27786    End
27787  
27788    Behavior = SpecialAbility ModuleTag_07
27789      SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack
27790      UpdateModuleStartsAttack = Yes
27791      InitiateSound = TankHunterVoiceTNT
27792    End
27793    Behavior = SpecialAbilityUpdate ModuleTag_08
27794      SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack
27795      StartAbilityRange = 5.0
27796      PreparationTime = 0
27797      SpecialObject = TNTStickyBomb
27798      MaxSpecialObjects = 8
27799      SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
27800      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
27801      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
27802      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
27803    End
27804  
27805  
27806  
27807  ; --- begin Death modules ---
27808    Behavior = SlowDeathBehavior ModuleTag_Death01
27809      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
27810      SinkDelay           = 50000
27811      SinkRate            = 0.5     ; in Dist/Sec
27812      DestructionDelay    = 8000000
27813      FX                  = INITIAL FX_GIDie
27814    End
27815    Behavior = SlowDeathBehavior ModuleTag_Death02
27816      DeathTypes          = NONE +CRUSHED +SPLATTED
27817      SinkDelay           = 50000
27818      SinkRate            = 0.5     ; in Dist/Sec
27819      DestructionDelay    = 8000000
27820      FX                  = INITIAL FX_GIDieCrushed
27821    End
27822    Behavior = SlowDeathBehavior ModuleTag_Death03
27823      DeathTypes          = NONE +EXPLODED
27824      SinkDelay           = 50000
27825      SinkRate            = 0.5     ; in Dist/Sec
27826      DestructionDelay    = 8000000
27827      FX                  = INITIAL FX_GIDie
27828      FlingForce          = 8
27829      FlingForceVariance  = 3
27830      FlingPitch          = 60
27831      FlingPitchVariance  = 10
27832    End
27833    Behavior = SlowDeathBehavior ModuleTag_Death04
27834      DeathTypes          = NONE +BURNED
27835      DestructionDelay    = 0
27836      FX                  = INITIAL FX_GIDie
27837      OCL                 = INITIAL OCL_FlamingInfantry
27838    End
27839    Behavior = SlowDeathBehavior ModuleTag_Death05
27840      DeathTypes          = NONE +POISONED
27841      DestructionDelay    = 0
27842      FX                  = INITIAL FX_GIDie
27843      OCL                 = INITIAL OCL_ 
27844    End
27845  ; --- end Death modules ---
27846  
27847    Behavior = PoisonedBehavior ModuleTag_09
27848      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
27849      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
27850    End
27851   
27852    Geometry = CYLINDER
27853    Scale = 0.95                            ;Scaling
27854    GeometryMajorRadius = 1.0
27855    GeometryMinorRadius = 1.0
27856    GeometryHeight = 8.0
27857    GeometryIsSmall = Yes
27858    Shadow = SHADOW_DECAL
27859    ShadowSizeX = 9;
27860    ShadowSizeY = 9;
27861    ShadowTexture = ShadowI;
27862    BuildCompletion = APPEARS_AT_RALLY_POINT
27863  
27864  End
27865  
27866  ;------------------------------------------------------------------------------
27867  ;
27868  ; ??? This unit is used in a mission for "color".
27869  ; This unit is never human-controllable!
27870  ;
27871  Object AmericaInfantryOfficer
27872      ; *** ART Parameters ***
27873    Draw = W3DModelDraw ModuleTag_01
27874      OkToChangeModelColor = Yes
27875  
27876      ;NORMAL STANDING
27877      DefaultConditionState
27878        Model = AIOFCR_SKN
27879        IdleAnimation = AIOFCR_SKL.AIOFCR_STA 0 21
27880        ;Regular spice animations
27881        IdleAnimation = AIOFCR_SKL.AIOFCR_IDA
27882        IdleAnimation = AIOFCR_SKL.AIOFCR_IDB
27883        AnimationMode = ONCE
27884        WeaponFireFXBone = PRIMARY Muzzle
27885        WeaponMuzzleFlash = PRIMARY MuzzleFX
27886        TransitionKey = TRANS_STAND
27887      End
27888  
27889      ConditionState    = MOVING
27890        Animation       = AIOFCR_SKL.AIOFCR_RNA
27891        AnimationMode   = LOOP
27892        ParticleSysBone     = None InfantryDustTrails
27893      End
27894  
27895      ; NORMAL ATTACK
27896      ;--------------------------------------------------------
27897      ; Drawing gun
27898      ConditionState  = PREATTACK_A
27899        Animation     = AIOFCR_SKL.AIOFCR_ATAST
27900        AnimationMode = ONCE
27901      End
27902      AliasConditionState = PREATTACK_A MOVING
27903      AliasConditionState = PREATTACK_A FIRING_A
27904      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
27905  
27906      ; Firing gun
27907      ConditionState  = FIRING_A
27908        Animation     = AIOFCR_SKL.AIOFCR_ATALP
27909        AnimationMode = LOOP
27910        TransitionKey = TRANS_FIRING_A
27911      End
27912      ConditionState  = BETWEEN_FIRING_SHOTS_A
27913        Animation     = AIOFCR_SKL.AIOFCR_ATALP
27914        AnimationMode = LOOP
27915        TransitionKey = TRANS_FIRING_A
27916      End
27917      AliasConditionState = RELOADING_A
27918      AliasConditionState = MOVING FIRING_A
27919      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
27920      AliasConditionState = MOVING RELOADING_A
27921  
27922      ; This transition allows him to put his gun away when he's finished attacking.
27923      TransitionState = TRANS_FIRING_A TRANS_STAND
27924        Animation     = AIOFCR_SKL.AIOFCR_ATAED
27925        AnimationMode = ONCE
27926      End
27927      ;--------------------------------------------------------
27928  
27929      ConditionState  = DYING
27930        Animation     = AIOFCR_SKL.AIOFCR_DTA
27931        Animation     = AIOFCR_SKL.AIOFCR_DTB
27932        AnimationMode = ONCE
27933        TransitionKey = TRANS_Dying
27934      End
27935  
27936      TransitionState = TRANS_Dying TRANS_Flailing
27937        Animation = AIOFCR_SKL.AIOFCR_ADTE1
27938        AnimationMode = ONCE
27939      End
27940  
27941      ConditionState = DYING EXPLODED_FLAILING
27942        Animation = AIOFCR_SKL.AIOFCR_ADTE2
27943        AnimationMode = LOOP
27944        TransitionKey = TRANS_Flailing
27945      End
27946  
27947      ConditionState = DYING EXPLODED_BOUNCING
27948        Animation = AIOFCR_SKL.AIOFCR_ADTE3
27949        AnimationMode = ONCE
27950        TransitionKey = None
27951      End
27952  
27953      ConditionState  = SPECIAL_CHEERING
27954        Animation     = AIOFCR_SKL.AIOFCR_CHA
27955        AnimationMode = LOOP
27956      End
27957  
27958      ;PARACHUTING ANIMATIONS
27959  
27960      ;@TODO - MISSING ANIMATION FILE
27961      ;ConditionState   = FREEFALL
27962      ;  Animation      = AIOFCR_SKL.AIOFCR_PFL
27963      ;  AnimationMode  = LOOP
27964      ;  TransitionKey  = TRANS_Falling
27965      ;End
27966      ;AliasConditionState = FREEFALL REALLYDAMAGED
27967      ;AliasConditionState = FREEFALL DYING
27968      ConditionState  = PARACHUTING
27969        Animation     = AIOFCR_SKL.AIOFCR_PHG
27970        AnimationMode = LOOP
27971        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
27972        TransitionKey = TRANS_Chute
27973  
27974      End
27975      AliasConditionState = PARACHUTING REALLYDAMAGED
27976      AliasConditionState = PARACHUTING DYING
27977      TransitionState = TRANS_Falling TRANS_Chute
27978        Animation     = AIOFCR_SKL.AIOFCR_POP
27979        AnimationMode = ONCE
27980        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
27981      End
27982      TransitionState = TRANS_Chute TRANS_Stand
27983        Animation     = AIOFCR_SKL.AIOFCR_PTD
27984        AnimationMode = ONCE
27985      End
27986  
27987    End
27988  
27989    ; ***DESIGN parameters ***
27990    DisplayName      = OBJECT:Officer
27991    Side = America
27992    EditorSorting = INFANTRY
27993    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
27994    WeaponSet
27995      Conditions = None 
27996      Weapon = PRIMARY AmericaOfficerMachineGun
27997    End
27998    ArmorSet
27999      Conditions      = None
28000      Armor           = HumanArmor
28001      DamageFX        = InfantryDamageFX
28002    End
28003    VisionRange = 150
28004    ShroudClearingRange = 150
28005  
28006    BuildCost     = 400
28007    BuildTime     = 10.0          ;in seconds      
28008  
28009    ; *** AUDIO Parameters ***
28010    VoiceSelect = RangerVoiceSelect
28011    VoiceGroupSelect = BattleCrySound
28012    VoiceMove = RangerVoiceMove
28013    VoiceAttack = RangerVoiceAttack
28014    SoundDie = RangerVoiceDie
28015    SoundDieFire = DieByFireUSA
28016    SoundDieToxin = DieByToxinChina
28017  
28018    ; *** ENGINEERING Parameters ***
28019    RadarPriority = UNIT
28020    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
28021  
28022    Body = ActiveBody ModuleTag_02
28023      MaxHealth       = 100.0
28024      InitialHealth   = 100.0
28025    End
28026  
28027    Behavior = AIUpdateInterface ModuleTag_03
28028      AutoAcquireEnemiesWhenIdle = Yes
28029    End
28030    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
28031      ScanRate = 1000 ; once a second.
28032      ScanRange = 300 ;
28033      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
28034      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
28035    End
28036  
28037    Locomotor = SET_NORMAL BasicHumanLocomotor
28038    Behavior = PhysicsBehavior ModuleTag_05
28039      Mass = 5.0
28040    End
28041   
28042    Behavior = SquishCollide ModuleTag_07
28043      ;nothing
28044    End
28045  
28046  ; --- begin Death modules ---
28047    Behavior = SlowDeathBehavior ModuleTag_Death01
28048      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
28049      SinkDelay           = 3000
28050      SinkRate            = 0.5     ; in Dist/Sec
28051      DestructionDelay    = 8000
28052      FX                  = INITIAL FX_GIDie
28053    End
28054    Behavior = SlowDeathBehavior ModuleTag_Death02
28055      DeathTypes          = NONE +CRUSHED +SPLATTED
28056      SinkDelay           = 3000
28057      SinkRate            = 0.5     ; in Dist/Sec
28058      DestructionDelay    = 8000
28059      FX                  = INITIAL FX_GIDieCrushed
28060    End
28061    Behavior = SlowDeathBehavior ModuleTag_Death03
28062      DeathTypes          = NONE +EXPLODED
28063      SinkDelay           = 3000
28064      SinkRate            = 0.5     ; in Dist/Sec
28065      DestructionDelay    = 8000
28066      FX                  = INITIAL FX_GIDie
28067      FlingForce          = 8
28068      FlingForceVariance  = 3
28069      FlingPitch          = 60
28070      FlingPitchVariance  = 10
28071    End
28072    Behavior = SlowDeathBehavior ModuleTag_Death04
28073      DeathTypes          = NONE +BURNED
28074      DestructionDelay    = 0
28075      FX                  = INITIAL FX_GIDie
28076      OCL                 = INITIAL OCL_FlamingInfantry
28077    End
28078    Behavior = SlowDeathBehavior ModuleTag_Death05
28079      DeathTypes          = NONE +POISONED
28080      DestructionDelay    = 0
28081      FX                  = INITIAL FX_GIDie
28082      OCL                 = INITIAL OCL_ToxicInfantry
28083    End
28084  ; --- end Death modules ---
28085  
28086    Behavior = PoisonedBehavior ModuleTag_10
28087      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
28088      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
28089    End
28090   
28091    Geometry = CYLINDER
28092    Scale = 0.95                            ;Scaling
28093    GeometryMajorRadius = 1.0
28094    GeometryMinorRadius = 1.0
28095    GeometryHeight = 8.0
28096    GeometryIsSmall = Yes
28097    Shadow = SHADOW_DECAL
28098    ShadowSizeX = 9;
28099    ShadowSizeY = 9;
28100    ShadowTexture = ShadowI;
28101    BuildCompletion = APPEARS_AT_RALLY_POINT
28102  
28103  End
28104  
28105  
28106  ;------------------------------------------------------------------------------
28107  Object AmericaInfantrySecretService
28108  
28109      ; *** ART Parameters ***
28110    Draw = W3DModelDraw ModuleTag_01
28111      OkToChangeModelColor = Yes
28112  
28113      DefaultConditionState
28114        Model = AISSRV_SKN
28115        IdleAnimation = AISSRV_SKL.AISSRV_STA
28116        AnimationMode = ONCE
28117        TransitionKey = TRANS_Stand
28118      End
28119    End
28120  
28121    ; ***DESIGN parameters ***
28122    DisplayName      = OBJECT:BioHazardTech
28123    Side = America
28124    EditorSorting = INFANTRY
28125    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
28126    WeaponSet
28127      Conditions = None 
28128      Weapon = PRIMARY None
28129    End
28130    ArmorSet
28131      Conditions      = None
28132      Armor           = HumanArmor
28133      DamageFX        = InfantryDamageFX
28134    End
28135    VisionRange = 150
28136    ShroudClearingRange = 150
28137    Prerequisites
28138      Object = AmericaBarracks
28139    End
28140    BuildCost = 100
28141    BuildTime = 1.0          ;in seconds    
28142  
28143    ; *** AUDIO Parameters ***
28144    VoiceSelect = RangerVoiceSelect
28145    VoiceMove = RangerVoiceMove
28146    VoiceAttack = RangerVoiceAttack
28147    SoundDie = RangerVoiceDie
28148    SoundDieFire = DieByFireUSA
28149    SoundDieToxin = DieByToxinUSA
28150  
28151    ; *** ENGINEERING Parameters ***
28152    RadarPriority = UNIT
28153    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
28154  
28155    Body = ActiveBody ModuleTag_02
28156      MaxHealth       = 50.0
28157      InitialHealth   = 50.0
28158    End
28159  
28160    Behavior = AIUpdateInterface ModuleTag_03
28161      AutoAcquireEnemiesWhenIdle = Yes
28162    End
28163    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
28164      ScanRate = 1000 ; once a second.
28165      ScanRange = 300 ;
28166      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
28167      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
28168    End
28169  
28170    Locomotor = SET_NORMAL BasicHumanLocomotor
28171    Behavior = PhysicsBehavior ModuleTag_05
28172      Mass = 5.0
28173    End
28174    Behavior = SlowDeathBehavior ModuleTag_06
28175      SinkDelay = 3000
28176      SinkRate = 0.5     ; in Dist/Sec
28177      DestructionDelay = 8000
28178    End
28179  
28180    Behavior = ExperienceScalarUpgrade ModuleTag_07
28181      TriggeredBy = Upgrade_AmericaAdvancedTraining
28182      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
28183    End
28184   
28185    Behavior = SquishCollide ModuleTag_08
28186      ;nothing
28187    End
28188  
28189  
28190    Behavior = FXListDie ModuleTag_09
28191      DeathTypes = ALL -CRUSHED -SPLATTED
28192      DeathFX = FX_GIDie
28193    End
28194    Behavior = FXListDie ModuleTag_10
28195      DeathTypes = NONE +CRUSHED +SPLATTED
28196      DeathFX = FX_GIDieCrushed
28197    End
28198  
28199    Behavior = PoisonedBehavior ModuleTag_11
28200      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
28201      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
28202    End
28203   
28204    Geometry = CYLINDER
28205    Scale = 0.95                            ;Scaling
28206    GeometryMajorRadius = 1.0
28207    GeometryMinorRadius = 1.0
28208    GeometryHeight = 8.0
28209    GeometryIsSmall = Yes
28210    Shadow = SHADOW_DECAL
28211    ShadowSizeX = 9;
28212    ShadowSizeY = 9;
28213    ShadowTexture = ShadowI;
28214    BuildCompletion = APPEARS_AT_RALLY_POINT
28215  
28216  End
28217  
28218  ;------------------------------------------------------------------------------
28219  ;
28220  ; ??? This unit is used in a mission for "color".
28221  ; This unit is never human-controllable!
28222  ; @todo srj -- is this used for ANYTHING?
28223  ;
28224  Object ChinaInfantryAgent
28225  
28226      ; *** ART Parameters ***
28227    Draw = W3DModelDraw ModuleTag_01
28228      OkToChangeModelColor = Yes
28229  
28230      ;NORMAL STANDING
28231      DefaultConditionState
28232        Model = AIRngr_SKN
28233        IdleAnimation = AIRngr_SKL.AIRngr_STA 0 21
28234        ;Regular spice animations
28235        IdleAnimation = AIRngr_SKL.AIRngr_IDA
28236        IdleAnimation = AIRngr_SKL.AIRngr_IDB
28237        AnimationMode = ONCE
28238        WeaponFireFXBone = PRIMARY Muzzle
28239        WeaponMuzzleFlash = PRIMARY MuzzleFX
28240        TransitionKey = TRANS_Stand
28241      End
28242  
28243      ; NORMAL ATTACK (Cutting fence via wirecutters)
28244      ConditionState = PREATTACK_A 
28245        Animation = AIRngr_SKL.AIRngr_ATA
28246        AnimationMode = ONCE
28247        TransitionKey = TRANS_FiringA
28248      End
28249      AliasConditionState = FIRING_A
28250      AliasConditionState = BETWEEN_FIRING_SHOTS_A
28251      AliasConditionState = RELOADING_A
28252      AliasConditionState = MOVING FIRING_A
28253      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
28254      AliasConditionState = MOVING RELOADING_A
28255      AliasConditionState = FIRING_A REALLYDAMAGED
28256      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
28257      AliasConditionState = RELOADING_A REALLYDAMAGED
28258  
28259      ; SECONDARY ATTACK (Flash-bang grenades)
28260      ConditionState = FIRING_B 
28261        Animation = AIRngr_SKL.AIRngr_ATB 
28262        AnimationMode = ONCE
28263        WeaponFireFXBone = SECONDARY Muzzle
28264        WeaponLaunchBone = SECONDARY Muzzle
28265        TransitionKey = TRANS_FiringB
28266      End
28267  
28268      AliasConditionState = BETWEEN_FIRING_SHOTS_B
28269      AliasConditionState = RELOADING_B
28270  
28271      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
28272      AliasConditionState = MOVING FIRING_B
28273      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
28274      AliasConditionState = MOVING RELOADING_B
28275  
28276      ConditionState = MOVING
28277        Animation = AIRngr_SKL.AIRngr_RNA 15
28278        AnimationMode = LOOP
28279        Flags = RANDOMSTART
28280        TransitionKey = None
28281        ParticleSysBone     = None InfantryDustTrails
28282      End
28283  
28284      ConditionState = MOVING REALLYDAMAGED
28285        ;
28286        ; there is a new, optional number following the animation...
28287        ; it represents the distance that a single loop the animation would
28288        ; cover. (ie, maybe it has the solder taking three strides, for a 
28289        ; distance of 30 or so)
28290        ;
28291        ; how to tweak the number:
28292        ;   -- "skidding"?          reduce the number
28293        ;   -- "running in place"?  increase the number
28294        ;
28295        ; note that playing animations at abormal speeds may look odd in some cases.
28296        ; (e.g., a "limping" animation played too fast looks really odd.)
28297        ;
28298        Animation = AIRngr_SKL.AIRngr_RNB 30
28299        AnimationMode = LOOP
28300        Flags = RANDOMSTART
28301        TransitionKey = None
28302        ParticleSysBone     = None InfantryDustTrails
28303      End
28304  
28305      ConditionState = DYING
28306        Animation = AIRngr_SKL.AIRngr_DTA
28307        Animation = AIRngr_SKL.AIRngr_DTB
28308        AnimationMode = ONCE
28309        TransitionKey = None
28310      End
28311  
28312      ConditionState = SPECIAL_CHEERING
28313        Animation = AIRngr_SKL.AIRngr_CHA
28314        AnimationMode = LOOP
28315      End
28316  
28317      ;PARACHUTING ANIMATIONS
28318      ConditionState = FREEFALL
28319        Animation = AIRngr_SKL.AIRngr_PFL
28320        AnimationMode = LOOP
28321        TransitionKey = TRANS_Falling
28322      End
28323      AliasConditionState = FREEFALL REALLYDAMAGED
28324      AliasConditionState = FREEFALL DYING
28325      ConditionState = PARACHUTING
28326        Animation = AIRngr_SKL.AIRngr_PHG
28327        AnimationMode = LOOP
28328        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
28329        TransitionKey = TRANS_Chute
28330      End
28331      AliasConditionState = PARACHUTING REALLYDAMAGED
28332      AliasConditionState = PARACHUTING DYING
28333      TransitionState = TRANS_Falling TRANS_Chute
28334        Animation = AIRngr_SKL.AIRngr_POP
28335        AnimationMode = ONCE
28336        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
28337      End
28338      TransitionState = TRANS_Chute TRANS_Stand
28339        Animation = AIRngr_SKL.AIRngr_PTD
28340        AnimationMode = ONCE
28341      End
28342  
28343      ; RAPPELLING ANIMATIONS
28344      ConditionState = RAPPELLING
28345        Animation = AIRngr_SKL.AIRngr_RPL1 ;30
28346        AnimationMode = LOOP
28347        Flags = RANDOMSTART
28348        TransitionKey = TRANS_Rappelling
28349      End
28350      AliasConditionState = MOVING RAPPELLING
28351  
28352      TransitionState = TRANS_Rappelling TRANS_Stand
28353        Animation = AIRngr_SKL.AIRngr_RPL2
28354        AnimationMode = ONCE
28355      End
28356  
28357    End
28358  
28359    ; ***DESIGN parameters ***
28360    DisplayName      = OBJECT:Agent
28361    Side = China
28362    EditorSorting = INFANTRY
28363    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
28364    WeaponSet
28365      Conditions = None 
28366      Weapon = PRIMARY RedguardMachineGun
28367    End
28368  ; sorry, no stun bullets, cut for this version (srj)
28369  ;  WeaponSet
28370  ;    Conditions = PLAYER_UPGRADE
28371  ;    Weapon = PRIMARY RedguardStunBulletsMachineGun
28372  ;  End
28373    ArmorSet
28374      Conditions      = None
28375      Armor           = HumanArmor
28376      DamageFX        = InfantryDamageFX
28377    End
28378    VisionRange = 150
28379    ShroudClearingRange = 150
28380    Prerequisites
28381      Object = ChinaBarracks
28382      Object = ChinaPropagandaCenter
28383    End
28384  
28385    BuildCost     = 600
28386    BuildTime     = 20.0          ;in seconds      
28387  
28388    ExperienceValue = 50 100 150 400    ;Experience point value at each level
28389    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
28390    IsTrainable = Yes             ;Can gain experience
28391  
28392    ; *** AUDIO Parameters ***
28393    VoiceSelect = RedGuardVoiceSelect
28394    VoiceGroupSelect = BattleCrySound
28395    VoiceMove = RedGuardVoiceMove
28396    VoiceAttack = RedGuardVoiceAttack
28397    SoundDie = RedGuardVoiceDie
28398    SoundDieFire = DieByFireChina
28399    SoundDieToxin = DieByToxinChina
28400  
28401    ; *** ENGINEERING Parameters ***
28402    RadarPriority = UNIT
28403    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
28404  
28405    Body = ActiveBody ModuleTag_02
28406      MaxHealth       = 100.0
28407      InitialHealth   = 100.0
28408    End
28409  
28410    Behavior = VeterancyGainCreate ModuleTag_03
28411      StartingLevel = VETERAN
28412    End
28413  
28414    Behavior = StealthUpdate ModuleTag_04
28415      StealthDelay                = 2000 ; msec
28416      StealthForbiddenConditions  = ATTACKING
28417      FriendlyOpacityMin          = 50.0%
28418      InnateStealth               = Yes
28419      OrderIdleEnemiesToAttackMeUponReveal  = Yes
28420    End
28421  
28422    Behavior = AIUpdateInterface ModuleTag_05
28423      AutoAcquireEnemiesWhenIdle = Yes
28424    End
28425    Locomotor = SET_NORMAL BasicHumanLocomotor
28426    Behavior = PhysicsBehavior ModuleTag_06
28427      Mass = 5.0
28428    End
28429    Behavior = SlowDeathBehavior ModuleTag_07
28430      SinkDelay = 3000
28431      SinkRate = 0.5     ; in Dist/Sec
28432      DestructionDelay = 8000
28433    End
28434  
28435   
28436    Behavior = SquishCollide ModuleTag_08
28437      ;nothing
28438    End
28439  
28440  
28441    Behavior = FXListDie ModuleTag_09
28442      DeathTypes = ALL -CRUSHED -SPLATTED
28443      DeathFX = FX_GIDie
28444    End
28445    Behavior = FXListDie ModuleTag_10
28446      DeathTypes = NONE +CRUSHED +SPLATTED
28447      DeathFX = FX_GIDieCrushed
28448    End
28449  
28450    Behavior = PoisonedBehavior ModuleTag_11
28451      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
28452      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
28453    End
28454   
28455    Geometry = CYLINDER
28456    Scale = 0.95                            ;Scaling
28457    GeometryMajorRadius = 1.0
28458    GeometryMinorRadius = 1.0
28459    GeometryHeight = 8.0
28460    GeometryIsSmall = Yes
28461    Shadow = SHADOW_DECAL
28462    ShadowSizeX = 9;
28463    ShadowSizeY = 9;
28464    ShadowTexture = ShadowI;
28465    BuildCompletion = APPEARS_AT_RALLY_POINT
28466  
28467  End
28468  
28469  ;------------------------------------------------------------------------------
28470  ;The Marauder Tank, for the Warlord General.  
28471  Object GLATankMarauder
28472  
28473    ; *** ART Parameters ***
28474    SelectPortrait         = SUMarauder_L
28475    ButtonImage            = SUMarauder_L
28476    
28477    UpgradeCameo1 = Upgrade_GLAToxinShells
28478    UpgradeCameo2 = Upgrade_GLAJunkRepair
28479    ;UpgradeCameo3 = NONE
28480    ;UpgradeCameo4 = NONE
28481    ;UpgradeCameo5 = NONE
28482    
28483    Draw = W3DTankDraw ModuleTag_01
28484      OkToChangeModelColor = Yes
28485  
28486  ; no crate upgrade
28487      ConditionState = NONE
28488        Model = UVMarauder
28489        Turret = Turret
28490        ShowSubObject = Turret
28491        HideSubObject = TurretUp01 TurretUp02 BarrelFX01 ; Since we are showing one of three turrets, we need to then hide the subobject muzzleflash
28492        WeaponFireFXBone = PRIMARY BarrelMS
28493        WeaponRecoilBone = PRIMARY Barrel
28494        WeaponMuzzleFlash = PRIMARY BarrelFX
28495        WeaponLaunchBone = PRIMARY BarrelMS
28496      End
28497  
28498      ConditionState = REALLYDAMAGED
28499        Model = UVMarauder_d
28500        Turret = Turret
28501        ShowSubObject = Turret
28502        HideSubObject = TurretUp01 TurretUp02 BarrelFX01
28503        WeaponFireFXBone = PRIMARY BarrelMS
28504        WeaponRecoilBone = PRIMARY Barrel
28505        WeaponMuzzleFlash = PRIMARY BarrelFX
28506        WeaponLaunchBone = PRIMARY BarrelMS
28507      End
28508  
28509      ConditionState = RUBBLE
28510        Model = UVMarauder_d
28511        Turret = Turret
28512        ShowSubObject = Turret
28513        HideSubObject = TurretUp01 TurretUp02 BarrelFX01
28514        WeaponFireFXBone = PRIMARY BarrelMS
28515        WeaponRecoilBone = PRIMARY Barrel
28516        WeaponMuzzleFlash = PRIMARY BarrelFX
28517        WeaponLaunchBone = PRIMARY BarrelMS
28518      End
28519  
28520  ; crate upgrade 1
28521      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
28522        Model = UVMarauder
28523        Turret = TurretUp01
28524        ShowSubObject = TurretUp01
28525        HideSubObject = Turret TurretUp02 BarrelUp01FX01
28526        WeaponFireFXBone = PRIMARY BarrelUp01MS
28527        WeaponRecoilBone = PRIMARY BarrelUp01
28528        WeaponMuzzleFlash = PRIMARY BarrelUp01FX
28529        WeaponLaunchBone = PRIMARY BarrelUp01MS
28530      End
28531  
28532      ConditionState = REALLYDAMAGED WEAPONSET_CRATEUPGRADE_ONE
28533        Model = UVMarauder_d
28534        Turret = TurretUp01
28535        ShowSubObject = TurretUp01
28536        HideSubObject = Turret TurretUp02 BarrelUp01FX01
28537        WeaponFireFXBone = PRIMARY BarrelUp01MS
28538        WeaponRecoilBone = PRIMARY BarrelUp01
28539        WeaponMuzzleFlash = PRIMARY BarrelUp01FX
28540        WeaponLaunchBone = PRIMARY BarrelUp01MS
28541      End
28542  
28543      ConditionState = RUBBLE WEAPONSET_CRATEUPGRADE_ONE
28544        Model = UVMarauder_d
28545        Turret = TurretUp01
28546        ShowSubObject = TurretUp01
28547        HideSubObject = Turret TurretUp02 BarrelUp01FX01
28548        WeaponFireFXBone = PRIMARY BarrelUp01MS
28549        WeaponRecoilBone = PRIMARY BarrelUp01
28550        WeaponMuzzleFlash = PRIMARY BarrelUp01FX
28551        WeaponLaunchBone = PRIMARY BarrelUp01MS
28552      End
28553  
28554  ; crate upgrade 2
28555      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
28556        Model = UVMarauder
28557        Turret = TurretUp02
28558        ShowSubObject = TurretUp02
28559        HideSubObject = Turret TurretUp01 BarrelUp02FX01 BarrelUp02FX02
28560        WeaponFireFXBone = PRIMARY BarrelUp02MS
28561        WeaponRecoilBone = PRIMARY BarrelUp02
28562        WeaponMuzzleFlash = PRIMARY BarrelUp02FX
28563        WeaponLaunchBone = PRIMARY BarrelUp02MS
28564      End
28565  
28566      ConditionState = REALLYDAMAGED WEAPONSET_CRATEUPGRADE_TWO
28567        Model = UVMarauder_d
28568        Turret = TurretUp02
28569        ShowSubObject = TurretUp02
28570        HideSubObject = Turret TurretUp01 BarrelUp02FX01 BarrelUp02FX02
28571        WeaponFireFXBone = PRIMARY BarrelUp02MS
28572        WeaponRecoilBone = PRIMARY BarrelUp02
28573        WeaponMuzzleFlash = PRIMARY BarrelUp02FX
28574        WeaponLaunchBone = PRIMARY BarrelUp02MS
28575      End
28576  
28577      ConditionState = RUBBLE WEAPONSET_CRATEUPGRADE_TWO
28578        Model = UVMarauder_d
28579        Turret = TurretUp02
28580        ShowSubObject = TurretUp02
28581        HideSubObject = Turret TurretUp01 BarrelUp02FX01 BarrelUp02FX02
28582        WeaponFireFXBone = PRIMARY BarrelUp02MS
28583        WeaponRecoilBone = PRIMARY BarrelUp02
28584        WeaponMuzzleFlash = PRIMARY BarrelUp02FX
28585        WeaponLaunchBone = PRIMARY BarrelUp02MS
28586      End
28587  
28588      TrackMarks = EXTnkTrack.tga
28589      TreadAnimationRate = 2.0;  amount of tread texture to move per second
28590      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
28591      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
28592  
28593    End
28594  
28595    ; ***DESIGN parameters ***
28596    DisplayName           = OBJECT:Marauder
28597    Side                  = GLA
28598    EditorSorting         = VEHICLE
28599    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
28600    WeaponSet
28601      Conditions = None 
28602      Weapon = PRIMARY MarauderTankGun    
28603    End
28604    WeaponSet
28605      Conditions = CRATEUPGRADE_ONE
28606      Weapon = PRIMARY MarauderTankGunUpgradeOne
28607     
28608  
28609    End
28610    WeaponSet
28611      Conditions = CRATEUPGRADE_TWO 
28612      Weapon = PRIMARY MarauderTankGunUpgradeTwo
28613      Weapon = SECONDARY HumveeGun
28614    End
28615    ArmorSet
28616      Conditions      = None
28617      Armor           = TankArmor
28618      DamageFX        = TankDamageFX
28619    End
28620    BuildCost       = 800
28621    BuildTime       = 10.0          ;in seconds    
28622    VisionRange     = 125
28623    ShroudClearingRange = 300
28624    Prerequisites
28625      Object = GLAArmsDealer
28626      Science = SCIENCE_MarauderTank
28627    End
28628  
28629    ExperienceValue = 100 100 200 300    ;Experience point value at each level
28630    ExperienceRequired = 0 200 300 600  ;Experience points needed to gain each level
28631    IsTrainable = Yes             ;Can gain experience
28632    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
28633    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
28634    CommandSet           = GLATankMarauderCommandSet
28635  
28636    ; *** AUDIO Parameters ***
28637    VoiceSelect = MarauderTankVoiceSelect
28638    VoiceMove = MarauderTankVoiceMove
28639    VoiceGuard = MarauderTankVoiceMove
28640    VoiceAttack = MarauderTankVoiceAttack
28641    SoundMoveStart = MarauderTankMoveStart
28642    SoundMoveStartDamaged = MarauderTankMoveStart
28643  
28644    UnitSpecificSounds
28645      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
28646      VoiceCreate     = MarauderTankVoiceCreate
28647      ;TurretMoveStart = NoSound
28648      TurretMoveLoop = TurretMoveLoop
28649      VoiceSalvage = MarauderTankVoiceSalvage      
28650      VoiceCrush = MarauderTankVoiceCrush
28651      VoiceEnter = MarauderTankVoiceMove
28652    End
28653  
28654    ; *** ENGINEERING Parameters ***
28655    RadarPriority = UNIT
28656    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE
28657  
28658    Body = ActiveBody ModuleTag_02
28659      MaxHealth       = 430.0
28660      InitialHealth   = 430.0
28661    End
28662  
28663    Behavior = AIUpdateInterface ModuleTag_03
28664      AutoAcquireEnemiesWhenIdle = Yes
28665    End
28666    Locomotor = SET_NORMAL MarauderLocomotor
28667    Behavior = PhysicsBehavior ModuleTag_04
28668      Mass = 50.0
28669    End
28670    Behavior = AutoHealBehavior ModuleTag_05
28671      HealingAmount = 2
28672      HealingDelay = 1000 ; msec
28673      TriggeredBy = Upgrade_GLAJunkRepair
28674    End
28675  
28676    ; Catch fire, and explode death
28677    Behavior = SlowDeathBehavior ModuleTag_06
28678      DeathTypes = ALL -CRUSHED -SPLATTED
28679      ProbabilityModifier = 50
28680      DestructionDelay = 1000
28681      DestructionDelayVariance = 300
28682      FX  = INITIAL  FX_CrusaderCatchFire
28683      OCL = FINAL    OCL_MaruaderTankDeathEffect  
28684      FX  = FINAL    FX_BattleMasterExplosionOneFinal
28685    End
28686  
28687  
28688    Behavior = CreateCrateDie ModuleTag_07
28689      CrateData = SalvageCrateData
28690      ;CrateData = EliteTankCrateData
28691      ;CrateData = HeroicTankCrateData
28692    End
28693    
28694    Behavior                 = TransitionDamageFX ModuleTag_08
28695      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
28696      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
28697    End
28698    
28699    ; A crushing defeat
28700    Behavior = FXListDie ModuleTag_09
28701      DeathTypes = NONE +CRUSHED +SPLATTED
28702      DeathFX = FX_CarCrush
28703    End
28704  
28705    Behavior = FlammableUpdate ModuleTag_21
28706      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
28707      AflameDamageAmount = 3       ; taking this much damage...
28708      AflameDamageDelay = 500       ; this often.
28709    End
28710  
28711    Geometry = BOX
28712    GeometryMajorRadius = 17.0
28713    GeometryMinorRadius = 10.0
28714    GeometryHeight = 9.5     
28715    GeometryIsSmall = Yes 
28716    Shadow = SHADOW_VOLUME   
28717    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
28718  
28719  End
28720  
28721  ;------------------------------------------------------------------------------
28722  Object ChinaInfantryHacker
28723  
28724    ; *** ART Parameters ***
28725    SelectPortrait         = SNHacker2_L
28726    ButtonImage            = SNHacker2_L
28727    
28728    ;UpgradeCameo1 = NONE
28729    ;UpgradeCameo2 = NONE
28730    ;UpgradeCameo3 = NONE
28731    ;UpgradeCameo4 = NONE
28732    ;UpgradeCameo5 = NONE
28733  
28734    Draw = W3DModelDraw ModuleTag_01
28735      OkToChangeModelColor = Yes
28736  
28737      ;NORMAL STANDING
28738      DefaultConditionState
28739        Model = NIHCKR_SKN
28740        IdleAnimation = NIHCKR_SKL.NIHCKR_STA 0 25
28741        ;Regular spice animations
28742        IdleAnimation = NIHCKR_SKL.NIHCKR_IDA
28743        IdleAnimation = NIHCKR_SKL.NIHCKR_IDB
28744        AnimationMode = ONCE
28745        WeaponFireFXBone = PRIMARY Bone_SatCom
28746        TransitionKey = TRANS_Stand
28747      End
28748      AliasConditionState = REALLYDAMAGED
28749  
28750      ConditionState = MOVING
28751        Animation = NIHCKR_SKL.NIHCKR_RNA 14
28752        AnimationMode = LOOP
28753        Flags = RANDOMSTART
28754        TransitionKey = None
28755        ParticleSysBone   = None InfantryDustTrails
28756      End
28757      AliasConditionState = MOVING UNPACKING
28758      AliasConditionState = MOVING UNPACKING REALLYDAMAGED
28759  
28760      ConditionState = UNPACKING
28761        Animation = NIHCKR_SKL.NIHCKR_ATB1
28762        AnimationMode = ONCE
28763      End
28764      AliasConditionState = UNPACKING FIRING_A
28765      AliasConditionState = UNPACKING REALLYDAMAGED
28766      AliasConditionState = UNPACKING FIRING_A REALLYDAMAGED
28767  
28768      ;HACKING ATTACK
28769      ConditionState = FIRING_A
28770        Animation = NIHCKR_SKL.NIHCKR_ATB2
28771        AnimationMode = LOOP
28772        TransitionKey = TRANS_FiringA
28773      End
28774      AliasConditionState = FIRING_A REALLYDAMAGED
28775  
28776      ConditionState = PACKING
28777        Animation = NIHCKR_SKL.NIHCKR_ATB3
28778        AnimationMode = ONCE
28779      End
28780      AliasConditionState = PACKING FIRING_A
28781      AliasConditionState = PACKING REALLYDAMAGED
28782      AliasConditionState = PACKING FIRING_A REALLYDAMAGED
28783  
28784  
28785  
28786      TransitionState = TRANS_FiringA TRANS_Stand ; I was stopped by a stop command, so I get no proper PACKING state
28787        Animation = NIHCKR_SKL.NIHCKR_ATB3
28788        AnimationMode = ONCE
28789      End
28790  
28791  
28792      ConditionState = FREEFALL
28793        Animation = NIHCKR_SKL.NIHCKR_PFL
28794        AnimationMode = LOOP
28795        TransitionKey = TRANS_Falling
28796      End
28797      AliasConditionState = FREEFALL REALLYDAMAGED
28798      AliasConditionState = FREEFALL DYING
28799  
28800      ConditionState = PARACHUTING
28801        Animation = NIHCKR_SKL.NIHCKR_PHG
28802        AnimationMode = LOOP
28803        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
28804        TransitionKey = TRANS_Chute
28805      End
28806      AliasConditionState = PARACHUTING REALLYDAMAGED
28807      AliasConditionState = PARACHUTING DYING
28808  
28809  
28810      ConditionState = DYING
28811        Animation = NIHCKR_SKL.NIHCKR_DTA
28812        Animation = NIHCKR_SKL.NIHCKR_DTB
28813        AnimationMode = ONCE
28814        TransitionKey = TRANS_Dying
28815      End
28816  
28817      TransitionState = TRANS_Dying TRANS_Flailing
28818        Animation = NIHCKR_SKL.NIHCKR_ADTG1
28819        AnimationMode = ONCE
28820      End
28821  
28822      ConditionState = DYING EXPLODED_FLAILING
28823        Animation = NIHCKR_SKL.NIHCKR_ADTG2
28824        AnimationMode = LOOP
28825        TransitionKey = TRANS_Flailing
28826      End
28827  
28828      ConditionState = DYING EXPLODED_BOUNCING
28829        Animation = NIHCKR_SKL.NIHCKR_ADTG3
28830        AnimationMode = ONCE
28831        TransitionKey = None
28832      End
28833  
28834      ConditionState = SPECIAL_CHEERING
28835        Animation = NIHCKR_SKL.NIHCKR_CHA
28836        AnimationMode = LOOP
28837      End
28838  
28839      TransitionState = TRANS_Falling TRANS_Chute
28840        Animation = NIHCKR_SKL.NIHCKR_POP
28841        AnimationMode = ONCE
28842        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
28843      End
28844  
28845      TransitionState = TRANS_Chute TRANS_Stand
28846        Animation = NIHCKR_SKL.NIHCKR_PTD
28847        AnimationMode = ONCE
28848      End
28849  
28850    End
28851  
28852    ; ***DESIGN parameters ***
28853    DisplayName      = OBJECT:Hacker
28854    Side = China
28855    EditorSorting = INFANTRY
28856    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
28857  
28858    ArmorSet
28859      Conditions      = None
28860      Armor           = HumanArmor
28861      DamageFX        = InfantryDamageFX
28862    End
28863    VisionRange = 150
28864    ShroudClearingRange = 300
28865    Prerequisites
28866      Object = ChinaBarracks
28867      Object = ChinaPropagandaCenter
28868    End
28869    BuildCost = 625
28870    BuildTime = 20.0          ;in seconds    
28871    ExperienceValue = 50 100 150 400    ;Experience point value at each level
28872    ExperienceRequired = 0 100 300 500  ;Experience points needed to gain each level
28873    IsTrainable = Yes             ;Can gain experience
28874  
28875    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
28876    CommandSet      = ChinaInfantryHackerCommandSet
28877  
28878    ; *** AUDIO Parameters ***
28879  VoiceSelect = BlackLotusVoiceSelect
28880    VoiceMove = BlackLotusVoiceMove
28881    VoiceAttack = BlackLotusVoiceAttack
28882    SoundDie = BlackLotusVoiceDie
28883    SoundDieFire = DieByFireFemale
28884    SoundDieToxin = DieByToxinFemale
28885    VoiceGuard = HackerVoiceMove
28886    VoiceFear = HackerVoiceFear
28887    VoiceTaskComplete = HackerVoiceHackComplete
28888    UnitSpecificSounds
28889      VoiceGarrison = BlackLotusVoiceMove
28890      VoiceCreate     = BlackLotusVoiceCreate
28891      UnitPack        = BlackLotusPack
28892      UnitUnpack      = BlackLotusUnpack
28893      UnitCashPing    = HackerCashPing
28894      VoiceEnter = HackerVoiceMove
28895      VoiceEnterHostile = HackerVoiceMove
28896      VoiceGetHealed      = HackerVoiceMove
28897      VoiceHackInternet   = BlackLotusVoiceCreate
28898    End
28899  
28900    ; *** ENGINEERING Parameters ***
28901    RadarPriority = UNIT
28902    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE IGNORES_SELECT_ALL
28903  
28904    Body = ActiveBody ModuleTag_02
28905      MaxHealth       = 100.0
28906      InitialHealth   = 100.0
28907    End
28908    
28909        Behavior = VeterancyGainCreate ModuleTag_03
28910      StartingLevel = VETERAN
28911      ScienceRequired = SCIENCE_RedGuardTraining
28912    End
28913    Behavior = HackInternetAIUpdate ModuleTag_03
28914      UnpackTime          = 7300 ;animation time is 7300 (changing this will scale anim speed)
28915      PackTime            = 5133 ;animation time is 5133 (changing this will scale anim speed)
28916      CashUpdateDelay     = 2000
28917      RegularCashAmount   = 5
28918      VeteranCashAmount   = 6
28919      EliteCashAmount     = 8
28920      HeroicCashAmount    = 10
28921      XpPerCashUpdate     = 1
28922      PackUnpackVariationFactor = 0.5 ;Adds + or - 20% to pack and unpack time randomly.
28923    End
28924    Locomotor = SET_NORMAL BasicHumanLocomotor
28925   
28926    Behavior = SpecialAbility ModuleTag_04
28927      SpecialPowerTemplate = SpecialAbilityHackerDisableBuilding
28928      UpdateModuleStartsAttack = Yes
28929      InitiateSound         = BlackLotusVoiceHackBuilding
28930    End
28931  
28932    Behavior = SpecialAbilityUpdate ModuleTag_05
28933      SpecialPowerTemplate = SpecialAbilityHackerDisableBuilding
28934      StartAbilityRange = 150.0
28935      UnpackTime      = 1000 ;animation time is 7300 (changing this will scale anim speed)
28936      PackTime        = 5133 ;animation time is 5133 (changing this will scale anim speed)
28937      PreparationTime = 3000
28938  
28939      ;PersistentPrepTime = 500 ; old setting
28940      PersistentPrepTime = 333 ; NOTE! This drives how often the disable effect gets triggered
28941                               ; This is also how often a new particle system effect is spawned
28942      EffectDuration = 20000
28943      SpecialObject = BinaryDataStream
28944      DisableFXParticleSystem = DisabledEffectBinaryShower0
28945      PackSound       = BlackLotusPack
28946      UnpackSound     = BlackLotusUnpack
28947      PrepSoundLoop   = BlackLotusPrepLoop
28948      AwardXPForTriggering  = 0    ;Careful, this is persistant so it's a DoT xp gain!
28949      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
28950    End
28951  
28952  
28953    Behavior = PhysicsBehavior ModuleTag_06
28954      Mass = 5.0
28955    End
28956  
28957    Behavior = SquishCollide ModuleTag_08
28958      ;nothing
28959    End
28960  
28961  
28962  ; --- begin Death modules ---
28963    Behavior = SlowDeathBehavior ModuleTag_Death01
28964      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
28965      SinkDelay           = 50000
28966      SinkRate            = 0.5     ; in Dist/Sec
28967      DestructionDelay    = 8000000
28968      FX                  = INITIAL FX_GIDie
28969    End
28970    Behavior = SlowDeathBehavior ModuleTag_Death02
28971      DeathTypes          = NONE +CRUSHED +SPLATTED
28972      SinkDelay           = 50000
28973      SinkRate            = 0.5     ; in Dist/Sec
28974      DestructionDelay    = 8000000
28975      FX                  = INITIAL FX_GIDieCrushed
28976    End
28977    Behavior = SlowDeathBehavior ModuleTag_Death03
28978      DeathTypes          = NONE +EXPLODED
28979      SinkDelay           = 50000
28980      SinkRate            = 0.5     ; in Dist/Sec
28981      DestructionDelay    = 8000000
28982      FX                  = INITIAL FX_GIDie
28983      FlingForce          = 8
28984      FlingForceVariance  = 3
28985      FlingPitch          = 60
28986      FlingPitchVariance  = 10
28987    End
28988    Behavior = SlowDeathBehavior ModuleTag_Death04
28989      DeathTypes          = NONE +BURNED
28990      DestructionDelay    = 0
28991      FX                  = INITIAL FX_GIDie
28992      OCL                 = INITIAL OCL_FlamingInfantry
28993    End
28994    Behavior = SlowDeathBehavior ModuleTag_Death05
28995      DeathTypes          = NONE +POISONED
28996      DestructionDelay    = 0
28997      FX                  = INITIAL FX_GIDie
28998      OCL                 = INITIAL OCL_ToxicInfantry
28999    End
29000    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
29001      DeathTypes          = NONE +POISONED_BETA
29002      DestructionDelay    = 0
29003      FX                  = INITIAL FX_GIDie
29004      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
29005    End
29006  ; --- end Death modules ---
29007  
29008    Behavior = PoisonedBehavior ModuleTag_11
29009      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
29010      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
29011    End
29012   
29013    Geometry = CYLINDER
29014    Scale = 0.95                            ;Scaling
29015    GeometryMajorRadius = 1.0
29016    GeometryMinorRadius = 1.0
29017    GeometryHeight = 8.0
29018    GeometryIsSmall = Yes
29019    Shadow = SHADOW_DECAL
29020    ShadowSizeX = 9;
29021    ShadowSizeY = 9;
29022    ShadowTexture = ShadowI;
29023    BuildCompletion = APPEARS_AT_RALLY_POINT
29024  
29025  End
29026  
29027  ;------------------------------------------------------------------------------
29028  ;GLA Radar Van
29029  Object GLAVehicleRadarVan
29030  
29031    ; *** ART Parameters ***
29032    SelectPortrait         = SURadarVan_L
29033    ButtonImage            = SURadarVan
29034    
29035    UpgradeCameo1 = Upgrade_GLARadarVanScan
29036    UpgradeCameo2 = Upgrade_GLAJunkRepair
29037    ;UpgradeCameo3 = NONE
29038    ;UpgradeCameo4 = NONE
29039    ;UpgradeCameo5 = NONE
29040    
29041    Draw = W3DTruckDraw ModuleTag_01
29042      OkToChangeModelColor = Yes
29043  
29044      DefaultConditionState
29045        Model = UVRadarVan
29046        Animation = UVRadarVan.UVRadarVan
29047        AnimationMode = LOOP
29048      End
29049      
29050      ConditionState = REALLYDAMAGED
29051        Model = UVRadarVan_D
29052        Animation = UVRadarVan_D.UVRadarVan_D
29053        AnimationMode = LOOP
29054      End
29055      
29056      ConditionState = RUBBLE
29057        Model = UVRadarVan_D
29058        Animation = UVRadarVan_D.UVRadarVan_D
29059        AnimationMode = LOOP
29060      End
29061      
29062      TrackMarks = EXTireTrack.tga
29063      
29064      ; These parameters are only used if the model has a separate suspension, 
29065      ; and the locomotor has HasSuspension = Yes.
29066      LeftFrontTireBone = Tire01
29067      RightFrontTireBone = Tire02
29068      LeftRearTireBone = Tire03
29069      RightRearTireBone = Tire04
29070      TireRotationMultiplier = 0.2   ; this * speed = rotation.
29071      PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
29072    End
29073  
29074    ; ***DESIGN parameters ***
29075    DisplayName      = OBJECT:RadarVan
29076    Side = GLA
29077    EditorSorting   = VEHICLE
29078    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
29079    ArmorSet
29080      Conditions      = None
29081      Armor           = TruckArmor
29082      DamageFX        = TankDamageFX
29083    End
29084    BuildCost       = 500
29085    BuildTime       = 10.0          ;in seconds    
29086    VisionRange     = 200
29087    ShroudClearingRange = 500
29088    Prerequisites
29089      Object = GLAArmsDealer
29090    End
29091    IsTrainable = No
29092    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
29093    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
29094    CommandSet      = GLAVehicleRadarVanCommandSet
29095  
29096    ; *** AUDIO Parameters ***
29097    VoiceSelect = RadarVanVoiceSelect
29098    VoiceMove = RadarVanVoiceMove
29099    VoiceAttack = RadarVanVoiceMove
29100    SoundMoveStart = RadarVanMoveStart
29101    SoundMoveStartDamaged = RadarVanMoveStart
29102  
29103    UnitSpecificSounds
29104      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
29105      VoiceCreate     = RadarVanVoiceCreate
29106      TurretMoveStart = NoSound
29107      TurretMoveLoop = TurretMoveLoop  
29108    ; Required for the W3DTruckDraw module
29109      TruckLandingSound = NoSound ;RocketBuggyLand
29110      TruckPowerslideSound = NoSound ;RocketBuggyPowerslide
29111      VoiceCrush      = RadarVanVoiceCrush
29112      VoiceEnter = RadarVanVoiceMove
29113    End
29114  
29115    ; *** ENGINEERING Parameters ***
29116    RadarPriority = UNIT
29117    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE IGNORES_SELECT_ALL
29118  
29119    Body = ActiveBody ModuleTag_02
29120      MaxHealth       = 200
29121      InitialHealth   = 200
29122    End
29123  
29124    ExperienceValue     = 20 20 20 20  ; Experience point value at each level
29125  
29126    Behavior = GrantUpgradeCreate ModuleTag_03
29127      UpgradeToGrant     = Upgrade_GLARadar
29128    End
29129    Behavior        = RadarUpgrade ModuleTag_05
29130      TriggeredBy   = Upgrade_GLARadar
29131      DisableProof  = Yes ; Won't be disabled by power low
29132    End
29133  
29134    Behavior           = OCLSpecialPower ModuleTag_06
29135      SpecialPowerTemplate = SpecialPowerRadarVanScan
29136      OCL                  = SUPERWEAPON_RadarVanScan
29137      CreateLocation       = CREATE_AT_LOCATION
29138      StartsPaused         = Yes ; Unpaused by upgrade module
29139    End
29140  
29141    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_07
29142      SpecialPowerTemplate = SpecialPowerRadarVanScan
29143      TriggeredBy = Upgrade_GLARadarVanScan
29144    End
29145  
29146    Behavior = AutoHealBehavior ModuleTag_08
29147      HealingAmount = 2
29148      HealingDelay = 1000 ; msec
29149      TriggeredBy = Upgrade_GLAJunkRepair
29150    End
29151  
29152    Behavior = AIUpdateInterface ModuleTag_09
29153      Turret
29154        TurretTurnRate = 100
29155        ControlledWeaponSlots = PRIMARY
29156      End
29157    End
29158    Locomotor = SET_NORMAL RadarVanLocomotor
29159  
29160    Behavior = PhysicsBehavior ModuleTag_10
29161      Mass = 50.0
29162    End
29163  
29164  ; The default explosion
29165    Behavior = SlowDeathBehavior  ModuleTag_11
29166      DeathTypes = ALL -CRUSHED -SPLATTED
29167      ProbabilityModifier = 5
29168      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
29169      DestructionDelay = 0
29170      DestructionDelayVariance = 200
29171      FX = FINAL FX_BuggyNewDeathExplosion
29172      OCL = FINAL OCL_RadarVanDeathEffect
29173    End
29174  
29175  
29176    Behavior = FlammableUpdate ModuleTag_13
29177      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
29178      AflameDamageAmount = 3       ; taking this much damage...
29179      AflameDamageDelay = 500       ; this often.
29180    End
29181  
29182    Behavior = DestroyDie ModuleTag_14
29183      DeathTypes = NONE +CRUSHED +SPLATTED
29184    End
29185    Behavior = CreateCrateDie ModuleTag_15
29186      CrateData = SalvageCrateData
29187      ;CrateData = EliteTankCrateData
29188      ;CrateData = HeroicTankCrateData
29189    End
29190  
29191    Behavior = StealthDetectorUpdate ModuleTag_16
29192      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
29193      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
29194      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
29195      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
29196    End
29197  
29198    ; A crushing defeat
29199    Behavior = FXListDie ModuleTag_17
29200      DeathTypes = NONE +CRUSHED +SPLATTED
29201      DeathFX = FX_CarCrush
29202    End
29203    Behavior = CreateObjectDie ModuleTag_18
29204      DeathTypes = NONE +CRUSHED +SPLATTED
29205      CreationList = OCL_CrusaderTank_CrushEffect
29206    End
29207  
29208    Behavior                 = TransitionDamageFX ModuleTag_19
29209      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
29210      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_CrusaderDamageTransition
29211    End
29212    
29213    Geometry = BOX
29214    GeometryMajorRadius = 16.0
29215    GeometryMinorRadius = 6.0
29216    GeometryHeight = 12.5     
29217    GeometryIsSmall = Yes    
29218    Shadow = SHADOW_VOLUME
29219    ShadowSizeX = 45  ;minimum elevation angle above horizon. Used to limit shadow length
29220  
29221  End
29222  ;------------------------------------------------------------------------------
29223  Object AmericaVehicleBattlefurtifShip
29224  
29225    ; *** ART Parameters ***
29226    SelectPortrait         = T34
29227    ButtonImage            = T34
29228    
29229     UpgradeCameo1 = Upgrade_SeaRepair
29230    UpgradeCameo2 = Upgrade_SeaArmour
29231    ;UpgradeCameo3 =Upgrade_SubmarineStealth
29232    ;UpgradeCameo4 = NONE
29233    ;UpgradeCameo5 = NONE
29234  
29235    ; *** ART Parameters ***
29236    Draw                   = W3DModelDraw ModuleTag_01 ;W3DTankDraw ModuleTag_01
29237      OkToChangeModelColor = Yes
29238      InitialRecoilSpeed   = 120
29239      MaxRecoilDistance    = 8
29240      RecoilSettleSpeed    = 6
29241  
29242  
29243      ConditionState       = NONE
29244        Model              = bat_furtif
29245        WeaponLaunchBone   = PRIMARY Muzzle
29246        WeaponFireFXBone   = PRIMARY MuzzleFX
29247  
29248        WeaponLaunchBone   = SECONDARY WEAPONA
29249        WeaponFireFXBone   = SECONDARY WEAPONAFX
29250        
29251      End
29252      ConditionState       = OVER_WATER
29253        Model              = bat_furtif
29254        WeaponLaunchBone   = PRIMARY Muzzle
29255        WeaponFireFXBone   = PRIMARY MuzzleFX
29256  
29257        WeaponLaunchBone   = SECONDARY WEAPONA
29258        WeaponFireFXBone   = SECONDARY WEAPONAFX
29259      End
29260  
29261      ConditionState       = MOVING OVER_WATER
29262        Model              = bat_furtif
29263        WeaponLaunchBone   = PRIMARY Muzzle
29264        WeaponFireFXBone   = PRIMARY MuzzleFX
29265  
29266        WeaponLaunchBone   = SECONDARY WEAPONA
29267        WeaponFireFXBone   = SECONDARY WEAPONAFX
29268  
29269  ;      ParticleSysBone = Mist01 AmphibMist ;
29270  ;      ParticleSysBone = Mist02 AmphibMist ;
29271  ;      ParticleSysBone = Mist03 AmphibMist ;     
29272  ;      ParticleSysBone = Mist04 AmphibMist ;
29273  ;      ParticleSysBone = Mist05 AmphibMist ;
29274  ;      ParticleSysBone = Mist06 AmphibMist ;
29275        ParticleSysBone = Mist07 AmphibMist ;
29276  
29277  ;      ParticleSysBone = TreadFX01 AmphibWave ; 
29278  ;      ParticleSysBone = TreadFX02 AmphibWave ;
29279  ;      ParticleSysBone = TreadFX03 AmphibWave ; 
29280  ;      ParticleSysBone = TreadFX04 AmphibWave ;
29281  ;      ParticleSysBone = TreadFX05 AmphibWave ; 
29282  ;      ParticleSysBone = TreadFX06 AmphibWave ; 
29283        ParticleSysBone = TreadFX07 AmphibWave ;
29284      End
29285    End
29286  
29287  
29288    VoiceSelect = OverlordTankVoiceSelect
29289  
29290    ; ***DESIGN parameters ***
29291    DisplayName            = OBJECT:Bateau_furtif
29292    Side                   = America
29293    EditorSorting          = VEHICLE
29294    TransportSlotCount     = 8                 ;how many "slots" we take in a transport (0 == not transportable)
29295  
29296    WeaponSet
29297      Conditions           = None
29298      Weapon               = PRIMARY    submarineWeapon2
29299      PreferredAgainst     = PRIMARY    VEHICLE STRUCTURE
29300      AutoChooseSources    = PRIMARY    FROM_PLAYER FROM_SCRIPT FROM_AI
29301      Weapon               = SECONDARY  submarineWeapon
29302      AutoChooseSources    = SECONDARY  NONE
29303  
29304    End
29305  
29306    ArmorSet
29307      Conditions           = None
29308      Armor = TankArmor
29309      DamageFX = TankDamageFX
29310    End
29311  
29312    BuildCost = 2000
29313    BuildTime = 30.0
29314    VisionRange            = 400
29315    ShroudClearingRange = 450
29316    Prerequisites
29317      Object = AmericaNavalyard
29318    End
29319    CommandSet             = AmericaVehicleBattlefurtifShip
29320    MaxSimultaneousOfType = 2
29321  
29322    ; *** AUDIO Parameters ***
29323    SoundAmbient           = BattleshipAmbientLoop
29324    VoiceSelect = OverlordTankVoiceSelect
29325    UnitSpecificSounds
29326      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
29327      TurretMoveLoop       = TurretMoveLoop
29328    End
29329  
29330    ; *** ENGINEERING Parameters ***
29331    RadarPriority          = UNIT
29332    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS SCORE SELECTABLE VEHICLE
29333  
29334    Body = ActiveBody ModuleTag_02
29335      MaxHealth            = 500.0
29336      InitialHealth        = 500.0
29337    End
29338  
29339    Behavior = MaxHealthUpgrade ModuleTag_09
29340      TriggeredBy   = Upgrade_SubmarineArmor
29341      AddMaxHealth  = 1000.0
29342      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
29343    End
29344  
29345    Behavior = AutoHealBehavior ModuleTag_05
29346      HealingAmount = 7
29347      HealingDelay = 500 ; msec
29348      TriggeredBy = Upgrade_SubmarineRepair
29349    End
29350  
29351    Behavior = AIUpdateInterface ModuleTag_03
29352       AutoAcquireEnemiesWhenIdle = No
29353    End
29354  
29355    Locomotor = SET_NORMAL SubmarineLocomotor
29356  
29357    Behavior               = PhysicsBehavior ModuleTag_04
29358      Mass                 = 5000.0
29359    End
29360  
29361    Behavior = SlowDeathBehavior ModuleTag_16
29362      ProbabilityModifier = 25
29363      DestructionDelay = 200
29364      DestructionDelayVariance = 100
29365      OCL = FINAL    OCL_FirestormSmall
29366      FX  = FINAL    WeaponFX_NapalmMissileDetonation
29367    End
29368  
29369    Behavior = StealthUpdate ModuleTag_17
29370      StealthDelay                = 1000 ; msec
29371      StealthForbiddenConditions  = ATTACKING USING_ABILITY
29372      MoveThresholdSpeed          = 20
29373      InnateStealth               = No ;Requires upgrade first
29374      OrderIdleEnemiesToAttackMeUponReveal  = Yes
29375    End
29376  
29377    Behavior = StealthUpgrade ModuleTag_18
29378      TriggeredBy = Upgrade_SubmarineStealth
29379  
29380    End
29381   Behavior = MaxHealthUpgrade ModuleTag_09
29382      TriggeredBy   = Upgrade_SeaArmour
29383      AddMaxHealth  = 1000.0
29384      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
29385    End
29386  
29387    Behavior = AutoHealBehavior ModuleTag_05
29388      HealingAmount = 7
29389      HealingDelay = 500 ; msec
29390      TriggeredBy = Upgrade_SeaRepair
29391    End
29392     Behavior = StealthUpdate ModuleTag_07
29393      StealthDelay                = 2000 ; msec
29394      StealthForbiddenConditions  = FIRING_PRIMARY
29395      HintDetectableConditions    = IS_FIRING_WEAPON
29396      FriendlyOpacityMin          = 50.0%
29397      FriendlyOpacityMax          = 100.0%
29398      InnateStealth               = Yes
29399      OrderIdleEnemiesToAttackMeUponReveal  = Yes
29400    End
29401  
29402    Geometry               = BOX
29403    GeometryMajorRadius    = 200.0
29404    GeometryMinorRadius    = 20.0
29405    GeometryHeight         = 40
29406    GeometryIsSmall        = No
29407    Shadow                 = SHADOW_VOLUME
29408  
29409  End
29410  
29411  
29412  ;------------------------------------------------------------------------------
29413  Object AmericaVehicleBattleShip
29414  
29415    SelectPortrait = T23
29416    ButtonImage    = T23
29417  
29418    UpgradeCameo1 = Upgrade_SeaRepair
29419    UpgradeCameo2 = Upgrade_SeaArmour
29420    ;UpgradeCameo3 = NONE
29421    ;UpgradeCameo4 = NONE
29422    ;UpgradeCameo5 = NONE
29423  
29424    ; *** ART Parameters ***
29425    Draw                   = W3DTankDraw ModuleTag_01
29426      OkToChangeModelColor = Yes
29427      InitialRecoilSpeed   = 120
29428      MaxRecoilDistance    = 8
29429      RecoilSettleSpeed    = 6
29430  
29431      ConditionState       = NONE
29432        Model              = AVBattleSh
29433        Animation          = AVBattleSh.AVBattleSh
29434        AnimationMode      = LOOP
29435        Turret             = Turret01
29436        TurretPitch        = TurretEL01
29437        TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
29438        AltTurret          = Turret02
29439        AltTurretPitch     = TurretEL02
29440        WeaponFireFXBone   = PRIMARY Tur1Muzzle
29441        WeaponRecoilBone   = PRIMARY Tur1Barrel
29442        WeaponFireFXBone   = SECONDARY Tur2Muzzle
29443        WeaponRecoilBone   = SECONDARY Tur2Barrel
29444      End
29445  
29446      ConditionState       = MOVING
29447        Model              = AVBattleSh
29448        Animation          = AVBattleSh.AVBattleSh
29449        AnimationMode      = LOOP
29450        Turret             = Turret01
29451        TurretPitch        = TurretEL01
29452        TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
29453        AltTurret          = Turret02
29454        AltTurretPitch     = TurretEL02
29455        WeaponFireFXBone   = PRIMARY Tur1Muzzle
29456        WeaponRecoilBone   = PRIMARY Tur1Barrel
29457        WeaponFireFXBone   = SECONDARY Tur2Muzzle
29458        WeaponRecoilBone   = SECONDARY Tur2Barrel
29459      End
29460  
29461      ConditionState       = OVER_WATER
29462        Model              = AVBattleSh
29463        Animation          = AVBattleSh.AVBattleSh
29464        AnimationMode      = LOOP
29465        Turret             = Turret01
29466        TurretPitch        = TurretEL01
29467        TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
29468        AltTurret          = Turret02
29469        AltTurretPitch     = TurretEL02
29470        WeaponFireFXBone   = PRIMARY Tur1Muzzle
29471        WeaponRecoilBone   = PRIMARY Tur1Barrel
29472        WeaponFireFXBone   = SECONDARY Tur2Muzzle
29473        WeaponRecoilBone   = SECONDARY Tur2Barrel
29474      End
29475  
29476      ConditionState       = MOVING OVER_WATER
29477        Model              = AVBattleSh
29478        Animation          = AVBattleSh.AVBattleSh
29479        AnimationMode      = LOOP
29480        Turret             = Turret01
29481        TurretPitch        = TurretEL01
29482        TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
29483        AltTurret          = Turret02
29484        AltTurretPitch     = TurretEL02
29485        WeaponFireFXBone   = PRIMARY Tur1Muzzle
29486        WeaponRecoilBone   = PRIMARY Tur1Barrel
29487        WeaponFireFXBone   = SECONDARY Tur2Muzzle
29488        WeaponRecoilBone   = SECONDARY Tur2Barrel
29489        ParticleSysBone = Mist01 AmphibMistSide
29490        ParticleSysBone = Mist02 AmphibMistSide
29491        ParticleSysBone = Mist03 AmphibMist
29492        ParticleSysBone = Mist04 AmphibMistSide
29493        ParticleSysBone = Mist05 AmphibMistSide
29494        ParticleSysBone = Mist06 AmphibMist
29495        ParticleSysBone = Mist07 AmphibMistSide
29496        ParticleSysBone = Mist08 AmphibMistSide
29497        ParticleSysBone = Mist09 AmphibMistSide
29498        ParticleSysBone = Mist10 AmphibMist
29499        ParticleSysBone = Mist11 AmphibMistSide
29500        ParticleSysBone = Mist12 AmphibMistSide
29501        ParticleSysBone = TreadFX01 AmphibWave
29502        ParticleSysBone = TreadFX02 AmphibWave
29503        ParticleSysBone = TreadFX03 AmphibWave
29504        ParticleSysBone = TreadFX04 AmphibWave
29505        ParticleSysBone = TreadFX05 AmphibWave
29506      End
29507    End
29508  
29509    VoiceSelect = PaladinTankVoiceSelect
29510  
29511    ; ***DESIGN parameters ***
29512    DisplayName            = OBJECT:Battleship
29513    Side                   = America
29514    EditorSorting          = VEHICLE
29515    TransportSlotCount     = 9                 ;how many "slots" we take in a transport (0 == not transportable)
29516    WeaponSet
29517      Conditions           = None 
29518      Weapon               = PRIMARY BattleShipGrenades ;BattleshipBogusGun
29519      Weapon               = SECONDARY BattleShipGrenades ;BattleshipBogusGun
29520    End
29521    ArmorSet
29522      Conditions           = None
29523      ;Armor                = InvulnerableArmor
29524      Armor = TankDamage
29525      DamageFX = TankDamageFX
29526    End
29527    BuildCost = 10000
29528    BuildTime = 60.0
29529    VisionRange            = 400
29530    ShroudClearingRange = 450
29531    Prerequisites
29532      Object = AmericaWarFactory
29533      Object = AmericaStrategyCenter
29534    End
29535    CommandSet             = BattleShipCommandSetFabius
29536  
29537    ; *** AUDIO Parameters ***
29538    SoundAmbient           = BattleshipAmbientLoop
29539    VoiceSelect = PaladinTankVoiceSelect
29540    UnitSpecificSounds
29541      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
29542      TurretMoveLoop       = TurretMoveLoop
29543    End
29544  
29545    ; *** ENGINEERING Parameters ***
29546    RadarPriority          = UNIT
29547    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE
29548  
29549    Body = ActiveBody ModuleTag_02
29550      MaxHealth            = 3000.0
29551      InitialHealth        = 3000.0
29552    End
29553  
29554    Behavior = MaxHealthUpgrade ModuleTag_09
29555      TriggeredBy   = Upgrade_SeaArmour
29556      AddMaxHealth  = 1000.0
29557      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
29558    End
29559  
29560    Behavior = AutoHealBehavior ModuleTag_05
29561      HealingAmount = 7
29562      HealingDelay = 500 ; msec
29563      TriggeredBy = Upgrade_SeaRepair
29564    End
29565  
29566    Behavior = AIUpdateInterface ModuleTag_03
29567      Turret
29568        TurretTurnRate     = 160
29569        TurretPitchRate    = 80
29570        FirePitch          = 12            ; Instead of aiming pitchwise at the target, it will aim here
29571        AllowsPitch        = Yes
29572        RecenterTime       = 5000       ; how long to wait during idle before recentering
29573        ControlledWeaponSlots = PRIMARY
29574        NaturalTurretAngle = 180  ; this turret points backwards normally
29575      End
29576      AltTurret
29577        TurretTurnRate     = 160
29578        TurretPitchRate    = 80
29579        FirePitch          = 15          ; Instead of aiming pitchwise at the target, it will aim here
29580        AllowsPitch        = Yes
29581        RecenterTime       = 5000     ; how long to wait during idle before recentering
29582        ControlledWeaponSlots = SECONDARY
29583      End
29584    End
29585    Locomotor = SET_NORMAL BasicBoatLocomotor 
29586  
29587    Behavior               = PhysicsBehavior ModuleTag_04
29588      Mass                 = 5000.0
29589    End
29590  
29591    Behavior = SlowDeathBehavior ModuleTag_16
29592      ProbabilityModifier = 25
29593      DestructionDelay = 200
29594      DestructionDelayVariance = 100
29595      OCL = FINAL    OCL_FirestormSmall
29596      FX  = FINAL    WeaponFX_NapalmMissileDetonation
29597    End
29598  
29599    Geometry               = BOX
29600    GeometryMajorRadius    = 200.0
29601    GeometryMinorRadius    = 20.0
29602    GeometryHeight         = 40     
29603    GeometryIsSmall        = No 
29604    Shadow                 = SHADOW_VOLUME   
29605  
29606  End
29607  
29608  ;------------------------------------------------------------------------------
29609  ; an invisible object that exists solely for the Battleship to target.
29610  Object AmericaBattleshipBogusTarget
29611  
29612    ; *** ART Parameters ***
29613    Draw = W3DModelDraw ModuleTag_01
29614      DefaultConditionState
29615        Model = None
29616      End    
29617    End
29618  
29619    ; ***DESIGN parameters ***
29620    EditorSorting   = STRUCTURE
29621    Side            = America
29622    ArmorSet
29623      Conditions      = None
29624      Armor           = InvulnerableArmor
29625      DamageFX        = None
29626    End
29627  
29628    ; *** ENGINEERING Parameters ***  
29629    RadarPriority       = NOT_ON_RADAR
29630    KindOf              = IMMOBILE
29631  
29632    Body                = ImmortalBody ModuleTag_02
29633      MaxHealth         = 99999.0
29634      InitialHealth     = 99999.0
29635    End
29636  
29637    Behavior = FireWeaponWhenDamagedBehavior ModuleTag_03
29638      StartsActive = Yes
29639      ReactionWeaponPristine = BattleshipTargetDamagedWeapon
29640      ReactionWeaponDamaged = BattleshipTargetDamagedWeapon
29641      ReactionWeaponReallyDamaged = BattleshipTargetDamagedWeapon
29642      DamageTypes = ALL
29643  ;
29644  ; want this object to "explode" (ie, fire BattleshipTargetDamagedWeapon)
29645  ; when targeted by the gun? change DamageAmount to zero. (normally the gun
29646  ; does a nonzero but tiny damage, due to the InvulnerableArmor we wear, so
29647  ; this weapon isn't fired... to trigger it, you must do damage under Script
29648  ; control, which ignores our armor.)
29649  ;
29650      DamageAmount = 1  ; if damage is >= this value, fire the weapon
29651    End
29652  
29653    Geometry            = SPHERE
29654    GeometryMajorRadius = 10.0
29655    GeometryIsSmall     = Yes
29656  
29657  End
29658  
29659  
29660  ;------------------------------------------------------------------------------
29661  ; **data here is a copy and paste of AmericaVehicleBattleDrone**
29662  Object AmericaVehicleRepairDrone
29663  
29664    ; *** ART Parameters ***
29665    Draw = W3DTankDraw ModuleTag_01
29666      ConditionState = NONE
29667        Model = AVRepairDr
29668      End
29669      TrackMarks = EXTireTrack.tga
29670      OkToChangeModelColor = Yes
29671    End
29672  
29673    ; ***DESIGN parameters ***
29674    DisplayName      = OBJECT:RepairDrone
29675    Side = America
29676    EditorSorting   = VEHICLE
29677  
29678    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
29679    WeaponSet
29680      Conditions = None 
29681      Weapon = PRIMARY CrusaderTankGun
29682    End
29683    ArmorSet
29684      Conditions      = None
29685      Armor           = TankArmor
29686      DamageFX        = TankDamageFX
29687    End
29688    BuildCost       = 700
29689    BuildTime       = 5.0          ;in seconds    
29690    VisionRange     = 150
29691    ShroudClearingRange = 150
29692    Prerequisites
29693      Object = AmericaWarFactory
29694    End
29695    ExperienceValue    = 50 100 150 400 ;Experience point value at each level
29696    ExperienceRequired = 0 150 450 900 ;Experience points needed to gain each level
29697    IsTrainable     = Yes  ;Can gain experience
29698    
29699    ; *** AUDIO Parameters ***
29700    VoiceSelect = NoSound
29701    VoiceMove = NoSound
29702    VoiceAttack = NoSound
29703    SoundMoveStart = NoSound
29704  
29705    UnitSpecificSounds
29706    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
29707      TurretMoveStart = NoSound
29708      TurretMoveLoop = NoSound
29709    End
29710  
29711  
29712    ; *** ENGINEERING Parameters ***
29713    RadarPriority = UNIT
29714    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE DRONE
29715    
29716    Body = ActiveBody ModuleTag_02
29717      MaxHealth       = 100.0
29718      InitialHealth   = 100.0
29719    End
29720  
29721    Behavior = AIUpdateInterface ModuleTag_03
29722      Turret
29723        TurretTurnRate = 60   // turn rate, in degrees per sec
29724        ControlledWeaponSlots = PRIMARY
29725      End
29726      AutoAcquireEnemiesWhenIdle = Yes
29727    End
29728    Locomotor = SET_NORMAL BasicTankLocomotor
29729  
29730    Behavior = PhysicsBehavior ModuleTag_04
29731      Mass = 50.0
29732    End
29733    Behavior = SlowDeathBehavior ModuleTag_05
29734      DestructionDelay = 500
29735      FX = FINAL FX_GenericTankDeathExplosion
29736    End
29737  
29738    Behavior = MaxHealthUpgrade ModuleTag_06
29739      TriggeredBy   = Upgrade_AmericaDroneArmor
29740      AddMaxHealth  = 50.0
29741      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
29742    End
29743  
29744    Behavior = FXListDie ModuleTag_07
29745      DeathFX = FX_GenericTankDeathEffect
29746    End
29747    Behavior = CreateObjectDie ModuleTag_08
29748      CreationList = OCL_GenericTankDeathEffect
29749    End
29750    Behavior = CreateCrateDie ModuleTag_09
29751      CrateData = SalvageCrateData
29752     ;CrateData = EliteTankCrateData
29753     ;CrateData = HeroicTankCrateData
29754    End
29755  
29756    Behavior = FlammableUpdate ModuleTag_21
29757      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
29758      AflameDamageAmount = 3       ; taking this much damage...
29759      AflameDamageDelay = 500       ; this often.
29760    End
29761  
29762    Geometry = BOX
29763    GeometryMajorRadius = 11.0
29764    GeometryMinorRadius = 7.0
29765    GeometryHeight = 10.0     
29766    GeometryIsSmall = Yes 
29767    Shadow = SHADOW_VOLUME
29768  
29769  End
29770  
29771  ;------------------------------------------------------------------------------
29772  Object AmericaJetCargoPlane
29773  
29774    ; *** ART Parameters ***
29775    Draw = W3DModelDraw ModuleTag_01
29776      DefaultConditionState
29777        Model            = AVCargoPln
29778        Animation       = AVCargoPln.AVCargoPln
29779        AnimationMode   = LOOP
29780        ParticleSysBone = Propeller01 JetBlackTrailThin
29781        ParticleSysBone = Propeller02 JetBlackTrailThin
29782        ParticleSysBone = Propeller03 JetBlackTrailThin
29783        ParticleSysBone = Propeller04 JetBlackTrailThin
29784        ParticleSysBone = WingTip01 JetContrailThin
29785        ParticleSysBone = WingTip02 JetContrailThin
29786      End
29787  
29788      ConditionState = DAMAGED
29789        Model           = AVCargoPln_D
29790        Animation       = AVCargoPln_D.AVCargoPln_D
29791        AnimationMode   = MANUAL
29792        Flags           = START_FRAME_FIRST
29793        ParticleSysBone = Smoke01 JetFireLarge
29794        ParticleSysBone = Smoke02 JetFireLarge
29795        ParticleSysBone = Propeller03 JetBlackTrailThin
29796        ParticleSysBone = Propeller04 JetBlackTrailThin
29797        ParticleSysBone = Smoke01 JetSmokeLarge
29798        ParticleSysBone = Smoke02 JetSmokeLarge
29799      End
29800  
29801      ConditionState = REALLYDAMAGED
29802        Model           = AVCargoPln_D
29803        Animation       = AVCargoPln_D.AVCargoPln_D
29804        AnimationMode   = MANUAL
29805        Flags           = START_FRAME_FIRST
29806        ParticleSysBone = Smoke01 JetFireLarge
29807        ParticleSysBone = Smoke02 JetFireLarge
29808        ParticleSysBone = Smoke03 JetFireLarge
29809        ParticleSysBone = Smoke05 JetFireLarge
29810        ParticleSysBone = Propeller03 JetBlackTrailThin
29811        ParticleSysBone = Propeller04 JetBlackTrailThin
29812        ParticleSysBone = Smoke01 JetSmokeLarge
29813        ParticleSysBone = Smoke02 JetSmokeLarge
29814        ParticleSysBone = Smoke03 JetSmokeLarge
29815        ParticleSysBone = Smoke05 JetSmokeLarge
29816      End
29817  
29818      ConditionState = RUBBLE
29819        Model           = AVCargoPln_D1
29820        Animation       = AVCargoPln_D.AVCargoPln_D
29821        AnimationMode   = MANUAL
29822        Flags           = START_FRAME_FIRST
29823        ParticleSysBone = Smoke01 JetFireLarge
29824        ParticleSysBone = Smoke06 JetFireLarge
29825        ParticleSysBone = Smoke03 JetFireLarge
29826        ParticleSysBone = Smoke05 JetFireLarge
29827        ParticleSysBone = Smoke01 JetSmokeLarge
29828        ParticleSysBone = Smoke06 JetSmokeLarge
29829        ParticleSysBone = Smoke03 JetSmokeLarge
29830        ParticleSysBone = Smoke05 JetSmokeLarge
29831      End
29832      
29833      OkToChangeModelColor = Yes
29834    End
29835  
29836    Draw = W3DModelDraw ModuleTag_02
29837      DefaultConditionState
29838        Model           = AVCargoPln_A2
29839        Animation       = AVCargoPln_A2.AVCargoPln_A2
29840        AnimationMode   = MANUAL
29841        Flags           = START_FRAME_FIRST
29842      End
29843      ConditionState = DOOR_1_OPENING
29844        Model           = AVCargoPln_A2
29845        Animation       = AVCargoPln_A2.AVCargoPln_A2
29846        AnimationMode   = ONCE
29847        Flags           = START_FRAME_FIRST
29848      End
29849      ConditionState = DOOR_1_CLOSING
29850        Model           = AVCargoPln_A2
29851        Animation       = AVCargoPln_A2.AVCargoPln_A2
29852        AnimationMode   = ONCE_BACKWARDS
29853        Flags           = START_FRAME_LAST
29854      End
29855    End
29856    
29857    ; ***DESIGN parameters ***
29858    DisplayName         = OBJECT:CargoPlane
29859    EditorSorting       = VEHICLE
29860    Side                = America
29861    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
29862    VisionRange         = 0.0 
29863    ArmorSet
29864      Conditions      = None
29865      Armor           = AirplaneArmor
29866      DamageFX        = TankDamageFX
29867    End
29868    CommandSet        = Command_ScriptedTransportDrops
29869  
29870    ; *** AUDIO Parameters ***
29871    SoundAmbient = C130AmbientLoop
29872    SoundAmbientRubble    = NoSound
29873  
29874    ; *** ENGINEERING Parameters ***
29875    RadarPriority = UNIT
29876    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT FORCEATTACKABLE IGNORED_IN_GUI
29877    Body = ActiveBody ModuleTag_03
29878      MaxHealth       = 1000.0
29879      InitialHealth   = 1000.0
29880    End
29881  
29882    ExperienceValue     = 40 40 40 40  ; Experience point value at each level
29883  
29884    Behavior = PhysicsBehavior ModuleTag_04
29885      Mass = 500.0
29886    End
29887  
29888    ;SCRIPTED SUPPORT: These special powers are triggered directly 
29889    ;from the transport without creating a transport. This is done 
29890    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
29891    ;which also prevents creating the payload transport.
29892    Behavior    = OCLSpecialPower ModuleTag_05
29893      SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@
29894      OCL                  = SUPERWEAPON_DaisyCutter
29895      CreateLocation       = USE_OWNER_OBJECT
29896    End
29897    Behavior    = OCLSpecialPower ModuleTag_06
29898      SpecialPowerTemplate = SuperweaponParadropAmerica
29899      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
29900      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
29901      OCL                  = SUPERWEAPON_Paradrop1
29902      CreateLocation       = USE_OWNER_OBJECT
29903    End 
29904    Behavior    = OCLSpecialPower ModuleTag_07
29905      SpecialPowerTemplate = SuperweaponCarpetBomb
29906      OCL                  = SUPERWEAPON_CarpetBomb
29907      CreateLocation       = USE_OWNER_OBJECT
29908    End 
29909    Behavior    = OCLSpecialPower ModuleTag_08
29910      SpecialPowerTemplate = SuperweaponCrateDrop
29911      OCL                  = SUPERWEAPON_CrateDrop
29912      CreateLocation       = USE_OWNER_OBJECT
29913    End 
29914  
29915    Behavior = DeliverPayloadAIUpdate ModuleTag_09
29916      DoorDelay         = 500
29917      MaxAttempts       = 4
29918      DropOffset        = X:0 Y:0 Z:-10
29919      DropDelay         = 300 ; time in between each item dropped (if more than one)
29920      PutInContainer    = AmericaParachute
29921      DeliveryDistance  = 150
29922    End
29923    Locomotor = SET_NORMAL B52Locomotor
29924  
29925    Behavior = TransportContain ModuleTag_10
29926      Slots = 100                     ; hey, it's a BIG transport
29927      ScatterNearbyOnExit = No
29928      OrientLikeContainerOnExit = Yes
29929      KeepContainerVelocityOnExit = Yes
29930      ExitPitchRate = 30
29931      ExitBone = WeaponA01
29932      AllowInsideKindOf  = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE 
29933      ;gs I added parachutable as a catch all to prevent making new kindofs (like CRATE)
29934      DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
29935      NumberOfExitPaths = 0
29936      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
29937    End
29938      
29939    Behavior                          = JetSlowDeathBehavior ModuleTag_11
29940      DestructionDelay                = 2000 
29941      RollRate                        = 0.0
29942      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
29943      PitchRate                       = 0
29944      FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
29945      FXInitialDeath                  = FX_JetBigDeathInitial
29946      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
29947      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
29948      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
29949      FXSecondary                     = FX_BigPlaneDeath
29950  ;   FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
29951  ;   OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
29952  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
29953    End
29954  
29955    ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_12
29956    End
29957  
29958    Behavior = TransitionDamageFX ModuleTag_17
29959      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
29960      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
29961    End
29962  
29963  
29964    Geometry = Box
29965    GeometryIsSmall = No
29966    GeometryMajorRadius = 40.0
29967    GeometryMinorRadius = 10.0
29968    GeometryHeight = 10.0
29969    Shadow = SHADOW_VOLUME
29970    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
29971  End
29972  
29973  ;----------------------------------------------------------
29974  Object AmericaJetCargoHulk
29975    ; *** ART Parameters ***
29976    Draw                = W3DModelDraw ModuleTag_01
29977      ConditionState    = NONE
29978        Model           = AVCargoPln_D1
29979      End
29980    End
29981  
29982    ; ***DESIGN parameters ***
29983    EditorSorting       = DEBRIS
29984  
29985    ; *** ENGINEERING Parameters ***
29986    KindOf              =  NO_COLLIDE HULK
29987  
29988    Behavior                  = PhysicsBehavior ModuleTag_03
29989      Mass                    = 1.0
29990      AllowBouncing           = Yes
29991      KillWhenRestingOnGround = No
29992    End
29993    Behavior = LifetimeUpdate ModuleTag_04
29994      MinLifetime = 500   ; min lifetime in msec
29995      MaxLifetime = 1500   ; max lifetime in msec
29996    End
29997  
29998    Behavior = InstantDeathBehavior ModuleTag_05
29999      DeathTypes = ALL
30000  ;    FX         = FX_BigPlaneDeath
30001  ;   OCL        = OCL_AmericaJetCargoHulkDeath
30002    End
30003  
30004  End
30005  
30006  ;------------------------------------------------------------------------------
30007  Object GLAJetCargoPlane
30008  
30009    ; *** ART Parameters ***
30010    Draw = W3DModelDraw ModuleTag_01
30011      DefaultConditionState
30012        Model           = UVCargoPln
30013        Animation       = UVCargoPln.UVCargoPln
30014        AnimationMode   = LOOP
30015        ParticleSysBone = Engine01 JetBlackTrail
30016        ParticleSysBone = Engine02 JetBlackTrail
30017        ParticleSysBone = Engine03 JetBlackTrail
30018        ParticleSysBone = Engine04 JetBlackTrail      
30019      End
30020      ConditionState = DAMAGED
30021        Model           = UVCargoPln_D
30022        Animation       = UVCargoPln_D.UVCargoPln_D
30023        AnimationMode   = MANUAL
30024        Flags           = START_FRAME_FIRST
30025        ParticleSysBone = Smoke01 JetFireLarge
30026        ParticleSysBone = Smoke02 JetFireLarge
30027        ParticleSysBone = Propeller03 JetBlackTrailThin
30028        ParticleSysBone = Propeller04 JetBlackTrailThin
30029        ParticleSysBone = Smoke01 JetSmokeLarge
30030        ParticleSysBone = Smoke02 JetSmokeLarge
30031        ParticleSysBone = Smoke03 JetSmokeLarge
30032      End
30033      ConditionState = REALLYDAMAGED
30034        Model           = UVCargoPln_D
30035        Animation       = UVCargoPln_D.UVCargoPln_D
30036        AnimationMode   = MANUAL
30037        Flags           = START_FRAME_FIRST
30038        ParticleSysBone = Smoke01 JetFireLarge
30039        ParticleSysBone = Smoke02 JetFireLarge
30040        ParticleSysBone = Propeller03 JetBlackTrailThin
30041        ParticleSysBone = Propeller04 JetBlackTrailThin
30042        ParticleSysBone = Smoke01 JetSmokeLarge
30043        ParticleSysBone = Smoke02 JetSmokeLarge
30044        ParticleSysBone = Smoke03 JetSmokeLarge
30045      End
30046      ConditionState = RUBBLE
30047        Model           = UVCargoPln_D1
30048        ParticleSysBone = Smoke01 JetFireLarge
30049        ParticleSysBone = Smoke02 JetFireLarge
30050        ParticleSysBone = Smoke03 JetFireLarge
30051        ParticleSysBone = Smoke04 JetFireLarge
30052        ParticleSysBone = Smoke01 JetSmokeLarge
30053        ParticleSysBone = Smoke02 JetSmokeLarge
30054        ParticleSysBone = Smoke03 JetSmokeLarge
30055        ParticleSysBone = Smoke04 JetSmokeLarge
30056      End
30057      
30058      OkToChangeModelColor = Yes
30059    End
30060  
30061    Draw = W3DModelDraw ModuleTag_02
30062      DefaultConditionState
30063        Model           = UVCargoPln_A2
30064        Animation       = UVCargoPln_A2.UVCargoPln_A2
30065        AnimationMode   = MANUAL
30066        Flags           = START_FRAME_FIRST
30067      End
30068      ConditionState = DOOR_1_OPENING
30069        Model           = UVCargoPln_A2
30070        Animation       = UVCargoPln_A2.UVCargoPln_A2
30071        AnimationMode   = ONCE
30072        Flags           = START_FRAME_FIRST
30073      End
30074      ConditionState = DOOR_1_CLOSING
30075        Model           = UVCargoPln_A2
30076        Animation       = UVCargoPln_A2.UVCargoPln_A2
30077        AnimationMode   = ONCE_BACKWARDS
30078        Flags           = START_FRAME_LAST
30079      End
30080    End
30081    
30082    ; ***DESIGN parameters ***
30083    DisplayName         = OBJECT:CargoPlane
30084    EditorSorting       = VEHICLE
30085    Side                = GLA
30086    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
30087    VisionRange         = 0.0 
30088    ArmorSet
30089      Conditions      = None
30090      Armor           = AirplaneArmor
30091      DamageFX        = None
30092    End
30093    CommandSet          = Command_ScriptedTransportDrops
30094  
30095    ; *** AUDIO Parameters ***
30096    SoundAmbient = C130AmbientLoop
30097    SoundAmbientRubble    = NoSound
30098  
30099    ; *** ENGINEERING Parameters ***
30100    RadarPriority = UNIT
30101    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT FORCEATTACKABLE IGNORED_IN_GUI
30102    Body = ActiveBody ModuleTag_03
30103      MaxHealth       = 1000.0
30104      InitialHealth   = 1000.0
30105    End
30106  
30107    ExperienceValue     = 40 40 40 40  ; Experience point value at each level
30108   
30109    Behavior = PhysicsBehavior ModuleTag_04
30110      Mass = 500.0
30111    End
30112  
30113    Behavior = DeliverPayloadAIUpdate ModuleTag_05
30114      DoorDelay = 500
30115      MaxAttempts = 4
30116      DropOffset = X:0 Y:0 Z:-10
30117      DropDelay = 300 ;500 ; time in between each item dropped (if more than one)
30118      PutInContainer = AmericaParachute
30119      DeliveryDistance = 150
30120    End
30121    Locomotor = SET_NORMAL B52Locomotor
30122  
30123    Behavior = TransportContain ModuleTag_06
30124      Slots = 100                     ; hey, it's a BIG transport
30125      ScatterNearbyOnExit = No
30126      OrientLikeContainerOnExit = Yes
30127      KeepContainerVelocityOnExit = Yes
30128      ExitPitchRate = 30
30129      ExitBone = WeaponA01
30130      AllowInsideKindOf  = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE FORCEATTACKABLE
30131      DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
30132      NumberOfExitPaths = 0
30133      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
30134    End
30135  
30136    ;SCRIPTED SUPPORT: These special powers are triggered directly 
30137    ;from the transport without creating a transport. This is done 
30138    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
30139    ;which also prevents creating the payload transport.
30140    Behavior    = OCLSpecialPower ModuleTag_07
30141      SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@
30142      OCL                  = SUPERWEAPON_DaisyCutter
30143      CreateLocation       = USE_OWNER_OBJECT
30144    End
30145    Behavior    = OCLSpecialPower ModuleTag_08
30146      SpecialPowerTemplate = SuperweaponParadropAmerica
30147      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
30148      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
30149      OCL                  = SUPERWEAPON_Paradrop1
30150      CreateLocation       = USE_OWNER_OBJECT
30151    End 
30152    Behavior    = OCLSpecialPower ModuleTag_09
30153      SpecialPowerTemplate = SuperweaponCarpetBomb
30154      OCL                  = SUPERWEAPON_CarpetBomb
30155      CreateLocation       = USE_OWNER_OBJECT
30156    End 
30157  
30158    Behavior                          = JetSlowDeathBehavior ModuleTag_10
30159      DestructionDelay                = 2000 
30160      RollRate                        = 0.0
30161      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
30162      PitchRate                       = 0
30163      FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
30164      FXInitialDeath                  = FX_JetBigDeathInitial
30165      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
30166      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
30167      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
30168      FXSecondary                     = FX_BigPlaneDeath
30169    End
30170  
30171    ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_11
30172    End
30173  
30174    Behavior = TransitionDamageFX ModuleTag_12
30175      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
30176      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
30177    End
30178  
30179    Geometry = Box
30180    GeometryIsSmall = No
30181    GeometryMajorRadius = 40.0
30182    GeometryMinorRadius = 10.0
30183    GeometryHeight = 10.0
30184    Shadow = SHADOW_VOLUME
30185    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
30186  
30187  End
30188  
30189  ;------------------------------------------------------------------------------
30190  Object ChinaJetCargoPlane
30191  
30192    ; *** ART Parameters ***
30193    Draw = W3DModelDraw ModuleTag_01
30194      DefaultConditionState
30195        Model           = NVCargoPln
30196        Animation       = NVCargoPln.NVCargoPln
30197        AnimationMode   = LOOP
30198        ParticleSysBone = Propeller01 JetBlackTrailThin
30199        ParticleSysBone = Propeller02 JetBlackTrailThin
30200        ParticleSysBone = Propeller03 JetBlackTrailThin
30201        ParticleSysBone = Propeller04 JetBlackTrailThin
30202        ParticleSysBone = WingTip01 JetContrailThin
30203        ParticleSysBone = WingTip02 JetContrailThin
30204      End
30205      ConditionState = DAMAGED
30206        Model           = NVCargoPln_D
30207        Animation       = NVCargoPln_D.NVCargoPln_D
30208        AnimationMode   = MANUAL
30209        Flags           = START_FRAME_FIRST
30210        ParticleSysBone = Smoke01 JetFireLarge
30211        ParticleSysBone = Smoke03 JetFireLarge
30212        ParticleSysBone = Propeller01 JetBlackTrailThin
30213        ParticleSysBone = Propeller02 JetBlackTrailThin
30214        ParticleSysBone = Propeller03 JetBlackTrailThin
30215        ParticleSysBone = Propeller04 JetBlackTrailThin
30216        ParticleSysBone = Smoke01 JetSmokeLarge
30217        ParticleSysBone = Smoke03 JetSmokeLarge
30218        ParticleSysBone = WingTip01 JetContrailThin
30219        ParticleSysBone = WingTip02 JetContrailThin
30220      End
30221      ConditionState = REALLYDAMAGED
30222        Model           = NVCargoPln_D
30223        Animation       = NVCargoPln_D.NVCargoPln_D
30224        AnimationMode   = MANUAL
30225        Flags           = START_FRAME_FIRST
30226        ParticleSysBone = Smoke01 JetFireLarge
30227        ParticleSysBone = Smoke03 JetFireLarge
30228        ParticleSysBone = Smoke04 JetFireLarge
30229        ParticleSysBone = Propeller03 JetBlackTrailThin
30230        ParticleSysBone = Propeller04 JetBlackTrailThin
30231        ParticleSysBone = Smoke01 JetSmokeLarge
30232        ParticleSysBone = Smoke03 JetSmokeLarge
30233        ParticleSysBone = Smoke04 JetSmokeLarge
30234        ParticleSysBone = WingTip01 JetContrailThin
30235        ParticleSysBone = WingTip02 JetContrailThin
30236      End
30237      ConditionState = RUBBLE
30238        Model           = NVCargoPln_D1
30239        ParticleSysBone = Smoke01 JetFireLarge
30240        ParticleSysBone = Smoke06 JetFireLarge
30241        ParticleSysBone = Smoke03 JetFireLarge
30242        ParticleSysBone = Smoke04 JetFireLarge
30243        ParticleSysBone = Smoke01 JetSmokeLarge
30244        ParticleSysBone = Smoke06 JetSmokeLarge
30245        ParticleSysBone = Smoke03 JetSmokeLarge
30246        ParticleSysBone = Smoke04 JetSmokeLarge
30247      End
30248      
30249      OkToChangeModelColor = Yes
30250    End
30251  
30252    Draw = W3DModelDraw ModuleTag_02
30253      DefaultConditionState
30254        Model           = NVCargoPln_A2
30255        Animation       = NVCargoPln_A2.NVCargoPln_A2
30256        AnimationMode   = MANUAL
30257        Flags           = START_FRAME_FIRST
30258      End
30259      ConditionState = DOOR_1_OPENING
30260        Model           = NVCargoPln_A2
30261        Animation       = NVCargoPln_A2.NVCargoPln_A2
30262        AnimationMode   = ONCE
30263        Flags           = START_FRAME_FIRST
30264      End
30265      ConditionState = DOOR_1_CLOSING
30266        Model           = NVCargoPln_A2
30267        Animation       = NVCargoPln_A2.NVCargoPln_A2
30268        AnimationMode   = ONCE_BACKWARDS
30269        Flags           = START_FRAME_LAST
30270      End
30271    End
30272  
30273    
30274    ; ***DESIGN parameters ***
30275    DisplayName         = OBJECT:CargoPlane
30276    EditorSorting       = VEHICLE
30277    Side                = China
30278    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
30279    VisionRange         = 0.0 
30280    ArmorSet
30281      Conditions      = None
30282      Armor           = AirplaneArmor
30283      DamageFX        = None
30284    End
30285    CommandSet        = Command_ScriptedTransportDrops
30286  
30287    ; *** AUDIO Parameters ***
30288    SoundAmbient = C130AmbientLoop
30289    SoundAmbientRubble    = NoSound
30290  
30291    ; *** ENGINEERING Parameters ***
30292    RadarPriority = UNIT
30293    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT FORCEATTACKABLE IGNORED_IN_GUI
30294    Body = ActiveBody ModuleTag_03
30295      MaxHealth       = 1000.0
30296      InitialHealth   = 1000.0
30297    End
30298  
30299    ExperienceValue     = 40 40 40 40  ; Experience point value at each level
30300   
30301    Behavior = PhysicsBehavior ModuleTag_04
30302      Mass = 500.0
30303    End
30304  
30305    Behavior = DeliverPayloadAIUpdate ModuleTag_05
30306      DoorDelay = 500
30307      MaxAttempts = 4
30308      DropOffset = X:0 Y:0 Z:-10
30309      DropDelay = 300 ;500 ; time in between each item dropped (if more than one)
30310      PutInContainer = AmericaParachute
30311      DeliveryDistance = 150
30312    End
30313    Locomotor = SET_NORMAL B52Locomotor
30314  
30315    Behavior = TransportContain ModuleTag_06
30316      Slots = 100                     ; hey, it's a BIG transport
30317      ScatterNearbyOnExit = No
30318      OrientLikeContainerOnExit = Yes
30319      KeepContainerVelocityOnExit = Yes
30320      ExitPitchRate = 30
30321      ExitBone = WeaponA01
30322      AllowInsideKindOf  = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE
30323      DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
30324      NumberOfExitPaths = 0
30325      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
30326    End
30327  
30328    ;SCRIPTED SUPPORT: These special powers are triggered directly 
30329    ;from the transport without creating a transport. This is done 
30330    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
30331    ;which also prevents creating the payload transport.
30332    Behavior    = OCLSpecialPower ModuleTag_07
30333      SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@
30334      OCL                  = SUPERWEAPON_DaisyCutter
30335      CreateLocation       = USE_OWNER_OBJECT
30336    End
30337    Behavior    = OCLSpecialPower ModuleTag_08
30338      SpecialPowerTemplate = SuperweaponParadropAmerica
30339      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
30340      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
30341      OCL                  = SUPERWEAPON_Paradrop1
30342      CreateLocation       = USE_OWNER_OBJECT
30343    End 
30344    Behavior    = OCLSpecialPower ModuleTag_09
30345      SpecialPowerTemplate = SuperweaponCarpetBomb
30346      OCL                  = SUPERWEAPON_CarpetBomb
30347      CreateLocation       = USE_OWNER_OBJECT
30348    End 
30349    Behavior    = OCLSpecialPower ModuleTag_10
30350      SpecialPowerTemplate = SuperweaponClusterMines
30351      OCL                  = SUPERWEAPON_ClusterMines
30352      CreateLocation       = USE_OWNER_OBJECT
30353    End 
30354    Behavior    = OCLSpecialPower ModuleTag_11
30355      SpecialPowerTemplate = SuperweaponEMPPulse
30356      OCL                  = SUPERWEAPON_EMPPulse
30357      CreateLocation       = USE_OWNER_OBJECT
30358    End 
30359      
30360    Behavior                          = JetSlowDeathBehavior ModuleTag_12
30361      DestructionDelay                = 2000 
30362      RollRate                        = 0.0
30363      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
30364      PitchRate                       = 0
30365      FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
30366      FXInitialDeath                  = FX_JetBigDeathInitial
30367      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
30368      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
30369      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
30370      FXSecondary                     = FX_BigPlaneDeath
30371    End
30372  
30373    ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_13
30374    End
30375  
30376    Behavior = TransitionDamageFX ModuleTag_14
30377      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
30378      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
30379    End
30380  
30381    Geometry = Box
30382    GeometryIsSmall = No
30383    GeometryMajorRadius = 40.0
30384    GeometryMinorRadius = 10.0
30385    GeometryHeight = 10.0
30386    Shadow = SHADOW_VOLUME
30387    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
30388  
30389  End
30390  
30391  ;------------------------------------------------------------------------------
30392  ; NOTE NOTE NOTE NOTE
30393  ; NOTE NOTE NOTE NOTE
30394  ; NOTE NOTE NOTE NOTE
30395  ; NOTE NOTE NOTE NOTE
30396  ;
30397  ; Although POW Trucks are cut, this one remains, for cinematic purposes only.
30398  ; (It is used in USA03.) It can't do anything interesting, other than move
30399  ; and get blown up.
30400  ; (srj)
30401  ;
30402  ;
30403  
30404  Object AmericaVehiclePOWTruck
30405    ; *** ART Parameters ***
30406    SelectPortrait         = SAPowTruck
30407    ButtonImage            = SAPowTruck
30408    ;UpgradeCameo1 = NONE
30409    ;UpgradeCameo2 = NONE
30410    ;UpgradeCameo3 = NONE
30411    ;UpgradeCameo4 = NONE
30412    ;UpgradeCameo5 = NONE
30413    Draw                   = W3DTruckDraw ModuleTag_01
30414      OkToChangeModelColor = Yes
30415      ConditionState       = NONE
30416        Model              = AVPOWTRUCK
30417      End
30418      ConditionState       = REALLYDAMAGED
30419        Model              = AVPOWTRUCK_D
30420      End
30421      ConditionState       = RUBBLE
30422        Model              = AVPOWTruck_D
30423      End
30424      TrackMarks           = EXTireTrack.tga
30425      Dust                 = RocketBuggyDust
30426      DirtSpray            = RocketBuggyDirtSpray
30427      PowerslideSpray      = RocketBuggyDirtPowerSlide
30428      ; These parameters are only used if the model has a separate suspension, 
30429      ; and the locomotor has HasSuspension = Yes.
30430      LeftFrontTireBone          = Tire01
30431      RightFrontTireBone         = Tire02
30432      MidLeftRearTireBone        = Tire03
30433      MidRightRearTireBone       = Tire05
30434      LeftRearTireBone           = Tire04
30435      RightRearTireBone          = Tire06
30436      TireRotationMultiplier     = 0.2   ; this * speed = rotation.
30437      PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
30438    End
30439    ; ***DESIGN parameters ***
30440    DisplayName          = OBJECT:POWTruck
30441    Side                 = America
30442    EditorSorting        = VEHICLE
30443    TransportSlotCount   = 3                 ;how many "slots" we take in a transport (0 == not transportable)
30444    ArmorSet
30445      Conditions         = None
30446      Armor              = TruckArmor
30447      DamageFX           = TankDamageFX
30448    End
30449    ; nope, sorry, can't build it. (srj)
30450    Buildable = No
30451    ;BuildCost            = 500
30452    ;BuildTime            = 10.0          ;in seconds    
30453    VisionRange          = 200
30454    ShroudClearingRange  = 300
30455    ExperienceValue      = 50 50 50 50    ;Experience point value at each level
30456    ExperienceRequired   = 0 150 450 900  ;Experience points needed to gain each level
30457    IsTrainable          = Yes             ;Can gain experience
30458    CrusherLevel         = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
30459    CrushableLevel       = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
30460    
30461    ; nope, sorry, can't control it. (srj)
30462    ;CommandSet           = VehiclePOWTruckCommandSet
30463  
30464    ; *** AUDIO Parameters ***
30465    VoiceSelect = POWTruckUSAVoiceSelect
30466    VoiceMove = POWTruckUSAVoiceMove
30467    VoiceGuard = POWTruckUSAVoiceMove
30468    SoundEnter = POWTruckEnter
30469    SoundExit = POWTruckExit
30470    UnitSpecificSounds
30471      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
30472      VoiceCreate          = POWTruckUSAVoiceCreate
30473      TurretMoveLoop       = TurretMoveLoop
30474      SoundMoveStart       = POWTruckUSAMoveStart
30475      SoundMoveStartDamaged = POWTruckUSAMoveStart
30476      SoundEject           = PilotSoundEject
30477      VoiceEject           = PilotVoiceEject
30478      VoiceCrush           = POWTruckUSAVoiceCrush
30479      ; Required for the W3DTruckDraw module
30480      TruckLandingSound    = RocketBuggyLand
30481      TruckPowerslideSound = POWTruckUSAMoveStart
30482      VoiceEnter           = POWTruckUSAVoiceMove
30483    End
30484    ; *** ENGINEERING Parameters ***
30485    RadarPriority          = UNIT
30486    KindOf                 = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE TRANSPORT SCORE
30487    Body                   = ActiveBody ModuleTag_02
30488      MaxHealth            = 500.0
30489      InitialHealth        = 500.0
30490    End
30491    ; nope, sorry, can't do interesting things like this. (srj)
30492    ;Behavior               = POWTruckBehavior ModuleTag_03
30493    ;  ContainMax           = 10
30494    ;  EnterSound           = EnterPOWTruck
30495    ;  ExitSound            = ExitPOWTruck
30496    ;End
30497    ; nope, sorry, can't do interesting things like this. (srj)
30498    ;Behavior = POWTruckAIUpdate ModuleTag_04
30499    ;  BoredTime            = 10000  ; in milliseconds
30500    ;  AtPrisonDistance     = 160.0 ; This close to a prison is close enough to be doing nothing at
30501    ;End
30502    ; but we must have an AIUpdate in order for our Locomotor to work.
30503    Behavior = AIUpdateInterface ModuleTag_04
30504      ; no data
30505    End
30506    Locomotor              = SET_NORMAL POWTruckLocomotor
30507    Behavior               = PhysicsBehavior ModuleTag_05
30508      Mass                 = 50.0
30509    End
30510    Behavior               = SlowDeathBehavior ModuleTag_06
30511      DeathTypes           = ALL -CRUSHED -SPLATTED
30512      ProbabilityModifier  = 25
30513      DestructionDelay     = 1
30514      FX                   = FINAL    FX_BattleMasterExplosionOneFinal
30515      OCL                  = FINAL    OCL_AmericanPOWTruckDeathEffect
30516    End
30517    Behavior               = FXListDie ModuleTag_07
30518      DeathTypes           = NONE +CRUSHED +SPLATTED
30519      DeathFX              = FX_CarCrush
30520    End
30521    Behavior = TransitionDamageFX ModuleTag_09
30522      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
30523      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
30524    End
30525    Behavior = ExperienceScalarUpgrade ModuleTag_10
30526      TriggeredBy = Upgrade_AmericaAdvancedTraining
30527      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
30528    End
30529    Behavior = FlammableUpdate ModuleTag_21
30530      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
30531      AflameDamageAmount = 3       ; taking this much damage...
30532      AflameDamageDelay = 500       ; this often.
30533    End
30534    Geometry               = BOX
30535    GeometryMajorRadius    = 15.0
30536    GeometryMinorRadius    = 7.0
30537    GeometryHeight         = 13.5     
30538    GeometryIsSmall        = Yes 
30539    Shadow                 = SHADOW_VOLUME   
30540  End
30541  
30542  ;------------------------------------------------------------------------------
30543  ; POW Trucks are cut. sorry. (srj)
30544  ;Object ChinaVehiclePOWTruck
30545  ;  ; *** ART Parameters ***
30546  ;  SelectPortrait         = SNPowTruck
30547  ;  ;UpgradeCameo1 = NONE
30548  ;  ;UpgradeCameo2 = NONE
30549  ;  ;UpgradeCameo3 = NONE
30550  ;  ;UpgradeCameo4 = NONE
30551  ;  ;UpgradeCameo5 = NONE
30552  ;  Draw                   = W3DTruckDraw ModuleTag_01
30553  ;    OkToChangeModelColor = Yes
30554  ;    ConditionState       = NONE
30555  ;      Model              = NVPOWTRCK
30556  ;    End
30557  ;    ConditionState       = REALLYDAMAGED
30558  ;      Model              = NVPOWTRCK_D
30559  ;    End   
30560  ;    ConditionState       = RUBBLE
30561  ;      Model              = NVPOWTRCK_D
30562  ;    End
30563  ;    TrackMarks           = EXTireTrack.tga
30564  ;    Dust                 = RocketBuggyDust
30565  ;    DirtSpray            = RocketBuggyDirtSpray
30566  ;    PowerslideSpray      = RocketBuggyDirtPowerSlide
30567  ;    ; These parameters are only used if the model has a separate suspension, 
30568  ;    ; and the locomotor has HasSuspension = Yes.
30569  ;    LeftFrontTireBone          = Tire01
30570  ;    RightFrontTireBone         = Tire04
30571  ;    MidLeftRearTireBone        = Tire02
30572  ;    MidRightRearTireBone       = Tire05
30573  ;    LeftRearTireBone           = Tire03
30574  ;    RightRearTireBone          = Tire06
30575  ;    TireRotationMultiplier     = 0.2   ; this * speed = rotation.
30576  ;    PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
30577  ;  End
30578  ;  ; ***DESIGN parameters ***
30579  ;  DisplayName          = OBJECT:POWTruck
30580  ;  Side                 = China
30581  ;  EditorSorting        = VEHICLE
30582  ;  TransportSlotCount   = 3                 ;how many "slots" we take in a transport (0 == not transportable)
30583  ;  ArmorSet
30584  ;    Conditions         = None
30585  ;    Armor              = TruckArmor
30586  ;    DamageFX           = TankDamageFX
30587  ;  End
30588  ;  BuildCost            = 500
30589  ;  BuildTime            = 10.0          ;in seconds    
30590  ;  VisionRange          = 200
30591  ;  ShroudClearingRange = 300
30592  ;  ExperienceValue      = 50 50 50 50    ;Experience point value at each level
30593  ;  ExperienceRequired   = 0 150 450 900  ;Experience points needed to gain each level
30594  ;  IsTrainable          = Yes             ;Can gain experience
30595  ;  CrusherLevel         = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
30596  ;  CrushableLevel       = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
30597  ;  CommandSet           = VehiclePOWTruckCommandSet    
30598  ;  ; *** AUDIO Parameters ***
30599  ;  VoiceSelect = POWTruckChinaVoiceSelect
30600  ;  VoiceMove = POWTruckChinaVoiceMove
30601  ;  VoiceGuard = POWTruckChinaVoiceMove
30602  ;  UnitSpecificSounds
30603  ;    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
30604  ;    ;TurretMoveStart     = NoSound
30605  ;    VoiceCreate          = POWTruckChinaVoiceCreate
30606  ;    TurretMoveLoop       = TurretMoveLoop
30607  ;    SoundMoveStart       = POWTruckUSAMoveStart
30608  ;    SoundMoveStartDamaged = POWTruckUSAMoveStart
30609  ;    SoundEject           = PilotSoundEject
30610  ;    VoiceEject           = PilotVoiceEject
30611  ;    ; Required for the W3DTruckDraw module
30612  ;    TruckLandingSound    = RocketBuggyLand
30613  ;    TruckPowerslideSound = POWTruckUSAMoveStart
30614  ;    VoiceCrush           = POWTruckChinaVoiceCrush
30615  ;    VoicePickup          = POWTruckChinaVoicePickup
30616  ;    VoiceEnter = POWTruckChinaVoiceMove
30617  ;  End
30618  ;  ; *** ENGINEERING Parameters ***
30619  ;  RadarPriority          = UNIT
30620  ;  KindOf                 = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE TRANSPORT POW_TRUCK SCORE 
30621  ;  Body                   = ActiveBody ModuleTag_02
30622  ;    MaxHealth            = 500.0
30623  ;    InitialHealth        = 500.0
30624  ;  End
30625  ;  Behavior               = POWTruckBehavior ModuleTag_03
30626  ;    ContainMax           = 10
30627  ;    EnterSound           = EnterPOWTruck
30628  ;    ExitSound            = ExitPOWTruck
30629  ;  End
30630  ;  Behavior = POWTruckAIUpdate ModuleTag_04
30631  ;    BoredTime            = 10000  ; in milliseconds
30632  ;    AtPrisonDistance     = 160.0 ; This close to a prison is close enough to be doing nothing at
30633  ;  End
30634  ;  Locomotor              = SET_NORMAL POWTruckLocomotor
30635  ;  Behavior               = PhysicsBehavior ModuleTag_05
30636  ;    Mass                 = 50.0
30637  ;  End
30638  ;  Behavior               = SlowDeathBehavior ModuleTag_06
30639  ;    DeathTypes = ALL -CRUSHED -SPLATTED
30640  ;    ProbabilityModifier  = 25
30641  ;    DestructionDelay     = 1
30642  ;    FX                   = FINAL    FX_BattleMasterExplosionOneFinal
30643  ;    OCL                  = FINAL    OCL_ChinaPOWTruckDeathEffect
30644  ;  End
30645  ;  Behavior                    = FXListDie ModuleTag_07
30646  ;    DeathTypes = NONE +CRUSHED +SPLATTED
30647  ;    DeathFX              = FX_CarCrush
30648  ;  End
30649  ;  Behavior                 = TransitionDamageFX ModuleTag_09
30650  ;    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
30651  ;    ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
30652  ;  End
30653  ;  Behavior = FlammableUpdate ModuleTag_21
30654  ;    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
30655  ;    AflameDamageAmount = 3       ; taking this much damage...
30656  ;    AflameDamageDelay = 500       ; this often.
30657  ;  End
30658  ;  Geometry               = BOX
30659  ;  GeometryMajorRadius    = 15.0
30660  ;  GeometryMinorRadius    = 7.0
30661  ;  GeometryHeight         = 13.5     
30662  ;  GeometryIsSmall        = Yes 
30663  ;  Shadow                 = SHADOW_VOLUME   
30664  ;End
30665  
30666  ;------------------------------------------------------------------------------
30667  ; POW Trucks are cut. sorry. (srj)
30668  ;Object GLAVehiclePOWTruck
30669  ;  ; *** ART Parameters ***
30670  ;  SelectPortrait         = SUPowTruck
30671  ;  ;UpgradeCameo1 = NONE
30672  ;  ;UpgradeCameo2 = NONE
30673  ;  ;UpgradeCameo3 = NONE
30674  ;  ;UpgradeCameo4 = NONE
30675  ;  ;UpgradeCameo5 = NONE
30676  ;  Draw                   = W3DTruckDraw ModuleTag_01
30677  ;    OkToChangeModelColor = Yes
30678  ;    ConditionState       = NONE
30679  ;      Model              = UVPOWTRUCK
30680  ;    End
30681  ;    ConditionState       = REALLYDAMAGED
30682  ;      Model              = UVPOWTRUCK_D
30683  ;    End
30684  ;    TrackMarks           = EXTireTrack.tga
30685  ;    Dust                 = RocketBuggyDust
30686  ;    DirtSpray            = RocketBuggyDirtSpray
30687  ;    PowerslideSpray      = RocketBuggyDirtPowerSlide
30688  ;    ; These parameters are only used if the model has a separate suspension, 
30689  ;    ; and the locomotor has HasSuspension = Yes.
30690  ;    LeftFrontTireBone          = Tire01
30691  ;    RightFrontTireBone         = Tire02
30692  ;    MidLeftRearTireBone        = Tire03
30693  ;    MidRightRearTireBone       = Tire04
30694  ;    LeftRearTireBone           = Tire05
30695  ;    RightRearTireBone          = Tire06
30696  ;    TireRotationMultiplier     = 0.2   ; this * speed = rotation.
30697  ;    PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
30698  ;  End
30699  ;  ; ***DESIGN parameters ***
30700  ;  DisplayName          = OBJECT:POWTruck
30701  ;  Side                 = GLA
30702  ;  EditorSorting        = VEHICLE
30703  ;  TransportSlotCount   = 3 ;how many "slots" we take in a transport (0 == not transportable)
30704  ;  ArmorSet
30705  ;    Conditions         = None
30706  ;    Armor              = TruckArmor
30707  ;    DamageFX           = TankDamageFX
30708  ;  End
30709  ;  BuildCost            = 500
30710  ;  BuildTime            = 10.0          ;in seconds    
30711  ;  VisionRange          = 200
30712  ;  ShroudClearingRange  = 300
30713  ;  ExperienceValue      = 50 50 50 50    ;Experience point value at each level
30714  ;  ExperienceRequired   = 0 150 450 900  ;Experience points needed to gain each level
30715  ;  IsTrainable          = Yes             ;Can gain experience
30716  ;  CrusherLevel         = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
30717  ;  CrushableLevel       = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
30718  ;  CommandSet           = VehiclePOWTruckCommandSet
30719  ;  ; *** AUDIO Parameters ***
30720  ;  VoiceSelect = POWTruckGLAVoiceSelect
30721  ;  VoiceMove = POWTruckGLAVoiceMove
30722  ;  VoiceGuard = POWTruckGLAVoiceMove
30723  ;  UnitSpecificSounds
30724  ;    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
30725  ;    ;TurretMoveStart     = RocketBuggyLand
30726  ;    VoiceCreate          = POWTruckGLAVoiceCreate
30727  ;    SoundMoveStart       = POWTruckUSAMoveStart
30728  ;    SoundMoveStartDamaged = POWTruckUSAMoveStart
30729  ;    TurretMoveLoop       = TurretMoveLoop
30730  ;    SoundEject           = PilotSoundEject
30731  ;    VoiceEject           = PilotVoiceEject
30732  ;    ; Required for the W3DTruckDraw module
30733  ;    TruckLandingSound    = NoSound
30734  ;    TruckPowerslideSound = POWTruckUSAMoveStart
30735  ;    VoiceCrush           = POWTruckGLAVoiceCrush
30736  ;    VoicePickup          = POWTruckGLAVoicePickup
30737  ;    VoiceEnter           = POWTruckGLAVoiceMove
30738  ;  End
30739  ;  ; *** ENGINEERING Parameters ***
30740  ;  RadarPriority          = UNIT
30741  ;  KindOf                 = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER TRANSPORT POW_TRUCK SCORE
30742  ;  Body                   = ActiveBody ModuleTag_02
30743  ;    MaxHealth            = 500.0
30744  ;    InitialHealth        = 500.0
30745  ;  End
30746  ;  Behavior               = POWTruckBehavior ModuleTag_03
30747  ;    ContainMax           = 10
30748  ;    EnterSound           = EnterPOWTruck
30749  ;    ExitSound            = ExitPOWTruck
30750  ;  End
30751  ;;  Behavior = POWTruckAIUpdate ModuleTag_04
30752  ;;    BoredTime            = 10000  ; in milliseconds
30753  ;;    AtPrisonDistance     = 160.0  ; This close to a prison is close enough to be doing nothing at
30754  ;;  End
30755  ;  Locomotor              = SET_NORMAL POWTruckLocomotor
30756  ;  Behavior               = PhysicsBehavior ModuleTag_05
30757  ;    Mass                 = 50.0
30758  ;  End
30759  ;  Behavior               = SlowDeathBehavior ModuleTag_06
30760  ;    DeathTypes = ALL -CRUSHED -SPLATTED
30761  ;    ProbabilityModifier  = 25
30762  ;    DestructionDelay  = 1
30763  ;    FX                   = FINAL    FX_BattleMasterExplosionOneFinal
30764  ;    OCL                  = FINAL    OCL_GLAPOWTruckDeathEffect
30765  ;  End
30766  ;  Behavior                    = FXListDie ModuleTag_07
30767  ;    DeathTypes = NONE +CRUSHED +SPLATTED
30768  ;    DeathFX              = FX_CarCrush
30769  ;  End
30770  ;  Behavior                 = TransitionDamageFX ModuleTag_08
30771  ;    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
30772  ;    ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
30773  ;  End
30774  ;  Behavior = FlammableUpdate ModuleTag_21
30775  ;    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
30776  ;    AflameDamageAmount = 3       ; taking this much damage...
30777  ;    AflameDamageDelay = 500       ; this often.
30778  ;  End
30779  ;  Geometry               = BOX
30780  ;  GeometryMajorRadius    = 15.0
30781  ;  GeometryMinorRadius    = 7.0
30782  ;  GeometryHeight         = 13.5     
30783  ;  GeometryIsSmall        = Yes 
30784  ;  Shadow                 = SHADOW_VOLUME   
30785  ;End
30786  
30787  ;------------------------------------------------------------------------------
30788  Object GLAAngryMobRockProjectileObject
30789  
30790    ; *** ART Parameters ***
30791  
30792    Draw = W3DModelDraw ModuleTag_01
30793      ConditionState = NONE
30794        Model = Mob_Rock
30795      End
30796    End
30797  
30798    ; ***DESIGN parameters ***
30799    DisplayName       = OBJECT:GLARock
30800    EditorSorting     = SYSTEM
30801    ArmorSet
30802      Armor = ProjectileArmor
30803    End
30804    VisionRange = 0.0
30805  
30806    ; *** ENGINEERING Parameters ***
30807    KindOf = PROJECTILE
30808    Body = ActiveBody ModuleTag_02
30809      MaxHealth       = 100.0
30810      InitialHealth   = 100.0
30811    End
30812  
30813    Behavior = DestroyDie ModuleTag_03
30814      ;nothing
30815    End
30816  
30817    Behavior = DumbProjectileBehavior ModuleTag_04
30818      TumbleRandomly = Yes    ; not implemented, alas
30819      DetonateCallsKill = Yes
30820      ; To tweak a Bezier path, please see GS
30821      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
30822      SecondHeight = 10
30823      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
30824      SecondPercentIndent = 90%
30825      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
30826    End
30827  
30828   Behavior = PhysicsBehavior ModuleTag_05;lorenzen sez, please keep this, it allows tumbling
30829      Mass = 0.1 ; about the weight of a rock
30830    End
30831  
30832    Geometry = Sphere
30833    GeometryIsSmall = Yes
30834    GeometryMajorRadius = 1.0
30835  
30836  End
30837  
30838  
30839  ;------------------------------------------------------------------------------
30840  Object GLAAngryMobMolotovCocktailProjectileObject
30841  
30842    ; *** ART Parameters ***
30843    Draw = W3DModelDraw ModuleTag_01
30844      ConditionState = NONE
30845        Model = Mob_Botl
30846        ParticleSysBone = BONE_FX MolotovBurningRag
30847      End
30848    End
30849  
30850    ; ***DESIGN parameters ***
30851    DisplayName       = OBJECT:GLARock
30852    EditorSorting     = SYSTEM
30853    ArmorSet
30854      Armor = ProjectileArmor
30855    End
30856    VisionRange = 0.0
30857  
30858    ; *** ENGINEERING Parameters ***
30859    KindOf = PROJECTILE
30860    Body = ActiveBody ModuleTag_02
30861      MaxHealth       = 100.0
30862      InitialHealth   = 100.0
30863    End
30864  
30865  
30866    Behavior = DumbProjectileBehavior ModuleTag_03
30867      TumbleRandomly = Yes ; not implemented, alas
30868      DetonateCallsKill = Yes
30869      ; To tweak a Bezier path, please see GS
30870      FirstHeight = 30  //TALL ARC LOOK GOOD
30871      SecondHeight = 30 //TALL ARC LOOK GOOD
30872      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
30873      SecondPercentIndent = 90%
30874      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
30875    End
30876  
30877    Behavior = PhysicsBehavior ModuleTag_04;lorenzen sez, please keep this, it allows tumbling
30878      Mass = 0.1 ; about the weight of a rock
30879    End
30880  
30881  ;  Behavior = FireWeaponWhenDeadBehavior
30882  ;    DeathWeapon   = GLAAngryMobMolotovCocktailPersistentFlameWeapon
30883  ;    StartsActive  = Yes 
30884  ;  End
30885  
30886    Behavior = DestroyDie ModuleTag_05
30887      ;nothing
30888    End
30889  
30890  
30891    Geometry = Sphere
30892    GeometryIsSmall = Yes
30893    GeometryMajorRadius = 1.0
30894  
30895  End
30896  
30897  ;------------------------------------------------------------------------------
30898  Object ChinaArtilleryCannon
30899  
30900    ; *** ART Parameters ***
30901  ;  Draw = W3DModelDraw
30902  ;    DefaultConditionState
30903  ;      Model             = AVBomber_B
30904  ;    End
30905  ;  End
30906  
30907    ; ***DESIGN parameters ***
30908    ;DisplayName        = OBJECT:A10Thunderbolt
30909    EditorSorting       = VEHICLE
30910    Side                = China
30911    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
30912    VisionRange         = 99999.0 
30913    ShroudClearingRange = 0
30914    ArmorSet
30915      Conditions      = None
30916      Armor           = AirplaneArmor
30917      DamageFX        = None
30918    End
30919  
30920  
30921    ; *** AUDIO Parameters ***
30922    ; In the Activation of the superweapon, where it plays only once instead of once per missile.
30923  ;  SoundMoveStart = FireArtilleryCannonSound
30924  
30925  
30926    ; *** ENGINEERING Parameters ***
30927    RadarPriority = UNIT
30928    KindOf = PRELOAD CAN_ATTACK VEHICLE AIRCRAFT UNATTACKABLE IGNORED_IN_GUI
30929    Body = ActiveBody ModuleTag_01
30930      MaxHealth       = 200.0
30931      InitialHealth   = 200.0
30932    End
30933  
30934    Behavior = DestroyDie ModuleTag_02
30935      ;nothing
30936    End
30937   
30938    Behavior = PhysicsBehavior ModuleTag_03
30939      Mass = 0.001 ; about the weight of grain of salt
30940    End
30941  
30942    Behavior = DeliverPayloadAIUpdate ModuleTag_05
30943    End
30944  
30945    Locomotor = SET_NORMAL ChinaArtilleryBarrageCannonLocomotor
30946  
30947    Geometry = Cylinder
30948    GeometryIsSmall = Yes
30949    GeometryMajorRadius = 1.0
30950    GeometryMinorRadius = 1.0
30951    GeometryHeight = 1.0
30952    Shadow = SHADOW_DECAL
30953    ShadowSizeX = 1;
30954    ShadowSizeY = 1;
30955    ShadowTexture = ShadowI;
30956  
30957  End
30958  
30959  ;------------------------------------------------------------------------------
30960  
30961  
30962  
30963  ;------------------------------------------------------------------------------
30964  Object ChinaArtilleryBarrageShell
30965  
30966    ; *** ART Parameters ***
30967    Draw = W3DModelDraw ModuleTag_01
30968      OkToChangeModelColor = Yes
30969      ConditionState = NONE
30970        Model = AVTankShel
30971        ParticleSysBone = NONE ArtilleryBarrageTrail
30972        ParticleSysBone = NONE ArtilleryBarrageTrailRing
30973      End
30974    End
30975  
30976    ; ***DESIGN parameters ***
30977    DisplayName      = OBJECT:Missile
30978    Side = China
30979    EditorSorting   = SYSTEM
30980    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
30981    VisionRange = 0.0  
30982    ArmorSet
30983      Conditions      = None
30984      Armor           = ProjectileArmor
30985      DamageFX        = None
30986    End
30987  
30988  
30989    ; *** AUDIO Parameters ***
30990    SoundAmbient = ArtilleryBarrageIncomingWhistle
30991  
30992  
30993    ; *** ENGINEERING Parameters ***
30994    KindOf            = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE ;SMALL_MISSILE
30995    Body = ActiveBody ModuleTag_02
30996      MaxHealth       = 100.0
30997      InitialHealth   = 100.0
30998    End
30999  
31000  ; ---- begin Projectile death behaviors
31001    Behavior = InstantDeathBehavior DeathModuleTag_01
31002      DeathTypes = NONE +DETONATED
31003      ; we detonated normally.  No effect, since it is in weapon.  Don't want to double.
31004      ; FX        = FX_ArtilleryBarrage
31005    End
31006    Behavior = InstantDeathBehavior DeathModuleTag_02
31007      DeathTypes = NONE +LASERED
31008      ; shot down by laser.
31009      FX         = FX_GenericMissileDisintegrate
31010      OCL        = OCL_GenericMissileDisintegrate
31011    End
31012    Behavior = InstantDeathBehavior DeathModuleTag_03
31013      DeathTypes = ALL -LASERED -DETONATED
31014      ; shot down by nonlaser.
31015      FX         = FX_GenericMissileDeath
31016    End
31017  ; ---- end Projectile death behaviors
31018  
31019  ; Besides being the wrong weapon, the weapon is fired from the DeliverPayload listing in OCL.ini
31020  ;  Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
31021  ;    DeathWeapon   = A10ThunderboltMissileWeapon
31022  ;    StartsActive  = Yes
31023  ;  End
31024  
31025    Behavior = PhysicsBehavior ModuleTag_08
31026      Mass = 1
31027    End
31028    Behavior = MissileAIUpdate ModuleTag_09
31029      TryToFollowTarget = Yes 
31030      FuelLifetime = 10000
31031      InitialVelocity = 30                ; in dist/sec
31032      IgnitionDelay = 0
31033    End
31034    ; It's a missile, it needs to hit so it can +DETONATED
31035  ;  Behavior = HeightDieUpdate ModuleTag_10
31036  ;    TargetHeight = 1.0
31037  ;    TargetHeightIncludesStructures = No
31038  ;  End
31039    Locomotor = SET_NORMAL A10ThunderboltMissileLocomotor
31040  
31041    Geometry = Sphere
31042    GeometryIsSmall = Yes
31043    GeometryMajorRadius = 1.0
31044  
31045    Behavior = SpecialPowerCompletionDie ModuleTag_11
31046      SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike
31047    End
31048  
31049  
31050  End
31051  
31052  ;------------------------------------------------------------------------------
31053  ; *********************** Cinematic-only unit *********************************
31054  Object CINE_ChinaVehicleTroopCrawlerEmpty
31055  
31056    ; *** ART Parameters ***
31057    Draw = W3DTankDraw ModuleTag_01
31058      OkToChangeModelColor = Yes
31059      TrackMarks = EXTireTrack.tga
31060      ConditionState = NONE
31061        Model = NVTCrawler
31062      End
31063      ConditionState       = REALLYDAMAGED
31064        Model              = NVTCrawler_D
31065      End
31066      ConditionState       = RUBBLE
31067        Model              = NVTCrawler_D
31068      End
31069    End
31070  
31071    ; ***DESIGN parameters ***
31072    DisplayName      = OBJECT:TroopCrawler
31073    Side = China
31074    EditorSorting   = VEHICLE
31075    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
31076    WeaponSet
31077      Conditions = None 
31078      Weapon = PRIMARY TroopCrawlerAssault
31079    End
31080    ArmorSet
31081      Conditions      = None
31082      Armor           = TankArmor
31083      DamageFX        = TankDamageFX
31084    End
31085    BuildCost       = 700
31086    BuildTime       = 1.0          ;in seconds    
31087    VisionRange     = 150
31088    ShroudClearingRange = 150
31089    Prerequisites
31090      Object = ChinaWarFactory
31091    End
31092    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
31093    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
31094    CommandSet = ChinaTroopCrawlerCommandSet
31095  
31096    ; *** AUDIO Parameters ***
31097    VoiceSelect = TroopCrawlerVoiceSelect
31098    VoiceMove = TroopCrawlerVoiceMove
31099    VoiceGuard = TroopCrawlerVoiceMove
31100    VoiceAttack = TroopCrawlerVoiceAttack
31101    SoundMoveStart = TroopCrawlerMoveStart
31102  
31103    UnitSpecificSounds
31104      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
31105      VoiceCreate     = TroopCrawlerVoiceCreate
31106      TurretMoveStart = NoSound
31107      TurretMoveLoop  = TurretMoveLoop
31108      VoiceUnload     = TroopCrawlerVoiceUnload
31109      VoiceEnter = TroopCrawlerVoiceMove
31110    End
31111  
31112  
31113    ; *** ENGINEERING Parameters ***
31114    RadarPriority = UNIT
31115    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS TRANSPORT VEHICLE SCORE
31116    
31117    Body = ActiveBody ModuleTag_02
31118      MaxHealth       = 200.0
31119      InitialHealth   = 200.0
31120    End
31121    Behavior = AIUpdateInterface ModuleTag_03
31122      Turret
31123        ControlledWeaponSlots = PRIMARY
31124      End
31125    End
31126    Locomotor = SET_NORMAL CINE_TroopCrawlerLocomotor
31127    Behavior = PhysicsBehavior ModuleTag_04
31128      Mass = 50.0
31129    End
31130  
31131  
31132    Behavior = SlowDeathBehavior  ModuleTag_05
31133      DeathTypes = ALL -CRUSHED -SPLATTED
31134      ProbabilityModifier = 5
31135      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
31136      DestructionDelay = 0
31137      DestructionDelayVariance = 200
31138      FX = FINAL FX_BuggyNewDeathExplosion
31139      OCL = FINAL OCL_FinalTroopCrawlerDebris
31140    End
31141      
31142    Behavior = TransportContain ModuleTag_06
31143      Slots = 10
31144      HealthRegen%PerSec = 10
31145      DamagePercentToUnits = 10%
31146      AllowInsideKindOf  = INFANTRY
31147    End
31148  
31149  
31150    ; A crushing defeat
31151    Behavior = FXListDie ModuleTag_07
31152      DeathTypes = NONE +CRUSHED +SPLATTED
31153      DeathFX = FX_CarCrush
31154    End
31155    Behavior = CreateObjectDie ModuleTag_08
31156      DeathTypes = NONE +CRUSHED +SPLATTED
31157      CreationList = OCL_CrusaderTank_CrushEffect
31158    End
31159    ;Behavior = CreateCrateDie ModuleTag_09
31160     ; CrateData = None
31161      ;CrateData = SalvageCrateData
31162      ;CrateData = EliteTankCrateData
31163      ;CrateData = HeroicTankCrateData
31164    ;End
31165  
31166    Behavior = FlammableUpdate ModuleTag_21
31167      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
31168      AflameDamageAmount = 3       ; taking this much damage...
31169      AflameDamageDelay = 500       ; this often.
31170    End
31171  
31172    Geometry = BOX
31173    GeometryMajorRadius = 22.0
31174    GeometryMinorRadius = 9.0
31175    GeometryHeight = 13.0     
31176    GeometryIsSmall = No
31177    Shadow = SHADOW_VOLUME    
31178  
31179  End
31180  
31181  ;------------------------------------------------------------------------------
31182  ; ************************* Cinematic-only unit *******************************
31183  Object CINE_ChinaInfantryRedguard
31184  
31185    ; *** ART Parameters ***
31186    SelectPortrait         = SNRedGuard_L  
31187    ButtonImage            = SNRedGuard_L
31188    
31189    UpgradeCameo1 = Upgrade_Nationalism
31190    ;UpgradeCameo2 = NONE
31191    ;UpgradeCameo3 = NONE
31192    ;UpgradeCameo4 = NONE
31193    ;UpgradeCameo5 = NONE
31194  
31195    Draw = W3DModelDraw ModuleTag_01
31196      OkToChangeModelColor = Yes
31197  
31198      ; ------- Standing-Around Animations
31199   
31200      DefaultConditionState
31201        Model               = NICNSC_SKN
31202        IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
31203        IdleAnimation       = NICNSC_SKL.NICNSC_IDA
31204        IdleAnimation       = NICNSC_SKL.NICNSC_IDB
31205        AnimationMode       = ONCE
31206        WeaponFireFXBone    = PRIMARY Muzzle
31207        WeaponMuzzleFlash   = PRIMARY MuzzleFX
31208        TransitionKey       = TRANS_Stand
31209      End
31210  
31211      ConditionState = REALLYDAMAGED
31212        IdleAnimation       = NICNSC_SKL.NICNSC_STB
31213        AnimationMode       = ONCE
31214        TransitionKey       = TRANS_StandDamaged
31215      End
31216  
31217      ; ------- Machine Gun Animations
31218  
31219      ConditionState = FIRING_A 
31220        Animation         = NICNSC_SKL.NICNSC_ATA
31221        AnimationMode     = LOOP
31222        TransitionKey     = TRANS_Firing
31223      End
31224      AliasConditionState = BETWEEN_FIRING_SHOTS_A
31225      AliasConditionState = RELOADING_A
31226  
31227      ConditionState = FIRING_A REALLYDAMAGED
31228        Animation         = NICNSC_SKL.NICNSC_ATC
31229        AnimationMode     = LOOP
31230        TransitionKey     = TRANS_FiringDamaged
31231      End
31232      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
31233      AliasConditionState = RELOADING_A REALLYDAMAGED
31234  
31235      ; ------- Stun Bullet Animations
31236  ; sorry, no tranq or stun bullets, cut for this version (srj)
31237  ;
31238  ;    ConditionState = FIRING_B
31239  ;      Animation         = NICNSC_SKL.NICNSC_ATA
31240  ;      AnimationMode     = LOOP
31241  ;      TransitionKey     = TRANS_Firing
31242  ;    End
31243  ;    AliasConditionState = BETWEEN_FIRING_SHOTS_B
31244  ;    AliasConditionState = RELOADING_B
31245  ;
31246  ;    ConditionState = FIRING_B REALLYDAMAGED
31247  ;      Animation         = NICNSC_SKL.NICNSC_ATC
31248  ;      AnimationMode     = LOOP
31249  ;      TransitionKey     = TRANS_FiringDamaged
31250  ;    End
31251  ;    AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
31252  ;    AliasConditionState = RELOADING_B REALLYDAMAGED
31253  
31254      ; ------- Firing-related Transitions
31255  
31256      TransitionState = TRANS_Firing TRANS_FiringDamaged
31257        Animation       = NICNSC_SKL.NICNSC_AA2AC
31258        AnimationMode   = ONCE
31259      End
31260  
31261      TransitionState = TRANS_Stand TRANS_Firing
31262        Animation       = NICNSC_SKL.NICNSC_SA2AA
31263        AnimationMode   = ONCE
31264      End
31265  
31266      TransitionState = TRANS_Firing TRANS_Stand
31267        Animation       = NICNSC_SKL.NICNSC_AA2SA
31268        AnimationMode   = ONCE
31269      End
31270  
31271      TransitionState   = TRANS_StandDamaged TRANS_FiringDamaged
31272        Animation       = NICNSC_SKL.NICNSC_ATCST
31273        AnimationMode   = ONCE
31274      End
31275  
31276      TransitionState   = TRANS_FiringDamaged TRANS_StandDamaged
31277        Animation       = NICNSC_SKL.NICNSC_ATCED
31278        AnimationMode   = ONCE
31279      End
31280  
31281      ; ------------- Damage Transitions --------------------
31282      TransitionState = TRANS_StandDamaged TRANS_RunDamaged
31283        Animation       = NICNSC_SKL.NICNSC_AA2AC
31284        AnimationMode   = ONCE
31285        AnimationSpeedFactorRange = 2 2
31286      End
31287      TransitionState = TRANS_RunDamaged TRANS_StandDamaged 
31288        Animation       = NICNSC_SKL.NICNSC_AA2AC
31289        AnimationMode   = ONCE_BACKWARDS
31290        AnimationSpeedFactorRange = 2 2
31291        Flags           = START_FRAME_LAST
31292      End
31293      TransitionState = TRANS_Stand TRANS_StandDamaged 
31294        Animation       = NICNSC_SKL.NICNSC_AA2SA
31295        AnimationMode   = ONCE_BACKWARDS
31296        AnimationSpeedFactorRange = 4 5
31297        Flags           = START_FRAME_LAST
31298      End
31299  
31300  
31301      ; ------- Bayonet Animations
31302  
31303      ConditionState = PREATTACK_C 
31304        Animation = NICNSC_SKL.NICNSC_ATB1
31305        AnimationMode   = ONCE
31306        TransitionKey   = TRANS_Stab
31307      End
31308      AliasConditionState = PREATTACK_C MOVING
31309      AliasConditionState = PREATTACK_C FIRING_C
31310      AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C
31311  
31312      ConditionState = FIRING_C
31313        Animation         = NICNSC_SKL.NICNSC_ATB2
31314        AnimationMode     = ONCE
31315        ; this is basically a trick: this guy has a nontrivial animation for firing,
31316        ; and a long recycle time between shots. we want him to finish his fire animation
31317        ; (unless he's ordered to do something else), so this is just a handy trick that
31318        ; says, "if the previous state had this transition key, allow it to finish before
31319        ; switching to us, if possible".
31320        WaitForStateToFinishIfPossible = TRANS_Stab
31321      End
31322      AliasConditionState = BETWEEN_FIRING_SHOTS_C
31323      AliasConditionState = RELOADING_C
31324  
31325      ; ------- Parachuting Animations
31326  
31327      ConditionState = FREEFALL
31328        Animation       = NICNSC_SKL.NICNSC_POP
31329        AnimationMode   = MANUAL
31330        Flags           = START_FRAME_FIRST
31331        TransitionKey   = TRANS_Falling
31332      End
31333      AliasConditionState = FREEFALL REALLYDAMAGED
31334      AliasConditionState = FREEFALL DYING
31335  
31336      ConditionState = PARACHUTING
31337        Animation       = NICNSC_SKL.NICNSC_PHG
31338        AnimationMode   = LOOP
31339        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
31340        TransitionKey   = TRANS_Chute
31341      End
31342      AliasConditionState = PARACHUTING REALLYDAMAGED
31343      AliasConditionState = PARACHUTING DYING
31344  
31345      TransitionState = TRANS_Falling TRANS_Chute
31346        Animation       = NICNSC_SKL.NICNSC_POP
31347        AnimationMode   = ONCE
31348        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
31349      End
31350  
31351      TransitionState = TRANS_Chute TRANS_Stand
31352        Animation       = NICNSC_SKL.NICNSC_PTD
31353        AnimationMode   = ONCE
31354      End
31355  
31356      ; ------- Movement Animations
31357  
31358      ConditionState = MOVING
31359        Animation         = NICNSC_SKL.NICNSC_RNA 48 ; used to be 26
31360        AnimationMode     = LOOP
31361        Flags             = RANDOMSTART
31362        TransitionKey     = None
31363      End
31364      AliasConditionState = MOVING ATTACKING 
31365  
31366      ConditionState = MOVING REALLYDAMAGED
31367        Animation         = NICNSC_SKL.NICNSC_RNB 28
31368        AnimationMode     = LOOP
31369        Flags             = RANDOMSTART
31370        TransitionKey     = TRANS_RunDamaged
31371        TransitionKey     = None
31372      End
31373      AliasConditionState = MOVING ATTACKING REALLYDAMAGED
31374  
31375      ; ------- Bldg-capture
31376  
31377      ConditionState = UNPACKING
31378        Model             = NICNSC_F_SKN
31379        Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
31380        AnimationMode     = ONCE
31381      End
31382      AliasConditionState = UNPACKING REALLYDAMAGED
31383  
31384      ConditionState = RAISING_FLAG
31385        Model             = NICNSC_F_SKN
31386        Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
31387        AnimationMode     = ONCE
31388        TransitionKey     = TRANS_Raising
31389      End
31390      AliasConditionState = RAISING_FLAG REALLYDAMAGED
31391  
31392      ConditionState = PACKING
31393        Model             = NICNSC_F_SKN
31394        Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
31395        AnimationMode     = ONCE_BACKWARDS
31396        Flags             = START_FRAME_LAST
31397        TransitionKey     = TRANS_Packing
31398      End
31399      AliasConditionState = PACKING REALLYDAMAGED
31400  
31401      TransitionState = TRANS_Raising TRANS_Packing
31402        Model             = NICNSC_F_SKN
31403        Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
31404        AnimationMode     = ONCE_BACKWARDS
31405        Flags             = START_FRAME_LAST
31406      End
31407  
31408      ; ------- Misc Animations
31409  
31410      ConditionState      = DYING
31411        Animation         = NICNSC_SKL.NICNSC_DTA
31412        Animation         = NICNSC_SKL.NICNSC_DTB
31413        AnimationMode     = ONCE
31414        TransitionKey     = TRANS_Dying
31415      End
31416  
31417      TransitionState     = TRANS_Dying TRANS_Flailing
31418        Animation         = NICNSC_SKL.NICNSC_ATDE1
31419        AnimationMode     = ONCE
31420      End
31421  
31422      ConditionState      = DYING EXPLODED_FLAILING
31423        Animation         = NICNSC_SKL.NICNSC_ATDE2
31424        AnimationMode     = LOOP
31425        TransitionKey     = TRANS_Flailing
31426      End
31427  
31428      ConditionState      = DYING EXPLODED_BOUNCING
31429        Animation         = NICNSC_SKL.NICNSC_ATDE3
31430        AnimationMode     = ONCE
31431        TransitionKey     = None
31432      End
31433  
31434      ConditionState = SPECIAL_CHEERING
31435        Animation         = NICNSC_SKL.NICNSC_CHA
31436        AnimationMode     = LOOP
31437      End
31438  
31439    End
31440  
31441    ; ***DESIGN parameters ***
31442    DisplayName         = OBJECT:Redguard
31443    Side                = China
31444    EditorSorting       = INFANTRY
31445    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
31446    WeaponSet
31447      Conditions = None 
31448      Weapon = PRIMARY RedguardMachineGun
31449      Weapon = SECONDARY None
31450      Weapon = TERTIARY RedguardBayonet
31451      AutoChooseSources = PRIMARY None
31452      AutoChooseSources = SECONDARY None
31453      AutoChooseSources = TERTIARY None
31454    End
31455  ; sorry, no stun bullets, cut for this version (srj)
31456  ;  WeaponSet
31457  ;    Conditions = PLAYER_UPGRADE
31458  ;    Weapon = PRIMARY RedguardMachineGun
31459  ;    Weapon = SECONDARY RedguardStunBulletsMachineGun
31460  ;    Weapon = TERTIARY RedguardBayonet
31461  ;    AutoChooseSources = SECONDARY None
31462  ;    AutoChooseSources   = TERTIARY None
31463  ;  End
31464    ArmorSet
31465      Conditions      = None
31466      Armor           = HumanArmor
31467      DamageFX        = InfantryDamageFX
31468    End
31469    VisionRange = 100
31470    ShroudClearingRange = 200
31471    Prerequisites
31472      Object = ChinaBarracks
31473    End
31474    BuildCost     = 300
31475    BuildTime     = 10.0          ;in seconds      
31476  
31477    ExperienceValue = 5 5 10 20   ;Experience point value at each level
31478    ExperienceRequired = 0 20 40 80  ;Experience points needed to gain each level
31479    IsTrainable = Yes             ;Can gain experience
31480    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
31481    CommandSet    = ChinaInfantryRedguardCommandSet
31482  
31483    ; *** AUDIO Parameters ***
31484    VoiceSelect = RedGuardVoiceSelect
31485    VoiceMove = RedGuardVoiceMove
31486    VoiceGuard = RedGuardVoiceMove
31487    VoiceAttack = RedGuardVoiceAttack
31488    VoiceGroupSelect = BattleCrySound
31489    SoundDie = RedGuardVoiceDie
31490    SoundDieFire = DieByFireChina
31491    SoundDieToxin = DieByToxinChina
31492    VoiceFear = RedGuardVoiceFear
31493    VoiceTaskComplete = RedGuardVoiceCaptureComplete
31494    UnitSpecificSounds
31495      VoiceGarrison = RedGuardVoiceGarrison
31496      VoiceCreate     = RedGuardVoiceCreate
31497      VoiceSubdue     = RedGuardVoiceSubdue
31498      VoiceEnter = RedGuardVoiceMove
31499      VoiceEnterHostile = RedGuardVoiceMove
31500      VoiceGetHealed      = RedGuardVoiceMove
31501    End
31502  
31503    ; *** ENGINEERING Parameters ***
31504    RadarPriority = UNIT
31505    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE
31506  
31507    Body = ActiveBody ModuleTag_02
31508      MaxHealth       = 120.0
31509      InitialHealth   = 120.0
31510    End
31511  
31512    Behavior = VeterancyGainCreate ModuleTag_03
31513      StartingLevel = VETERAN
31514      ScienceRequired = SCIENCE_RedGuardTraining
31515    End
31516  
31517    Behavior = AIUpdateInterface ModuleTag_04
31518      AutoAcquireEnemiesWhenIdle = Yes
31519    End
31520  
31521    Behavior = CommandButtonHuntUpdate  ModuleTag_05 ; allows use of command button hunt script with this unit. 
31522    End
31523  
31524    Locomotor = SET_NORMAL CINE_RedguardLocomotor
31525  
31526    Behavior = HordeUpdate ModuleTag_06
31527      RubOffRadius = 60    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
31528      UpdateRate = 1000    ; how often to recheck horde status (msec)
31529      Radius = 30          ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
31530      KindOf = INFANTRY    ; what KindOf's must match to count towards horde-ness
31531      AlliesOnly = Yes     ; do we only count allies towards horde status? 
31532      ExactMatch = No      ; do we only count units of our exact same type towards horde status? (overrides kindof)
31533      Count = 5            ; how many units must be within Radius to grant us horde-ness
31534      Action = HORDE       ; when horde-ing, grant us the HORDE bonus
31535    End
31536    Behavior = PhysicsBehavior ModuleTag_07
31537      Mass = 5.0
31538    End
31539  
31540  ; sorry, no tranq or stun bullets, cut for this version (srj)
31541  ;  Behavior = WeaponSetUpgrade ModuleTag_09
31542  ;    TriggeredBy = Upgrade_ChinaStunBullets
31543  ;  End
31544   
31545    Behavior = SquishCollide ModuleTag_10
31546      ;nothing
31547    End
31548  
31549  ; --- begin Death modules ---
31550    Behavior = SlowDeathBehavior ModuleTag_Death01
31551      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
31552      SinkDelay           = 3000
31553      SinkRate            = 0.5     ; in Dist/Sec
31554      DestructionDelay    = 8000
31555      FX                  = INITIAL FX_GIDie
31556    End
31557    Behavior = SlowDeathBehavior ModuleTag_Death02
31558      DeathTypes          = NONE +CRUSHED +SPLATTED
31559      SinkDelay           = 3000
31560      SinkRate            = 0.5     ; in Dist/Sec
31561      DestructionDelay    = 8000
31562      FX                  = INITIAL FX_GIDieCrushed
31563    End
31564    Behavior = SlowDeathBehavior ModuleTag_Death03
31565      DeathTypes          = NONE +EXPLODED
31566      SinkDelay           = 3000
31567      SinkRate            = 0.5     ; in Dist/Sec
31568      DestructionDelay    = 8000
31569      FX                  = INITIAL FX_GIDie
31570      FlingForce          = 8
31571      FlingForceVariance  = 3
31572      FlingPitch          = 60
31573      FlingPitchVariance  = 10
31574    End
31575    Behavior = SlowDeathBehavior ModuleTag_Death04
31576      DeathTypes          = NONE +BURNED
31577      DestructionDelay    = 0
31578      FX                  = INITIAL FX_GIDie
31579      OCL                 = INITIAL OCL_FlamingInfantry
31580    End
31581    Behavior = SlowDeathBehavior ModuleTag_Death05
31582      DeathTypes          = NONE +POISONED
31583      DestructionDelay    = 0
31584      FX                  = INITIAL FX_GIDie
31585      OCL                 = INITIAL OCL_ToxicInfantry
31586    End
31587  ; --- end Death modules ---
31588   
31589    Behavior = PoisonedBehavior ModuleTag_15
31590      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
31591      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
31592    End
31593  
31594    Behavior = SpecialAbility ModuleTag_16
31595      SpecialPowerTemplate      = SpecialAbilityRedGuardCaptureBuilding
31596      UpdateModuleStartsAttack  = Yes
31597      StartsPaused              = Yes
31598      InitiateSound         = RedGuardVoiceCapture
31599    End
31600    Behavior = SpecialAbilityUpdate ModuleTag_17
31601      SpecialPowerTemplate  = SpecialAbilityRedGuardCaptureBuilding
31602      StartAbilityRange  = 5.0
31603      UnpackTime            = 3000  ; (changing this will scale anim speed)
31604      PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
31605      PackTime              = 2000  ; (changing this will scale anim speed)
31606      DoCaptureFX           = Yes
31607    End
31608  
31609    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_18
31610      SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
31611      TriggeredBy = Upgrade_InfantryCaptureBuilding
31612    End
31613  
31614    Geometry = CYLINDER
31615    Scale = 0.95                            ;Scaling
31616    GeometryMajorRadius = 1.0
31617    GeometryMinorRadius = 1.0
31618    GeometryHeight = 8.0
31619    GeometryIsSmall = Yes
31620    Shadow = SHADOW_DECAL
31621    ShadowSizeX = 9;
31622    ShadowSizeY = 9;
31623    ShadowTexture = ShadowI;
31624    BuildCompletion = APPEARS_AT_RALLY_POINT
31625  
31626  End
31627  ;------------------------------------------------------------------------------
31628  Object CINE_AmericaJetRaptor
31629  
31630    ; *** ART Parameters ***
31631    SelectPortrait         = SACRaptor_L
31632    ButtonImage            = SACRaptor
31633    
31634    UpgradeCameo1 = Upgrade_AmericaLaserMissiles
31635    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
31636    ;UpgradeCameo3 = NONE
31637    ;UpgradeCameo4 = NONE
31638    ;UpgradeCameo5 = NONE
31639    
31640    Draw                   = W3DModelDraw ModuleTag_01
31641   
31642      DefaultConditionState
31643        Model               = AVRaptor
31644        HideSubObject       = BurnerFX01 BurnerFX02
31645        WeaponLaunchBone = PRIMARY WeaponA
31646      End
31647  
31648      ConditionState        = JETEXHAUST
31649        ; exhaust
31650        ParticleSysBone     = Wingtip01 JetContrail
31651        ParticleSysBone     = Wingtip02 JetContrail
31652      End
31653  
31654      ConditionState        = JETEXHAUST JETAFTERBURNER
31655        ; exhaust
31656        ParticleSysBone     = Wingtip01 JetContrail
31657        ParticleSysBone     = Wingtip02 JetContrail
31658        ; afterburner
31659        ShowSubObject       = BurnerFX01 BurnerFX02
31660        ParticleSysBone     = Engine01 JetLenzflare
31661        ParticleSysBone     = Engine02 JetLenzflare
31662      End
31663  
31664      ConditionState        = REALLYDAMAGED
31665        Model               = AVRaptor_D
31666        ; damage
31667        ParticleSysBone     = Smoke01 JetSmoke
31668        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
31669      End
31670      
31671      ConditionState        = REALLYDAMAGED JETEXHAUST
31672        Model               = AVRaptor_D
31673        ; damage
31674        ParticleSysBone     = Smoke01 JetSmoke
31675        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
31676        ; exhaust
31677        ParticleSysBone     = Wingtip01 JetContrail
31678        ParticleSysBone     = Wingtip02 JetContrail
31679      End
31680  
31681      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
31682        Model               = AVRaptor_D
31683        ; damage
31684        ParticleSysBone     = Smoke01 JetSmoke
31685        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
31686        ; afterburner
31687        ShowSubObject       = BurnerFX01 BurnerFX02
31688        ParticleSysBone     = Engine01 JetLenzflare
31689        ParticleSysBone     = Engine02 JetLenzflare
31690        ; exhaust
31691        ParticleSysBone     = Wingtip01 JetContrail
31692        ParticleSysBone     = Wingtip02 JetContrail
31693      End
31694  
31695      ConditionState        = RUBBLE
31696        Model               = AVRaptor_D1B
31697        HideSubObject       = None 
31698        ShowSubObject       = None
31699      End
31700  
31701      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
31702        Model               = AVRaptor_D1B
31703        ;HideSubObject is needed cause there're inherited from default condition state      
31704        HideSubObject       = None 
31705        ShowSubObject       = None
31706        ParticleSysBone     = Engine01 JetExhaust
31707        ParticleSysBone     = Engine02 JetExhaust
31708        ; exhaust
31709        ParticleSysBone     = Wingtip01 JetContrail
31710        ParticleSysBone     = Wingtip02 JetContrail
31711      End
31712  
31713      OkToChangeModelColor = Yes
31714  
31715    End
31716  
31717    ; ***DESIGN parameters ***
31718    DisplayName             = OBJECT:Raptor
31719    EditorSorting           = VEHICLE
31720    Side                    = America
31721    TransportSlotCount      = 0 ;how many "slots" we take in a transport (0 == not transportable)
31722    VisionRange             = 400.0 
31723    ShroudClearingRange     = 400
31724    Prerequisites
31725      Object                = AmericaAirfield
31726    End
31727  
31728    WeaponSet
31729      Conditions            = None 
31730      Weapon                = PRIMARY RaptorJetMissileWeapon
31731    End
31732    WeaponSet
31733      Conditions            = PLAYER_UPGRADE 
31734      Weapon                = PRIMARY RaptorJetLaserGuidedMissileWeapon
31735    End
31736    ArmorSet
31737      Conditions            = None
31738      Armor                 = AirplaneArmor
31739      DamageFX              = None
31740    End
31741  
31742    BuildCost               = 1400
31743    BuildTime               = 1   
31744    ExperienceValue         = 50 50 100 150  ;Experience point value at each level
31745    ExperienceRequired      = 0 100 200 400   ;Experience points needed to gain each level
31746    IsTrainable             = Yes             ;Can gain experience
31747    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
31748    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
31749    CommandSet              = AmericaJetRaptorCommandSet
31750  
31751    ; *** AUDIO Parameters ***
31752    VoiceSelect            = RaptorVoiceSelect
31753    VoiceMove              = RaptorVoiceMove
31754    VoiceAttack            = RaptorVoiceAttack
31755    VoiceAttackAir         = RaptorVoiceAttackAir
31756    VoiceGuard             = RaptorVoiceAirPatrol
31757    SoundDie               = RaptorVoiceFalling
31758    SoundAmbient           = RaptorAmbientLoop
31759    SoundAmbientRubble    = NoSound
31760    ; For now, it is better to have some sound than no sound cause there is a bug in
31761    ; what triggers the sound move loop sound, and the multiplayer test is only days away
31762    ; SoundMoveLoop          = RaptorAmbientLoop  ; don't want sound while sitting at airfield
31763    ; SoundAmbient           = NoSound
31764    UnitSpecificSounds
31765      VoiceCreate          = RaptorVoiceCreate
31766      SoundEject           = PilotSoundEject
31767      VoiceEject           = PilotVoiceEject
31768      Afterburner          = RaptorAfterburner
31769      VoiceLowFuel         = RaptorVoiceLowFuel
31770      VoiceGarrison        = RaptorVoiceMove
31771    End
31772  
31773    ; *** ENGINEERING Parameters ***
31774    RadarPriority          = UNIT
31775    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
31776    Body                   = ActiveBody ModuleTag_02
31777      MaxHealth            = 160.0
31778      InitialHealth        = 160.0
31779    End
31780  
31781    Behavior                = WeaponSetUpgrade ModuleTag_03
31782      TriggeredBy          = Upgrade_AmericaLaserMissiles
31783    End
31784    Behavior = ExperienceScalarUpgrade ModuleTag_04
31785      TriggeredBy = Upgrade_AmericaAdvancedTraining
31786      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
31787    End
31788  
31789    Behavior                          = JetSlowDeathBehavior ModuleTag_05
31790      FXOnGroundDeath                 = FX_JetOnGroundDeath
31791      OCLOnGroundDeath                = OCL_RaptorDeathFinalBlowUp
31792      DestructionDelay                = 99999999; destruction will happen when we
31793      RollRate                        = 0.2
31794      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
31795      PitchRate                       = 0.0
31796      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
31797      FXInitialDeath                  = FX_JetDeathInitial
31798      OCLInitialDeath                 = OCL_RaptorDeathInitial
31799      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
31800      FXSecondary                     = FX_JetDeathSecondary
31801      OCLSecondary                    = OCL_RaptorDeathSecondary
31802      FXHitGround                     = FX_JetDeathHitGround
31803      OCLHitGround                    = OCL_RaptorDeathHitGround
31804      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
31805      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
31806      OCLFinalBlowUp                  = OCL_RaptorDeathFinalBlowUp
31807  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
31808    End
31809    Behavior                    = EjectPilotDie ModuleTag_06
31810      ExemptStatus         = HIJACKED
31811      GroundCreationList = OCL_EjectPilotOnGround
31812      AirCreationList = OCL_EjectPilotViaParachute
31813      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
31814    End
31815    
31816    Behavior               = PhysicsBehavior ModuleTag_07
31817      Mass                 = 500.0
31818    End
31819  
31820    Behavior                 = TransitionDamageFX ModuleTag_08
31821      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
31822      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
31823    End
31824  
31825    Behavior = JetAIUpdate ModuleTag_09
31826      OutOfAmmoDamagePerSecond  = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
31827                                      ; note that it's expressed as a percent of max health, not an absolute
31828      TakeoffSpeedForMaxLift    = 100%   ; smaller numbers give more lift sooner when taking off
31829      TakeoffPause              = 500
31830      MinHeight                 = 5
31831      ParkingOffset             = 3             ; scooch it a little forward so the tail doesn't hit the doors
31832      ReturnToBaseIdleTime      = 3         ; if idle for this long, return to base, even if not out of ammo
31833    End
31834    Locomotor = SET_NORMAL RaptorJetLocomotor
31835    Locomotor = SET_TAXIING CINE_BasicJetTaxiLocomotor
31836  
31837    Behavior = FlammableUpdate ModuleTag_21
31838      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
31839      AflameDamageAmount = 3       ; taking this much damage...
31840      AflameDamageDelay = 500       ; this often.
31841    End
31842  
31843  
31844    Geometry                 = Box
31845    GeometryIsSmall          = Yes
31846    GeometryMajorRadius      = 14.0
31847    GeometryMinorRadius      = 7.0
31848    GeometryHeight           = 5.0
31849    Shadow                   = SHADOW_VOLUME
31850    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length.
31851  
31852  End
31853  
31854  ;------------------------------------------------------------------------------
31855  ; *********************** Cinematic-only unit *********************************
31856  Object CINE_AmericaJetB52
31857  
31858    ; *** ART Parameters ***
31859    Draw = W3DModelDraw ModuleTag_01
31860      DefaultConditionState
31861        Model = AVBomber
31862        ParticleSysBone = Engine01 JetBlackTrailThin
31863        ParticleSysBone = Engine02 JetBlackTrailThin
31864        ParticleSysBone = Engine03 JetBlackTrailThin
31865        ParticleSysBone = Engine04 JetBlackTrailThin
31866        ParticleSysBone = WingTip01 JetContrailThin
31867        ParticleSysBone = WingTip02 JetContrailThin
31868      End
31869      ConditionState = DAMAGED
31870        Model = AVBomber_D
31871        ParticleSysBone = Smoke01 JetFireLarge
31872        ParticleSysBone = Smoke02 JetFireLarge
31873        ParticleSysBone = Engine01 JetBlackTrailThin
31874        ParticleSysBone = Engine02 JetBlackTrailThin
31875        ParticleSysBone = Engine03 JetBlackTrailThin
31876        ParticleSysBone = Engine04 JetBlackTrailThin
31877        ParticleSysBone = Smoke01 JetSmokeLarge
31878        ParticleSysBone = Smoke02 JetSmokeLarge
31879      End
31880      ConditionState = REALLYDAMAGED
31881        Model = AVBomber_D
31882        ParticleSysBone = Smoke01 JetFireLarge
31883        ParticleSysBone = Smoke02 JetFireLarge
31884        ParticleSysBone = Engine01 JetBlackTrailThin
31885        ParticleSysBone = Engine02 JetBlackTrailThin
31886        ParticleSysBone = Engine03 JetBlackTrailThin
31887        ParticleSysBone = Engine04 JetBlackTrailThin
31888        ParticleSysBone = Smoke01 JetSmokeLarge
31889        ParticleSysBone = Smoke02 JetSmokeLarge
31890      End
31891      ConditionState = RUBBLE
31892        Model = AVBomber_D1
31893        ParticleSysBone = Smoke01 JetFireLarge
31894        ParticleSysBone = Smoke02 JetFireLarge
31895        ParticleSysBone = Smoke01 JetSmokeLarge
31896        ParticleSysBone = Smoke02 JetSmokeLarge
31897      End
31898      OkToChangeModelColor = Yes
31899    End
31900    
31901    Draw = W3DModelDraw ModuleTag_02
31902      DefaultConditionState
31903        Model           = AVBomber_A2U
31904        Animation       = AVBomber_A2K.AVBomber_A2
31905        AnimationMode   = MANUAL
31906        Flags           = START_FRAME_FIRST
31907      End
31908      ConditionState = DOOR_1_OPENING
31909        Animation       = AVBomber_A2K.AVBomber_A2
31910        AnimationMode   = ONCE
31911        Flags           = START_FRAME_FIRST
31912      End
31913      ConditionState = DOOR_1_CLOSING
31914        Animation       = AVBomber_A2K.AVBomber_A2
31915        AnimationMode   = ONCE_BACKWARDS
31916        Flags           = START_FRAME_LAST
31917      End
31918  
31919      ConditionState = REALLYDAMAGED
31920        Model           = AVBomber_A2DU
31921        Animation       = AVBomber_A2K.AVBomber_A2
31922        AnimationMode   = MANUAL
31923        Flags           = START_FRAME_FIRST
31924      End
31925      ConditionState = DOOR_1_OPENING REALLYDAMAGED
31926        Model           = AVBomber_A2DU
31927        Animation       = AVBomber_A2K.AVBomber_A2
31928        AnimationMode   = ONCE
31929        Flags           = START_FRAME_FIRST
31930      End
31931      ConditionState = DOOR_1_CLOSING REALLYDAMAGED
31932        Model           = AVBomber_A2DU
31933        Animation       = AVBomber_A2K.AVBomber_A2
31934        AnimationMode   = ONCE_BACKWARDS
31935        Flags           = START_FRAME_LAST
31936      End
31937    End
31938  
31939    ; ***DESIGN parameters ***
31940    DisplayName         = OBJECT:B52
31941    EditorSorting       = VEHICLE
31942    Side                = America
31943    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
31944    VisionRange         = 0.0 
31945    ArmorSet
31946      Conditions      = None
31947      Armor           = AirplaneArmor
31948      DamageFX        = TankDamageFX
31949    End
31950    CommandSet        = Command_ScriptedTransportDrops
31951  
31952    ; *** AUDIO Parameters ***
31953    SoundAmbient = CINE_B52AmbientLoop
31954    SoundAmbientRubble    = NoSound
31955  
31956    ; *** ENGINEERING Parameters ***
31957    RadarPriority = UNIT
31958    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK  VEHICLE SCORE TRANSPORT AIRCRAFT IGNORED_IN_GUI
31959    Body = ActiveBody ModuleTag_03
31960      MaxHealth       = 1000.0
31961      InitialHealth   = 1000.0
31962    End
31963  
31964    ExperienceValue     = 50 50 50 50  ; Experience point value at each level
31965  
31966    ;SCRIPTED SUPPORT: These special powers are triggered directly 
31967    ;from the transport without creating a transport. This is done 
31968    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
31969    ;which also prevents creating the payload transport.
31970    Behavior    = OCLSpecialPower ModuleTag_04
31971      SpecialPowerTemplate = SuperweaponDaisyCutter  ;@@KRIS@@
31972      OCL                  = SUPERWEAPON_DaisyCutter
31973      CreateLocation       = USE_OWNER_OBJECT
31974    End
31975    Behavior    = OCLSpecialPower ModuleTag_05
31976      SpecialPowerTemplate = SuperweaponParadropAmerica
31977      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
31978      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
31979      OCL                  = SUPERWEAPON_Paradrop1
31980      CreateLocation       = USE_OWNER_OBJECT
31981    End 
31982    Behavior    = OCLSpecialPower ModuleTag_06
31983      SpecialPowerTemplate = SuperweaponCarpetBomb
31984      OCL                  = SUPERWEAPON_CarpetBomb
31985      CreateLocation       = USE_OWNER_OBJECT
31986    End 
31987     
31988    Behavior = PhysicsBehavior ModuleTag_07
31989      Mass = 500.0
31990    End
31991  
31992    Behavior = DeliverPayloadAIUpdate ModuleTag_08
31993      DoorDelay         = 500
31994      MaxAttempts       = 4
31995      DropOffset        = X:0 Y:0 Z:-10
31996      DropDelay         = 300     ; time in between each item dropped (if more than one)
31997      PutInContainer    = AmericaParachute
31998      DeliveryDistance  = 150
31999    End
32000    Locomotor = SET_NORMAL CINE_B52Locomotor
32001  
32002    Behavior = TransportContain ModuleTag_09
32003      Slots                       = 100                     ; hey, it's a BIG transport
32004      ScatterNearbyOnExit         = No
32005      OrientLikeContainerOnExit   = Yes
32006      KeepContainerVelocityOnExit = Yes
32007      ExitPitchRate               = 30
32008      ExitBone                    = WeaponA01
32009      AllowInsideKindOf           = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE
32010      DoorOpenTime                = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
32011      NumberOfExitPaths           = 0
32012      DestroyRidersWhoAreNotFreeToExit = Yes
32013    End
32014      
32015    Behavior                          = JetSlowDeathBehavior ModuleTag_10
32016      DestructionDelay                = 2000 
32017      RollRate                        = 0.0
32018      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
32019      PitchRate                       = 0
32020      FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
32021      FXInitialDeath                  = FX_JetBigDeathInitial
32022      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
32023      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
32024      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
32025      FXSecondary                     = FX_BigPlaneDeath
32026  ;   FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
32027  ;   OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
32028  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
32029    End
32030  
32031    Behavior = TransitionDamageFX ModuleTag_11
32032      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
32033      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
32034    End
32035  
32036    Geometry = Box
32037    GeometryIsSmall = No
32038    GeometryMajorRadius = 60.0
32039    GeometryMinorRadius = 10.0
32040    GeometryHeight = 10.0
32041    Shadow = SHADOW_VOLUME
32042    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
32043  
32044  End
32045  
32046  ;------------------------------------------------------------------------------
32047  ; *********************** Cinematic-only unit *********************************
32048  Object CINE_GLAInfantryRebel
32049  
32050    ; *** ART Parameters ***
32051    SelectPortrait         = SURebel_L
32052    ButtonImage            = SURebel
32053  
32054    UpgradeCameo1 = Upgrade_GLAAPBullets
32055    UpgradeCameo2 = Upgrade_GLACamouflage
32056    ;UpgradeCameo3 = NONE
32057    ;UpgradeCameo4 = NONE
32058    ;UpgradeCameo5 = NONE
32059  
32060    Draw = W3DModelDraw ModuleTag_01
32061  
32062      OkToChangeModelColor = Yes
32063  
32064      ; this says "we don't use these condition states at all, so completely
32065      ; ignore them for purposes of matchmaking"... this is useful to help
32066      ; reduce the number of AliasConditionState clauses you must add in
32067      ; order to avoid ambiguity in some cases.
32068      IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
32069  
32070      ; ---- standing
32071      DefaultConditionState
32072        Model               = UIRGrd_SKN
32073        IdleAnimation       = UIRGrd_SKL.UIRGrd_STN 0 35
32074        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDA 
32075        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDB 
32076        AnimationMode       = ONCE
32077        WeaponFireFXBone    = PRIMARY Muzzle
32078        WeaponMuzzleFlash   = PRIMARY MuzzleFX
32079        TransitionKey       = TRANS_Standing
32080      End
32081  
32082      ConditionState        = REALLYDAMAGED
32083        IdleAnimation       = UIRGrd_SKL.UIRGrd_STB 0 35
32084        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDC
32085        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDD 
32086        AnimationMode       = ONCE
32087        TransitionKey       = TRANS_StandingHurt
32088      End
32089  
32090      ; ---- moving
32091      ConditionState        = MOVING
32092        Animation           = UIRGrd_SKL.UIRGrd_RNA 21 ; used to be 15
32093        AnimationMode       = LOOP
32094        TransitionKey       = TRANS_Walking
32095        ParticleSysBone     = None InfantryDustTrails
32096      End
32097      AliasConditionState   = MOVING ATTACKING
32098  
32099      ConditionState        = MOVING REALLYDAMAGED
32100        Animation           = UIRGrd_SKL.UIRGrd_RNB 25
32101        AnimationMode       = LOOP
32102        TransitionKey       = TRANS_WalkingHurt
32103        ParticleSysBone     = None InfantryDustTrails
32104      End
32105      AliasConditionState   = MOVING ATTACKING REALLYDAMAGED
32106      
32107      ; ---- dying 
32108      ConditionState        = DYING
32109        Animation           = UIRGrd_SKL.UIRGrd_DTA 
32110        Animation           = UIRGrd_SKL.UIRGrd_DTB 
32111        AnimationMode       = ONCE
32112        TransitionKey       = TRANS_Dying
32113      End
32114  
32115      TransitionState = TRANS_Dying TRANS_Flailing
32116        Animation = UIRGrd_SKL.UIRGrd_ADTE1
32117        AnimationMode = ONCE
32118      End
32119  
32120      ConditionState = DYING EXPLODED_FLAILING
32121        Animation = UIRGrd_SKL.UIRGrd_ADTE2
32122        AnimationMode = LOOP
32123        TransitionKey = TRANS_Flailing
32124      End
32125  
32126      ConditionState = DYING EXPLODED_BOUNCING
32127        Animation = UIRGrd_SKL.UIRGrd_ADTE3
32128        AnimationMode = ONCE
32129        TransitionKey = None
32130      End
32131      
32132      ; ---- firing
32133      ConditionState = USING_WEAPON_A
32134        Animation = UIRGrd_SKL.UIRGrd_ATA
32135        AnimationMode = LOOP
32136        TransitionKey = TRANS_Firing
32137      End
32138  
32139      ConditionState = USING_WEAPON_A REALLYDAMAGED
32140        Animation = UIRGrd_SKL.UIRGrd_ATA2
32141        AnimationMode = LOOP
32142        TransitionKey = TRANS_FiringHurt
32143      End
32144  
32145      TransitionState = TRANS_Standing TRANS_Firing
32146        Animation = UIRGrd_SKL.UIRGrd_ATAST
32147        AnimationMode = ONCE
32148      End
32149  
32150      TransitionState = TRANS_Firing TRANS_Standing
32151        Animation = UIRGrd_SKL.UIRGrd_ATAED
32152        AnimationMode = ONCE
32153      End
32154  
32155      TransitionState = TRANS_StandingHurt TRANS_FiringHurt
32156        Animation = UIRGrd_SKL.UIRGrd_ATA2ED
32157        AnimationMode = ONCE_BACKWARDS
32158      End
32159  
32160      TransitionState = TRANS_FiringHurt TRANS_StandingHurt
32161        Animation = UIRGrd_SKL.UIRGrd_ATA2ED
32162        AnimationMode = ONCE
32163      End
32164  
32165      ; ------- Bldg-capture
32166  
32167      ConditionState = UNPACKING
32168        Model             = UIRGrd_F_SKN
32169        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
32170        AnimationMode     = ONCE
32171      End
32172      AliasConditionState = UNPACKING REALLYDAMAGED
32173  
32174      ConditionState = RAISING_FLAG
32175        Model             = UIRGrd_F_SKN
32176        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
32177        AnimationMode     = ONCE
32178        TransitionKey     = TRANS_Raising
32179      End
32180      AliasConditionState = RAISING_FLAG REALLYDAMAGED
32181  
32182      ConditionState = PACKING
32183        Model             = UIRGrd_F_SKN
32184        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
32185        AnimationMode     = ONCE_BACKWARDS
32186        Flags             = START_FRAME_LAST
32187        TransitionKey     = TRANS_Packing
32188      End
32189      AliasConditionState = PACKING REALLYDAMAGED
32190  
32191      TransitionState = TRANS_Raising TRANS_Packing
32192        Model             = UIRGrd_F_SKN
32193        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
32194        AnimationMode     = ONCE_BACKWARDS
32195        Flags             = START_FRAME_LAST
32196      End
32197  
32198    End
32199  
32200    ; ***DESIGN parameters ***
32201    DisplayName         = OBJECT:Rebel
32202    Side                = GLA
32203    EditorSorting       = INFANTRY
32204    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
32205   
32206    WeaponSet
32207      Conditions = None 
32208      Weapon = PRIMARY GLARebelMachineGun
32209    End
32210  ; sorry, no tranqs, cut for this version (srj)
32211  ;  WeaponSet
32212  ;    Conditions = PLAYER_UPGRADE 
32213  ;    Weapon = PRIMARY GLARebelMachineGun
32214  ;    Weapon = SECONDARY GLARebelTranqDartsWeapon
32215  ;    AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
32216  ;    AutoChooseSources = SECONDARY NONE
32217  ;  End
32218  
32219    ArmorSet
32220      Conditions      = None
32221      Armor           = HumanArmor
32222      DamageFX        = InfantryDamageFX
32223    End
32224    VisionRange         = 150
32225    ShroudClearingRange = 300
32226    Prerequisites
32227      Object = GLABarracks
32228    End
32229    BuildCost = 150
32230    BuildTime = 5.0          ;in seconds  
32231  
32232    ExperienceValue     = 15 15 30 40     ;Experience point value at each level
32233    ExperienceRequired  = 0 40 60 120     ;Experience points needed to gain each level
32234    IsTrainable         = Yes             ;Can gain experience
32235    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
32236    CommandSet          = GLAInfantryRebelCommandSet
32237  
32238    ; *** AUDIO Parameters ***
32239    VoiceSelect = RebelVoiceSelect
32240    VoiceMove = RebelVoiceMove
32241    VoiceGuard = RebelVoiceMove
32242    VoiceAttack = RebelVoiceAttack
32243    SoundDie = RebelVoiceDie
32244    SoundDieFire = DieByFireGLA
32245    SoundDieToxin = DieByToxinGLA
32246    SoundStealthOn = StealthOn
32247    SoundStealthOff = StealthOff
32248    VoiceFear = RebelVoiceFear
32249    VoiceTaskComplete = RebelVoiceCaptureComplete
32250    UnitSpecificSounds
32251      VoiceCreate = RebelVoiceCreate
32252      VoiceSubdue = RebelVoiceSubdue
32253      VoiceGarrison = RebelVoiceGarrison
32254      VoiceEnter = RebelVoiceMove
32255      VoiceEnterHostile = RebelVoiceMove
32256      VoiceGetHealed      = RebelVoiceMove
32257    End
32258  
32259    ; *** ENGINEERING Parameters ***
32260    RadarPriority = UNIT
32261    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE 
32262  
32263    Body = ActiveBody ModuleTag_02
32264      MaxHealth       = 120.0
32265      InitialHealth   = 120.0
32266    End
32267  
32268    Behavior = AIUpdateInterface ModuleTag_03
32269      AutoAcquireEnemiesWhenIdle = Yes
32270    End
32271  
32272    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
32273    End
32274  
32275    Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
32276  
32277    Behavior = PhysicsBehavior ModuleTag_05
32278      Mass = 5.0
32279    End
32280    Behavior = StealthUpdate ModuleTag_07
32281      StealthDelay                = 2500 ; msec
32282      StealthForbiddenConditions  = ATTACKING USING_ABILITY
32283      MoveThresholdSpeed          = 3
32284      InnateStealth               = No ;Requires upgrade first
32285      OrderIdleEnemiesToAttackMeUponReveal  = Yes
32286    End
32287  
32288  ; sorry, no tranq or stun bullets, cut for this version (srj)
32289  ;  Behavior = WeaponSetUpgrade ModuleTag_08
32290  ;    TriggeredBy = Upgrade_GLATranqDarts
32291  ;  End
32292    Behavior = WeaponBonusUpgrade ModuleTag_09
32293      TriggeredBy = Upgrade_GLAAPBullets
32294    End
32295    Behavior = StealthUpgrade ModuleTag_10
32296      TriggeredBy = Upgrade_GLACamouflage
32297    End
32298  
32299   
32300    Behavior = SquishCollide ModuleTag_11
32301      ;nothing
32302    End
32303  
32304  
32305  ; --- begin Death modules ---
32306    Behavior = SlowDeathBehavior ModuleTag_Death01
32307      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
32308      SinkDelay           = 3000
32309      SinkRate            = 0.5     ; in Dist/Sec
32310      DestructionDelay    = 8000
32311      FX                  = INITIAL FX_GIDie
32312    End
32313    Behavior = SlowDeathBehavior ModuleTag_Death02
32314      DeathTypes          = NONE +CRUSHED +SPLATTED
32315      SinkDelay           = 3000
32316      SinkRate            = 0.5     ; in Dist/Sec
32317      DestructionDelay    = 8000
32318      FX                  = INITIAL FX_GIDieCrushed
32319    End
32320    Behavior = SlowDeathBehavior ModuleTag_Death03
32321      DeathTypes          = NONE +EXPLODED
32322      SinkDelay           = 3000
32323      SinkRate            = 0.5     ; in Dist/Sec
32324      DestructionDelay    = 8000
32325      FX                  = INITIAL FX_GIDie
32326      FlingForce          = 8
32327      FlingForceVariance  = 3
32328      FlingPitch          = 60
32329      FlingPitchVariance  = 10
32330    End
32331    Behavior = SlowDeathBehavior ModuleTag_Death04
32332      DeathTypes          = NONE +BURNED
32333      DestructionDelay    = 0
32334      FX                  = INITIAL FX_GIDie
32335      OCL                 = INITIAL OCL_FlamingInfantry
32336    End
32337    Behavior = SlowDeathBehavior ModuleTag_Death05
32338      DeathTypes          = NONE +POISONED
32339      DestructionDelay    = 0
32340      FX                  = INITIAL FX_GIDie
32341      OCL                 = INITIAL OCL_ToxicInfantry
32342    End
32343    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
32344      DeathTypes          = NONE +POISONED_BETA
32345      DestructionDelay    = 0
32346      FX                  = INITIAL FX_GIDie
32347      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
32348    End
32349  ; --- end Death modules ---
32350  
32351    Behavior = PoisonedBehavior ModuleTag_16
32352      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
32353      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
32354    End
32355  
32356    Behavior = SpecialAbility ModuleTag_17
32357      SpecialPowerTemplate      = SpecialAbilityRebelCaptureBuilding
32358      UpdateModuleStartsAttack  = Yes
32359      StartsPaused              = Yes
32360      InitiateSound         = RebelVoiceCapture
32361    End
32362    Behavior = SpecialAbilityUpdate ModuleTag_18
32363      SpecialPowerTemplate  = SpecialAbilityRebelCaptureBuilding
32364      StartAbilityRange  = 5.0
32365      UnpackTime            = 3000  ; (changing this will scale anim speed)
32366      PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
32367      PackTime              = 2000  ; (changing this will scale anim speed)
32368      DoCaptureFX           = Yes
32369    End
32370  
32371    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_19
32372      SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding
32373      TriggeredBy = Upgrade_InfantryCaptureBuilding
32374    End
32375  
32376   
32377    Geometry = CYLINDER
32378    Scale = 0.95                            ;Scaling
32379    GeometryMajorRadius = 1
32380    GeometryMinorRadius = 1
32381    GeometryHeight = 8.0
32382    GeometryIsSmall = Yes
32383    Shadow = SHADOW_DECAL
32384    ShadowSizeX = 9;
32385    ShadowSizeY = 9;
32386    ShadowTexture = ShadowI;
32387    BuildCompletion = APPEARS_AT_RALLY_POINT
32388  
32389  End
32390  
32391  ;------------------------------------------------------------------------------
32392  ; *********************** Cinematic-only unit *********************************
32393  ;Tunnel Fanatic ;Now called the RPG Trooper
32394  Object CINE_GLAInfantryTunnelDefender
32395  
32396    ; *** ART Parameters ***
32397    SelectPortrait         = SURPG_L
32398    ButtonImage            = SURPG
32399    
32400    UpgradeCameo1 = Upgrade_GLAAPRockets
32401    ;UpgradeCameo2 = NONE
32402    ;UpgradeCameo3 = NONE
32403    ;UpgradeCameo4 = NONE
32404    ;UpgradeCameo5 = NONE
32405  
32406    Draw = W3DModelDraw ModuleTag_01
32407      OkToChangeModelColor = Yes
32408  
32409      DefaultConditionState
32410        Model = UITunF_SKN
32411        IdleAnimation = UITunF_SKL.UITunF_STA 0 20
32412        IdleAnimation = UITunF_SKL.UITunF_IDA 
32413        IdleAnimation = UITunF_SKL.UITunF_IDB 
32414        IdleAnimation = UITunF_SKL.UITunF_IDC 
32415        AnimationMode = ONCE
32416        WeaponMuzzleFlash = PRIMARY MuzzleFX
32417        WeaponFireFXBone = PRIMARY Muzzle
32418        WeaponLaunchBone = PRIMARY Muzzle
32419      End
32420  
32421      ConditionState = MOVING
32422        Animation = UITunF_SKL.UITunF_WKA 18.5 ; used to be 16
32423        Animation = UITunF_SKL.UITunF_WKB 36 ; used to be 30
32424        Animation = UITunF_SKL.UITunF_WKC 40 ; used to be 30
32425        Animation = UITunF_SKL.UITunF_RNA 25 ; used to be 15
32426        Animation = UITunF_SKL.UITunF_RNB 38 ; used to be 25   
32427        AnimationMode = LOOP
32428        ParticleSysBone   = None InfantryDustTrails
32429      End
32430  
32431      ConditionState = DYING
32432        Animation = UITunF_SKL.UITunF_DTA 
32433        Animation = UITunF_SKL.UITunF_DTB 
32434        AnimationMode = ONCE
32435        TransitionKey = TRANS_Dying
32436      End
32437  
32438      TransitionState = TRANS_Dying TRANS_Flailing
32439        Animation = UITunF_SKL.UITunF_ADTA1
32440        Animation = UITunF_SKL.UITunF_ADTE1
32441        Animation = UITunF_SKL.UITunF_ADTF1
32442        AnimationMode = ONCE
32443      End
32444  
32445      ConditionState = DYING EXPLODED_FLAILING
32446        Animation = UITunF_SKL.UITunF_ADTA2
32447        Animation = UITunF_SKL.UITunF_ADTE2
32448        Animation = UITunF_SKL.UITunF_ADTF2
32449        AnimationMode = LOOP
32450        TransitionKey = TRANS_Flailing
32451      End
32452  
32453      ConditionState = DYING EXPLODED_BOUNCING
32454        Animation = UITunF_SKL.UITunF_ADTA3
32455        Animation = UITunF_SKL.UITunF_ADTE3
32456        Animation = UITunF_SKL.UITunF_ADTF3
32457        AnimationMode = ONCE
32458        TransitionKey = None
32459      End
32460  
32461      ConditionState = FIRING_A 
32462        Animation = UITunF_SKL.UITunF_ATA 
32463        AnimationMode = ONCE
32464        TransitionKey = TRANS_START_FIRING
32465      End
32466      ConditionState = BETWEEN_FIRING_SHOTS_A
32467        Animation = UITunF_SKL.UITunF_STA
32468        AnimationMode = ONCE
32469        ; this is basically a trick: this guy has a nontrivial animation for firing,
32470        ; and a long recycle time between shots. we want him to finish his fire animation
32471        ; (unless he's ordered to do something else), so this is just a handy trick that
32472        ; says, "if the previous state had this transition key, allow it to finish before
32473        ; switching to us, if possible".
32474        WaitForStateToFinishIfPossible = TRANS_START_FIRING
32475      End
32476      AliasConditionState = RELOADING_A
32477  
32478      ConditionState = SPECIAL_CHEERING
32479        Animation = UITUNF_SKL.UITUNF_CHA
32480        AnimationMode = LOOP
32481      End
32482  
32483    End
32484  
32485    ; ***DESIGN parameters ***
32486    DisplayName      = OBJECT:TunnelDefender
32487    Side = GLA
32488    EditorSorting = INFANTRY
32489    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
32490    WeaponSet
32491      Conditions = None 
32492      Weapon = PRIMARY TunnelDefenderRocketWeapon
32493    End
32494    ArmorSet
32495      Conditions      = None
32496      Armor           = HumanArmor
32497      DamageFX        = InfantryDamageFX
32498    End
32499    VisionRange = 150
32500    ShroudClearingRange = 400
32501   ; Prerequisites
32502   ;   Object = GLATunnelNetwork
32503   ; End
32504    BuildCost = 300
32505    BuildTime = 5.0          ;in seconds  
32506  
32507    ExperienceValue = 20 20 40 60    ;Experience point value at each level
32508    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
32509    IsTrainable = Yes             ;Can gain experience
32510    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
32511    CommandSet      = GLAInfantryTunnelDefenderCommandSet
32512  
32513    ; *** AUDIO Parameters ***
32514    VoiceSelect = RPGTrooperVoiceSelect
32515    VoiceMove = RPGTrooperVoiceMove
32516    VoiceGuard = RPGTrooperVoiceMove
32517    VoiceAttack = RPGTrooperVoiceAttack
32518    VoiceAttackAir = RPGTrooperVoiceAttack
32519    SoundDie = RPGTrooperVoiceDie
32520    SoundDieFire = DieByFireGLA
32521    SoundDieToxin = DieByToxinGLA
32522    VoiceFear = RPGTrooperVoiceFear
32523    UnitSpecificSounds
32524      VoiceCreate          = RPGTrooperVoiceCreate
32525      VoiceGarrison = RPGTrooperVoiceGarrison
32526      VoiceEnter = RPGTrooperVoiceMove
32527      VoiceEnterHostile = RPGTrooperVoiceMove
32528      VoiceGetHealed      = RPGTrooperVoiceMove
32529    End
32530  
32531  
32532    ; *** ENGINEERING Parameters ***
32533    RadarPriority = UNIT
32534    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
32535  
32536    Body = ActiveBody ModuleTag_02
32537      MaxHealth       = 100.0
32538      InitialHealth   = 100.0
32539    End
32540  
32541    Behavior = AIUpdateInterface ModuleTag_03
32542      AutoAcquireEnemiesWhenIdle = Yes
32543    End
32544    Locomotor = SET_NORMAL CINE_MissileDefenderLocomotor
32545  
32546    Behavior = PhysicsBehavior ModuleTag_04
32547      Mass = 5.0
32548    End
32549   
32550    Behavior = SquishCollide ModuleTag_06
32551      ;nothing
32552    End
32553  
32554  ; --- begin Death modules ---
32555    Behavior = SlowDeathBehavior ModuleTag_Death01
32556      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
32557      SinkDelay           = 3000
32558      SinkRate            = 0.5     ; in Dist/Sec
32559      DestructionDelay    = 8000
32560      FX                  = INITIAL FX_GIDie
32561    End
32562    Behavior = SlowDeathBehavior ModuleTag_Death02
32563      DeathTypes          = NONE +CRUSHED +SPLATTED
32564      SinkDelay           = 3000
32565      SinkRate            = 0.5     ; in Dist/Sec
32566      DestructionDelay    = 8000
32567      FX                  = INITIAL FX_GIDieCrushed
32568    End
32569    Behavior = SlowDeathBehavior ModuleTag_Death03
32570      DeathTypes          = NONE +EXPLODED
32571      SinkDelay           = 3000
32572      SinkRate            = 0.5     ; in Dist/Sec
32573      DestructionDelay    = 8000
32574      FX                  = INITIAL FX_GIDie
32575      FlingForce          = 8
32576      FlingForceVariance  = 3
32577      FlingPitch          = 60
32578      FlingPitchVariance  = 10
32579    End
32580    Behavior = SlowDeathBehavior ModuleTag_Death04
32581      DeathTypes          = NONE +BURNED
32582      DestructionDelay    = 0
32583      FX                  = INITIAL FX_GIDie
32584      OCL                 = INITIAL OCL_FlamingInfantry
32585    End
32586    Behavior = SlowDeathBehavior ModuleTag_Death05
32587      DeathTypes          = NONE +POISONED
32588      DestructionDelay    = 0
32589      FX                  = INITIAL FX_GIDie
32590      OCL                 = INITIAL OCL_ToxicInfantry
32591    End
32592  ; --- end Death modules ---
32593  
32594    Behavior = PoisonedBehavior ModuleTag_12
32595      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
32596      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
32597    End
32598   
32599    Geometry = CYLINDER
32600    Scale = 0.95                            ;Scaling
32601    GeometryMajorRadius = 1.0
32602    GeometryMinorRadius = 1.0
32603    GeometryHeight = 8.0
32604    GeometryIsSmall = Yes
32605    Shadow = SHADOW_DECAL
32606    ShadowSizeX = 9;
32607    ShadowSizeY = 9;
32608    ShadowTexture = ShadowI;
32609    BuildCompletion = APPEARS_AT_RALLY_POINT
32610  
32611  End
32612  
32613  ;------------------------------------------------------------------------------
32614  ; ************************* Cinematic-only unit *******************************
32615  ;------------------------------------------------------------------------------
32616  ; this unit is never really "built"; building one triggers the random building of
32617  ; one of the other chassis. If you want a *specific* chassis, choose it explicitly;
32618  ; if you want a chassis at random, specify this.
32619  Object CINE_GLAVehicleTechnical
32620  
32621    ; *** ART Parameters ***
32622  
32623    Draw = W3DModelDraw ModuleTag_01
32624      DefaultConditionState
32625        ; give it a model so it'll show up in WB
32626        Model = UVTechTrck
32627      End
32628    End
32629  
32630    ; set cost and time fields here or else they won't work
32631    BuildCost       = 500
32632    BuildTime       = 5.0          ;in seconds    
32633  
32634    ; Needed to get the Veterancy Overlays on top of the Technical with his build variations.
32635    ;------------------------------------------------------------
32636    Behavior = VeterancyGainCreate ModuleTag_03
32637      StartingLevel = VETERAN
32638      ScienceRequired = SCIENCE_TechnicalTraining
32639    End
32640  
32641    Side = GLA
32642    EditorSorting = VEHICLE
32643    BuildVariations = CINE_GLAVehicleTechnicalChassisOne CINE_GLAVehicleTechnicalChassisTwo CINE_GLAVehicleTechnicalChassisThree
32644  
32645    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE TRANSPORT
32646  
32647  End
32648  
32649  ;------------------------------------------------------------------------------
32650  ; ************************* Cinematic-only unit *******************************
32651  Object CINE_GLAVehicleTechnicalChassisOne
32652  
32653    ; *** ART Parameters ***
32654    SelectPortrait         = SUTechnical_L 
32655    ButtonImage            = SUTechnical
32656  
32657    UpgradeCameo1 = Upgrade_GLAAPBullets
32658    UpgradeCameo2 = Upgrade_GLAJunkRepair
32659    ;UpgradeCameo3 = NONE
32660    ;UpgradeCameo4 = NONE
32661    ;UpgradeCameo5 = NONE
32662  
32663    Draw = W3DTruckDraw ModuleTag_01
32664  
32665      ExtraPublicBone = Dum_Turret 
32666  
32667      DefaultConditionState
32668        Model         = UVTechTrck
32669      End
32670      ConditionState  = REALLYDAMAGED
32671        Model         = UVTechTrck_d
32672      End
32673      ConditionState  = RUBBLE
32674        Model         = UVTechTrck_d
32675      End
32676  
32677      OkToChangeModelColor        = Yes
32678      TrackMarks                  = EXTireTrack.tga
32679      Dust                        = TechnicalDust
32680      DirtSpray                   = RocketBuggyDirtSpray
32681      PowerslideSpray             = RocketBuggyDirtPowerSlide
32682  
32683      ; These parameters are only used if the model has a separate suspension, 
32684      ; and the locomotor has HasSuspension = Yes.
32685      LeftFrontTireBone           = Tire01
32686      RightFrontTireBone          = Tire02
32687      LeftRearTireBone            = Tire03
32688      RightRearTireBone           = Tire04
32689      TireRotationMultiplier      = 0.2        ; this * speed = rotation.
32690      PowerslideRotationAddition  = 2.5    ; This speed is added to the rotation speed when powersliding.
32691    End
32692  
32693    Draw = W3DModelDraw ModuleTag_02
32694  
32695      OkToChangeModelColor        = Yes
32696      AttachToBoneInAnotherModule = Dum_Turret
32697  
32698      ; ------------------ basic technical ------------------------
32699      DefaultConditionState
32700        Model = UITech_SKN
32701        Turret = Dum-TurManMVR
32702        TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
32703        HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
32704        IdleAnimation = UITech_SKL.UITech_STA 0 6
32705        IdleAnimation = UITech_SKL.UITech_IDA
32706        IdleAnimation = UITech_SKL.UITech_IDB
32707        AnimationMode = ONCE
32708        ShowSubObject = 20Cal
32709        WeaponMuzzleFlash = PRIMARY MuzzleFX01
32710        WeaponFireFXBone = PRIMARY Muzzle01
32711      End
32712  
32713      ConditionState = RUBBLE MOVING TURRET_ROTATE
32714        Animation = None
32715        HideSubObject = UITech-SKN
32716        ShowSubObject = 20Cal
32717        WeaponMuzzleFlash = PRIMARY MuzzleFX01
32718        WeaponFireFXBone = PRIMARY Muzzle01
32719      End
32720  
32721      ConditionState = MOVING
32722        Animation = UITech_SKL.UITech_MVB
32723        AnimationMode = LOOP
32724        ShowSubObject = 20Cal
32725        WeaponMuzzleFlash = PRIMARY MuzzleFX01
32726        WeaponFireFXBone = PRIMARY Muzzle01
32727      End
32728  
32729      ConditionState = TURRET_ROTATE
32730        Animation = UITech_SKL.UITech_TNA
32731        AnimationMode = LOOP
32732        ShowSubObject = 20Cal
32733        WeaponMuzzleFlash = PRIMARY MuzzleFX01
32734        WeaponFireFXBone = PRIMARY Muzzle01
32735      End
32736      AliasConditionState = TURRET_ROTATE MOVING
32737      AliasConditionState = TURRET_ROTATE FIRING_A
32738      AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
32739      AliasConditionState = TURRET_ROTATE RELOADING_A
32740      AliasConditionState = TURRET_ROTATE MOVING FIRING_A
32741      AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
32742      AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
32743  
32744      ConditionState = FIRING_A 
32745        Animation = UITech_SKL.UITech_ATA
32746        AnimationMode = LOOP
32747        ShowSubObject = 20Cal
32748        WeaponMuzzleFlash = PRIMARY MuzzleFX01
32749        WeaponFireFXBone = PRIMARY Muzzle01
32750      End
32751  
32752      ; AliasConditionState is a new keyword that says,
32753      ; "give me another ConditionState exactly like the previous
32754      ; one, except with different conditions". Useful when you
32755      ; have several states that are the same with only different condition bits.
32756      AliasConditionState = BETWEEN_FIRING_SHOTS_A
32757      AliasConditionState = RELOADING_A
32758  
32759      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
32760      AliasConditionState = MOVING FIRING_A
32761      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
32762      AliasConditionState = MOVING RELOADING_A
32763  
32764      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
32765      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
32766        IdleAnimation = UITech_SKL.UITech_STA 0 6
32767        IdleAnimation = UITech_SKL.UITech_IDA
32768        IdleAnimation = UITech_SKL.UITech_IDB
32769        AnimationMode = ONCE
32770        ShowSubObject = 50Cal
32771        WeaponMuzzleFlash = PRIMARY MuzzleFX02
32772        WeaponFireFXBone = PRIMARY Muzzle02
32773        WeaponLaunchBone = PRIMARY Muzzle02
32774      End
32775  
32776      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
32777        Animation = None
32778        HideSubObject = UITech-SKN
32779        ShowSubObject = 50Cal
32780        WeaponMuzzleFlash = PRIMARY MuzzleFX02
32781        WeaponFireFXBone = PRIMARY Muzzle02
32782        WeaponLaunchBone = PRIMARY Muzzle02
32783      End
32784  
32785      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
32786        Animation = UITech_SKL.UITech_MVB
32787        AnimationMode = LOOP
32788        ShowSubObject = 50Cal
32789        WeaponMuzzleFlash = PRIMARY MuzzleFX02
32790        WeaponFireFXBone = PRIMARY Muzzle02
32791        WeaponLaunchBone = PRIMARY Muzzle02
32792      End
32793  
32794      ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
32795        Animation = UITech_SKL.UITech_TNA
32796        AnimationMode = LOOP
32797        ShowSubObject = 50Cal
32798        WeaponMuzzleFlash = PRIMARY MuzzleFX02
32799        WeaponFireFXBone = PRIMARY Muzzle02
32800        WeaponLaunchBone = PRIMARY Muzzle02
32801      End
32802      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
32803      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
32804      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
32805      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
32806      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
32807      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
32808      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
32809  
32810      ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A 
32811        Animation = UITech_SKL.UITech_ATA
32812        AnimationMode = LOOP
32813        ShowSubObject = 50Cal
32814        WeaponMuzzleFlash = PRIMARY MuzzleFX02
32815        WeaponFireFXBone = PRIMARY Muzzle02
32816        WeaponLaunchBone = PRIMARY Muzzle02
32817      End
32818  
32819      ; AliasConditionState is a new keyword that says,
32820      ; "give me another ConditionState exactly like the previous
32821      ; one, except with different conditions". Useful when you
32822      ; have several states that are the same with only different condition bits.
32823      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
32824      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
32825  
32826      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
32827      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
32828      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
32829      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
32830  
32831      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
32832      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
32833        IdleAnimation = UITech_SKL.UITech_STA 0 6
32834        IdleAnimation = UITech_SKL.UITech_IDA
32835        IdleAnimation = UITech_SKL.UITech_IDB
32836        AnimationMode = ONCE
32837        ShowSubObject = RPG
32838        WeaponFireFXBone = PRIMARY Muzzle03
32839        WeaponLaunchBone = PRIMARY Muzzle03
32840      End
32841  
32842      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
32843        Animation = None
32844        HideSubObject = UITech-SKN
32845        ShowSubObject = RPG
32846        WeaponFireFXBone = PRIMARY Muzzle03
32847        WeaponLaunchBone = PRIMARY Muzzle03
32848      End
32849  
32850      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
32851        Animation = UITech_SKL.UITech_MVB
32852        AnimationMode = LOOP
32853        ShowSubObject = RPG
32854        WeaponFireFXBone = PRIMARY Muzzle03
32855        WeaponLaunchBone = PRIMARY Muzzle03
32856      End
32857  
32858      ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
32859        Animation = UITech_SKL.UITech_TNA
32860        AnimationMode = LOOP
32861        ShowSubObject = RPG
32862        WeaponFireFXBone = PRIMARY Muzzle03
32863        WeaponLaunchBone = PRIMARY Muzzle03
32864      End
32865      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
32866      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
32867      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
32868      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
32869      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
32870      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
32871      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
32872  
32873      ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A 
32874        Animation = UITech_SKL.UITech_ATA
32875        AnimationMode = LOOP
32876        ShowSubObject = RPG
32877        WeaponFireFXBone = PRIMARY Muzzle03
32878        WeaponLaunchBone = PRIMARY Muzzle03
32879      End
32880  
32881      ; AliasConditionState is a new keyword that says,
32882      ; "give me another ConditionState exactly like the previous
32883      ; one, except with different conditions". Useful when you
32884      ; have several states that are the same with only different condition bits.
32885      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
32886      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
32887  
32888      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
32889      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
32890      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
32891      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
32892  
32893    End
32894  
32895    ; ***DESIGN parameters ***
32896    DisplayName         = OBJECT:Technical
32897    Side                = GLA
32898    EditorSorting       = VEHICLE
32899    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
32900  
32901    WeaponSet
32902      Conditions = None 
32903      Weapon = PRIMARY TechnicalMachineGunWeapon
32904    End
32905    WeaponSet
32906      Conditions = CRATEUPGRADE_ONE 
32907      Weapon = PRIMARY TechnicalCannonWeapon
32908    End
32909    WeaponSet
32910      Conditions = CRATEUPGRADE_TWO 
32911      Weapon = PRIMARY TechnicalRPGWeapon
32912    End
32913    ArmorSet
32914      Conditions      = None
32915      Armor           = TruckArmor
32916      DamageFX        = TruckDamageFX
32917    End
32918    ;update cost and time fields in Object GLAVehicleTechnical, or else they won't work
32919    ;BuildCost            = 300
32920    ;BuildTime            = 5.0          ;in seconds    
32921    VisionRange           = 100
32922    ShroudClearingRange   = 300
32923    Prerequisites
32924      Object = GLAArmsDealer
32925    End
32926  
32927    ExperienceValue         = 25 25 50 100    ;Experience point value at each level
32928    ExperienceRequired      = 0 50 75 150  ;Experience points needed to gain each level
32929    IsTrainable             = Yes             ;Can gain experience
32930    CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
32931    CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
32932    CommandSet              = GLAVehicleTechnicalCommandSet
32933  
32934    ; *** AUDIO Parameters ***
32935    VoiceSelect = TechnicalVoiceSelect
32936    VoiceMove = TechnicalVoiceMove
32937    VoiceGuard = TechnicalVoiceMove
32938    VoiceAttack = TechnicalVoiceAttack
32939    SoundMoveStart = TechnicalMoveStart
32940    SoundMoveStartDamaged = TechnicalMoveStart
32941    SoundDie = TechnicalVoiceDie
32942    SoundEnter = HumveeEnter
32943    SoundExit = HumveeExit
32944  
32945    UnitSpecificSounds
32946    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
32947      VoiceCreate          = TechnicalVoiceCreate
32948      TurretMoveStart = NoSound
32949      TurretMoveLoop = TurretMoveLoop
32950      TruckLandingSound = RocketBuggyLand
32951      TruckPowerslideSound = RocketBuggyPowerslide
32952      VoiceCrush      = TechnicalVoiceCrush
32953      VoiceUnload     = TechnicalVoiceUnload
32954      VoiceEnter = TechnicalVoiceMove
32955    End
32956  
32957    ; *** ENGINEERING Parameters ***
32958    RadarPriority = UNIT
32959    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE TRANSPORT
32960  
32961    Behavior = VeterancyGainCreate ModuleTag_03
32962      StartingLevel = VETERAN
32963      ScienceRequired = SCIENCE_TechnicalTraining
32964    End
32965  
32966    Body = ActiveBody ModuleTag_04
32967      MaxHealth       = 180
32968      InitialHealth   = 180
32969    End
32970    Behavior = AIUpdateInterface ModuleTag_05
32971      Turret
32972        TurretTurnRate = 240       ; turn rate, in degrees per sec
32973        NaturalTurretAngle = 0
32974        MinIdleScanAngle = 30      ; in degrees off the natural turret angle
32975        MaxIdleScanAngle = 60      ; in degrees off the natural turret angle
32976        MinIdleScanInterval = 5000 ; in milliseconds
32977        MaxIdleScanInterval = 10000 ; in milliseconds
32978        ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
32979      End
32980      AutoAcquireEnemiesWhenIdle = Yes
32981    End
32982    Locomotor = SET_NORMAL CINE_TechnicalLocomotor
32983    Behavior = PhysicsBehavior ModuleTag_06
32984      Mass = 40.0
32985    End
32986    Behavior = AutoHealBehavior ModuleTag_07
32987      HealingAmount = 2
32988      HealingDelay = 1000 ; msec
32989      TriggeredBy = Upgrade_GLAJunkRepair
32990    End
32991  
32992    Behavior = FlammableUpdate ModuleTag_09
32993      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
32994      AflameDamageAmount = 3       ; taking this much damage...
32995      AflameDamageDelay = 500       ; this often.
32996    End
32997  
32998    Behavior                 = TransitionDamageFX ModuleTag_10
32999      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
33000      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
33001    End
33002  
33003    Behavior = DestroyDie ModuleTag_11
33004      DeathTypes = NONE +CRUSHED +SPLATTED
33005    End
33006  
33007    ; A crushing defeat
33008    Behavior = FXListDie ModuleTag_12
33009      DeathTypes = NONE +CRUSHED +SPLATTED
33010      DeathFX = FX_CarCrush
33011    End
33012    Behavior = CreateObjectDie ModuleTag_13
33013      DeathTypes = NONE +CRUSHED +SPLATTED
33014      CreationList = OCL_CrusaderTank_CrushEffect
33015    End
33016    Behavior = CreateCrateDie ModuleTag_14
33017      CrateData = SalvageCrateData
33018      ;CrateData = EliteTankCrateData
33019      ;CrateData = HeroicTankCrateData
33020    End
33021  
33022    Behavior = SlowDeathBehavior ModuleTag_15
33023      DeathTypes = ALL -CRUSHED -SPLATTED
33024      DestructionDelay = 500
33025      DestructionDelayVariance = 1500
33026      OCL = INITIAL OCL_TechnicalAirDeathStart
33027      FX = INITIAL FX_RocketBuggyAirDeathGroundPart
33028      OCL = FINAL OCL_RocketBuggyAirDeath
33029      FX = FINAL FX_RocketBuggyAirDeathAirPart    ; This happens in the air
33030    End
33031  
33032    Behavior = TransportContain ModuleTag_16
33033      Slots = 5
33034      AllowInsideKindOf   = INFANTRY
33035      DamagePercentToUnits = 10%
33036      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
33037     End
33038  
33039    Behavior = WeaponBonusUpgrade ModuleTag_17 ; Not a full weapon set switch, just a number tweak reflected in a weapon. 
33040      TriggeredBy = Upgrade_GLAAPBullets
33041    End 
33042  
33043    Geometry = BOX
33044    GeometryMajorRadius = 18.0
33045    GeometryMinorRadius = 9.0
33046    GeometryHeight = 7.5     
33047    GeometryIsSmall = No    
33048    Shadow = SHADOW_VOLUME
33049  
33050  End
33051  
33052  ;------------------------------------------------------------------------------
33053  ; ************************* Cinematic-only unit *******************************
33054  ObjectReskin CINE_GLAVehicleTechnicalChassisTwo CINE_GLAVehicleTechnicalChassisOne
33055  
33056    ; *** ART Parameters ***
33057    Draw = W3DTruckDraw ModuleTag_01
33058  
33059      ExtraPublicBone = Dum_Turret 
33060  
33061      DefaultConditionState
33062        Model = UVTechVan
33063      End
33064  
33065      ConditionState = REALLYDAMAGED
33066        Model = UVTechVan_d
33067      End
33068      ConditionState = RUBBLE
33069        Model = UVTechVan_d
33070      End
33071  
33072      OkToChangeModelColor = Yes
33073      TrackMarks = EXTireTrack.tga
33074      Dust = TechnicalDust
33075  
33076      ;DirtSpray = RocketBuggyDirtSpray
33077      PowerslideSpray = RocketBuggyDirtPowerSlide
33078  
33079      ; These parameters are only used if the model has a separate suspension, 
33080      ; and the locomotor has HasSuspension = Yes.
33081      LeftFrontTireBone = Tire01
33082      RightFrontTireBone = Tire02
33083      LeftRearTireBone = Tire03
33084      RightRearTireBone = Tire04
33085      TireRotationMultiplier = 0.2        ; this * speed = rotation.
33086      PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
33087    End
33088  
33089    Draw = W3DModelDraw ModuleTag_02
33090      OkToChangeModelColor = Yes
33091      AttachToBoneInAnotherModule = Dum_Turret
33092  
33093      ; ------------------ basic technical ------------------------
33094      DefaultConditionState
33095        Model = UITech_SKN
33096        Turret = Dum-TurManMVR
33097        TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
33098        HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
33099        IdleAnimation = UITech_SKL.UITech_STA 0 6
33100        IdleAnimation = UITech_SKL.UITech_IDA
33101        IdleAnimation = UITech_SKL.UITech_IDB
33102        AnimationMode = ONCE
33103        ShowSubObject = 20Cal
33104        WeaponMuzzleFlash = PRIMARY MuzzleFX01
33105        WeaponFireFXBone = PRIMARY Muzzle01
33106      End
33107  
33108      ConditionState = RUBBLE MOVING TURRET_ROTATE
33109        Animation = None
33110        HideSubObject = UITech-SKN
33111        ShowSubObject = 20Cal
33112        WeaponMuzzleFlash = PRIMARY MuzzleFX01
33113        WeaponFireFXBone = PRIMARY Muzzle01
33114      End
33115  
33116      ConditionState = MOVING
33117        Animation = UITech_SKL.UITech_MVB
33118        AnimationMode = LOOP
33119        ShowSubObject = 20Cal
33120        WeaponMuzzleFlash = PRIMARY MuzzleFX01
33121        WeaponFireFXBone = PRIMARY Muzzle01
33122      End
33123  
33124      ConditionState = TURRET_ROTATE
33125        Animation = UITech_SKL.UITech_TNA
33126        AnimationMode = LOOP
33127        ShowSubObject = 20Cal
33128        WeaponMuzzleFlash = PRIMARY MuzzleFX01
33129        WeaponFireFXBone = PRIMARY Muzzle01
33130      End
33131      AliasConditionState = TURRET_ROTATE MOVING
33132      AliasConditionState = TURRET_ROTATE FIRING_A
33133      AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
33134      AliasConditionState = TURRET_ROTATE RELOADING_A
33135      AliasConditionState = TURRET_ROTATE MOVING FIRING_A
33136      AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
33137      AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
33138  
33139      ConditionState = FIRING_A 
33140        Animation = UITech_SKL.UITech_ATA
33141        AnimationMode = LOOP
33142        ShowSubObject = 20Cal
33143        WeaponMuzzleFlash = PRIMARY MuzzleFX01
33144        WeaponFireFXBone = PRIMARY Muzzle01
33145      End
33146  
33147      ; AliasConditionState is a new keyword that says,
33148      ; "give me another ConditionState exactly like the previous
33149      ; one, except with different conditions". Useful when you
33150      ; have several states that are the same with only different condition bits.
33151      AliasConditionState = BETWEEN_FIRING_SHOTS_A
33152      AliasConditionState = RELOADING_A
33153  
33154      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
33155      AliasConditionState = MOVING FIRING_A
33156      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
33157      AliasConditionState = MOVING RELOADING_A
33158  
33159      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
33160      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
33161        IdleAnimation = UITech_SKL.UITech_STA 0 6
33162        IdleAnimation = UITech_SKL.UITech_IDA
33163        IdleAnimation = UITech_SKL.UITech_IDB
33164        AnimationMode = ONCE
33165        ShowSubObject = 50Cal
33166        WeaponMuzzleFlash = PRIMARY MuzzleFX02
33167        WeaponFireFXBone = PRIMARY Muzzle02
33168        WeaponLaunchBone = PRIMARY Muzzle02
33169      End
33170  
33171      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
33172        Animation = None
33173        HideSubObject = UITech-SKN
33174        ShowSubObject = 50Cal
33175        WeaponMuzzleFlash = PRIMARY MuzzleFX02
33176        WeaponFireFXBone = PRIMARY Muzzle02
33177        WeaponLaunchBone = PRIMARY Muzzle02
33178      End
33179  
33180      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
33181        Animation = UITech_SKL.UITech_MVB
33182        AnimationMode = LOOP
33183        ShowSubObject = 50Cal
33184        WeaponMuzzleFlash = PRIMARY MuzzleFX02
33185        WeaponFireFXBone = PRIMARY Muzzle02
33186        WeaponLaunchBone = PRIMARY Muzzle02
33187      End
33188  
33189      ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
33190        Animation = UITech_SKL.UITech_TNA
33191        AnimationMode = LOOP
33192        ShowSubObject = 50Cal
33193        WeaponMuzzleFlash = PRIMARY MuzzleFX02
33194        WeaponFireFXBone = PRIMARY Muzzle02
33195        WeaponLaunchBone = PRIMARY Muzzle02
33196      End
33197      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
33198      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
33199      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
33200      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
33201      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
33202      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
33203      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
33204  
33205      ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A
33206        Animation = UITech_SKL.UITech_ATA
33207        AnimationMode = LOOP
33208        ShowSubObject = 50Cal
33209        WeaponMuzzleFlash = PRIMARY MuzzleFX02
33210        WeaponFireFXBone = PRIMARY Muzzle02
33211        WeaponLaunchBone = PRIMARY Muzzle02
33212      End
33213  
33214      ; AliasConditionState is a new keyword that says,
33215      ; "give me another ConditionState exactly like the previous
33216      ; one, except with different conditions". Useful when you
33217      ; have several states that are the same with only different condition bits.
33218      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
33219      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
33220  
33221      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
33222      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
33223      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
33224      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
33225  
33226  
33227      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
33228      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
33229        IdleAnimation = UITech_SKL.UITech_STA 0 6
33230        IdleAnimation = UITech_SKL.UITech_IDA
33231        IdleAnimation = UITech_SKL.UITech_IDB
33232        AnimationMode = ONCE
33233        ShowSubObject = RPG
33234        WeaponFireFXBone = PRIMARY Muzzle03
33235        WeaponLaunchBone = PRIMARY Muzzle03
33236      End
33237  
33238      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
33239        Animation = None
33240        HideSubObject = UITech-SKN
33241        ShowSubObject = RPG
33242        WeaponFireFXBone = PRIMARY Muzzle03
33243        WeaponLaunchBone = PRIMARY Muzzle03
33244      End
33245  
33246      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
33247        Animation = UITech_SKL.UITech_MVB
33248        AnimationMode = LOOP
33249        ShowSubObject = RPG
33250        WeaponFireFXBone = PRIMARY Muzzle03
33251        WeaponLaunchBone = PRIMARY Muzzle03
33252      End
33253  
33254      ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
33255        Animation = UITech_SKL.UITech_TNA
33256        AnimationMode = LOOP
33257        ShowSubObject = RPG
33258        WeaponFireFXBone = PRIMARY Muzzle03
33259        WeaponLaunchBone = PRIMARY Muzzle03
33260      End
33261      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
33262      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
33263      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
33264      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
33265      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
33266      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
33267      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
33268  
33269      ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A
33270        Animation = UITech_SKL.UITech_ATA
33271        AnimationMode = LOOP
33272        ShowSubObject = RPG
33273        WeaponFireFXBone = PRIMARY Muzzle03
33274        WeaponLaunchBone = PRIMARY Muzzle03
33275      End
33276  
33277      ; AliasConditionState is a new keyword that says,
33278      ; "give me another ConditionState exactly like the previous
33279      ; one, except with different conditions". Useful when you
33280      ; have several states that are the same with only different condition bits.
33281      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
33282      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
33283  
33284      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
33285      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
33286      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
33287      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
33288  
33289    End 
33290  
33291    Geometry = BOX
33292    GeometryMajorRadius = 16.0
33293    GeometryMinorRadius = 8.0
33294    GeometryHeight = 7.5     
33295    GeometryIsSmall = Yes    
33296  
33297  End
33298  
33299  ;------------------------------------------------------------------------------
33300  ;--------------------------------------------
33301  ;------------------------------------------------------------------------------
33302  
33303  ;------------------------------------------------------------------------------
33304  ; ************************* Cinematic-only unit *******************************
33305  ObjectReskin CINE_GLAVehicleTechnicalChassisThree CINE_GLAVehicleTechnicalChassisOne
33306  
33307    ; *** ART Parameters ***
33308    Draw = W3DTruckDraw ModuleTag_01
33309  
33310      ExtraPublicBone = Dum_Turret 
33311  
33312      DefaultConditionState
33313        Model = UVTechJeep
33314      End
33315  
33316      ConditionState = REALLYDAMAGED
33317        Model = UVTechJeep_d
33318      End
33319      ConditionState = RUBBLE
33320        Model = UVTechJeep_d
33321      End
33322  
33323      OkToChangeModelColor = Yes
33324      TrackMarks = EXTireTrack.tga
33325      Dust = TechnicalDust
33326  
33327      ;DirtSpray = RocketBuggyDirtSpray
33328      PowerslideSpray = RocketBuggyDirtPowerSlide
33329  
33330      ; These parameters are only used if the model has a separate suspension, 
33331      ; and the locomotor has HasSuspension = Yes.
33332      LeftFrontTireBone = Tire01
33333      RightFrontTireBone = Tire02
33334      LeftRearTireBone = Tire03
33335      RightRearTireBone = Tire04
33336      TireRotationMultiplier = 0.2        ; this * speed = rotation.
33337      PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
33338    End
33339  
33340    Draw = W3DModelDraw ModuleTag_02
33341      OkToChangeModelColor = Yes
33342      AttachToBoneInAnotherModule = Dum_Turret
33343  
33344      ; ------------------ basic technical ------------------------
33345      DefaultConditionState
33346        Model = UITech_SKN
33347        Turret = Dum-TurManMVR
33348        TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
33349        HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
33350        IdleAnimation = UITech_SKL.UITech_STA 0 6
33351        IdleAnimation = UITech_SKL.UITech_IDA
33352        IdleAnimation = UITech_SKL.UITech_IDB
33353        AnimationMode = ONCE
33354        ShowSubObject = 20Cal
33355        WeaponMuzzleFlash = PRIMARY MuzzleFX01
33356        WeaponFireFXBone = PRIMARY Muzzle01
33357      End
33358  
33359      ConditionState = RUBBLE MOVING TURRET_ROTATE
33360        Animation = None
33361        HideSubObject = UITech-SKN
33362        ShowSubObject = 20Cal
33363        WeaponMuzzleFlash = PRIMARY MuzzleFX01
33364        WeaponFireFXBone = PRIMARY Muzzle01
33365      End
33366  
33367      ConditionState = MOVING
33368        Animation = UITech_SKL.UITech_MVB
33369        AnimationMode = LOOP
33370        ShowSubObject = 20Cal
33371        WeaponMuzzleFlash = PRIMARY MuzzleFX01
33372        WeaponFireFXBone = PRIMARY Muzzle01
33373      End
33374  
33375      ConditionState = TURRET_ROTATE
33376        Animation = UITech_SKL.UITech_TNA
33377        AnimationMode = LOOP
33378        ShowSubObject = 20Cal
33379        WeaponMuzzleFlash = PRIMARY MuzzleFX01
33380        WeaponFireFXBone = PRIMARY Muzzle01
33381      End
33382      AliasConditionState = TURRET_ROTATE MOVING
33383      AliasConditionState = TURRET_ROTATE FIRING_A
33384      AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
33385      AliasConditionState = TURRET_ROTATE RELOADING_A
33386      AliasConditionState = TURRET_ROTATE MOVING FIRING_A
33387      AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
33388      AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
33389  
33390      ConditionState = FIRING_A
33391        Animation = UITech_SKL.UITech_ATA
33392        AnimationMode = LOOP
33393        ShowSubObject = 20Cal
33394        WeaponMuzzleFlash = PRIMARY MuzzleFX01
33395        WeaponFireFXBone = PRIMARY Muzzle01
33396      End
33397  
33398      ; AliasConditionState is a new keyword that says,
33399      ; "give me another ConditionState exactly like the previous
33400      ; one, except with different conditions". Useful when you
33401      ; have several states that are the same with only different condition bits.
33402      AliasConditionState = BETWEEN_FIRING_SHOTS_A
33403      AliasConditionState = RELOADING_A
33404  
33405      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
33406      AliasConditionState = MOVING FIRING_A
33407      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
33408      AliasConditionState = MOVING RELOADING_A
33409  
33410      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
33411      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
33412        IdleAnimation = UITech_SKL.UITech_STA 0 6
33413        IdleAnimation = UITech_SKL.UITech_IDA
33414        IdleAnimation = UITech_SKL.UITech_IDB
33415        AnimationMode = ONCE
33416        ShowSubObject = 50Cal
33417        WeaponMuzzleFlash = PRIMARY MuzzleFX02
33418        WeaponFireFXBone = PRIMARY Muzzle02
33419        WeaponLaunchBone = PRIMARY Muzzle02
33420      End
33421  
33422      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
33423        Animation = None
33424        HideSubObject = UITech-SKN
33425        ShowSubObject = 50Cal
33426        WeaponMuzzleFlash = PRIMARY MuzzleFX02
33427        WeaponFireFXBone = PRIMARY Muzzle02
33428        WeaponLaunchBone = PRIMARY Muzzle02
33429      End
33430  
33431      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
33432        Animation = UITech_SKL.UITech_MVB
33433        AnimationMode = LOOP
33434        ShowSubObject = 50Cal
33435        WeaponMuzzleFlash = PRIMARY MuzzleFX02
33436        WeaponFireFXBone = PRIMARY Muzzle02
33437        WeaponLaunchBone = PRIMARY Muzzle02
33438      End
33439  
33440      ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
33441        Animation = UITech_SKL.UITech_TNA
33442        AnimationMode = LOOP
33443        ShowSubObject = 50Cal
33444        WeaponMuzzleFlash = PRIMARY MuzzleFX02
33445        WeaponFireFXBone = PRIMARY Muzzle02
33446        WeaponLaunchBone = PRIMARY Muzzle02
33447      End
33448      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
33449      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
33450      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
33451      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
33452  
33453      ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A
33454        Animation = UITech_SKL.UITech_ATA
33455        AnimationMode = LOOP
33456        ShowSubObject = 50Cal
33457        WeaponMuzzleFlash = PRIMARY MuzzleFX02
33458        WeaponFireFXBone = PRIMARY Muzzle02
33459        WeaponLaunchBone = PRIMARY Muzzle02
33460      End
33461  
33462      ; AliasConditionState is a new keyword that says,
33463      ; "give me another ConditionState exactly like the previous
33464      ; one, except with different conditions". Useful when you
33465      ; have several states that are the same with only different condition bits.
33466      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
33467      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
33468  
33469      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
33470      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
33471      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
33472      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
33473  
33474      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
33475      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
33476        IdleAnimation = UITech_SKL.UITech_STA 0 6
33477        IdleAnimation = UITech_SKL.UITech_IDA
33478        IdleAnimation = UITech_SKL.UITech_IDB
33479        AnimationMode = ONCE
33480        ShowSubObject = RPG
33481        WeaponFireFXBone = PRIMARY Muzzle03
33482        WeaponLaunchBone = PRIMARY Muzzle03
33483      End
33484  
33485      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
33486        Animation = None
33487        HideSubObject = UITech-SKN
33488        ShowSubObject = RPG
33489        WeaponFireFXBone = PRIMARY Muzzle03
33490        WeaponLaunchBone = PRIMARY Muzzle03
33491      End
33492  
33493      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
33494        Animation = UITech_SKL.UITech_MVB
33495        AnimationMode = LOOP
33496        ShowSubObject = RPG
33497        WeaponFireFXBone = PRIMARY Muzzle03
33498        WeaponLaunchBone = PRIMARY Muzzle03
33499      End
33500  
33501      ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
33502        Animation = UITech_SKL.UITech_TNA
33503        AnimationMode = LOOP
33504        ShowSubObject = RPG
33505        WeaponFireFXBone = PRIMARY Muzzle03
33506        WeaponLaunchBone = PRIMARY Muzzle03
33507      End
33508      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
33509      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
33510      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
33511      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
33512  
33513      ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A
33514        Animation = UITech_SKL.UITech_ATA
33515        AnimationMode = LOOP
33516        ShowSubObject = RPG
33517        WeaponFireFXBone = PRIMARY Muzzle03
33518        WeaponLaunchBone = PRIMARY Muzzle03
33519      End
33520  
33521      ; AliasConditionState is a new keyword that says,
33522      ; "give me another ConditionState exactly like the previous
33523      ; one, except with different conditions". Useful when you
33524      ; have several states that are the same with only different condition bits.
33525      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
33526      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
33527  
33528      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
33529      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
33530      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
33531      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
33532  
33533    End  
33534    
33535    Geometry = BOX
33536    GeometryMajorRadius = 14.0
33537    GeometryMinorRadius = 9.0
33538    GeometryHeight = 9.5     
33539    GeometryIsSmall = Yes    
33540  
33541  End
33542  
33543  ;------------------------------------------------------------------------------
33544  ; ************************* Cinematic-only unit *******************************
33545  Object CINE_AmericaVehicleComanche
33546  
33547    ; *** ART Parameters ***
33548    SelectPortrait         = SACCommanche_L
33549    ButtonImage            = SACCommanche
33550    
33551    UpgradeCameo1 = Upgrade_ComancheRocketPods
33552    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
33553    ;UpgradeCameo3 = NONE
33554    ;UpgradeCameo4 = NONE
33555    ;UpgradeCameo5 = NONE
33556    
33557    Draw = W3DModelDraw ModuleTag_01
33558  
33559      DefaultConditionState
33560        Model                           = AVComanche
33561        HideSubObject                   = MissileUpgrade
33562        Animation                       = AVComanche.AVComanche
33563        AnimationMode                   = LOOP
33564        WeaponMuzzleFlash               = PRIMARY TurretFX
33565        WeaponFireFXBone                = PRIMARY Muzzle
33566        WeaponFireFXBone                = SECONDARY Muzzle
33567        WeaponLaunchBone  = SECONDARY Muzzle
33568      End
33569  
33570      ConditionState = REALLYDAMAGED
33571        Model                           = AVComanche_d
33572        Animation                       = AVComanche_d.AVComanche_d
33573        AnimationMode                   = LOOP
33574      End
33575  
33576      ConditionState = WEAPONSET_PLAYER_UPGRADE
33577        ShowSubObject                   = MissileUpgrade
33578        Animation                       = AVComanche.AVComanche
33579        AnimationMode                   = LOOP
33580        WeaponFireFXBone                = TERTIARY WeaponB
33581        WeaponLaunchBone  = TERTIARY WeaponB
33582      End
33583  
33584      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
33585        Model                           = AVComanche_d
33586        ShowSubObject                   = MissileUpgrade
33587        Animation                       = AVComanche_d.AVComanche_d
33588        AnimationMode                   = LOOP
33589        WeaponFireFXBone                = TERTIARY WeaponB
33590        WeaponLaunchBone  = TERTIARY WeaponB
33591      End
33592  
33593      ConditionState = RUBBLE
33594        Model                           = AVComanche_d
33595        Animation                       = AVComanche_d.AVComanche_d
33596        AnimationMode                   = LOOP
33597      End
33598  
33599      ConditionState = RUBBLE SPECIAL_DAMAGED
33600        Model                           = AVComanche_d
33601        HideSubObject                   = AVComanche_Prop
33602      End
33603  
33604      OkToChangeModelColor = Yes
33605    End
33606  
33607    ; ***DESIGN parameters ***
33608    DisplayName         = OBJECT:Comanche
33609    EditorSorting       = VEHICLE
33610    Side                = America
33611    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
33612    VisionRange         = 400.0 
33613    ShroudClearingRange = 600
33614    Prerequisites
33615      Object            = AmericaAirfield
33616    End
33617  
33618    WeaponSet
33619      Conditions          = None 
33620      ; -----
33621      Weapon              = PRIMARY     Comanche20mmCannonWeapon
33622      PreferredAgainst    = PRIMARY     INFANTRY
33623      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
33624      ; -----
33625      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
33626      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
33627      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
33628      ; -----
33629      Weapon              = TERTIARY    NONE
33630    End
33631    WeaponSet
33632      Conditions          = PLAYER_UPGRADE 
33633      ; -----
33634      Weapon              = PRIMARY     Comanche20mmCannonWeapon
33635      PreferredAgainst    = PRIMARY     INFANTRY
33636      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
33637      ; -----
33638      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
33639      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
33640      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
33641      ; -----
33642      Weapon              = TERTIARY    ComancheRocketPodWeapon
33643      AutoChooseSources   = TERTIARY    NONE
33644    End
33645    ArmorSet
33646      Conditions      = None
33647      Armor           = ComancheArmor
33648      DamageFX        = None
33649    End
33650    BuildCost           = 1500
33651    BuildTime           = 20              ; in seconds  
33652    ExperienceValue     = 50 50 100 200   ; Experience point value at each level
33653    ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
33654    IsTrainable         = Yes             ; Can gain experience
33655    CommandSet          = AmericaVehicleComancheCommandSet
33656  
33657    ; *** AUDIO Parameters ***
33658    VoiceSelect     = ComancheVoiceSelect
33659    VoiceMove       = ComancheVoiceMove
33660    VoiceGuard      = ComancheVoiceMove
33661    VoiceAttack     = ComancheVoiceAttack
33662    SoundAmbient    = ComancheAmbientLoop
33663    SoundAmbientRubble    = NoSound
33664    SoundDie        = ComancheVoiceFalling
33665    UnitSpecificSounds
33666      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
33667      VoiceCreate   = ComancheVoiceCreate
33668      SoundEject    = PilotSoundEject
33669      VoiceEject    = PilotVoiceEject
33670      Afterburner   = RaptorAfterburner
33671      VoiceGarrison = ComancheVoiceMove
33672      TurretMoveStart = NoSound
33673      TurretMoveLoop  = NoSound
33674    End
33675  
33676  
33677    ; *** ENGINEERING Parameters ***
33678    RadarPriority   = UNIT
33679    KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
33680  
33681    Behavior = WeaponSetUpgrade ModuleTag_02
33682      TriggeredBy = Upgrade_ComancheRocketPods
33683    End
33684    Behavior = ExperienceScalarUpgrade ModuleTag_03
33685      TriggeredBy = Upgrade_AmericaAdvancedTraining
33686      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
33687    End
33688  
33689    Body = ActiveBody ModuleTag_04
33690      MaxHealth       = 220.0
33691      InitialHealth   = 220.0
33692    End
33693  
33694    Behavior = FXListDie ModuleTag_05
33695      DeathFX = FX_HelicopterStartDeath
33696    End
33697  
33698    Behavior = JetAIUpdate ModuleTag_06
33699      MinHeight                     = 5
33700      NeedsRunway                   = No
33701      KeepsParkingSpaceWhenAirborne = No
33702      AutoAcquireEnemiesWhenIdle    = Yes
33703      ; note that comanches do not return to base when idle
33704      
33705      ; this is a bit of a trick... normally, units cannot move-and-fire at
33706      ; the same time. we need the comanche to be able to. so we give it
33707      ; a "turret" (invisible) and put the two main weapons on it, but with
33708      ; no turn rate. voila!
33709      Turret
33710        TurretTurnRate = 0      ; this "turret" does not turn
33711        TurretPitchRate = 0     ; nor does it pitch
33712        ControlledWeaponSlots = PRIMARY SECONDARY
33713      End
33714  
33715    End
33716    Locomotor = SET_NORMAL  CINE_ComancheLocomotor
33717    Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
33718  
33719    Behavior = PhysicsBehavior ModuleTag_07
33720      Mass = 50.0
33721    End
33722    Behavior = HelicopterSlowDeathBehavior ModuleTag_08
33723      DestructionDelay                = 99999999        ; the destruction delay
33724      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
33725      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
33726      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
33727      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
33728      SoundDeathLoop                  = ComancheDamagedLoop
33729      MinSelfSpin                     = 100                     ; in degrees per second
33730      MaxSelfSpin                     = 300                     ; in degrees per second
33731      SelfSpinUpdateDelay             = 100             ; in milliseconds
33732      SelfSpinUpdateAmount            = 10             ; in degrees   
33733      FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
33734      MinBladeFlyOffDelay             = 1500            ; in milliseconds
33735      MaxBladeFlyOffDelay             = 1500            ; in milliseconds
33736      AttachParticle                  = SootySmokeTrail
33737      AttachParticleBone              = Propeller02
33738      BladeObjectName                 = ComancheBlades
33739      BladeBoneName                   = Propeller01    
33740      ; Most things that eject pilots do so immediately upon death,
33741      ; via use of EjectPilotDie, but Helicopters are a special case...
33742      ; they need to do so after their blades are ejected. 
33743      OCLEjectPilot                   = OCL_EjectPilotViaParachute
33744      FXBlade                         = FX_HelicopterBladeExplosion
33745      OCLBlade                        = OCL_HelicopterBladeExplosion
33746      FXHitGround                     = FX_HelicopterHitGround
33747      OCLHitGround                    = OCL_HelicopterHitGround
33748      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
33749      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
33750      DelayFromGroundToFinalDeath     = 1500
33751      FinalRubbleObject               = ComancheRubbleHull
33752    End
33753  
33754    Behavior = TransitionDamageFX ModuleTag_09
33755      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
33756      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
33757    End
33758  
33759    Behavior = FlammableUpdate ModuleTag_21
33760      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
33761      AflameDamageAmount = 3       ; taking this much damage...
33762      AflameDamageDelay = 500       ; this often.
33763    End
33764  
33765    Geometry = BOX
33766    GeometryMajorRadius = 20.0
33767    GeometryMinorRadius = 3.0
33768    GeometryHeight = 25.0     
33769    GeometryIsSmall = No
33770    Shadow = SHADOW_VOLUME    
33771    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
33772  
33773  End
33774  
33775  ;------------------------------------------------------------------------------
33776  ; *************************** Cinematic-only unit *****************************
33777  Object CINE_GLATankScorpion
33778  
33779    ; *** ART Parameters ***
33780    SelectPortrait         = SUScorpion_L
33781    ButtonImage            = SUScorpion
33782    
33783    UpgradeCameo1 = Upgrade_GLAScorpionRocket
33784    UpgradeCameo2 = Upgrade_GLAAPRockets
33785    UpgradeCameo3 = Upgrade_GLAToxinShells
33786    UpgradeCameo4 = Upgrade_GLAJunkRepair
33787    ;UpgradeCameo5 = NONE
33788    
33789    Draw = W3DTankDraw ModuleTag_01
33790      OkToChangeModelColor = Yes
33791  
33792      ProjectileBoneFeedbackEnabledSlots = SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
33793    
33794      DefaultConditionState
33795        Model = UVLiteTank
33796        Turret = Turret01
33797        ; note, order-dependent: we must hide/show Missile AFTER we hide/show MissileRack!
33798        HideSubObject = MissleRack01 Missile ; MissileRack misspelled in the Art
33799        WeaponFireFXBone = PRIMARY Muzzle
33800        WeaponRecoilBone = PRIMARY Barrel
33801        WeaponMuzzleFlash = PRIMARY MuzzleFX
33802        WeaponLaunchBone = PRIMARY Muzzle
33803      End
33804  
33805      ConditionState = REALLYDAMAGED
33806        Model = UVLiteTank_d
33807      End
33808      
33809      ConditionState = RUBBLE
33810        Model = UVLiteTank_d
33811      End
33812  
33813      ConditionState = WEAPONSET_PLAYER_UPGRADE
33814        ShowSubObject = MissleRack01
33815        WeaponFireFXBone = SECONDARY WeaponA
33816        WeaponLaunchBone = SECONDARY WeaponA
33817        WeaponHideShowBone = SECONDARY Missile
33818      End
33819  
33820      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
33821        Model = UVLiteTank_d
33822        ShowSubObject = MissleRack01
33823        WeaponFireFXBone = SECONDARY WeaponA
33824        WeaponLaunchBone = SECONDARY WeaponA
33825        WeaponHideShowBone = SECONDARY Missile
33826      End
33827  
33828      TrackMarks = EXTnkTrack.tga
33829      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
33830    End
33831  
33832    ; ***DESIGN parameters ***
33833    DisplayName           = OBJECT:Scorpion
33834    Side                  = GLA
33835    EditorSorting         = VEHICLE
33836    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
33837    WeaponSet
33838      Conditions = None 
33839      Weapon = PRIMARY ScorpionTankGun
33840      Weapon = SECONDARY None
33841    End
33842    WeaponSet
33843      Conditions = PLAYER_UPGRADE 
33844      Weapon = PRIMARY ScorpionTankGun
33845      Weapon = SECONDARY ScorpionMissileWeapon
33846      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
33847      AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI
33848    End
33849    ArmorSet
33850      Conditions      = None
33851      Armor           = TankArmor
33852      DamageFX        = TankDamageFX
33853    End
33854    BuildCost       = 600
33855    BuildTime       = 7.0          ;in seconds    
33856    VisionRange     = 125
33857    ShroudClearingRange = 300
33858    Prerequisites
33859      Object = GLAArmsDealer
33860    End
33861  
33862    ExperienceValue = 60 60 120 200    ;Experience point value at each level
33863    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
33864    IsTrainable = Yes             ;Can gain experience
33865    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
33866    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
33867    CommandSet      = GLATankScorpionCommandSet
33868  
33869    ; *** AUDIO Parameters ***
33870    VoiceSelect = ScorpionTankVoiceSelect
33871    VoiceMove = ScorpionTankVoiceMove
33872    VoiceAttack = ScorpionTankVoiceAttack
33873    SoundMoveStart = ScorpionTankMoveStart
33874    SoundMoveStartDamaged = ScorpionTankMoveStart
33875    VoiceGuard = ScorpionTankVoiceMove
33876  
33877    UnitSpecificSounds
33878      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
33879      VoiceCreate          = ScorpionTankVoiceCreate
33880      ;TurretMoveStart = NoSound
33881      TurretMoveLoop = TurretMoveLoop
33882      VoiceEnter = ScorpionTankVoiceMove
33883    End
33884  
33885    ; *** ENGINEERING Parameters ***
33886    RadarPriority = UNIT
33887    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
33888  
33889    Body = ActiveBody ModuleTag_02
33890      MaxHealth       = 370.0
33891      InitialHealth   = 370.0
33892    End
33893  
33894    Behavior = AIUpdateInterface ModuleTag_03
33895      Turret
33896        TurretTurnRate = 100
33897        RecenterTime = 5000   ; how long to wait during idle before recentering
33898        ControlledWeaponSlots = PRIMARY SECONDARY
33899      End
33900      AutoAcquireEnemiesWhenIdle = Yes
33901    End
33902    Locomotor = SET_NORMAL CINE_ScorpionLocomotor
33903    Behavior = PhysicsBehavior ModuleTag_04
33904      Mass = 50.0
33905    End
33906    Behavior = AutoHealBehavior ModuleTag_05
33907      HealingAmount = 2
33908      HealingDelay = 1000 ; msec
33909      TriggeredBy = Upgrade_GLAJunkRepair
33910    End
33911  
33912    ; Catch fire, and explode death
33913    Behavior = SlowDeathBehavior ModuleTag_06
33914      DeathTypes = ALL -CRUSHED -SPLATTED
33915      ProbabilityModifier = 50
33916      DestructionDelay = 2000
33917      DestructionDelayVariance = 300
33918      FX  = INITIAL  FX_CrusaderCatchFire
33919      OCL = FINAL    OCL_GenericTankDeathEffect  
33920      FX  = FINAL    FX_BattleMasterExplosionOneFinal
33921    End
33922  
33923    Behavior = WeaponSetUpgrade ModuleTag_07
33924      TriggeredBy = Upgrade_GLAScorpionRocket
33925    End
33926  
33927    Behavior = DestroyDie ModuleTag_09
33928      DeathTypes = NONE +CRUSHED +SPLATTED
33929    End
33930  
33931    ; A crushing defeat
33932    Behavior = FXListDie ModuleTag_10
33933      DeathTypes = NONE +CRUSHED +SPLATTED
33934      DeathFX = FX_CarCrush
33935    End
33936    Behavior = CreateObjectDie ModuleTag_11
33937      DeathTypes = NONE +CRUSHED +SPLATTED
33938      CreationList = OCL_CrusaderTank_CrushEffect
33939    End
33940    Behavior = CreateCrateDie ModuleTag_12
33941      CrateData = SalvageCrateData
33942      ;CrateData = EliteTankCrateData
33943      ;CrateData = HeroicTankCrateData
33944    End
33945    
33946    Behavior                 = TransitionDamageFX ModuleTag_13
33947      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
33948      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
33949    End
33950  
33951    Behavior = FlammableUpdate ModuleTag_21
33952      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
33953      AflameDamageAmount = 3       ; taking this much damage...
33954      AflameDamageDelay = 500       ; this often.
33955    End
33956  
33957    Geometry = BOX
33958    GeometryMajorRadius = 14.0
33959    GeometryMinorRadius = 9.0
33960    GeometryHeight = 10.5    
33961    GeometryIsSmall = Yes 
33962    Shadow = SHADOW_VOLUME   
33963  
33964  End
33965  
33966  ;------------------------------------------------------------------------------
33967  ;************************* Cinematic-only unit ********************************
33968  Object CINE_ChinaJetMIG
33969  
33970    ; *** ART Parameters ***
33971    SelectPortrait         = SNMig_L
33972    ButtonImage            = SNMig
33973    
33974    UpgradeCameo1 = Upgrade_ChinaAircraftArmor
33975    UpgradeCameo2 = Upgrade_ChinaBlackNapalm
33976    ;UpgradeCameo3 = NONE
33977    ;UpgradeCameo4 = NONE
33978    ;UpgradeCameo5 = NONE
33979    
33980    Draw = W3DModelDraw ModuleTag_01
33981  
33982      OkToChangeModelColor = Yes
33983  
33984      DefaultConditionState
33985        Model               = NVMIG
33986        HideSubObject       = BurnerFX01 BurnerFX02
33987        WeaponLaunchBone    = PRIMARY WeaponA
33988      End
33989  
33990      ConditionState        = JETEXHAUST
33991        ParticleSysBone     = Wingtip01 JetContrail
33992        ParticleSysBone     = Wingtip02 JetContrail
33993      End
33994  
33995      ConditionState       = JETEXHAUST JETAFTERBURNER
33996        ShowSubObject      = BurnerFX01 BurnerFX02
33997        ParticleSysBone     = Exhaust01 JetExhaust
33998        ParticleSysBone     = Exhaust02 JetExhaust
33999        ParticleSysBone     = Wingtip01 JetContrail
34000        ParticleSysBone     = Wingtip02 JetContrail
34001      End
34002  
34003      ConditionState        = REALLYDAMAGED
34004        Model               = NVMIG_D
34005        ParticleSysBone     = Wingtip01 JetContrail
34006        ParticleSysBone     = Wingtip02 JetContrail
34007      End
34008  
34009      ConditionState        = RUBBLE
34010        Model               = NVMIG_D
34011      End
34012  
34013      ConditionState        = REALLYDAMAGED JETEXHAUST
34014        Model               = NVMIG_D
34015        ParticleSysBone     = Wingtip01 JetContrail
34016        ParticleSysBone     = Wingtip02 JetContrail
34017      End
34018  
34019      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
34020        Model               = NVMIG_D
34021        ShowSubObject       = BurnerFX01 BurnerFX02
34022        ParticleSysBone     = Engine01 JetExhaust
34023        ParticleSysBone     = Engine02 JetExhaust
34024        ParticleSysBone     = Wingtip01 JetContrail
34025        ParticleSysBone     = Wingtip02 JetContrail
34026      End
34027  
34028      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
34029        ; @todo srj -- model missing
34030        ;Model              = NVMIG_D1B
34031        Model               = NVMIG_D
34032        ;HideSubObject is needed cause there're inherited from default condition state      
34033        HideSubObject       = None 
34034        ShowSubObject       = None
34035        ParticleSysBone     = Engine01 JetExhaust
34036        ParticleSysBone     = Engine02 JetExhaust
34037        ParticleSysBone     = Wingtip01 JetContrail
34038        ParticleSysBone     = Wingtip02 JetContrail
34039      End
34040  
34041    End
34042  
34043    ; ***DESIGN parameters ***
34044    DisplayName             = OBJECT:MIG
34045    EditorSorting           = VEHICLE
34046    Side                    = China
34047    TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
34048    VisionRange             = 300.0 
34049    ShroudClearingRange     = 300.0
34050  
34051    Prerequisites
34052      Object                = ChinaAirfield
34053    End
34054  
34055    WeaponSet
34056      Conditions        = None 
34057      Weapon            = PRIMARY     NapalmMissileWeapon
34058      AutoChooseSources = PRIMARY     NONE
34059    End
34060    WeaponSet
34061      Conditions = PLAYER_UPGRADE 
34062      Weapon            = PRIMARY     BlackNapalmMissileWeapon
34063      AutoChooseSources = PRIMARY     NONE
34064    End
34065  
34066    ArmorSet
34067      Conditions           = None
34068      Armor                = AirplaneArmor
34069      DamageFX             = None
34070    End
34071  
34072    BuildCost               = 1000
34073    BuildTime               = 10   
34074    ExperienceValue         = 50 50 100 150   ;Experience point value at each level
34075    ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
34076    IsTrainable = Yes             ;Can gain experience
34077    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
34078    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
34079    CommandSet             = ChinaJetMIGCommandSet
34080  
34081    ; *** AUDIO Parameters ***
34082    VoiceSelect             = MigVoiceSelect
34083    VoiceMove               = MigVoiceMove
34084    VoiceAttack             = MigVoiceAttack
34085    VoiceAttackAir          = MigVoiceAttackAir
34086    VoiceGuard              = MigVoiceAirPatrol
34087    SoundMoveLoop           = NoSound  ; don't want sound while sitting
34088    SoundAmbient            = MigAmbientLoop
34089    SoundAmbientRubble      = NoSound
34090    SoundDie                = MigVoiceFalling
34091    UnitSpecificSounds
34092      VoiceCreate           = MigVoiceCreate
34093      Afterburner           = RaptorAfterburner
34094      VoiceGarrison         = MigVoiceMove
34095    End
34096  
34097    ; *** ENGINEERING Parameters ***
34098    RadarPriority          = UNIT
34099    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
34100    Body                   = ActiveBody ModuleTag_02
34101      MaxHealth            = 160.0
34102      InitialHealth        = 160.0
34103    End
34104  
34105    Behavior                          = JetSlowDeathBehavior ModuleTag_03
34106      FXOnGroundDeath                 = FX_JetOnGroundDeath
34107      OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp_CinematicVersion
34108      DestructionDelay                = 99999999  ; destruction will happen when we
34109      RollRate                        = 0.2
34110      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
34111      PitchRate                       = 0.0
34112      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
34113      FXInitialDeath                  = FX_JetDeathInitial
34114      OCLInitialDeath                 = OCL_MIGDeathInitial
34115      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
34116      FXSecondary                     = FX_JetDeathSecondary
34117      OCLSecondary                    = OCL_MIGDeathSecondary
34118      FXHitGround                     = FX_JetDeathHitGround
34119      OCLHitGround                    = OCL_MIGDeathHitGround
34120      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
34121      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp_CinematicVersion
34122      OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp_CinematicVersion
34123    End
34124  
34125    Behavior = WeaponSetUpgrade ModuleTag_04
34126      TriggeredBy = Upgrade_ChinaBlackNapalm
34127    End
34128  
34129    Behavior = PhysicsBehavior ModuleTag_05
34130      Mass = 500.0
34131    End
34132  
34133    Behavior = JetAIUpdate ModuleTag_06
34134      OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
34135                                          ; note that it's expressed as a percent of max health, not an absolute
34136      TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
34137      TakeoffPause              = 500
34138      MinHeight                 = 5
34139      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
34140    End
34141  
34142    Locomotor = SET_NORMAL CINE_MIGLocomotor
34143    Locomotor = SET_TAXIING CINE_BasicJetTaxiLocomotor
34144  
34145  
34146    Behavior = FlammableUpdate ModuleTag_08
34147      AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
34148      AflameDamageAmount = 3       ; taking this much damage...
34149      AflameDamageDelay = 500      ; this often.
34150    End
34151  
34152    Behavior                       = TransitionDamageFX ModuleTag_09
34153      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
34154      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
34155    End
34156  
34157    Behavior        = MaxHealthUpgrade ModuleTag_10
34158      TriggeredBy   = Upgrade_ChinaAircraftArmor
34159      AddMaxHealth  = 40.0
34160      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
34161    End
34162  
34163  
34164  
34165    Geometry                 = Box
34166    GeometryIsSmall          = Yes
34167    GeometryMajorRadius      = 14.0
34168    GeometryMinorRadius      = 7.0
34169    GeometryHeight           = 5.0
34170    Shadow                   = SHADOW_VOLUME
34171    
34172    Shadow = SHADOW_VOLUME
34173    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
34174  
34175  End
34176  
34177  ;------------------------------------------------------------------------------
34178  ; ******************** Cinematic-only unit ***********************************
34179  Object CINE_GLAInfantryAngryMobNexus 
34180  
34181  ;**** ART Parameters **************************
34182    SelectPortrait         = SUAngryMob_L
34183    ButtonImage            = SUAngryMob
34184    
34185    UpgradeCameo1 = Upgrade_GLAArmTheMob
34186    ;UpgradeCameo2 = NONE
34187    ;UpgradeCameo3 = NONE
34188    ;UpgradeCameo4 = NONE
34189    ;UpgradeCameo5 = NONE
34190    
34191    Draw = W3DModelDraw ModuleTag_01
34192      OkToChangeModelColor = Yes
34193      DefaultConditionState
34194        Model = None
34195  ;      Model = AVBomber_B
34196      End
34197    End
34198  
34199  
34200  ;****DESIGN parameters **************************
34201  
34202    DisplayName      = OBJECT:AngryMobNexus
34203    Side = GLA
34204    EditorSorting   = INFANTRY
34205    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
34206  
34207    WeaponSet
34208      Conditions = None 
34209      Weapon = PRIMARY GLAAngryMobNexusHarmlessWeapon
34210      Weapon = SECONDARY GLAAngryMobNexusHarmlessWeapon
34211      Weapon = TERTIARY GLAAngryMobNexusHarmlessWeapon
34212    End
34213  
34214  
34215    ArmorSet
34216      Conditions      = None
34217      Armor           = InvulnerableAllArmor
34218      DamageFX        = None
34219    End
34220  
34221    BuildCost       = 800
34222    BuildTime       = 15.0          ;in seconds    
34223    VisionRange     = 200  ; it can scout for the spawn
34224    ShroudClearingRange = 0
34225  
34226    Prerequisites
34227      Object = GLABarracks
34228      Object = GLAPalace
34229    End
34230  
34231    ExperienceValue    = 5 5 5 5 ;Experience point value at each level
34232  
34233    IsTrainable     = No
34234  
34235  
34236  
34237    CommandSet    = GLAInfantryAngryMobCommandSet;
34238  
34239  ;**** AUDIO Parameters *****************************
34240    VoiceSelect = AngryMobVoiceSelect
34241    VoiceMove = AngryMobVoiceMove
34242    VoiceAttack = AngryMobVoiceAttack
34243    SoundMoveStart = AngryMobMoveStart
34244    SoundMoveStartDamaged = AngryMobMoveStart
34245    SoundAmbient = AngryMobAmbientLoop
34246    SoundAmbientRubble    = NoSound
34247    SoundDie = CivilianArabMaleDie
34248    SoundDieFire = DieByFireGLA
34249    SoundDieToxin = DieByToxinGLA
34250    UnitSpecificSounds
34251      VoiceCreate          = AngryMobVoiceCreate
34252    End
34253  
34254  
34255  ;**** ENGINEERING Parameters ******************************
34256  
34257    RadarPriority = UNIT
34258    KindOf = PRELOAD CAN_ATTACK INFANTRY MOB_NEXUS ATTACK_NEEDS_LINE_OF_SIGHT NO_COLLIDE SELECTABLE
34259    Body = ImmortalBody ModuleTag_02
34260      MaxHealth       = 99999.0
34261      InitialHealth   = 99999.0
34262    End
34263  
34264    Behavior = AIUpdateInterface ModuleTag_03
34265      AutoAcquireEnemiesWhenIdle = Yes
34266    End
34267  
34268    Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
34269    Locomotor = SET_WANDER WanderHumanLocomotor
34270    Locomotor = SET_PANIC PanicHumanLocomotor
34271  
34272    Behavior = PhysicsBehavior ModuleTag_04
34273      Mass = 50.0
34274    End
34275  
34276    Behavior            = SpawnBehavior ModuleTag_05
34277      SpawnNumber       = 17
34278      SpawnReplaceDelay = 30000 ; 30 seconds
34279  
34280  
34281      SpawnTemplateName = CINE_GLAInfantryAngryMobPistol01 ; Aladdin
34282      SpawnTemplateName = GLAInfantryAngryMobRock02 ; Woman in the Gypsy Costume
34283      SpawnTemplateName = CINE_GLAInfantryAngryMobPistol03 ; Skinny Guy with the Green Beret
34284      SpawnTemplateName = GLAInfantryAngryMobRock02 ; Woman in the Gypsy Costume
34285      SpawnTemplateName = CINE_GLAInfantryAngryMobPistol05 ; The robed dude with the Man-Veil
34286      SpawnTemplateName = CINE_GLAInfantryAngryMobPistol01 ; The Lady with the hot sauce
34287  
34288  
34289  
34290      ExitByBudding = Yes;!
34291  
34292      InitialBurst = 15 ; all 15 will not delay
34293      OneShot     = No
34294      AggregateHealth = Yes
34295    End
34296  
34297    Behavior = QueueProductionExitUpdate ModuleTag_06
34298      UnitCreatePoint   = X:  0.0  Y:  0.0   Z:0.0
34299      NaturalRallyPoint = X: 0.0  Y:  0.0   Z:0.0
34300      ExitDelay     = 5000 ; 5 sec
34301      InitialBurst = 15 ; all 15 will not delay
34302    End
34303  
34304    Behavior = DestroyDie ModuleTag_07
34305      DeathTypes = ALL
34306    End
34307  
34308    Geometry = CYLINDER
34309    GeometryMajorRadius = 1.0
34310    GeometryMinorRadius = 1.0
34311    GeometryHeight = 8.0     
34312    GeometryIsSmall = Yes 
34313    Shadow = SHADOW_VOLUME
34314  
34315  End
34316  
34317  ;------------------------------------------------------------------------------
34318  ; *********************** Cinematic-only unit *********************************
34319  Object CINE_GLAInfantryAngryMobPistol01
34320  
34321  ;**** ART Parameters ***
34322    Draw = W3DModelDraw DrawTag_01
34323      OkToChangeModelColor = Yes
34324  
34325  
34326  
34327      ; WHILE CARRYING PISTOL
34328      ;---------------------------------------------------------
34329      DefaultConditionState ;Idle with Pistol Holstered
34330        Model = UIMOB01_SKN
34331        IdleAnimation = UIMOB01_SKL.UIMOB01_IDA1 0 12
34332        IdleAnimation = UIMOB01_SKL.UIMOB01_IDA2 0 5
34333        IdleAnimation = UIMOB01_SKL.UIMOB01_CHA  0 5
34334        IdleAnimation = UIMOB01_SKL.UIMOB01_STA  0 5
34335        AnimationMode = ONCE
34336        AnimationSpeedFactorRange 0.9 1.1
34337        TransitionKey = TRANS_STAND_A
34338        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34339  
34340        WeaponFireFXBone = PRIMARY Muzzle
34341        WeaponMuzzleFlash = PRIMARY MuzzleFX
34342        WeaponFireFXBone = SECONDARY MuzzleAK
34343        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
34344        WeaponFireFXBone = TERTIARY "UIMOB01 R HAND"
34345      End
34346  
34347      ; Drawing pistol
34348      ConditionState  = PREATTACK_A
34349        Animation     = UIMOB01_SKL.UIMOB01_ATA1_ST ; start firing
34350        AnimationMode = ONCE
34351        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34352      End
34353      AliasConditionState = PREATTACK_A FIRING_A
34354      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
34355  
34356      ; Firing pistol
34357      ConditionState = FIRING_A
34358        Animation = UIMOB01_SKL.UIMOB01_ATA1_LP ; looping firing
34359        AnimationMode = LOOP
34360        TransitionKey = TRANS_FIRING_A
34361        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34362      End
34363  
34364      ConditionState  = BETWEEN_FIRING_SHOTS_A
34365        Animation     = UIMOB01_SKL.UIMOB01_ATA1_LP ; looping firing
34366        AnimationMode = LOOP
34367        TransitionKey = TRANS_FIRING_A
34368        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34369      End
34370      
34371      ConditionState  = RELOADING_A
34372        Animation     = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing
34373        AnimationMode = ONCE
34374        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34375      End
34376  
34377      ; This transition allows him to put his gun away when he's finished attacking.
34378      TransitionState = TRANS_FIRING_A TRANS_STAND_A
34379        Animation     = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing
34380        AnimationMode = ONCE
34381      End
34382  
34383      ConditionState = MOVING
34384        Animation = UIMOB01_SKL.UIMOB01_RNA 
34385        AnimationMode = LOOP
34386        Flags = RANDOMSTART
34387        TransitionKey   = MOVING
34388        ParticleSysBone   = None InfantryDustTrails
34389      End
34390      AliasConditionState = MOVING RELOADING_A
34391      AliasConditionState = MOVING PREATTACK_A
34392      AliasConditionState = MOVING FIRING_A
34393      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
34394      AliasConditionState = MOVING RELOADING_C RELOADING_A 
34395      AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
34396  
34397      ConditionState = DYING
34398        Animation = UIMOB01_SKL.UIMOB01_DA1    
34399        Animation = UIMOB01_SKL.UIMOB01_DA2
34400        AnimationMode = ONCE
34401        TransitionKey = TRANS_Dying
34402      End
34403  
34404  
34405      ConditionState = SPECIAL_CHEERING
34406        Animation = UIMOB01_SKL.UIMOB01_CHA
34407        AnimationMode = ONCE
34408      End
34409  
34410      ;--------------------------------------------------------
34411  
34412      ; TRANSITION FROM PISTOL TO AK47
34413      TransitionState = TRANS_STAND_A TRANS_STAND_AK
34414        Animation = UIMOB01_SKL.UIMOB01_TA-D
34415        AnimationMode = ONCE
34416      End
34417  
34418  
34419      ; WHILE CARRYING AK47 
34420      ;---------------------------------------------------------
34421      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
34422        Model = UIMOB01_SKN
34423        IdleAnimation = UIMOB01_SKL.UIMOB01_IDD1 0 6
34424        IdleAnimation = UIMOB01_SKL.UIMOB01_IDD2 0 6
34425        IdleAnimation = UIMOB01_SKL.UIMOB01_CHD  0 6
34426        IdleAnimation = UIMOB01_SKL.UIMOB01_STD
34427        AnimationMode = ONCE
34428        AnimationSpeedFactorRange 0.9 1.1
34429        TransitionKey = TRANS_STAND_AK
34430      End
34431  
34432      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
34433        Animation = UIMOB01_SKL.UIMOB01_RND 
34434        AnimationMode = LOOP
34435        Flags = RANDOMSTART
34436        TransitionKey   = MOVING_AK
34437      End
34438  
34439      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
34440        Animation = UIMOB01_SKL.UIMOB01_DD1    
34441        Animation = UIMOB01_SKL.UIMOB01_DD2
34442        AnimationMode = ONCE
34443        TransitionKey = TRANS_Dying
34444      End
34445  
34446      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
34447        Animation = UIMOB01_SKL.UIMOB01_CHD
34448        AnimationMode = ONCE
34449      End
34450  
34451  
34452      ; Drawing AK47
34453      ConditionState  = PREATTACK_B 
34454        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ST ; start firing
34455        AnimationMode = ONCE
34456      End
34457      AliasConditionState = PREATTACK_B MOVING 
34458      AliasConditionState = PREATTACK_B FIRING_B 
34459      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B 
34460  
34461      ; Firing Gun
34462      ConditionState = FIRING_B 
34463        Animation = UIMOB01_SKL.UIMOB01_ATD1_LP ; looping firing
34464        AnimationMode = LOOP
34465        WeaponFireFXBone = SECONDARY MuzzleAK
34466        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
34467        TransitionKey = TRANS_FIRING_AK
34468      End
34469      AliasConditionState = MOVING FIRING_B 
34470  
34471      ConditionState  = BETWEEN_FIRING_SHOTS_B 
34472        Animation     = UIMOB01_SKL.UIMOB01_ATD1_LP ; looping firing
34473        AnimationMode = LOOP
34474        TransitionKey = TRANS_FIRING_AK
34475      End
34476      AliasConditionState = RELOADING_B 
34477      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B 
34478      AliasConditionState = MOVING RELOADING_B 
34479  
34480      ; This transition allows him to put his gun away when he's finished attacking.
34481      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
34482        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing
34483        AnimationMode = ONCE
34484      End
34485  
34486  
34487      ;Throwing bottle----------------------------------------------------------------
34488      ConditionState = PREATTACK_C 
34489        Animation     = UIMOB01_SKL.UIMOB01_ATCA_BF ; the wind up
34490      End
34491      AliasConditionState = PREATTACK_C FIRING_A
34492      AliasConditionState = PREATTACK_C RELOADING_A
34493      AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
34494  
34495      ConditionState = FIRING_C 
34496        Animation     = UIMOB01_SKL.UIMOB01_ATCA_AF ; the release and follow-thru
34497        TransitionKey = TRANS_THROW
34498      End
34499      AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
34500  
34501      ConditionState RELOADING_C
34502        Animation =UIMOB01_SKL.UIMOB01_IDA1
34503        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34504      End
34505      AliasConditionState = RELOADING_C RELOADING_A
34506      AliasConditionState = RELOADING_C FIRING_A
34507      AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
34508  
34509  
34510  ;    TransitionState = TRANSXXX TRANS_THROW
34511  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway gun and take out bottle
34512  ;    End
34513  
34514  ;    TransitionState = TRANS_THROW TRANS_FIRING_A
34515  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get PISTOL
34516  ;    End
34517  
34518  ;    TransitionState = TRANSXXXAK TRANS_THROW
34519  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway AK and take out bottle
34520  ;    End
34521  
34522  ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
34523  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get AK
34524  ;    End
34525  
34526  
34527  
34528  
34529  
34530      ;--------------------------------------------------------
34531  
34532  
34533  
34534  
34535  
34536  
34537      TransitionState = TRANS_Dying TRANS_Flailing
34538        Animation = UIMOB01_SKL.UIMOB01_A_ADTE1
34539        Animation = UIMOB01_SKL.UIMOB01_D_ADTE1
34540        AnimationMode = ONCE
34541      End
34542  
34543      ConditionState = DYING EXPLODED_FLAILING
34544        Animation = UIMOB01_SKL.UIMOB01_A_ADTE2
34545        Animation = UIMOB01_SKL.UIMOB01_D_ADTE2
34546        AnimationMode = LOOP
34547        TransitionKey = TRANS_Flailing
34548      End
34549  
34550      ConditionState = DYING EXPLODED_BOUNCING
34551        Animation = UIMOB01_SKL.UIMOB01_A_ADTE3
34552        Animation = UIMOB01_SKL.UIMOB01_D_ADTE3
34553        AnimationMode = ONCE
34554        TransitionKey = None
34555      End
34556  
34557  
34558    End
34559  
34560  ;**** DESIGN parameters ***
34561  
34562    DisplayName      = OBJECT:AngryMob
34563    Side = GLA
34564    EditorSorting = INFANTRY
34565    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
34566  
34567  
34568  
34569  
34570    ;==================== CINEMA ONLY WEAPONSET ========================
34571    WeaponSet
34572      Conditions = None 
34573      Weapon = PRIMARY GLAAngryMobMolotovCocktailProjectileWeapon
34574      PreferredAgainst    = TERTIARY VEHICLE STRUCTURE
34575      ShareWeaponReloadTime = No
34576    End
34577    ;==================== CINEMA ONLY WEAPONSET ========================
34578  
34579  
34580    ArmorSet
34581      Conditions      = None
34582      Armor           = HumanArmor
34583      DamageFX        = InfantryDamageFX
34584    End
34585    VisionRange = 150
34586    ShroudClearingRange = 150
34587    Prerequisites
34588      Object = GLABarracks
34589    End
34590    BuildCost = 100
34591    BuildTime = 0.0           
34592  
34593    ExperienceValue = 5 5 5 5    ;Experience point value at each level
34594    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
34595    IsTrainable = Yes             ;Can gain experience
34596    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
34597  
34598    ; *** AUDIO Parameters ***
34599    VoiceSelect = NoSound 
34600    VoiceMove = NoSound   
34601    VoiceAttack = NoSound 
34602    SoundDie = RebelVoiceDie
34603  
34604  
34605  ;**** ENGINEERING Parameters *** ;MOB01
34606    RadarPriority = UNIT
34607    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
34608  
34609    Body = ActiveBody BodyTag_01
34610      MaxHealth       = 50.0
34611      InitialHealth   = 50.0
34612    End
34613  
34614    Behavior = AIUpdateInterface ModuleTag_03
34615      AutoAcquireEnemiesWhenIdle = Yes
34616    End
34617  
34618    Behavior = MobMemberSlavedUpdate ModuleTag_04
34619      MustCatchUpRadius   = 70   ; bigger; bigger; bigger; bigger; bigger; bigger
34620      NoNeedToCatchUpRadius = 25 ; bigger; bigger; bigger; bigger; bigger; bigger
34621      Squirrelliness = 0.00      ; zero; zero; zero; zero; zero; zero
34622      CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
34623    End
34624  
34625    Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
34626    Locomotor = SET_WANDER WanderHumanLocomotor
34627    Locomotor = SET_PANIC PanicHumanLocomotor
34628  
34629    Behavior = PhysicsBehavior BehaviorTag_01
34630      Mass = 5.0
34631    End
34632  
34633    Behavior = SquishCollide ModuleTag_08
34634      ;nothing
34635    End
34636  
34637    Behavior = WeaponSetUpgrade UpgradeTag_01
34638      TriggeredBy = Upgrade_GLAArmTheMob
34639    End
34640  
34641  
34642  ; --- begin Death modules ---
34643    Behavior = SlowDeathBehavior DeathTag_01
34644      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
34645      SinkDelay           = 3000
34646      SinkRate            = 0.5     ; in Dist/Sec
34647      DestructionDelay    = 8000
34648      FX                  = INITIAL FX_GIDie
34649    End
34650    Behavior = SlowDeathBehavior DeathTag_02
34651      DeathTypes          = NONE +CRUSHED +SPLATTED
34652      SinkDelay           = 3000
34653      SinkRate            = 0.5     ; in Dist/Sec
34654      DestructionDelay    = 8000
34655      FX                  = INITIAL FX_GIDieCrushed
34656    End
34657    Behavior = SlowDeathBehavior DeathTag_03
34658      DeathTypes          = NONE +EXPLODED
34659      SinkDelay           = 3000
34660      SinkRate            = 0.5     ; in Dist/Sec
34661      DestructionDelay    = 8000
34662      FX                  = INITIAL FX_GIDie
34663      FlingForce          = 8
34664      FlingForceVariance  = 3
34665      FlingPitch          = 60
34666      FlingPitchVariance  = 10
34667    End
34668    Behavior = SlowDeathBehavior DeathTag_04
34669      DeathTypes          = NONE +BURNED
34670      DestructionDelay    = 0
34671      FX                  = INITIAL FX_GIDie
34672      OCL                 = INITIAL OCL_FlamingInfantry
34673    End
34674    Behavior = SlowDeathBehavior DeathTag_05
34675      DeathTypes          = NONE +POISONED
34676      DestructionDelay    = 0
34677      FX                  = INITIAL FX_GIDie
34678      OCL                 = INITIAL OCL_ToxicInfantry
34679    End
34680  ; --- end Death modules ---
34681  
34682    Behavior = PoisonedBehavior BehaviorTag_02
34683      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
34684      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
34685    End
34686   
34687    Geometry = CYLINDER
34688    Scale = 0.95                            ;Scaling
34689    GeometryMajorRadius = 1.0 ; very thin
34690    GeometryHeight = 8.0
34691    GeometryIsSmall = Yes
34692    Shadow = SHADOW_DECAL
34693    ShadowSizeX = 9;
34694    ShadowSizeY = 9;
34695    ShadowTexture = ShadowI;
34696    BuildCompletion = APPEARS_AT_RALLY_POINT
34697  
34698  End
34699  
34700  ;------------------------------------------------------------------------------
34701  ;------------------------------------------------------------------------------
34702  ; **************************** Cinematic-only unit ****************************
34703  Object CINE_GLAInfantryAngryMobPistol03 
34704  
34705  ;**** ART Parameters ***
34706    Draw = W3DModelDraw DrawTag_01
34707      OkToChangeModelColor = Yes
34708  
34709  
34710  
34711      ; WHILE CARRYING PISTOL
34712      ;---------------------------------------------------------
34713      DefaultConditionState ;Idle with Pistol Holstered
34714        Model = UIMOB03_SKN
34715        IdleAnimation = UIMOB03_SKL.UIMOB03_IDA1 0 12
34716        IdleAnimation = UIMOB03_SKL.UIMOB03_IDA2 0 5
34717        IdleAnimation = UIMOB03_SKL.UIMOB03_CHA  0 5
34718        IdleAnimation = UIMOB03_SKL.UIMOB03_STA  0 5
34719        AnimationMode = ONCE
34720        AnimationSpeedFactorRange 0.9 1.1
34721        TransitionKey = TRANS_STAND_A
34722        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34723  
34724        WeaponFireFXBone = PRIMARY Muzzle
34725        WeaponMuzzleFlash = PRIMARY MuzzleFX
34726        WeaponFireFXBone = SECONDARY MuzzleAK
34727        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
34728        WeaponFireFXBone = TERTIARY "UIMOB03 R HAND"
34729      End
34730  
34731      ; Drawing pistol
34732      ConditionState  = PREATTACK_A
34733        Animation     = UIMOB03_SKL.UIMOB03_ATA1_ST ; start firing
34734        AnimationMode = ONCE
34735        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34736      End
34737      AliasConditionState = PREATTACK_A FIRING_A
34738      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
34739  
34740      ; Firing pistol
34741      ConditionState = FIRING_A
34742        Animation = UIMOB03_SKL.UIMOB03_ATA1_LP ; looping firing
34743        AnimationMode = LOOP
34744        TransitionKey = TRANS_FIRING_A
34745        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34746      End
34747  
34748      ConditionState  = BETWEEN_FIRING_SHOTS_A
34749        Animation     = UIMOB03_SKL.UIMOB03_ATA1_LP ; looping firing
34750        AnimationMode = LOOP
34751        TransitionKey = TRANS_FIRING_A
34752        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34753      End
34754      
34755      ConditionState  = RELOADING_A
34756        Animation     = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing
34757        AnimationMode = ONCE
34758        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34759      End
34760  
34761      ; This transition allows him to put his gun away when he's finished attacking.
34762      TransitionState = TRANS_FIRING_A TRANS_STAND_A
34763        Animation     = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing
34764        AnimationMode = ONCE
34765      End
34766  
34767      ConditionState = MOVING
34768        Animation = UIMOB03_SKL.UIMOB03_RNA 
34769        AnimationMode = LOOP
34770        Flags = RANDOMSTART
34771        TransitionKey   = MOVING
34772      End
34773      AliasConditionState = MOVING RELOADING_A
34774      AliasConditionState = MOVING PREATTACK_A
34775      AliasConditionState = MOVING FIRING_A
34776      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
34777      AliasConditionState = MOVING RELOADING_C RELOADING_A 
34778      AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
34779  
34780      ConditionState = DYING
34781        Animation = UIMOB03_SKL.UIMOB03_DA1    
34782        Animation = UIMOB03_SKL.UIMOB03_DA2
34783        AnimationMode = ONCE
34784        TransitionKey = TRANS_Dying
34785      End
34786  
34787  
34788      ConditionState = SPECIAL_CHEERING
34789        Animation = UIMOB03_SKL.UIMOB03_CHA
34790        AnimationMode = ONCE
34791      End
34792  
34793      ;--------------------------------------------------------
34794  
34795      ; TRANSITION FROM PISTOL TO AK47
34796      TransitionState = TRANS_STAND_A TRANS_STAND_AK
34797        Animation = UIMOB03_SKL.UIMOB03_TA-D
34798        AnimationMode = ONCE
34799      End
34800  
34801  
34802      ; WHILE CARRYING AK47 
34803      ;---------------------------------------------------------
34804      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
34805        Model = UIMOB03_SKN
34806        IdleAnimation = UIMOB03_SKL.UIMOB03_IDD1 0 6
34807        IdleAnimation = UIMOB03_SKL.UIMOB03_IDD2 0 6
34808        IdleAnimation = UIMOB03_SKL.UIMOB03_CHD  0 6
34809        IdleAnimation = UIMOB03_SKL.UIMOB03_STD
34810        AnimationMode = ONCE
34811        AnimationSpeedFactorRange 0.9 1.1
34812        TransitionKey = TRANS_STAND_AK
34813      End
34814  
34815      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
34816        Animation = UIMOB03_SKL.UIMOB03_RND 
34817        AnimationMode = LOOP
34818        Flags = RANDOMSTART
34819        TransitionKey   = MOVING_AK
34820      End
34821  
34822      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
34823        Animation = UIMOB03_SKL.UIMOB03_DD1    
34824        Animation = UIMOB03_SKL.UIMOB03_DD2
34825        AnimationMode = ONCE
34826        TransitionKey = TRANS_Dying
34827      End
34828  
34829      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
34830        Animation = UIMOB03_SKL.UIMOB03_CHD
34831        AnimationMode = ONCE
34832      End
34833  
34834  
34835      ; Drawing AK47
34836      ConditionState  = PREATTACK_B 
34837        Animation     = UIMOB03_SKL.UIMOB03_ATD_ST ; start firing
34838        AnimationMode = ONCE
34839      End
34840      AliasConditionState = PREATTACK_B MOVING 
34841      AliasConditionState = PREATTACK_B FIRING_B 
34842      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B 
34843  
34844      ; Firing Gun
34845      ConditionState = FIRING_B 
34846        Animation = UIMOB03_SKL.UIMOB03_ATD_LP ; looping firing
34847        AnimationMode = LOOP
34848        WeaponFireFXBone = SECONDARY MuzzleAK
34849        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
34850        TransitionKey = TRANS_FIRING_AK
34851      End
34852      AliasConditionState = MOVING FIRING_B 
34853  
34854      ConditionState  = BETWEEN_FIRING_SHOTS_B 
34855        Animation     = UIMOB03_SKL.UIMOB03_ATD_LP ; looping firing
34856        AnimationMode = LOOP
34857        TransitionKey = TRANS_FIRING_AK
34858      End
34859      AliasConditionState = RELOADING_B 
34860      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B 
34861      AliasConditionState = MOVING RELOADING_B 
34862  
34863      ; This transition allows him to put his gun away when he's finished attacking.
34864      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
34865        Animation     = UIMOB03_SKL.UIMOB03_ATD_ED ; end firing
34866        AnimationMode = ONCE
34867      End
34868  
34869  
34870      ;Throwing bottle----------------------------------------------------------------
34871      ConditionState = PREATTACK_C 
34872        Animation     = UIMOB03_SKL.UIMOB03_ATCA_BF ; the wind up
34873      End
34874      AliasConditionState = PREATTACK_C FIRING_A
34875      AliasConditionState = PREATTACK_C RELOADING_A
34876      AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
34877  
34878      ConditionState = FIRING_C 
34879        Animation     = UIMOB03_SKL.UIMOB03_ATCA_AF ; the release and follow-thru
34880        TransitionKey = TRANS_THROW
34881      End
34882      AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
34883  
34884      ConditionState RELOADING_C
34885        Animation =UIMOB03_SKL.UIMOB03_IDA1
34886        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
34887  
34888      End
34889      AliasConditionState = RELOADING_C RELOADING_A
34890      AliasConditionState = RELOADING_C FIRING_A
34891      AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
34892  
34893  
34894  ;    TransitionState = TRANSXXX TRANS_THROW
34895  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway gun and take out bottle
34896  ;    End
34897  
34898  ;    TransitionState = TRANS_THROW TRANS_FIRING_A
34899  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get PISTOL
34900  ;    End
34901  
34902  ;    TransitionState = TRANSXXXAK TRANS_THROW
34903  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway AK and take out bottle
34904  ;    End
34905  
34906  ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
34907  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get AK
34908  ;    End
34909  
34910  
34911      ;--------------------------------------------------------
34912  
34913      TransitionState = TRANS_Dying TRANS_Flailing
34914        Animation = UIMOB03_SKL.UIMOB03_A_ADTD1
34915        Animation = UIMOB03_SKL.UIMOB03_D_ADTD1
34916        AnimationMode = ONCE
34917      End
34918  
34919      ConditionState = DYING EXPLODED_FLAILING
34920        Animation = UIMOB03_SKL.UIMOB03_A_ADTD2
34921        Animation = UIMOB03_SKL.UIMOB03_D_ADTD2
34922        AnimationMode = LOOP
34923        TransitionKey = TRANS_Flailing
34924      End
34925  
34926      ConditionState = DYING EXPLODED_BOUNCING
34927        Animation = UIMOB03_SKL.UIMOB03_A_ADTD3
34928        Animation = UIMOB03_SKL.UIMOB03_D_ADTD3
34929        AnimationMode = ONCE
34930        TransitionKey = None
34931      End
34932  
34933    End
34934  
34935  ;**** DESIGN parameters ***
34936  
34937    DisplayName      = OBJECT:AngryMob
34938    Side = GLA
34939    EditorSorting = INFANTRY
34940    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
34941  
34942  
34943  
34944  
34945    ;==================== CINEMA ONLY WEAPONSET ========================
34946    WeaponSet
34947      Conditions = None 
34948      Weapon = PRIMARY GLAAngryMobMolotovCocktailProjectileWeapon
34949      PreferredAgainst    = TERTIARY VEHICLE STRUCTURE
34950      ShareWeaponReloadTime = Yes
34951    End
34952    ;==================== CINEMA ONLY WEAPONSET ========================
34953  
34954  
34955    ArmorSet
34956      Conditions      = None
34957      Armor           = HumanArmor
34958      DamageFX        = InfantryDamageFX
34959    End
34960    VisionRange = 150
34961    ShroudClearingRange = 150
34962    Prerequisites
34963      Object = GLABarracks
34964    End
34965    BuildCost = 100
34966    BuildTime = 0.0           
34967  
34968    ExperienceValue = 5 5 5 5    ;Experience point value at each level
34969    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
34970    IsTrainable = Yes             ;Can gain experience
34971    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
34972  
34973    ; *** AUDIO Parameters ***
34974    VoiceSelect = NoSound 
34975    VoiceMove = NoSound   
34976    VoiceAttack = NoSound 
34977    SoundDie = RebelVoiceDie
34978  
34979  
34980  ;**** ENGINEERING Parameters *** ;MOB01
34981    RadarPriority = UNIT
34982    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
34983  
34984    Body = ActiveBody BodyTag_01
34985      MaxHealth       = 50.0
34986      InitialHealth   = 50.0
34987    End
34988  
34989    Behavior = AIUpdateInterface ModuleTag_03
34990      AutoAcquireEnemiesWhenIdle = Yes
34991    End
34992  
34993    Behavior = MobMemberSlavedUpdate ModuleTag_04
34994      MustCatchUpRadius   = 70   ; bigger; bigger; bigger; bigger; bigger; bigger
34995      NoNeedToCatchUpRadius = 25 ; bigger; bigger; bigger; bigger; bigger; bigger
34996      Squirrelliness = 0.00      ; zero; zero; zero; zero; zero; zero
34997      CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
34998    End
34999  
35000    Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
35001    Locomotor = SET_WANDER WanderHumanLocomotor
35002    Locomotor = SET_PANIC PanicHumanLocomotor
35003  
35004    Behavior = PhysicsBehavior BehaviorTag_01
35005      Mass = 5.0
35006    End
35007  
35008    Behavior = SquishCollide ModuleTag_08
35009      ;nothing
35010    End
35011  
35012    Behavior = WeaponSetUpgrade UpgradeTag_01
35013      TriggeredBy = Upgrade_GLAArmTheMob
35014    End
35015  
35016  
35017  ; --- begin Death modules ---
35018    Behavior = SlowDeathBehavior DeathTag_01
35019      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
35020      SinkDelay           = 3000
35021      SinkRate            = 0.5     ; in Dist/Sec
35022      DestructionDelay    = 8000
35023      FX                  = INITIAL FX_GIDie
35024    End
35025    Behavior = SlowDeathBehavior DeathTag_02
35026      DeathTypes          = NONE +CRUSHED +SPLATTED
35027      SinkDelay           = 3000
35028      SinkRate            = 0.5     ; in Dist/Sec
35029      DestructionDelay    = 8000
35030      FX                  = INITIAL FX_GIDieCrushed
35031    End
35032    Behavior = SlowDeathBehavior DeathTag_03
35033      DeathTypes          = NONE +EXPLODED
35034      SinkDelay           = 3000
35035      SinkRate            = 0.5     ; in Dist/Sec
35036      DestructionDelay    = 8000
35037      FX                  = INITIAL FX_GIDie
35038      FlingForce          = 8
35039      FlingForceVariance  = 3
35040      FlingPitch          = 60
35041      FlingPitchVariance  = 10
35042    End
35043    Behavior = SlowDeathBehavior DeathTag_04
35044      DeathTypes          = NONE +BURNED
35045      DestructionDelay    = 0
35046      FX                  = INITIAL FX_GIDie
35047      OCL                 = INITIAL OCL_FlamingInfantry
35048    End
35049    Behavior = SlowDeathBehavior DeathTag_05
35050      DeathTypes          = NONE +POISONED
35051      DestructionDelay    = 0
35052      FX                  = INITIAL FX_GIDie
35053      OCL                 = INITIAL OCL_ToxicInfantry
35054    End
35055  ; --- end Death modules ---
35056  
35057    Behavior = PoisonedBehavior BehaviorTag_02
35058      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
35059      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
35060    End
35061   
35062    Geometry = CYLINDER
35063    Scale = 0.95                            ;Scaling
35064    GeometryMajorRadius = 1.0 ; very thin
35065    GeometryHeight = 8.0
35066    GeometryIsSmall = Yes
35067    Shadow = SHADOW_DECAL
35068    ShadowSizeX = 9;
35069    ShadowSizeY = 9;
35070    ShadowTexture = ShadowI;
35071    BuildCompletion = APPEARS_AT_RALLY_POINT
35072  
35073  End
35074  
35075  ;------------------------------------------------------------------------------
35076  ;------------------------------------------------------------------------------
35077  ; **************************** Cinematic-only unit ****************************
35078  Object CINE_GLAInfantryAngryMobPistol05 
35079  
35080  ;**** ART Parameters ***
35081    Draw = W3DModelDraw DrawTag_01
35082      OkToChangeModelColor = Yes
35083  
35084  
35085  
35086      ; WHILE CARRYING PISTOL
35087      ;---------------------------------------------------------
35088      DefaultConditionState ;Idle with Pistol Holstered
35089        Model = UIMOB05_SKN
35090        IdleAnimation = UIMOB05_SKL.UIMOB05_IDA1 0 12
35091        IdleAnimation = UIMOB05_SKL.UIMOB05_IDA2 0 5
35092        IdleAnimation = UIMOB05_SKL.UIMOB05_CHA  0 5
35093        IdleAnimation = UIMOB05_SKL.UIMOB05_STA  0 5
35094        AnimationMode = ONCE
35095        AnimationSpeedFactorRange 0.9 1.1
35096        TransitionKey = TRANS_STAND_A
35097        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
35098  
35099        WeaponFireFXBone = PRIMARY Muzzle01
35100        WeaponMuzzleFlash = PRIMARY Muzzle01
35101        WeaponFireFXBone = SECONDARY MuzzleAK01
35102        WeaponMuzzleFlash = SECONDARY MuzzleAKFX01
35103        WeaponFireFXBone = TERTIARY "UIMOB05 R HAND"
35104      End
35105  
35106      ; Drawing pistol
35107      ConditionState  = PREATTACK_A
35108        Animation     = UIMOB05_SKL.UIMOB05_ATA1_ST ; start firing
35109        AnimationMode = ONCE
35110        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
35111      End
35112      AliasConditionState = PREATTACK_A FIRING_A
35113      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
35114  
35115      ; Firing pistol
35116      ConditionState = FIRING_A
35117        Animation = UIMOB05_SKL.UIMOB05_ATA1_LP ; looping firing
35118        AnimationMode = LOOP
35119        TransitionKey = TRANS_FIRING_A
35120        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
35121      End
35122  
35123      ConditionState  = BETWEEN_FIRING_SHOTS_A
35124        Animation     = UIMOB05_SKL.UIMOB05_ATA1_LP ; looping firing
35125        AnimationMode = LOOP
35126        TransitionKey = TRANS_FIRING_A
35127        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
35128      End
35129      
35130      ConditionState  = RELOADING_A
35131        Animation     = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing
35132        AnimationMode = ONCE
35133        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
35134      End
35135  
35136      ; This transition allows him to put his gun away when he's finished attacking.
35137      TransitionState = TRANS_FIRING_A TRANS_STAND_A
35138        Animation     = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing
35139        AnimationMode = ONCE
35140      End
35141  
35142      ConditionState = MOVING
35143        Animation = UIMOB05_SKL.UIMOB05_RNA 
35144        AnimationMode = LOOP
35145        Flags = RANDOMSTART
35146        TransitionKey   = MOVING
35147        ParticleSysBone   = None InfantryDustTrails
35148      End
35149      AliasConditionState = MOVING RELOADING_A
35150      AliasConditionState = MOVING PREATTACK_A
35151      AliasConditionState = MOVING FIRING_A
35152      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
35153      AliasConditionState = MOVING RELOADING_C RELOADING_A 
35154      AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
35155  
35156      ConditionState = DYING
35157        Animation = UIMOB05_SKL.UIMOB05_DA1    
35158        Animation = UIMOB05_SKL.UIMOB05_DA2
35159        AnimationMode = ONCE
35160        TransitionKey = TRANS_Dying
35161      End
35162  
35163  
35164      ConditionState = SPECIAL_CHEERING
35165        Animation = UIMOB05_SKL.UIMOB05_CHA
35166        AnimationMode = ONCE
35167      End
35168  
35169      ;--------------------------------------------------------
35170  
35171      ; TRANSITION FROM PISTOL TO AK47
35172      TransitionState = TRANS_STAND_A TRANS_STAND_AK
35173        Animation = UIMOB05_SKL.UIMOB05_TA-D
35174        AnimationMode = ONCE
35175      End
35176  
35177  
35178      ; WHILE CARRYING AK47 
35179      ;---------------------------------------------------------
35180      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
35181        Model = UIMOB05_SKN
35182        IdleAnimation = UIMOB05_SKL.UIMOB05_IDD1 0 6
35183        IdleAnimation = UIMOB05_SKL.UIMOB05_IDD2 0 6
35184        IdleAnimation = UIMOB05_SKL.UIMOB05_CHD  0 6
35185        IdleAnimation = UIMOB05_SKL.UIMOB05_STD
35186        AnimationMode = ONCE
35187        AnimationSpeedFactorRange 0.9 1.1
35188        TransitionKey = TRANS_STAND_AK
35189      End
35190  
35191      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
35192        Animation = UIMOB05_SKL.UIMOB05_RND 
35193        AnimationMode = LOOP
35194        Flags = RANDOMSTART
35195        TransitionKey   = MOVING_AK
35196      End
35197  
35198      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
35199        Animation = UIMOB05_SKL.UIMOB05_DD1    
35200        Animation = UIMOB05_SKL.UIMOB05_DD2
35201        AnimationMode = ONCE
35202        TransitionKey = TRANS_Dying
35203      End
35204  
35205      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
35206        Animation = UIMOB05_SKL.UIMOB05_CHD
35207        AnimationMode = ONCE
35208      End
35209  
35210      ; Drawing AK47
35211      ConditionState  = PREATTACK_B 
35212        Animation     = UIMOB05_SKL.UIMOB05_ATD1_ST ; start firing
35213        AnimationMode = ONCE
35214      End
35215      AliasConditionState = PREATTACK_B MOVING 
35216      AliasConditionState = PREATTACK_B FIRING_B 
35217      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B 
35218  
35219      ; Firing Gun
35220      ConditionState = FIRING_B 
35221        Animation = UIMOB05_SKL.UIMOB05_ATD1_LP ; looping firing
35222        AnimationMode = LOOP
35223        WeaponFireFXBone = SECONDARY MuzzleAK
35224        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
35225        TransitionKey = TRANS_FIRING_AK
35226      End
35227      AliasConditionState = MOVING FIRING_B 
35228  
35229      ConditionState  = BETWEEN_FIRING_SHOTS_B 
35230        Animation     = UIMOB05_SKL.UIMOB05_ATD1_LP ; looping firing
35231        AnimationMode = LOOP
35232        TransitionKey = TRANS_FIRING_AK
35233      End
35234      AliasConditionState = RELOADING_B 
35235      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B 
35236      AliasConditionState = MOVING RELOADING_B 
35237  
35238      ; This transition allows him to put his gun away when he's finished attacking.
35239      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
35240        Animation     = UIMOB05_SKL.UIMOB05_ATD1_ED ; end firing
35241        AnimationMode = ONCE
35242      End
35243  
35244  
35245      ;Throwing bottle----------------------------------------------------------------
35246      ConditionState = PREATTACK_C 
35247        Animation     = UIMOB05_SKL.UIMOB05_ATCA_BF ; the wind up
35248      End
35249      AliasConditionState = PREATTACK_C FIRING_A
35250      AliasConditionState = PREATTACK_C RELOADING_A
35251      AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
35252  
35253      ConditionState = FIRING_C 
35254        Animation     = UIMOB05_SKL.UIMOB05_ATCA_AF ; the release and follow-thru
35255        TransitionKey = TRANS_THROW
35256      End
35257      AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
35258  
35259      ConditionState RELOADING_C
35260        Animation =UIMOB05_SKL.UIMOB05_IDA1
35261        WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
35262      End
35263      AliasConditionState = RELOADING_C RELOADING_A
35264      AliasConditionState = RELOADING_C FIRING_A
35265      AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
35266  
35267  
35268  ;    TransitionState = TRANSXXX TRANS_THROW
35269  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway gun and take out bottle
35270  ;    End
35271  
35272  ;    TransitionState = TRANS_THROW TRANS_FIRING_A
35273  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get PISTOL
35274  ;    End
35275  
35276  ;    TransitionState = TRANSXXXAK TRANS_THROW
35277  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway AK and take out bottle
35278  ;    End
35279  
35280  
35281  ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
35282  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get AK
35283  ;    End
35284  
35285      ;--------------------------------------------------------
35286  
35287      TransitionState = TRANS_Dying TRANS_Flailing
35288        Animation = UIMOB05_SKL.UIMOB05_A_ADTA1
35289        Animation = UIMOB05_SKL.UIMOB05_D_ADTA1
35290        AnimationMode = ONCE
35291      End
35292  
35293      ConditionState = DYING EXPLODED_FLAILING
35294        Animation = UIMOB05_SKL.UIMOB05_A_ADTA2
35295        Animation = UIMOB05_SKL.UIMOB05_D_ADTA2
35296        AnimationMode = LOOP
35297        TransitionKey = TRANS_Flailing
35298      End
35299  
35300      ConditionState = DYING EXPLODED_BOUNCING
35301        Animation = UIMOB05_SKL.UIMOB05_A_ADTA3
35302        Animation = UIMOB05_SKL.UIMOB05_D_ADTA3
35303        AnimationMode = ONCE
35304        TransitionKey = None
35305      End
35306  
35307  
35308    End
35309  
35310  
35311  
35312  ;**** DESIGN parameters ***
35313  
35314    DisplayName      = OBJECT:AngryMob
35315    Side = GLA
35316    EditorSorting = INFANTRY
35317    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
35318  
35319  
35320  
35321  
35322    ;==================== CINEMA ONLY WEAPONSET ========================
35323    WeaponSet
35324      Conditions = None 
35325      Weapon = PRIMARY GLAAngryMobPistolWeapon
35326      PreferredAgainst    = PRIMARY     INFANTRY
35327      Weapon = SECONDARY None
35328      Weapon = TERTIARY GLAAngryMobMolotovCocktailProjectileWeapon
35329      PreferredAgainst    = TERTIARY VEHICLE STRUCTURE
35330      ShareWeaponReloadTime = No
35331    End
35332    ;==================== CINEMA ONLY WEAPONSET ========================
35333  
35334  
35335    ArmorSet
35336      Conditions      = None
35337      Armor           = HumanArmor
35338      DamageFX        = InfantryDamageFX
35339    End
35340    VisionRange = 150
35341    ShroudClearingRange = 150
35342    Prerequisites
35343      Object = GLABarracks
35344    End
35345    BuildCost = 100
35346    BuildTime = 0.0           
35347  
35348    ExperienceValue = 5 5 5 5    ;Experience point value at each level
35349    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
35350    IsTrainable = Yes             ;Can gain experience
35351    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
35352  
35353    ; *** AUDIO Parameters ***
35354    VoiceSelect = NoSound 
35355    VoiceMove = NoSound   
35356    VoiceAttack = NoSound 
35357    SoundDie = RebelVoiceDie
35358  
35359  
35360  ;**** ENGINEERING Parameters *** ;MOB01
35361    RadarPriority = UNIT
35362    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
35363  
35364    Body = ActiveBody BodyTag_01
35365      MaxHealth       = 50.0
35366      InitialHealth   = 50.0
35367    End
35368  
35369    Behavior = AIUpdateInterface ModuleTag_03
35370      AutoAcquireEnemiesWhenIdle = Yes
35371    End
35372  
35373    Behavior = MobMemberSlavedUpdate ModuleTag_04
35374      MustCatchUpRadius   = 70   ; bigger; bigger; bigger; bigger; bigger; bigger
35375      NoNeedToCatchUpRadius = 25 ; bigger; bigger; bigger; bigger; bigger; bigger
35376      Squirrelliness = 0.00      ; zero; zero; zero; zero; zero; zero
35377      CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
35378    End
35379  
35380    Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
35381    Locomotor = SET_WANDER WanderHumanLocomotor
35382    Locomotor = SET_PANIC PanicHumanLocomotor
35383  
35384    Behavior = PhysicsBehavior BehaviorTag_01
35385      Mass = 5.0
35386    End
35387  
35388    Behavior = SquishCollide ModuleTag_08
35389      ;nothing
35390    End
35391  
35392    Behavior = WeaponSetUpgrade UpgradeTag_01
35393      TriggeredBy = Upgrade_GLAArmTheMob
35394    End
35395  
35396  
35397  ; --- begin Death modules ---
35398    Behavior = SlowDeathBehavior DeathTag_01
35399      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
35400      SinkDelay           = 3000
35401      SinkRate            = 0.5     ; in Dist/Sec
35402      DestructionDelay    = 8000
35403      FX                  = INITIAL FX_GIDie
35404    End
35405    Behavior = SlowDeathBehavior DeathTag_02
35406      DeathTypes          = NONE +CRUSHED +SPLATTED
35407      SinkDelay           = 3000
35408      SinkRate            = 0.5     ; in Dist/Sec
35409      DestructionDelay    = 8000
35410      FX                  = INITIAL FX_GIDieCrushed
35411    End
35412    Behavior = SlowDeathBehavior DeathTag_03
35413      DeathTypes          = NONE +EXPLODED
35414      SinkDelay           = 3000
35415      SinkRate            = 0.5     ; in Dist/Sec
35416      DestructionDelay    = 8000
35417      FX                  = INITIAL FX_GIDie
35418      FlingForce          = 8
35419      FlingForceVariance  = 3
35420      FlingPitch          = 60
35421      FlingPitchVariance  = 10
35422    End
35423    Behavior = SlowDeathBehavior DeathTag_04
35424      DeathTypes          = NONE +BURNED
35425      DestructionDelay    = 0
35426      FX                  = INITIAL FX_GIDie
35427      OCL                 = INITIAL OCL_FlamingInfantry
35428    End
35429    Behavior = SlowDeathBehavior DeathTag_05
35430      DeathTypes          = NONE +POISONED
35431      DestructionDelay    = 0
35432      FX                  = INITIAL FX_GIDie
35433      OCL                 = INITIAL OCL_ToxicInfantry
35434    End
35435  ; --- end Death modules ---
35436  
35437    Behavior = PoisonedBehavior BehaviorTag_02
35438      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
35439      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
35440    End
35441   
35442    Geometry = CYLINDER
35443    Scale = 0.95                            ;Scaling
35444    GeometryMajorRadius = 1.0 ; very thin
35445    GeometryHeight = 8.0
35446    GeometryIsSmall = Yes
35447    Shadow = SHADOW_DECAL
35448    ShadowSizeX = 9;
35449    ShadowSizeY = 9;
35450    ShadowTexture = ShadowI;
35451    BuildCompletion = APPEARS_AT_RALLY_POINT
35452  
35453  End
35454  
35455  ;------------------------------------------------------------------------------
35456  ;**************************** Cinematic-only unit *****************************
35457  Object CINE_AmericaInfantryColonelBurton
35458  
35459    ; *** ART Parameters ***
35460    SelectPortrait         = SABurton_L
35461    ButtonImage            = SABurton
35462  
35463    Draw = W3DModelDraw ModuleTag_01
35464    OkToChangeModelColor = Yes
35465  
35466      ; idle
35467      DefaultConditionState
35468        Model               = AIHERO_SKN
35469        IdleAnimation       = AIHERO_SKL.AIHERO_STA 0 25
35470        IdleAnimation       = AIHERO_SKL.AIHERO_IDA
35471        IdleAnimation       = AIHERO_SKL.AIHERO_IDB
35472        AnimationMode       = ONCE
35473        TransitionKey       = TRANS_Stand
35474        WeaponFireFXBone    = PRIMARY Muzzle
35475        WeaponMuzzleFlash   = PRIMARY MuzzleFX
35476      End
35477      
35478      ; injured idle
35479      ConditionState        = REALLYDAMAGED
35480        IdleAnimation       = AIHERO_SKL.AIHERO_ISTA 0 30
35481        IdleAnimation       = AIHERO_SKL.AIHERO_IIDA
35482        IdleAnimation       = AIHERO_SKL.AIHERO_IIDB
35483        AnimationMode       = ONCE
35484        TransitionKey       = TRANS_StandInjured
35485      End
35486  
35487      TransitionState     = TRANS_Stand TRANS_StandInjured
35488        Animation         = AIHERO_SKL.AIHERO_ISTAHIT
35489        AnimationMode     = ONCE
35490      End
35491      
35492      ; moving
35493      ConditionState        = MOVING
35494        Animation           = AIHERO_SKL.AIHERO_RNA 34
35495        AnimationMode       = LOOP
35496        Flags               = RANDOMSTART
35497        TransitionKey       = TRANS_Stand
35498        ParticleSysBone     = None InfantryDustTrails
35499      End
35500      AliasConditionState = MOVING FIRING_A
35501      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
35502      AliasConditionState = MOVING RELOADING_A
35503      AliasConditionState = MOVING FIRING_B
35504      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
35505      AliasConditionState = MOVING RELOADING_B
35506  
35507      ; injured moving
35508      ConditionState     = MOVING REALLYDAMAGED
35509        Animation        = AIHERO_SKL.AIHERO_IRNA 26
35510        AnimationMode    = LOOP
35511        Flags            = RANDOMSTART
35512        TransitionKey    = TRANS_StandInjured
35513        ParticleSysBone  = None InfantryDustTrails
35514      End
35515      AliasConditionState = MOVING FIRING_A REALLYDAMAGED
35516      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
35517      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
35518      AliasConditionState = MOVING FIRING_B REALLYDAMAGED
35519      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
35520      AliasConditionState = MOVING RELOADING_B REALLYDAMAGED
35521  
35522      ; Firing animation
35523      ConditionState      = FIRING_A
35524        Animation         = AIHERO_SKL.AIHERO_ATA
35525        AnimationMode     = ONCE
35526        TransitionKey     = TRANS_FiringA
35527      End
35528      AliasConditionState = BETWEEN_FIRING_SHOTS_A
35529      AliasConditionState = RELOADING_A
35530  
35531      ; Injured Firing animation
35532      ConditionState      = FIRING_A REALLYDAMAGED
35533        Animation         = AIHERO_SKL.AIHERO_IATA
35534        AnimationMode     = ONCE
35535        TransitionKey     = TRANS_FiringAInjured
35536      End
35537      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
35538      AliasConditionState = RELOADING_A REALLYDAMAGED
35539  
35540      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
35541        Animation         = AIHERO_SKL.AIHERO_IATAHIT
35542        AnimationMode     = ONCE
35543      End
35544  
35545      ; Placing charge animation
35546      ConditionState      = UNPACKING
35547        Animation         = AIHERO_SKL.AIHERO_ATB1
35548        AnimationMode     = ONCE
35549      End
35550      AliasConditionState = MOVING UNPACKING
35551  
35552      ; Injured Placing charge animation
35553      ConditionState      = UNPACKING REALLYDAMAGED
35554        Animation         = AIHERO_SKL.AIHERO_IATB1
35555        AnimationMode     = ONCE
35556      End
35557      AliasConditionState = MOVING UNPACKING REALLYDAMAGED
35558  
35559      ; Stab animations
35560      ConditionState      = PREATTACK_B 
35561        Animation         = AIHERO_SKL.AIHERO_ATC
35562        AnimationMode     = ONCE
35563        TransitionKey     = TRANS_Stabbing
35564      End
35565      AliasConditionState = PREATTACK_B MOVING
35566      AliasConditionState = PREATTACK_B FIRING_B
35567      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
35568  
35569      ConditionState      = FIRING_B
35570        Animation         = AIHERO_SKL.AIHERO_ATC
35571        AnimationMode     = MANUAL
35572        Flags             = START_FRAME_LAST
35573        TransitionKey     = TRANS_Stabbing
35574      End
35575      AliasConditionState = BETWEEN_FIRING_SHOTS_B
35576      AliasConditionState = RELOADING_B
35577  
35578      TransitionState     = TRANS_Stabbing TRANS_Stand
35579        Animation         = AIHERO_SKL.AIHERO_ATC2
35580        AnimationMode     = ONCE
35581      End
35582  
35583      ; Injured Stab animations
35584      ConditionState      = PREATTACK_B REALLYDAMAGED 
35585        Animation         = AIHERO_SKL.AIHERO_IATC1
35586        AnimationMode     = ONCE
35587        TransitionKey     = TRANS_StabbingInjured
35588      End
35589      AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
35590      AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
35591      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
35592  
35593      ConditionState      = FIRING_B REALLYDAMAGED
35594        Animation         = AIHERO_SKL.AIHERO_IATC2
35595        AnimationMode     = MANUAL
35596        Flags             = START_FRAME_LAST
35597        TransitionKey     = TRANS_StabbingInjured
35598      End
35599      AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
35600      AliasConditionState = RELOADING_B REALLYDAMAGED
35601  
35602      TransitionState     = TRANS_StabbingInjured TRANS_StandInjured
35603        Animation         = AIHERO_SKL.AIHERO_IATC2
35604        AnimationMode     = ONCE
35605      End
35606  
35607      ; cheering
35608      ConditionState      = SPECIAL_CHEERING
35609        Animation         = AIHERO_SKL.AIHERO_CHA
35610        AnimationMode     = ONCE
35611      End
35612      
35613      ; injured cheering
35614      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
35615        Animation         = AIHERO_SKL.AIHERO_ICHA
35616        AnimationMode     = ONCE
35617      End
35618      
35619      ; climbing
35620      ConditionState      = CLIMBING
35621        Animation         = AIHERO_SKL.AIHERO_CLMID
35622        AnimationMode     = LOOP
35623        TransitionKey     = TRANS_Climbing
35624      End
35625      AliasConditionState = RAPPELLING
35626      AliasConditionState = CLIMBING REALLYDAMAGED
35627      AliasConditionState = RAPPELLING REALLYDAMAGED
35628  
35629      ConditionState      = CLIMBING MOVING
35630        Animation         = AIHERO_SKL.AIHERO_CLMUP
35631        AnimationMode     = LOOP
35632        TransitionKey     = TRANS_Climbing
35633      End
35634      AliasConditionState = CLIMBING MOVING REALLYDAMAGED
35635  
35636      ConditionState      = RAPPELLING MOVING
35637        Animation         = AIHERO_SKL.AIHERO_CLMUP
35638        AnimationMode     = LOOP_BACKWARDS
35639        TransitionKey     = TRANS_Climbing
35640      End
35641      AliasConditionState = RAPPELLING MOVING REALLYDAMAGED
35642  
35643  ; these transitions don't really work well with our code. leave 'em out.
35644  ;    TransitionState     = TRANS_Climbing TRANS_Stand
35645  ;      Animation         = AIHERO_SKL.AIHERO_CLMST
35646  ;      AnimationMode     = ONCE
35647  ;    End
35648  ;
35649  ;    TransitionState     = TRANS_Stand TRANS_Climbing
35650  ;      Animation         = AIHERO_SKL.AIHERO_CLMST
35651  ;      AnimationMode     = ONCE_BACKWARDS
35652  ;    End
35653  
35654      ; dying anims
35655      ConditionState      = DYING
35656        Animation         = AIHERO_SKL.AIHERO_DTA
35657        Animation         = AIHERO_SKL.AIHERO_DTB
35658        Animation         = AIHero_SKL.AIHero_IDTA
35659        Animation         = AIHero_SKL.AIHero_IDTB
35660        AnimationMode     = ONCE
35661        TransitionKey     = TRANS_Dying
35662      End
35663      AliasConditionState = RAPPELLING DYING
35664      AliasConditionState = CLIMBING DYING
35665  
35666      TransitionState     = TRANS_Dying TRANS_Flailing
35667        Animation         = AIHERO_SKL.AIHERO_ADTG21
35668        AnimationMode     = ONCE
35669      End
35670  
35671      ConditionState      = DYING EXPLODED_FLAILING
35672        Animation         = AIHERO_SKL.AIHERO_ADTG22
35673        AnimationMode     = LOOP
35674        TransitionKey     = TRANS_Flailing
35675      End
35676  
35677      ConditionState      = DYING EXPLODED_BOUNCING
35678        Animation         = AIHERO_SKL.AIHERO_ADTG23
35679        AnimationMode     = ONCE
35680        TransitionKey     = None
35681      End
35682  
35683      ; misc anims
35684      ConditionState      = FREEFALL
35685        Animation         = AIHERO_SKL.AIHERO_PFL
35686        AnimationMode     = LOOP
35687        TransitionKey     = TRANS_Falling
35688      End
35689      AliasConditionState = FREEFALL REALLYDAMAGED
35690      AliasConditionState = FREEFALL DYING
35691  
35692      ConditionState      = PARACHUTING
35693        Animation         = AIHERO_SKL.AIHERO_PHG
35694        AnimationMode     = LOOP
35695        TransitionKey     = TRANS_Chute
35696      End
35697      AliasConditionState = PARACHUTING REALLYDAMAGED
35698      AliasConditionState = PARACHUTING DYING
35699  
35700      TransitionState     = TRANS_Falling TRANS_Chute
35701        Animation         = AIHERO_SKL.AIHERO_POP
35702        AnimationMode     = ONCE
35703        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
35704      End
35705  
35706      TransitionState     = TRANS_Chute TRANS_Stand
35707        Animation         = AIHERO_SKL.AIHERO_PTD
35708        AnimationMode     = ONCE
35709      End
35710  
35711      TransitionState     = TRANS_Chute TRANS_StandInjured
35712        Animation         = AIHERO_SKL.AIHERO_PTD
35713        AnimationMode     = ONCE
35714      End
35715  
35716    End
35717  
35718    ; ***DESIGN parameters ***
35719    DisplayName         = OBJECT:ColonelBurton
35720    Side                = America
35721    EditorSorting       = INFANTRY
35722    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
35723    WeaponSet
35724      Conditions          = None 
35725      Weapon              = PRIMARY     ColonelBurtonSniperRifleWeapon
35726      Weapon              = SECONDARY   ColonelBurtonKnifeWeapon
35727      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
35728      AutoChooseSources   = SECONDARY   NONE
35729    End
35730    ArmorSet
35731      Conditions      = None
35732      Armor           = HumanArmor
35733      DamageFX        = InfantryDamageFX
35734    End
35735    VisionRange         = 250
35736    ShroudClearingRange = 500
35737    Prerequisites
35738      Object = AmericaBarracks
35739      Object = AmericaStrategyCenter
35740    End
35741    BuildCost = 1500
35742    BuildTime = 20.0          ;in seconds  
35743  
35744    ExperienceValue     = 50 100 100 150  ; Experience point value at each level
35745    ExperienceRequired  = 0 200 300 600   ; Experience points needed to gain each level
35746    IsTrainable         = Yes             ; Can gain experience
35747    CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
35748    CommandSet          = AmericaInfantryColonelBurtonCommandSet
35749  
35750    MaxSimultaneousOfType = 1
35751  
35752    ; *** AUDIO Parameters ***
35753    VoiceSelect = ColonelBurtonVoiceSelect
35754    VoiceMove = ColonelBurtonVoiceMove
35755    VoiceAttack = ColonelBurtonVoiceAttack
35756    VoiceFear = ColonelBurtonVoiceFear
35757    VoiceGuard = ColonelBurtonVoiceMove
35758    SoundDie = ColonelBurtonVoiceDie
35759    SoundDieFire = DieByFireUSA
35760    SoundDieToxin = DieByToxinUSA
35761    SoundStealthOn = StealthOn
35762    SoundStealthOff = StealthOff
35763    
35764    UnitSpecificSounds
35765      VoiceMelee = ColonelBurtonVoiceAttackKnife
35766      VoiceCreate           = ColonelBurtonVoiceCreate
35767      VoiceGarrison         = ColonelBurtonVoiceGarrison
35768      VoiceEnter            = ColonelBurtonVoiceMove
35769      VoiceEnterHostile     = ColonelBurtonVoiceMove
35770      VoiceGetHealed      = ColonelBurtonVoiceMove
35771    End
35772  
35773    ; *** ENGINEERING Parameters ***
35774    RadarPriority = UNIT
35775    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
35776  
35777    Body = ActiveBody ModuleTag_02
35778      MaxHealth       = 200.0
35779      InitialHealth   = 200.0
35780    End
35781  
35782    Behavior = AIUpdateInterface ModuleTag_03
35783      AutoAcquireEnemiesWhenIdle = Yes
35784    End
35785  
35786    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
35787    End
35788  
35789    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
35790      ScanRate = 1000 ; once a second.
35791      ScanRange = 300 ;
35792      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
35793      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
35794    End
35795  
35796    Locomotor = SET_NORMAL CINE_ColonelBurtonGroundLocomotor CINE_ColonelBurtonCliffLocomotor
35797  
35798    Behavior = PhysicsBehavior ModuleTag_06
35799      Mass = 5.0
35800    End
35801  
35802    Behavior = StealthUpdate ModuleTag_07
35803      StealthDelay                = 2000 ; msec
35804      StealthForbiddenConditions  = FIRING_PRIMARY
35805      HintDetectableConditions    = IS_FIRING_WEAPON
35806      FriendlyOpacityMin          = 50.0%
35807      FriendlyOpacityMax          = 100.0%
35808      InnateStealth               = Yes
35809      OrderIdleEnemiesToAttackMeUponReveal  = Yes
35810    End
35811  
35812    Behavior = SpecialAbility ModuleTag_08
35813      SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
35814      UpdateModuleStartsAttack = Yes
35815      InitiateSound             = ColonelBurtonVoicePlantRemoteCharge
35816    End
35817    Behavior = SpecialAbilityUpdate ModuleTag_09
35818      SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
35819      StartAbilityRange = 0.0
35820      PreparationTime = 0
35821      SpecialObject = RemoteC4Charge
35822      MaxSpecialObjects = 8
35823      SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
35824      AlwaysValidateSpecialObjects = Yes      ;Coupled with the above setting, this one is necessary for code optimization.
35825      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
35826      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
35827      UnpackTime              = 5500
35828      PackTime                = 0
35829      SkipPackingWithNoTarget = Yes           ;When yes, the packing/unpacking will be ignored when detonating charges.
35830      FlipOwnerAfterUnpacking = Yes
35831      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
35832      UnpackSound               = ColonelBurtonPlantCharge
35833      LoseStealthOnTrigger      = Yes
35834    End
35835  
35836    Behavior = SpecialAbility ModuleTag_10
35837      SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
35838      UpdateModuleStartsAttack = Yes
35839      InitiateSound             = ColonelBurtonVoicePlantTimedCharge
35840    End
35841    Behavior = SpecialAbilityUpdate ModuleTag_11
35842      SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
35843      StartAbilityRange = 0.0
35844      PreparationTime = 0
35845      SpecialObject = TimedC4Charge
35846      MaxSpecialObjects = 10
35847      SpecialObjectsPersistWhenOwnerDies = Yes 
35848      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
35849      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
35850      UnpackTime              = 5500
35851      FlipOwnerAfterUnpacking = Yes
35852      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
35853      UnpackSound               = ColonelBurtonPlantCharge
35854      LoseStealthOnTrigger      = Yes
35855    End
35856   
35857    Behavior = ExperienceScalarUpgrade ModuleTag_12
35858      TriggeredBy   = Upgrade_AmericaAdvancedTraining
35859      AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
35860    End
35861   
35862    Behavior = SquishCollide ModuleTag_13
35863      ;nothing
35864    End
35865  
35866  
35867  ; --- begin Death modules ---
35868    Behavior = SlowDeathBehavior ModuleTag_Death01
35869      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
35870      SinkDelay           = 3000
35871      SinkRate            = 0.5     ; in Dist/Sec
35872      DestructionDelay    = 8000
35873      FX                  = INITIAL FX_GIDie
35874    End
35875    Behavior = SlowDeathBehavior ModuleTag_Death02
35876      DeathTypes          = NONE +CRUSHED +SPLATTED
35877      SinkDelay           = 3000
35878      SinkRate            = 0.5     ; in Dist/Sec
35879      DestructionDelay    = 8000
35880      FX                  = INITIAL FX_GIDieCrushed
35881    End
35882    Behavior = SlowDeathBehavior ModuleTag_Death03
35883      DeathTypes          = NONE +EXPLODED
35884      SinkDelay           = 3000
35885      SinkRate            = 0.5     ; in Dist/Sec
35886      DestructionDelay    = 8000
35887      FX                  = INITIAL FX_GIDie
35888      FlingForce          = 8
35889      FlingForceVariance  = 3
35890      FlingPitch          = 60
35891      FlingPitchVariance  = 10
35892    End
35893    Behavior = SlowDeathBehavior ModuleTag_Death04
35894      DeathTypes          = NONE +BURNED
35895      DestructionDelay    = 0
35896      FX                  = INITIAL FX_GIDie
35897      OCL                 = INITIAL OCL_FlamingInfantry
35898    End
35899    Behavior = SlowDeathBehavior ModuleTag_Death05
35900      DeathTypes          = NONE +POISONED
35901      DestructionDelay    = 0
35902      FX                  = INITIAL FX_GIDie
35903      OCL                 = INITIAL OCL_ToxicInfantry
35904    End
35905    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
35906      DeathTypes          = NONE +POISONED_BETA
35907      DestructionDelay    = 0
35908      FX                  = INITIAL FX_GIDie
35909      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
35910    End
35911  ; --- end Death modules ---
35912  
35913    Behavior = PoisonedBehavior ModuleTag_18
35914      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
35915      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
35916    End
35917   
35918    Geometry = CYLINDER
35919    Scale = 0.95                            ;Scaling
35920    GeometryMajorRadius = 1.0
35921    GeometryMinorRadius = 1.0
35922    GeometryHeight = 8.0
35923    GeometryIsSmall = Yes
35924    Shadow = SHADOW_DECAL
35925    ShadowSizeX = 9
35926    ShadowSizeY = 9
35927    ShadowTexture = ShadowI
35928    BuildCompletion = APPEARS_AT_RALLY_POINT
35929  
35930  End
35931  
35932  ;------------------------------------------------------------------------------
35933  ;**************************** Cinematic-only unit *****************************
35934  Object CINE_GLAVehicleQuadCannon
35935  
35936    ; *** ART Parameters ***
35937    SelectPortrait         = SUQuadCannon_L
35938    ButtonImage            = SUQuadCannon
35939    
35940    UpgradeCameo1 = Upgrade_GLAAPBullets
35941    UpgradeCameo2 = Upgrade_GLAJunkRepair
35942    ;UpgradeCameo3 = XXX
35943    ;UpgradeCameo4 = XXX
35944    ;UpgradeCameo5 = XXX
35945    
35946    Draw = W3DTankTruckDraw ModuleTag_01
35947      OkToChangeModelColor = Yes
35948  
35949      ConditionState = NONE
35950        Model = UVQuadCann
35951        Turret = TURRET
35952        TurretPitch = TURRETEL
35953        WeaponFireFXBone  = PRIMARY   BarrelMS
35954        WeaponMuzzleFlash = PRIMARY   BarrelFX
35955        WeaponRecoilBone  = PRIMARY   Barrel
35956        WeaponFireFXBone  = SECONDARY BarrelMS
35957        WeaponMuzzleFlash = SECONDARY BarrelFX
35958        WeaponRecoilBone  = SECONDARY Barrel
35959        HideSubObject = TURRETUP01 TURRETUP02
35960        ShowSubObject = TURRET
35961      End
35962        
35963      ConditionState = REALLYDAMAGED
35964        Model = UVQuadCann_D
35965        Turret = TURRET
35966        TurretPitch = TURRETEL
35967        WeaponFireFXBone  = PRIMARY   BarrelMS
35968        WeaponMuzzleFlash = PRIMARY   BarrelFX
35969        WeaponRecoilBone  = PRIMARY   Barrel
35970        WeaponFireFXBone  = SECONDARY BarrelMS
35971        WeaponMuzzleFlash = SECONDARY BarrelFX
35972        WeaponRecoilBone  = SECONDARY Barrel
35973        HideSubObject = TURRETUP01 TURRETUP02
35974        ShowSubObject = TURRET
35975      End
35976      
35977      ConditionState = RUBBLE
35978        Model = UVQuadCann_D
35979        Turret = TURRET
35980        TurretPitch = TURRETEL
35981        WeaponFireFXBone  = PRIMARY   BarrelMS
35982        WeaponMuzzleFlash = PRIMARY   BarrelFX
35983        WeaponRecoilBone  = PRIMARY   Barrel
35984        WeaponFireFXBone  = SECONDARY BarrelMS
35985        WeaponMuzzleFlash = SECONDARY BarrelFX
35986        WeaponRecoilBone  = SECONDARY Barrel
35987        HideSubObject = TURRETUP01 TURRETUP02
35988        ShowSubObject = TURRET
35989      End
35990  
35991      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
35992        Model = UVQuadCann
35993        Turret = TURRETUP01
35994        TurretPitch = TURRETEL01
35995        WeaponFireFXBone  = PRIMARY   BarrelUp01MS
35996        WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
35997        WeaponRecoilBone  = PRIMARY   BarrelUp01
35998        WeaponFireFXBone  = SECONDARY BarrelUp01MS
35999        WeaponMuzzleFlash = SECONDARY BarrelUp01FX
36000        WeaponRecoilBone  = SECONDARY BarrelUp01
36001        HideSubObject = TURRET TURRETUP02
36002        ShowSubObject = TURRETUP01
36003      End
36004      
36005      ConditionState = WEAPONSET_CRATEUPGRADE_ONE REALLYDAMAGED
36006        Model = UVQuadCann
36007        Turret = TURRETUP01
36008        TurretPitch = TURRETEL01
36009        WeaponFireFXBone  = PRIMARY   BarrelUp01MS
36010        WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
36011        WeaponRecoilBone  = PRIMARY   BarrelUp01
36012        WeaponFireFXBone  = SECONDARY BarrelUp01MS
36013        WeaponMuzzleFlash = SECONDARY BarrelUp01FX
36014        WeaponRecoilBone  = SECONDARY BarrelUp01
36015        HideSubObject = TURRET TURRETUP02
36016        ShowSubObject = TURRETUP01
36017      End
36018      
36019      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE
36020        Model = UVQuadCann
36021        Turret = TURRETUP01
36022        TurretPitch = TURRETEL01
36023        WeaponFireFXBone  = PRIMARY   BarrelUp01MS
36024        WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
36025        WeaponRecoilBone  = PRIMARY   BarrelUp01
36026        WeaponFireFXBone  = SECONDARY BarrelUp01MS
36027        WeaponMuzzleFlash = SECONDARY BarrelUp01FX
36028        WeaponRecoilBone  = SECONDARY BarrelUp01
36029        HideSubObject = TURRET TURRETUP02
36030        ShowSubObject = TURRETUP01
36031      End
36032  
36033      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
36034        Model = UVQuadCann
36035        Turret = TURRETUP02
36036        TurretPitch = TURRETEL02
36037        WeaponFireFXBone  = PRIMARY   BarrelUp02MS
36038        WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
36039        WeaponRecoilBone  = PRIMARY   BarrelUp02
36040        WeaponFireFXBone  = SECONDARY BarrelUp02MS
36041        WeaponMuzzleFlash = SECONDARY BarrelUp02FX
36042        WeaponRecoilBone  = SECONDARY BarrelUp02
36043        HideSubObject = TURRETUP01 TURRET
36044        ShowSubObject = TURRETUP02
36045      End
36046      
36047      ConditionState = WEAPONSET_CRATEUPGRADE_TWO REALLYDAMAGED
36048        Model = UVQuadCann_D
36049        Turret = TURRETUP02
36050        TurretPitch = TURRETEL02
36051        WeaponFireFXBone  = PRIMARY   BarrelUp02MS
36052        WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
36053        WeaponRecoilBone  = PRIMARY   BarrelUp02
36054        WeaponFireFXBone  = SECONDARY BarrelUp02MS
36055        WeaponMuzzleFlash = SECONDARY BarrelUp02FX
36056        WeaponRecoilBone  = SECONDARY BarrelUp02
36057        HideSubObject = TURRETUP01 TURRET
36058        ShowSubObject = TURRETUP02
36059      End
36060      
36061      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE
36062        Model = UVQuadCann_D
36063        Turret = TURRETUP02
36064        TurretPitch = TURRETEL02
36065        WeaponFireFXBone  = PRIMARY   BarrelUp02MS
36066        WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
36067        WeaponRecoilBone  = PRIMARY   BarrelUp02
36068        WeaponFireFXBone  = SECONDARY BarrelUp02MS
36069        WeaponMuzzleFlash = SECONDARY BarrelUp02FX
36070        WeaponRecoilBone  = SECONDARY BarrelUp02
36071        HideSubObject = TURRETUP01 TURRET
36072        ShowSubObject = TURRETUP02
36073      End
36074  
36075      TrackMarks = EXTnkTrack.tga
36076  
36077      TreadAnimationRate = 2.0;  amount of tread texture to move per second
36078      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
36079      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
36080  
36081      Dust = RocketBuggyDust
36082      DirtSpray = RocketBuggyDirtSpray
36083   
36084      ; These parameters are only used if the model has a separate suspension, 
36085      ; and the locomotor has HasSuspension = Yes.
36086      LeftFrontTireBone = Tire01
36087      RightFrontTireBone = Tire02
36088      TireRotationMultiplier = 0.2   ; this * speed = rotation.
36089      PowerslideRotationAddition = 0   ; This unit doesn't powerslide.
36090    End
36091  
36092    ; ***DESIGN parameters ***
36093    DisplayName      = OBJECT:QuadCannon
36094    Side = GLA
36095    EditorSorting   = VEHICLE
36096    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
36097    WeaponSet
36098      Conditions = None 
36099      Weapon = PRIMARY QuadCannonGun
36100      Weapon = SECONDARY QuadCannonGunAir
36101    End
36102    WeaponSet
36103      Conditions = CRATEUPGRADE_ONE 
36104      Weapon = PRIMARY QuadCannonGunUpgradeOne
36105      Weapon = SECONDARY QuadCannonGunUpgradeOneAir
36106    End
36107    WeaponSet
36108      Conditions = CRATEUPGRADE_TWO 
36109      Weapon = PRIMARY QuadCannonGunUpgradeTwo
36110      Weapon = SECONDARY QuadCannonGunUpgradeTwoAir
36111    End
36112    ArmorSet
36113      Conditions      = None
36114      Armor           = AntiAirVehicle
36115      DamageFX        = TankDamageFX
36116    End
36117    BuildCost       = 700
36118    BuildTime       = 10.0          ;in seconds    
36119    VisionRange     = 350
36120    ShroudClearingRange = 300
36121    Prerequisites
36122      Object = GLAArmsDealer
36123    End
36124  
36125    CommandSet          = GLAVehicleQuadCannon
36126  
36127    ExperienceValue = 50 50 100 150    ;Experience point value at each level
36128    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
36129    IsTrainable = Yes             ;Can gain experience
36130    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
36131    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
36132  
36133    ; *** AUDIO Parameters ***
36134    VoiceSelect           = QuadCannonVoiceSelect
36135    VoiceMove             = QuadCannonVoiceMove
36136    VoiceAttack           = QuadCannonVoiceAttack
36137    VoiceAttackAir        = QuadCannonVoiceAttackAir
36138    SoundMoveStart        = QuadCannonMoveStart
36139    SoundMoveStartDamaged = QuadCannonMoveStart
36140    VoiceGuard             = QuadCannonVoiceMove
36141    UnitSpecificSounds
36142     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
36143      VoiceCreate         = QuadCannonVoiceCreate
36144     TurretMoveStart      = NoSound
36145     TurretMoveLoop       = TurretMoveLoop
36146     ; Required for the W3DTruckDraw module
36147     TruckLandingSound    = NoSound
36148     TruckPowerslideSound = NoSound
36149     VoiceSalvage         = QuadCannonVoiceSalvage
36150     VoiceCrush           = QuadCannonVoiceCrush
36151     VoiceEnter           = QuadCannonVoiceMove
36152    End
36153  
36154    Behavior = AIUpdateInterface ModuleTag_20
36155      AutoAcquireEnemiesWhenIdle = Yes
36156      MoodAttackCheckRate        = 250
36157    End
36158  
36159    ; *** ENGINEERING Parameters ***
36160    RadarPriority = UNIT
36161    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE
36162  
36163    Body = ActiveBody ModuleTag_02
36164      MaxHealth       = 180.0
36165      InitialHealth   = 180.0
36166    End
36167    
36168    Behavior = AIUpdateInterface ModuleTag_03
36169      Turret
36170        TurretTurnRate = 360
36171        TurretPitchRate = 360
36172        AllowsPitch = Yes
36173        ControlledWeaponSlots = PRIMARY SECONDARY
36174      End
36175      AutoAcquireEnemiesWhenIdle = Yes
36176    End
36177    
36178    Locomotor = SET_NORMAL CINE_QuadCannonLocomotor
36179    
36180    Behavior = PhysicsBehavior ModuleTag_04
36181      Mass = 40.0
36182    End
36183    
36184    ; Catch fire, and explode death
36185    Behavior = SlowDeathBehavior ModuleTag_05
36186      DeathTypes = ALL -CRUSHED -SPLATTED
36187      ProbabilityModifier = 411
36188      DestructionDelay = 150
36189      DestructionDelayVariance = 250
36190      OCL = FINAL    OCL_QuadCannonDeathEffect  
36191      FX  = FINAL    FX_BattleMasterExplosionOneFinal
36192    End
36193    
36194    Behavior = AutoHealBehavior ModuleTag_06
36195      HealingAmount = 2
36196      HealingDelay = 1000 ; msec
36197      TriggeredBy = Upgrade_GLAJunkRepair
36198    End
36199  
36200    Behavior = FlammableUpdate ModuleTag_08
36201      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
36202      AflameDamageAmount = 3       ; taking this much damage...
36203      AflameDamageDelay = 500       ; this often.
36204    End
36205  
36206    Behavior                 = TransitionDamageFX ModuleTag_09
36207      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
36208      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
36209    End
36210  
36211  
36212    ; A crushing defeat
36213    Behavior = FXListDie ModuleTag_10
36214      DeathTypes = NONE +CRUSHED +SPLATTED
36215      DeathFX = FX_CarCrush
36216    End
36217  
36218    Behavior = CreateCrateDie ModuleTag_11
36219      CrateData = SalvageCrateData
36220      ;CrateData = EliteTankCrateData
36221      ;CrateData = HeroicTankCrateData
36222    End
36223  
36224    Behavior = WeaponBonusUpgrade ModuleTag_12
36225      TriggeredBy = Upgrade_GLAAPBullets
36226    End 
36227  
36228    Geometry = BOX
36229    GeometryMajorRadius = 18.0
36230    GeometryMinorRadius = 7.0
36231    GeometryHeight = 11.5     
36232    GeometryIsSmall = No
36233    Shadow = SHADOW_VOLUME
36234  
36235  End
36236  
36237  ;------------------------------------------------------------------------------
36238  ;*************************** Cinematic-only unit ******************************
36239  Object CINE_GLAVehicleScudLauncher
36240  
36241    ; *** ART Parameters ***
36242    SelectPortrait         = SUScudLauncher_L
36243    ButtonImage            = SUScudLauncher
36244  
36245    UpgradeCameo1 = Upgrade_GLAJunkRepair
36246    ;UpgradeCameo2 = Upgrade_GLAAnthraxBeta
36247    ;UpgradeCameo3 = NONE
36248    ;UpgradeCameo4 = NONE
36249    ;UpgradeCameo5 = NONE
36250  
36251    Draw = W3DTruckDraw ModuleTag_01
36252      OkToChangeModelColor = Yes
36253  
36254      ProjectileBoneFeedbackEnabledSlots = PRIMARY SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
36255    
36256      DefaultConditionState
36257        Model = UVScudLchr
36258        Turret = TURRET
36259        TurretPitch = TURRETEL
36260        WeaponLaunchBone = PRIMARY WeaponA
36261        WeaponLaunchBone = SECONDARY WeaponA
36262        WeaponHideShowBone = PRIMARY MISSILE
36263        WeaponHideShowBone = SECONDARY MISSILE
36264      End
36265  
36266      ConditionState = REALLYDAMAGED
36267        Model = UVScudLchr_d
36268      End
36269      AliasConditionState = RUBBLE
36270  
36271      TrackMarks = EXTireTrack.tga
36272  
36273      Dust = ScudLauncherDust
36274      DirtSpray = RocketBuggyDirtSpray
36275      PowerslideSpray = RocketBuggyDirtPowerSlide
36276  
36277      ; These parameters are only used if the model has a separate suspension, 
36278      ; and the locomotor has HasSuspension = Yes.
36279      LeftFrontTireBone = Tire01
36280      RightFrontTireBone = Tire05
36281      LeftRearTireBone = Tire04
36282      RightRearTireBone = Tire08
36283      MidLeftFrontTireBone = Tire02
36284      MidRightFrontTireBone = Tire06
36285      MidLeftRearTireBone = Tire03
36286      MidRightRearTireBone = Tire07
36287  
36288      TireRotationMultiplier = 0.2   ; this * speed = rotation.
36289      ;PowerslideRotationAddition = 0.0   ; This speed is added to the rotation speed when powersliding.
36290  
36291    End
36292  
36293  
36294    ; ***DESIGN parameters ***
36295  
36296    DisplayName      = OBJECT:ScudLauncher
36297    Side = GLA
36298    EditorSorting   = VEHICLE
36299    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
36300    WeaponSet
36301      Conditions = None
36302      Weapon = PRIMARY CINE_SCUDLauncherGunExplosive
36303      Weapon = SECONDARY SCUDLauncherGunAnthrax
36304      AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
36305      AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
36306      PreferredAgainst = SECONDARY INFANTRY
36307      ShareWeaponReloadTime = Yes
36308    End
36309    ArmorSet
36310      Conditions      = None
36311      Armor           = TruckArmor
36312      DamageFX        = TankDamageFX
36313    End
36314    BuildCost       = 1200
36315    BuildTime       = 20.0          ;in seconds    
36316    VisionRange     = 500
36317    ShroudClearingRange = 300
36318    Prerequisites
36319      Object = GLAArmsDealer
36320      Object = GLAPalace
36321      Science = SCIENCE_ScudLauncher
36322    End
36323  
36324    ExperienceValue = 50 50 100 150   ;Experience point value at each level
36325    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
36326    IsTrainable = Yes             ;Can gain experience
36327    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
36328    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
36329    CommandSet           = GLAVehicleScudLauncherCommandSet
36330  
36331    ; *** AUDIO Parameters ***
36332    VoiceSelect = ScudLauncherVoiceSelect
36333    VoiceMove = ScudLauncherVoiceMove
36334    VoiceGuard = ScudLauncherVoiceMove
36335    VoiceAttack = ScudLauncherVoiceAttack
36336    SoundMoveStart = ScudLauncherMoveStart
36337    SoundMoveStartDamaged = ScudLauncherMoveStart
36338    UnitSpecificSounds
36339      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
36340      VoiceCreate       = ScudLauncherVoiceCreate
36341      TurretMoveStart = NoSound
36342      TurretMoveLoop = TurretMoveLoop
36343      TruckLandingSound = NoSound
36344      TruckPowerslideSound = NoSound
36345      VoiceCrush = ScudLauncherVoiceCrush
36346      VoiceEnter = ScudLauncherVoiceMove
36347    End
36348  
36349    ; *** ENGINEERING Parameters ***
36350    RadarPriority = UNIT
36351    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
36352  
36353    Body = ActiveBody ModuleTag_02
36354      MaxHealth       = 180.0
36355      InitialHealth   = 180.0
36356    End
36357  
36358    Behavior = AIUpdateInterface ModuleTag_03
36359      Turret
36360        TurretTurnRate = 60   ; turn rate, in degrees per sec
36361        TurretPitchRate = 60
36362        FirePitch = 90  ; Instead of aiming pitchwise at the target, it will aim here
36363        AllowsPitch = Yes
36364        ControlledWeaponSlots = PRIMARY SECONDARY
36365      End
36366      AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
36367    End  
36368  
36369    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
36370    End
36371  
36372    Locomotor = SET_NORMAL CINE_ScudLauncherLocomotor
36373    Behavior = PhysicsBehavior ModuleTag_05
36374      Mass = 40.0
36375    End
36376  
36377    Behavior = AutoHealBehavior ModuleTag_06
36378      HealingAmount = 2
36379      HealingDelay = 1000 ; msec
36380      TriggeredBy = Upgrade_GLAJunkRepair
36381    End
36382  
36383  ;  Behavior = DestroyDie
36384      ;nothing
36385  ;  End
36386      
36387    Behavior = TransitionDamageFX ModuleTag_08
36388      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
36389      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_ScudLauncherDamageTransition
36390    End
36391  
36392    ; Catch fire, and explode death
36393    Behavior = SlowDeathBehavior ModuleTag_09
36394      DeathTypes = ALL -CRUSHED -SPLATTED
36395      ProbabilityModifier = 50
36396      DestructionDelay = 2000
36397      DestructionDelayVariance = 300
36398      FX  = INITIAL  FX_CrusaderCatchFire
36399      OCL = FINAL    OCL_SCUDLauncherDeathEffect  
36400      FX  = FINAL    FX_ScudLauncherExplosionOneFinal
36401    End
36402  
36403    ; A crushing defeat
36404    Behavior = FXListDie ModuleTag_10
36405      DeathTypes = NONE +CRUSHED +SPLATTED
36406      DeathFX = FX_CarCrush
36407    End
36408  
36409    Behavior = CreateObjectDie ModuleTag_11
36410      DeathTypes = NONE +CRUSHED +SPLATTED
36411      CreationList = OCL_CrusaderTank_CrushEffect
36412    End
36413  
36414    Behavior = FlammableUpdate ModuleTag_21
36415      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
36416      AflameDamageAmount = 3       ; taking this much damage...
36417      AflameDamageDelay = 500       ; this often.
36418    End
36419  
36420    Geometry = BOX
36421    GeometryMajorRadius = 14.0
36422    GeometryMinorRadius = 7.0
36423    GeometryHeight = 11.5     
36424    GeometryIsSmall = No
36425    Shadow = SHADOW_VOLUME    
36426  
36427  End
36428  
36429  ;------------------------------------------------------------------------------
36430  ;************************** Cinematic-only unit *******************************
36431  Object CINE_GLAVehicleBombTruck
36432  
36433    ; *** ART Parameters ***
36434    SelectPortrait         = SUBombTruck_L
36435    ButtonImage            = SUBombTruck
36436    
36437    UpgradeCameo1 = Upgrade_GLABombTruckHighExplosiveBomb
36438    UpgradeCameo2 = Upgrade_GLABombTruckBioBomb
36439    UpgradeCameo3 = Upgrade_GLAJunkRepair
36440    ;UpgradeCameo4 = NONE
36441    ;UpgradeCameo5 = NONE
36442    
36443    
36444    Draw = W3DTruckDraw ModuleTag_01
36445      OkToChangeModelColor = Yes
36446      TrackMarks = EXTireTrack.tga
36447      
36448      DefaultConditionState
36449        Model = UVBMBTRUK
36450        Animation = UVBMBTRUK.UVBMBTRUK
36451        AnimationMode = LOOP
36452  
36453        ;Display the default bombload -- and the upgrades will handle the rest!
36454        HideSubObject = Bombload02 Bombload03 Bombload04
36455      End
36456  
36457      ConditionState = REALLYDAMAGED
36458        Model = UVBMBTRUK_D
36459        Animation = UVBMBTRUK_D.UVBMBTRUK_D
36460        AnimationMode = LOOP
36461      End
36462      
36463      ConditionState = RUBBLE
36464        Model = UVBMBTRUK_D
36465      End
36466  
36467      LeftFrontTireBone = Tire01
36468      RightFrontTireBone = Tire02
36469      MidLeftFrontTireBone = Tire03
36470      MidRightFrontTireBone = Tire04
36471      LeftRearTireBone = Tire05
36472      RightRearTireBone = Tire06
36473      TireRotationMultiplier = 0.2   ; this * speed = rotation.
36474  
36475      Dust = RocketBuggyDust
36476      DirtSpray = RocketBuggyDirtSpray
36477      PowerslideSpray = RocketBuggyDirtPowerSlide
36478  
36479    End
36480  
36481    ; ***DESIGN parameters ***
36482    DisplayName      = OBJECT:BombTruck
36483    Side = GLA
36484    EditorSorting   = VEHICLE
36485    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
36486    WeaponSet
36487      Conditions = None 
36488      Weapon = PRIMARY SuicideWeapon 
36489    End
36490    ArmorSet
36491      Conditions      = None
36492      Armor           = TruckArmor
36493      DamageFX        = TruckDamageFX
36494    End
36495    BuildCost       = 1200
36496    BuildTime       = 15.0          ;in seconds    
36497    VisionRange     = 150 ; Used in attack move targeting
36498    ShroudClearingRange     = 200
36499    Prerequisites
36500      Object = GLAArmsDealer
36501      Object = GLAPalace
36502      Science = SCIENCE_TechnicalTraining
36503    End
36504    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
36505    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
36506    CommandSet = GLAVehicleBombTruckCommandSet
36507  
36508    ; *** AUDIO Parameters ***
36509    VoiceSelect = BombTruckVoiceSelect
36510    VoiceMove = BombTruckVoiceMove
36511    VoiceGuard = BombTruckVoiceMove
36512    VoiceAttack = BombTruckVoiceAttack
36513    SoundMoveStart = BombTruckMoveStart
36514    SoundMoveStartDamaged = BombTruckMoveStart
36515    UnitSpecificSounds
36516      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
36517      VoiceCreate                   = BombTruckVoiceCreate
36518      TurretMoveStart               = NoSound
36519      TurretMoveLoop                = NoSound
36520      TruckLandingSound             = RocketBuggyLand
36521      TruckPowerslideSound          = RocketBuggyPowerslide
36522      DisguiseStarted               = BombTruckDisguiseStarted
36523      DisguiseRevealedSuccess       = BombTruckDisguiseRevealedSuccess
36524      DisguiseRevealedFailure       = BombTruckDisguiseRevealedFailure
36525      VoiceEnter = BombTruckVoiceMove
36526    End
36527  
36528    ; *** ENGINEERING Parameters ***
36529    RadarPriority = UNIT
36530    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
36531  
36532    Body = ActiveBody ModuleTag_02
36533      MaxHealth       = 220.0
36534      InitialHealth   = 220.0
36535    End
36536  
36537    ExperienceValue     = 50 50 50 50  ; Experience point value at each level
36538  
36539    Behavior = VeterancyGainCreate ModuleTag_03
36540      StartingLevel = VETERAN
36541    End
36542  
36543    Behavior = AIUpdateInterface ModuleTag_04
36544      AutoAcquireEnemiesWhenIdle = No ATTACK_BUILDINGS
36545    End
36546    Locomotor = SET_NORMAL CINE_BombTruckLocomotor
36547  
36548    Behavior = PhysicsBehavior ModuleTag_05
36549      Mass = 40.0
36550    End
36551  
36552    Behavior = AutoHealBehavior ModuleTag_06
36553      HealingAmount = 2
36554      HealingDelay = 1000 ; msec
36555      TriggeredBy = Upgrade_GLAJunkRepair
36556    End
36557  
36558    Behavior = ProductionUpdate ModuleTag_07
36559      ; nothing
36560    End
36561  
36562    Behavior = SlowDeathBehavior  ModuleTag_08
36563      DeathTypes = ALL -CRUSHED -SPLATTED
36564      ProbabilityModifier = 5
36565      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
36566      DestructionDelay = 0
36567      DestructionDelayVariance = 200
36568      FX = FINAL FX_BuggyNewDeathExplosion
36569      OCL = FINAL OCL_BombTruckDeathEffect
36570    End
36571  
36572    ;Behavior = DestroyDie
36573      ;nothing
36574    ;End
36575  
36576  
36577    ;************************************************************************************************
36578    ;* WHICH BOMB DO WE USE??? 
36579    ;* We have 2 damage possibilities -- (normal OR high explosive) 
36580    ;* So part 1 is inflicting the damage itself without creating effects
36581    ;* The complicated part is the part where we have 6 possible effect explosions based on 
36582    ;* all the possible upgrade combinations. Note that bio weapons don't inflict damage through
36583    ;* the explosion.
36584    ;*
36585    ;* DAMAGE COMBINATIONS (NO EFFECTS):
36586    ;* 1) Normal (doesn't have high explosive upgrade)
36587    ;* 2) High explosive (has high-explosive upgrade)
36588    ;*
36589    ;* EFFECT COMBINATIONS (NO DAMAGE):
36590    ;* 1) Normal (no upgrades)
36591    ;* 2) Bio (bio-bomb upgrade)
36592    ;* 3) Anthrax (bio-bomb and anthrax upgrade)
36593    ;* 4) High explosive (high explosive upgrade)
36594    ;* 5) High explosive bio (high explosive and bio-bomb upgrade)
36595    ;* 6) High explosive anthrax (high explosive, bio-bomb, and anthrax upgrades)
36596    ;************************************************************************************************
36597  
36598    ;************************************************************************************************
36599    ;* EXCLUSIVE DAMAGE POSSIBILITY 1 -- Normal explosion (can't have high-explosive upgrade)
36600    ;************************************************************************************************
36601    Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
36602      DeathWeapon   = BombTruckDefaultBombDamage
36603      StartsActive  = Yes                      ; turned on by upgrade
36604      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb
36605    End
36606  
36607    ;************************************************************************************************
36608    ;* EXCLUSIVE DAMAGE POSSIBILITY 2 -- High explosion (always plays if it has high-explosive upgrade)
36609    ;************************************************************************************************
36610    Behavior = FireWeaponWhenDeadBehavior ModuleTag_10
36611      DeathWeapon   = BombTruckHighExplosionBombDamage
36612      StartsActive  = No                      ; turned on by upgrade
36613      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
36614    End
36615  
36616    ;************************************************************************************************
36617    ;* EXCLUSIVE EFFECT COMBINATION 1 - Regular explosion (no upgrades)
36618    ;************************************************************************************************
36619    Behavior = FireWeaponWhenDeadBehavior ModuleTag_11
36620      DeathWeapon   = BombTruckDefaultBombEffect
36621      StartsActive  = Yes                      ; turned on by upgrade
36622      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
36623    End
36624  
36625    ;************************************************************************************************
36626    ;* EXCLUSIVE EFFECT COMBINATION 2 - Bio explosion 
36627    ;* Requires:    Bio upgrade
36628    ;* Can't have:  Anthrax upgrade, high explosive upgrade
36629    ;************************************************************************************************
36630    Behavior = FireWeaponWhenDeadBehavior ModuleTag_12
36631      DeathWeapon   = BombTruckBioBombEffect
36632      StartsActive  = No                      ; turned on by upgrade
36633      TriggeredBy   = Upgrade_GLABombTruckBioBomb
36634      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
36635      RequiresAllTriggers = Yes
36636    End
36637  
36638    ;************************************************************************************************
36639    ;* EXCLUSIVE EFFECT COMBINATION 3 - Anthrax explosion 
36640    ;* Requires:    Bio upgrade and anthrax upgrade
36641    ;* Can't have:  High explosive upgrade
36642    ;************************************************************************************************
36643    Behavior = FireWeaponWhenDeadBehavior ModuleTag_13
36644      DeathWeapon   = BombTruckAnthraxBombEffect
36645      StartsActive  = No                      ; turned on by upgrade
36646      TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLAAnthraxBeta
36647      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb 
36648      RequiresAllTriggers = Yes
36649    End
36650  
36651    ;************************************************************************************************
36652    ;* EXCLUSIVE EFFECT COMBINATION 4 - High explosion
36653    ;* Requires:    High explosive upgrade
36654    ;* Can't have:  Bio upgrade and anthrax upgrade
36655    ;************************************************************************************************
36656    Behavior = FireWeaponWhenDeadBehavior ModuleTag_14
36657      DeathWeapon   = BombTruckHighExplosiveBombEffect
36658      StartsActive  = No                      ; turned on by upgrade
36659      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
36660      ConflictsWith = Upgrade_GLABombTruckBioBomb
36661      RequiresAllTriggers = Yes
36662    End
36663  
36664    ;************************************************************************************************
36665    ;* EXCLUSIVE EFFECT COMBINATION 5 - High explosive bio explosion 
36666    ;* Requires:    High explosive upgrade and bio upgrade 
36667    ;* Can't have:  Anthrax upgrade
36668    ;************************************************************************************************
36669    Behavior = FireWeaponWhenDeadBehavior ModuleTag_15
36670      DeathWeapon   = BombTruckHighExplosiveBioBombEffect
36671      StartsActive  = No                      ; turned on by upgrade
36672      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
36673      ConflictsWith = Upgrade_GLAAnthraxBeta
36674      RequiresAllTriggers = Yes
36675    End
36676  
36677    ;************************************************************************************************
36678    ;* EXCLUSIVE EFFECT COMBINATION 6 - High explosive Anthrax explosion 
36679    ;* Requires:    High explosive, Bio, and anthrax upgrade
36680    ;************************************************************************************************
36681    Behavior = FireWeaponWhenDeadBehavior ModuleTag_16
36682      DeathWeapon   = BombTruckHighExplosiveAnthraxBombEffect
36683      StartsActive  = No                      ; turned on by upgrade
36684      TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
36685      RequiresAllTriggers = Yes
36686    End
36687  
36688    ;-------------------------------------------------------------------
36689    ; Wheeeee! Now we get to display the payload based on upgrades!!! 
36690    ;-------------------------------------------------------------------
36691    Behavior = SubObjectsUpgrade ModuleTag_17
36692      ;*** Bio bomb load ***
36693      TriggeredBy    = Upgrade_GLABombTruckBioBomb 
36694      ConflictsWith  = Upgrade_GLABombTruckHighExplosiveBomb
36695      ShowSubObjects = Bombload02 
36696      HideSubObjects = Bombload01 Bombload03 Bombload04
36697    End
36698    Behavior = SubObjectsUpgrade ModuleTag_18
36699      ;*** High-explosive bomb load ***
36700      TriggeredBy    = Upgrade_GLABombTruckHighExplosiveBomb
36701      ConflictsWith  = Upgrade_GLABombTruckBioBomb 
36702      ShowSubObjects = Bombload03 
36703      HideSubObjects = Bombload01 Bombload02 Bombload04
36704    End
36705    Behavior = SubObjectsUpgrade ModuleTag_19
36706      ;*** High-explosive bio bomb load ***
36707      TriggeredBy    = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb
36708      ShowSubObjects = Bombload04 
36709      HideSubObjects = Bombload01 Bombload02 Bombload03
36710      RequiresAllTriggers = Yes
36711    End
36712    ;-------------------------------------------------------------------
36713  
36714  
36715    Behavior = SpecialAbility ModuleTag_20
36716      SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
36717      UpdateModuleStartsAttack = Yes
36718    End
36719    Behavior = SpecialAbilityUpdate ModuleTag_21
36720      SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
36721      StartAbilityRange = 20000.0
36722    End
36723  
36724    Behavior = StealthUpdate ModuleTag_22
36725      StealthDelay                          = 1
36726      DisguisesAsTeam                       = Yes
36727      RevealDistanceFromTarget              = 100.0f
36728      OrderIdleEnemiesToAttackMeUponReveal  = Yes
36729      DisguiseFX                            = FX_BombTruckDisguise
36730      DisguiseRevealFX                      = FX_BombTruckDisguiseReveal
36731      InnateStealth                         = Yes
36732      DisguiseTransitionTime                = 2000
36733      DisguiseRevealTransitionTime          = 1000 
36734    End
36735  
36736    ; A crushing defeat
36737    Behavior = FXListDie ModuleTag_23
36738      DeathTypes = NONE +CRUSHED +SPLATTED
36739      DeathFX = FX_CarCrush
36740    End
36741    Behavior = CreateObjectDie ModuleTag_24
36742      DeathTypes = NONE +CRUSHED +SPLATTED
36743      CreationList = OCL_CrusaderTank_CrushEffect
36744    End
36745    Behavior = CreateCrateDie ModuleTag_25
36746      CrateData = SalvageCrateData
36747      ;CrateData = EliteTankCrateData
36748      ;CrateData = HeroicTankCrateData
36749    End
36750    
36751    Behavior                 = TransitionDamageFX ModuleTag_26
36752      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
36753      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
36754    End
36755  
36756    Behavior = FlammableUpdate ModuleTag_28
36757      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
36758      AflameDamageAmount = 3       ; taking this much damage...
36759      AflameDamageDelay = 500       ; this often.
36760    End
36761  
36762    Geometry = BOX
36763    GeometryMajorRadius = 19.0
36764    GeometryMinorRadius = 8.0
36765    GeometryHeight = 11.5     
36766    GeometryIsSmall = No    
36767    Shadow = SHADOW_VOLUME
36768  
36769  End
36770  
36771  ;------------------------------------------------------------------------------
36772  ;************************** Cinematic-only unit *******************************
36773  Object CINE_AmericaVehicleChinook
36774  
36775    ; *** ART Parameters ***
36776    SelectPortrait         = SAChinook_L
36777    ButtonImage            = SAChinook
36778    
36779    ;UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
36780    ;UpgradeCameo2 = NONE
36781    ;UpgradeCameo3 = NONE
36782    ;UpgradeCameo4 = NONE
36783    ;UpgradeCameo5 = NONE
36784  
36785    Draw = W3DModelDraw                         ModuleTag_01 ; Helicopter 
36786  
36787      ExtraPublicBone = RopeStart
36788      ExtraPublicBone = RopeEnd
36789  
36790      DefaultConditionState
36791        Model = AVChinook
36792        Animation = AVChinook.AVChinook
36793        AnimationMode = LOOP
36794      End
36795  
36796      ConditionState = REALLYDAMAGED
36797        Model = AVChinook_d
36798        Animation = AVChinook_d.AVChinook_d
36799        AnimationMode = LOOP
36800      End
36801  
36802      ConditionState = RUBBLE
36803        Model = AVChinook_d
36804        Animation = AVChinook_d.AVChinook_d
36805        AnimationMode = LOOP
36806      End
36807  
36808      ConditionState = RUBBLE SPECIAL_DAMAGED
36809        Model = AVChinook_d
36810        HideSubObject = Props01
36811        HideSubObject = Props02
36812      End
36813  
36814      OkToChangeModelColor = Yes
36815    End
36816  
36817    Draw = W3DModelDraw                         ModuleTag_02 ; Cargo net 
36818      ConditionState = NONE
36819        Model = None  ; Nothing here
36820        TransitionKey = TRANS_Empty
36821        WaitForStateToFinishIfPossible = TRANS_Unloading
36822      End
36823  
36824      ConditionState = DYING 
36825        Model = None  ; Nothing here
36826      End
36827      AliasConditionState = RUBBLE
36828      AliasConditionState = CARRYING RUBBLE
36829      AliasConditionState = DOCKING RUBBLE
36830      AliasConditionState = DOCKING CARRYING RUBBLE
36831   
36832       ConditionState = CARRYING
36833        Model = AVChinook_A ;Carrying a full wobbly net of stuff
36834        Animation = AVChinook_A.AVChinook_A
36835        AnimationMode = LOOP
36836        TransitionKey = TRANS_Full
36837        WaitForStateToFinishIfPossible = TRANS_PickingUp
36838      End
36839  
36840      ConditionState = DOCKING
36841        Model = AVChinook_A1MSH ;Lowering an empty net, pulling up with stuff
36842        Animation = AVChinook_A1SK.AVChinook_A1
36843        AnimationMode = ONCE_BACKWARDS
36844        Flags = START_FRAME_LAST
36845        AnimationSpeedFactorRange = .75 .75
36846        TransitionKey = TRANS_PickingUp
36847        WaitForStateToFinishIfPossible = TRANS_Unloading  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
36848      End
36849  
36850      ConditionState = DOCKING CARRYING
36851        Model = AVChinook_A1MSH ; Lowering a full net, letting stuff fall out, and pulling up an empty net
36852        Animation = AVChinook_A1SK.AVChinook_A1
36853        AnimationMode = ONCE
36854        AnimationSpeedFactorRange = 2.75 2.75
36855        TransitionKey = TRANS_Unloading
36856        WaitForStateToFinishIfPossible = TRANS_PickingUp  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
36857      End
36858    End
36859  
36860    ; ***DESIGN parameters ***
36861    DisplayName         = OBJECT:Chinook
36862    EditorSorting       = VEHICLE
36863    Side                = America
36864    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
36865    VisionRange         = 300.0 
36866    ShroudClearingRange = 600
36867    BuildCost           = 1200
36868    BuildTime           = 10.0          ;in seconds  
36869    Prerequisites
36870      Object = AmericaSupplyCenter
36871    End
36872    ExperienceValue     = 50 50 50 50 ;Experience point value at each level
36873    IsTrainable         = No  
36874    CommandSet          = AmericaVehicleChinookCommandSet
36875    ArmorSet
36876      Conditions      = None
36877      Armor           = ChinookArmor
36878      DamageFX        = None
36879    End
36880  
36881    ; *** AUDIO Parameters ***
36882    VoiceSelect     = ChinookVoiceSelect
36883    VoiceMove       = ChinookVoiceMove
36884    VoiceAttack     = ChinookVoiceAttack
36885    SoundAmbient    = ChinookAmbientLoop
36886    SoundAmbientRubble    = NoSound
36887    SoundDie        = ChinookVoiceFalling
36888    SoundEnter      = HumveeEnter
36889    SoundExit       = HumveeExit
36890    UnitSpecificSounds
36891      VoiceCreate         = ChinookVoiceCreate
36892      VoiceSupply         = ChinookVoiceSupply
36893      VoiceUnload         = ChinookVoiceUnload
36894      VoiceCombatDrop     = ChinookVoiceCombatDrop
36895      VoiceClearBuilding  = RangerVoiceClearBuilding ;Special combat drop that clears buildings!
36896      VoiceGarrison       = ChinookVoiceMove
36897    End
36898  
36899    ; *** ENGINEERING Parameters ***
36900    RadarPriority   = UNIT
36901    ; note that, although Chinooks aren't produced at helipads, we want to set this KINDOF so that they can land at
36902    ; (well, "near" actually) an Airfield to get healed...
36903    ; also note that we should NOT set CAN_ATTACK for chinooks. they can't attack. so there.
36904    KindOf          = PRELOAD CAN_CAST_REFLECTIONS SELECTABLE VEHICLE TRANSPORT AIRCRAFT HARVESTER SCORE PRODUCED_AT_HELIPAD
36905  
36906    Body = ActiveBody ModuleTag_03
36907      MaxHealth       = 300.0
36908      InitialHealth   = 300.0
36909    End
36910  
36911    Behavior = FXListDie ModuleTag_05
36912      DeathFX = FX_HelicopterStartDeath
36913    End
36914  
36915    Behavior                       = TransitionDamageFX ModuleTag_06
36916      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
36917      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
36918    End
36919  
36920    Behavior = ChinookAIUpdate ModuleTag_07
36921      MaxBoxes                = 8
36922      SupplyCenterActionDelay = 3000     ; ms for whole thing (one transaction)
36923      SupplyWarehouseActionDelay = 1250  ; 875 ; ms per box (many small transactions)
36924      SupplyWarehouseScanDistance = 700 ;350 ; Max distance to look for a warehouse, or we go home.  (Direct dock command on warehouse overrides, and no max on Center Scan)
36925      SuppliesDepletedVoice = ChinookVoiceSuppliesDepleted
36926      NumRopes                = 4
36927      ; these define how long we can wait, once a guy is on-rope, before throwing another
36928      ; guy onto that same rope. (Hint: you don't want to use zero.) Omit entirely
36929      ; and we'll wait for each guy to clear before spawning another.
36930      PerRopeDelayMin         = 900
36931      PerRopeDelayMax         = 1500
36932      RopeWidth               = 0.5
36933      RopeColor               = R:0 G:0 B:0
36934      RopeWobbleLen           = 10
36935      RopeWobbleAmplitude     = 0.25
36936      RopeWobbleRate          = 180
36937      RopeFinalHeight         = 10    ; stop this far above ground
36938      RappelSpeed             = 30
36939      MinDropHeight           = 40      ; if dropping into a tall bldg, go at least this far above it
36940  
36941    End
36942    Locomotor = SET_NORMAL    CINE_ChinookLocomotor
36943    Locomotor = SET_TAXIING   BasicHelicopterTaxiLocomotor
36944  
36945    Behavior = TransportContain ModuleTag_08
36946      Slots                 = 8
36947      DamagePercentToUnits  = 100%
36948      AllowInsideKindOf     = INFANTRY VEHICLE
36949      ForbidInsideKindOf    = AIRCRAFT HUGE_VEHICLE
36950      ExitDelay             = 100
36951      NumberOfExitPaths     = 1
36952    End
36953    Behavior = PhysicsBehavior ModuleTag_09
36954      Mass = 50.0
36955    End
36956    Behavior = HelicopterSlowDeathBehavior ModuleTag_10
36957      DestructionDelay                = 99999999        ; the destruction delay
36958      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
36959      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
36960      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
36961      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
36962      SoundDeathLoop                  = ComancheDamagedLoop
36963      MinSelfSpin                     = 100                     ; in degrees per second
36964      MaxSelfSpin                     = 300                     ; in degrees per second
36965      SelfSpinUpdateDelay             = 100                     ; in milliseconds
36966      SelfSpinUpdateAmount            = 10                      ; in degrees   
36967      FallHowFast                     = 12.0%                   ; fraction of gravity, lower = take longer to fall
36968      MinBladeFlyOffDelay             = 1500                    ; in milliseconds
36969      MaxBladeFlyOffDelay             = 1500                    ; in milliseconds
36970      AttachParticle                  = SootySmokeTrail
36971      AttachParticleBone              = Propeller02
36972      BladeObjectName                 = ComancheBlades
36973      BladeBoneName                   = Propeller01    
36974      FXBlade                         = FX_HelicopterBladeExplosion
36975      OCLBlade                        = OCL_HelicopterBladeExplosion
36976      FXHitGround                     = FX_HelicopterHitGround
36977      OCLHitGround                    = OCL_HelicopterHitGround
36978      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
36979      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
36980      DelayFromGroundToFinalDeath     = 30
36981      FinalRubbleObject               = ChinookRubbleHull
36982    End
36983  
36984    Behavior = FlammableUpdate ModuleTag_21
36985      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
36986      AflameDamageAmount = 3       ; taking this much damage...
36987      AflameDamageDelay = 500       ; this often.
36988    End
36989  
36990    Geometry              = BOX
36991    GeometryMajorRadius   = 20.0
36992    GeometryMinorRadius   = 6.0
36993    GeometryHeight        = 12.0     
36994    GeometryIsSmall       = No
36995    Shadow                = SHADOW_VOLUME    
36996    ShadowSizeX           = 89  ; minimum elevation angle above horizon. Used to limit shadow length
36997  
36998  End
36999  
37000  ;------------------------------------------------------------------------------
37001  ;************************** Cinematic-only unit *******************************
37002  ;China Dragon Tank
37003  Object CINE_ChinaTankDragon
37004  
37005    ; *** ART Parameters ***
37006    SelectPortrait         = SNDragonTank_L
37007    ButtonImage            = SNDragonTank
37008    
37009    UpgradeCameo1 = Upgrade_ChinaBlackNapalm
37010    ;UpgradeCameo2 = NONE
37011    ;UpgradeCameo3 = NONE
37012    ;UpgradeCameo4 = NONE
37013    ;UpgradeCameo5 = NONE
37014    
37015    Draw = W3DTankDraw ModuleTag_01
37016      OkToChangeModelColor = Yes
37017  
37018      DefaultConditionState
37019        Model = NVDragon
37020        Turret = Turret
37021        TurretPitch = TURRETEL
37022        WeaponFireFXBone = PRIMARY WeaponA
37023        WeaponLaunchBone = PRIMARY WeaponA
37024        WeaponFireFXBone = SECONDARY WeaponA
37025        WeaponLaunchBone = SECONDARY WeaponA
37026      End
37027      ConditionState = REALLYDAMAGED
37028        Model = NVDragon_D
37029        Turret = Turret
37030        TurretPitch = TURRETEL
37031        WeaponFireFXBone = PRIMARY WeaponA
37032        WeaponLaunchBone = PRIMARY WeaponA
37033        WeaponFireFXBone = SECONDARY WeaponA
37034        WeaponLaunchBone = SECONDARY WeaponA
37035      End
37036      ConditionState = RUBBLE
37037        Model = NVDragon_D
37038        Turret = Turret
37039        TurretPitch = TURRETEL
37040        WeaponFireFXBone = PRIMARY WeaponA
37041        WeaponLaunchBone = PRIMARY WeaponA
37042        WeaponFireFXBone = SECONDARY WeaponA
37043        WeaponLaunchBone = SECONDARY WeaponA
37044      End
37045      
37046      TrackMarks              = EXTnkTrack.tga
37047      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
37048      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
37049      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
37050    End
37051  
37052    ; ***DESIGN parameters ***
37053    DisplayName      = OBJECT:Dragon
37054    Side = China
37055    EditorSorting   = VEHICLE
37056    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
37057  
37058    WeaponSet
37059      Conditions = None 
37060      Weapon = PRIMARY DragonTankFlameWeapon
37061      Weapon = SECONDARY DragonTankFireWallWeapon
37062      AutoChooseSources = SECONDARY NONE
37063    End
37064    WeaponSet
37065      Conditions = PLAYER_UPGRADE 
37066      Weapon = PRIMARY DragonTankFlameWeaponUpgraded
37067      Weapon = SECONDARY DragonTankFireWallWeaponUpgraded
37068      AutoChooseSources = SECONDARY NONE
37069    End
37070  
37071    ArmorSet
37072      Conditions      = None
37073      Armor           = DragonTankArmor
37074      DamageFX        = TankDamageFX
37075    End
37076    BuildCost       = 800
37077    BuildTime       = 10.0          ;in seconds    
37078    VisionRange     = 100
37079    ShroudClearingRange = 200
37080    Prerequisites
37081      Object = ChinaWarFactory
37082    End
37083  
37084    ExperienceValue = 50 50 100 150    ;Experience point value at each level
37085    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
37086    IsTrainable = Yes             ;Can gain experience
37087    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
37088    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
37089    CommandSet    = ChinaTankDragonCommandSet
37090  
37091    ; *** AUDIO Parameters ***
37092    VoiceSelect = DragonTankVoiceSelect
37093    VoiceMove = DragonTankVoiceMove
37094    VoiceGuard = DragonTankVoiceMove
37095    VoiceAttack = DragonTankVoiceAttack
37096    SoundMoveStart = DragonTankMoveStart
37097    SoundMoveStartDamaged = DragonTankMoveStart
37098  
37099    UnitSpecificSounds
37100      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
37101      VoiceCreate     = DragonTankVoiceCreate
37102      TurretMoveStart = NoSound
37103      TurretMoveLoop = TurretMoveLoop
37104      VoiceEnter = DragonTankVoiceMove
37105      VoiceFlameLocation = DragonTankVoiceFireStorm
37106    End
37107  
37108  
37109    ; *** ENGINEERING Parameters ***
37110    RadarPriority = UNIT
37111    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE 
37112    
37113    Body = ActiveBody ModuleTag_02
37114      MaxHealth       = 280.0
37115      InitialHealth   = 280.0
37116    End
37117    Behavior = AIUpdateInterface ModuleTag_03
37118      Turret
37119        TurretTurnRate = 120
37120        TurretPitchRate = 120
37121  
37122        TurretFireAngleSweep = PRIMARY 10
37123        TurretFireAngleSweep = SECONDARY 60
37124        TurretSweepSpeedModifier = PRIMARY 0.5    ; Sweep slower than you turn (aim for 30 for art)
37125        TurretSweepSpeedModifier = SECONDARY 2.0  ; Sweep faster than you turn
37126        ControlledWeaponSlots = PRIMARY SECONDARY
37127      End
37128      AutoAcquireEnemiesWhenIdle = Yes
37129    End
37130    Locomotor = SET_NORMAL CINE_DragonLocomotor
37131    Behavior = PhysicsBehavior ModuleTag_04
37132      Mass = 50.0
37133    End
37134  
37135  
37136    Behavior = WeaponSetUpgrade ModuleTag_05
37137      TriggeredBy = Upgrade_ChinaBlackNapalm
37138    End
37139  
37140    ; A crushing defeat
37141    Behavior = DestroyDie ModuleTag_06
37142      DeathTypes = NONE +CRUSHED +SPLATTED
37143    End
37144    Behavior = FXListDie ModuleTag_07
37145      DeathTypes = NONE +CRUSHED +SPLATTED
37146      DeathFX = FX_CarCrush
37147    End
37148    Behavior = CreateObjectDie ModuleTag_08
37149      DeathTypes = NONE +CRUSHED +SPLATTED
37150      CreationList = OCL_CrusaderTank_CrushEffect
37151    End
37152    Behavior = CreateCrateDie ModuleTag_09
37153      CrateData = SalvageCrateData
37154      ;CrateData = EliteTankCrateData
37155      ;CrateData = HeroicTankCrateData
37156    End
37157  
37158  
37159    ; just explode death
37160    Behavior = SlowDeathBehavior ModuleTag_10
37161      DeathTypes = ALL -CRUSHED -SPLATTED
37162  ;    ProbabilityModifier = 33
37163      DestructionDelay = 500
37164      DestructionDelayVariance = 500
37165      FX  = INITIAL  FX_BattleMasterExplosionOneFinal
37166      OCL = FINAL    OCL_DragonDebris
37167      FX  = FINAL    FX_DragonTankDeathExplosionFinal
37168    End
37169    
37170    ; Catch fire, and explode death
37171  ;  Behavior = SlowDeathBehavior
37172  ;    DeathTypes = ALL -CRUSHED -SPLATTED
37173  ;;    ProbabilityModifier = 33
37174  ;    DestructionDelay = 2000
37175  ;    DestructionDelayVariance = 300
37176  ;    FX  = INITIAL  FX_CrusaderCatchFire
37177  ;    OCL = FINAL    OCL_DragonDebris  
37178  ;    FX  = FINAL    FX_GenericTankDeathExplosion 
37179  ;  End
37180  
37181    ; Napalm spills out, and explode death
37182  ;  Behavior = SlowDeathBehavior
37183  ;    DeathTypes = ALL -CRUSHED -SPLATTED
37184  ;;    ProbabilityModifier = 34
37185  ;    DestructionDelay = 2000
37186  ;    DestructionDelayVariance = 300
37187  ;    FX  = INITIAL  FX_DragonNapalmSpill
37188  ;    OCL = FINAL    OCL_DragonDebris  
37189  ;    FX  = FINAL    FX_DragonTankDeathExplosionFinal
37190  ;  End
37191  
37192    ; Turret fly off death
37193  ;  Behavior = SlowDeathBehavior
37194  ;    DeathTypes = ALL -CRUSHED -SPLATTED
37195  ;;    ProbabilityModifier = 25
37196  ;    DestructionDelay = 500
37197  ;    DestructionDelayVariance = 100
37198  ;    FX  = INITIAL  FX_GenericTankDeathEffect
37199  ;    OCL = MIDPOINT OCL_DragonDebris
37200  ;    FX  = FINAL    FX_GenericTankDeathExplosionFinal
37201  ;  End
37202  
37203  
37204    Behavior = FlammableUpdate ModuleTag_12
37205      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
37206      AflameDamageAmount = 3       ; taking this much damage...
37207      AflameDamageDelay = 500       ; this often.
37208    End
37209  
37210    Behavior = TransitionDamageFX ModuleTag_13
37211  ;   ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
37212      ReallyDamagedParticleSystem2 = Bone:Smoke RandomBone:Yes Psys:DragonTransitionFire
37213      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_DragonDamageTransition
37214    End
37215  
37216    Geometry = BOX
37217    GeometryMajorRadius = 15.0
37218    GeometryMinorRadius = 10.0
37219    GeometryHeight = 15.0     
37220    GeometryIsSmall = Yes
37221    Shadow = SHADOW_VOLUME    
37222  
37223  End
37224  
37225  ;------------------------------------------------------------------------------
37226  ;*************************** Cinematic-only unit ******************************
37227  Object CINE_ChinaInfantryBlackLotus
37228  
37229    ; *** ART Parameters ***
37230    SelectPortrait         = SNBlkLotus_L2
37231    ButtonImage            = SNBlkLotus2
37232    
37233    ;UpgradeCameo1 = NONE
37234    ;UpgradeCameo2 = NONE
37235    ;UpgradeCameo3 = NONE
37236    ;UpgradeCameo4 = NONE
37237    ;UpgradeCameo5 = NONE
37238    
37239    Draw = W3DModelDraw ModuleTag_01
37240  
37241      OkToChangeModelColor = Yes
37242      
37243      ; --- idle
37244      DefaultConditionState
37245        Model             = NIHERO_SKN
37246        IdleAnimation     = NIHERO_SKL.NIHERO_STA 0 17
37247        IdleAnimation     = NIHERO_SKL.NIHero_IDA
37248        IdleAnimation     = NIHERO_SKL.NIHero_IDB
37249        AnimationMode     = ONCE
37250        TransitionKey     = TRANS_Stand
37251      End
37252  
37253      ConditionState      = REALLYDAMAGED
37254        IdleAnimation     = NIHERO_SKL.NIHERO_ISTA 0 30
37255        IdleAnimation     = NIHERO_SKL.NIHero_IIDA
37256        AnimationMode     = ONCE
37257        TransitionKey     = TRANS_StandInjured
37258      End
37259  
37260      TransitionState     = TRANS_Stand TRANS_StandInjured
37261        Animation         = NIHero_SKL.NIHero_ISTAHIT
37262        AnimationMode     = ONCE
37263      End
37264  
37265      ; --- moving
37266      ConditionState      = MOVING
37267        Animation         = NIHero_SKL.NIHero_RNA 20 ;used to have no value here
37268        AnimationMode     = LOOP
37269        Flags             = RANDOMSTART
37270        TransitionKey     = None
37271        ParticleSysBone   = None InfantryDustTrails
37272      End
37273      AliasConditionState = MOVING UNPACKING
37274  
37275      ConditionState      = MOVING REALLYDAMAGED
37276        Animation         = NIHero_SKL.NIHero_IRNA
37277        AnimationMode     = LOOP
37278        Flags             = RANDOMSTART
37279        TransitionKey     = None
37280        ParticleSysBone   = None InfantryDustTrails
37281      End
37282      AliasConditionState = MOVING UNPACKING REALLYDAMAGED
37283  
37284      ; --- packing states
37285      ConditionState      = UNPACKING
37286        ;Preparing to attack (unpacking gear)
37287        Animation         = NIHero_SKL.NIHero_ATA1
37288        AnimationMode     = ONCE
37289      End
37290      AliasConditionState = UNPACKING FIRING_A
37291  
37292      ConditionState      = FIRING_A
37293        ;Processing attack (hacking)
37294        Animation         = NIHero_SKL.NIHero_ATA2
37295        AnimationMode     = LOOP
37296        TransitionKey     = TRANS_FiringA
37297      End
37298  
37299      ConditionState      = PACKING
37300        ;Completing attack (packing gear)
37301        Animation         = NIHero_SKL.NIHero_ATA3
37302        AnimationMode     = ONCE
37303      End
37304      AliasConditionState = FIRING_A PACKING 
37305  
37306      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
37307        Animation         = NIHero_SKL.NIHero_IATAHIT
37308        AnimationMode     = ONCE
37309      End
37310  
37311      ; --- injured-packing states
37312      ConditionState      = UNPACKING REALLYDAMAGED
37313        ;Preparing to attack (unpacking gear)
37314        Animation         = NIHero_SKL.NIHero_IATA1
37315        AnimationMode     = ONCE
37316      End
37317      AliasConditionState = UNPACKING FIRING_A REALLYDAMAGED
37318  
37319      ConditionState      = FIRING_A REALLYDAMAGED
37320        ;Processing attack (hacking)
37321        Animation         = NIHero_SKL.NIHero_IATA2
37322        AnimationMode     = LOOP
37323        TransitionKey     = TRANS_FiringAInjured
37324      End
37325  
37326      ConditionState      = PACKING REALLYDAMAGED
37327        ;Completing attack (packing gear)
37328        Animation         = NIHero_SKL.NIHero_IATA3
37329        AnimationMode     = ONCE
37330      End
37331      AliasConditionState = FIRING_A PACKING REALLYDAMAGED
37332  
37333      ; --- packing-dying states
37334  ; code doesn't really support this. Oh well.
37335  ;    ConditionState      = DYING RAISING_FLAG
37336  ;      Animation         = NIHero_SKL.NIHero_IDTA
37337  ;      Animation         = NIHero_SKL.NIHero_IDTB
37338  ;      AnimationMode     = ONCE
37339  ;    End
37340  ;    AliasConditionState = DYING RAISING_FLAG EXPLODED_FLAILING EXPLODED_BOUNCING
37341  
37342      ; --- normal-dying states
37343      ConditionState      = DYING
37344        Animation         = NIHero_SKL.NIHero_DTA
37345        Animation         = NIHero_SKL.NIHero_DTB
37346        AnimationMode     = ONCE
37347        TransitionKey     = TRANS_Dying
37348      End
37349  
37350      TransitionState     = TRANS_Dying TRANS_Flailing
37351        Animation         = NIHero_SKL.NIHero_ADTF1
37352        AnimationMode     = ONCE
37353      End
37354  
37355      ConditionState      = DYING EXPLODED_FLAILING
37356        Animation         = NIHero_SKL.NIHero_ADTF2
37357        AnimationMode     = LOOP
37358        TransitionKey     = TRANS_Flailing
37359      End
37360  
37361      ConditionState      = DYING EXPLODED_BOUNCING
37362        Animation         = NIHero_SKL.NIHero_ADTF3
37363        AnimationMode     = ONCE
37364        TransitionKey     = None
37365      End
37366  
37367      ; --- cheering states
37368      ConditionState      = SPECIAL_CHEERING
37369        Animation         = NIHERO_SKL.NIHERO_CHA
37370        AnimationMode     = ONCE
37371      End
37372  
37373      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
37374        Animation         = NIHERO_SKL.NIHERO_ICHA
37375        AnimationMode     = ONCE
37376      End
37377  
37378      ; --- falling states
37379      ConditionState      = FREEFALL
37380        Animation         = NIHero_SKL.NIHero_PFL
37381        AnimationMode     = LOOP
37382        TransitionKey     = TRANS_Falling
37383      End
37384      AliasConditionState = FREEFALL REALLYDAMAGED
37385      AliasConditionState = FREEFALL DYING
37386  
37387      ConditionState      = PARACHUTING
37388        Animation         = NIHero_SKL.NIHero_PHG
37389        AnimationMode     = LOOP
37390        TransitionKey     = TRANS_Chute
37391      End
37392      AliasConditionState = PARACHUTING REALLYDAMAGED
37393      AliasConditionState = PARACHUTING DYING
37394  
37395      TransitionState     = TRANS_Falling TRANS_Chute
37396        Animation         = NIHero_SKL.NIHero_POP
37397        AnimationMode     = ONCE
37398        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
37399      End
37400  
37401      TransitionState     = TRANS_Chute TRANS_Stand
37402        Animation         = NIHero_SKL.NIHero_PTD
37403        AnimationMode     = ONCE
37404      End
37405  
37406      TransitionState     = TRANS_Chute TRANS_StandInjured
37407        Animation         = NIHero_SKL.NIHero_PTD
37408        AnimationMode     = ONCE
37409      End
37410  
37411    End
37412  
37413    ; ***DESIGN parameters ***
37414    DisplayName         = OBJECT:BlackLotus
37415    Side                = China
37416    EditorSorting       = INFANTRY
37417    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
37418    WeaponSet
37419      Conditions        = None 
37420      Weapon            = PRIMARY None
37421    End
37422    ArmorSet
37423      Conditions      = None
37424      Armor           = HumanArmor
37425      DamageFX        = InfantryDamageFX
37426    End
37427    VisionRange         = 150
37428    ShroudClearingRange = 300
37429    Prerequisites
37430      Object = ChinaBarracks
37431      Object = ChinaPropagandaCenter
37432    End
37433    BuildCost             = 1500
37434    BuildTime             = 20.0          ;in seconds    
37435    MaxSimultaneousOfType = 1
37436    CommandSet            = ChinaInfantryBlackLotusCommandSet
37437  
37438    ExperienceValue       = 50 100 150 400    ;Experience point value at each level
37439    ExperienceRequired    = 0 150 450 900  ;Experience points needed to gain each level
37440    IsTrainable           = Yes             ;Can gain experience
37441    CrushableLevel        = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
37442    CommandSet            = ChinaInfantryBlackLotusCommandSet
37443  
37444    ; *** AUDIO Parameters ***
37445    VoiceSelect = BlackLotusVoiceSelect
37446    VoiceMove = BlackLotusVoiceMove
37447    VoiceAttack = BlackLotusVoiceAttack
37448    VoiceGuard = BlackLotusVoiceMove
37449    VoiceFear = BlackLotusVoiceFear
37450    VoiceTaskComplete = BlackLotusVoiceCaptureComplete
37451    SoundDie = BlackLotusVoiceDie
37452    SoundDieFire = DieByFireFemale
37453    SoundDieToxin = DieByToxinFemale
37454    SoundStealthOn = StealthOn
37455    SoundStealthOff = StealthOff
37456    
37457    UnitSpecificSounds
37458      VoiceCreate          = BlackLotusVoiceCreate
37459      VoiceGarrison = BlackLotusVoiceMove
37460      VoiceEnter = BlackLotusVoiceMove
37461      VoiceEnterHostile = BlackLotusVoiceMove
37462      VoiceStealCashComplete = BlackLotusVoiceCashComplete
37463      VoiceDisableVehicleComplete = BlackLotusVoiceDisableComplete
37464      VoiceCaptureBuildingComplete = BlackLotusVoiceCaptureComplete
37465      VoiceGetHealed      = BlackLotusVoiceMove
37466    End
37467  
37468    ; *** ENGINEERING Parameters ***
37469    RadarPriority = UNIT
37470    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
37471  
37472    Body = ActiveBody ModuleTag_02
37473      MaxHealth       = 100.0
37474      InitialHealth   = 100.0
37475    End
37476  
37477    Behavior = CommandButtonHuntUpdate  ModuleTag_03 ; allows use of command button hunt script with this unit. 
37478    End
37479  
37480    Behavior = AIUpdateInterface ModuleTag_04
37481      AutoAcquireEnemiesWhenIdle = No
37482    End
37483    Locomotor = SET_NORMAL CINE_BlackLotusLocomotor
37484    Locomotor = SET_FREEFALL FreeFallLocomotor
37485    Behavior = PhysicsBehavior ModuleTag_05
37486      Mass = 5.0
37487    End
37488    Behavior = StealthUpdate ModuleTag_07
37489      StealthDelay                = 2500 ; msec
37490      StealthForbiddenConditions  = USING_ABILITY
37491      InnateStealth               = Yes
37492      OrderIdleEnemiesToAttackMeUponReveal  = Yes
37493    End
37494  
37495  
37496    Behavior = SpecialAbility ModuleTag_08
37497      SpecialPowerTemplate = SpecialAbilityBlackLotusCaptureBuilding
37498      UpdateModuleStartsAttack = Yes
37499      InitiateSound         = BlackLotusVoiceHackBuilding
37500    End
37501    Behavior = SpecialAbilityUpdate ModuleTag_09
37502      SpecialPowerTemplate  = SpecialAbilityBlackLotusCaptureBuilding
37503      StartAbilityRange     = 150.0
37504      UnpackTime            = 6730 ;animation time is 6730 (changing this will scale anim speed)
37505      PackTime              = 2800 ;animation time is 5800 (changing this will scale anim speed)
37506      PreparationTime       = 6000 ;time to complete hack once prepared (unpacked)
37507      SpecialObject         = BinaryDataStream
37508      DoCaptureFX           = Yes
37509      PackSound             = BlackLotusPack
37510      UnpackSound           = BlackLotusUnpack
37511      TriggerSound          = BlackLotusTrigger
37512      PrepSoundLoop         = BlackLotusPrepLoop
37513    End
37514    Behavior = SpecialAbility ModuleTag_10
37515      SpecialPowerTemplate      = SpecialAbilityBlackLotusDisableVehicleHack
37516      UpdateModuleStartsAttack  = Yes
37517      InitiateSound           = BlackLotusVoiceHackVehicle
37518    End
37519    Behavior = SpecialAbilityUpdate ModuleTag_11
37520      SpecialPowerTemplate    = SpecialAbilityBlackLotusDisableVehicleHack
37521      StartAbilityRange       = 150.0
37522      UnpackTime              = 6730 ;animation time is 6730 (changing this will scale anim speed)
37523      PackTime                = 2800 ;animation time is 5800 (changing this will scale anim speed)
37524      PreparationTime         = 2000 ;time to complete hack once prepared (unpacked)
37525      EffectDuration          = 30000 ;duration vehicle is disabled  (30 seconds)
37526      DisableFXParticleSystem = DisabledEffectBinaryShower0
37527      SpecialObject           = BinaryDataStream
37528      PackSound               = BlackLotusPack
37529      UnpackSound             = BlackLotusUnpack
37530      TriggerSound            = BlackLotusTrigger
37531      PrepSoundLoop           = BlackLotusPrepLoop
37532    End
37533    Behavior = SpecialAbility ModuleTag_12
37534      SpecialPowerTemplate      = SpecialAbilityBlackLotusStealCashHack
37535      UpdateModuleStartsAttack  = Yes
37536      InitiateSound         = BlackLotusVoiceHackCash
37537    End
37538    Behavior = SpecialAbilityUpdate ModuleTag_13
37539      SpecialPowerTemplate  = SpecialAbilityBlackLotusStealCashHack
37540      StartAbilityRange     = 150.0
37541      UnpackTime            = 6730 ;animation time is 6730 (changing this will scale anim speed)
37542      PackTime              = 5800 ;animation time is 5800 (changing this will scale anim speed)
37543      PreparationTime       = 6000 ;time to complete hack once prepared (unpacked)
37544      EffectValue           = 1000 ;amount of cash stolen
37545      SpecialObject         = BinaryDataStream
37546      PackSound             = BlackLotusPack
37547      UnpackSound           = BlackLotusUnpack
37548      TriggerSound          = BlackLotusTrigger
37549      PrepSoundLoop         = BlackLotusPrepLoop
37550    End
37551   
37552    Behavior = SquishCollide ModuleTag_14
37553      ;nothing
37554    End
37555  
37556  
37557  ; --- begin Death modules ---
37558    Behavior = SlowDeathBehavior ModuleTag_Death01
37559      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
37560      SinkDelay           = 3000
37561      SinkRate            = 0.5     ; in Dist/Sec
37562      DestructionDelay    = 8000
37563      FX                  = INITIAL FX_GIDie
37564    End
37565    Behavior = SlowDeathBehavior ModuleTag_Death02
37566      DeathTypes          = NONE +CRUSHED +SPLATTED
37567      SinkDelay           = 3000
37568      SinkRate            = 0.5     ; in Dist/Sec
37569      DestructionDelay    = 8000
37570      FX                  = INITIAL FX_GIDieCrushed
37571    End
37572    Behavior = SlowDeathBehavior ModuleTag_Death03
37573      DeathTypes          = NONE +EXPLODED
37574      SinkDelay           = 3000
37575      SinkRate            = 0.5     ; in Dist/Sec
37576      DestructionDelay    = 8000
37577      FX                  = INITIAL FX_GIDie
37578      FlingForce          = 8
37579      FlingForceVariance  = 3
37580      FlingPitch          = 60
37581      FlingPitchVariance  = 10
37582    End
37583    Behavior = SlowDeathBehavior ModuleTag_Death04
37584      DeathTypes          = NONE +BURNED
37585      DestructionDelay    = 0
37586      FX                  = INITIAL FX_GIDie
37587      OCL                 = INITIAL OCL_FlamingInfantry
37588    End
37589    Behavior = SlowDeathBehavior ModuleTag_Death05
37590      DeathTypes          = NONE +POISONED
37591      DestructionDelay    = 0
37592      FX                  = INITIAL FX_GIDie
37593      OCL                 = INITIAL OCL_ToxicInfantry
37594    End
37595    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
37596      DeathTypes          = NONE +POISONED_BETA
37597      DestructionDelay    = 0
37598      FX                  = INITIAL FX_GIDie
37599      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
37600    End
37601  ; --- end Death modules ---
37602  
37603    Behavior = PoisonedBehavior ModuleTag_17
37604      PoisonDamageInterval  = 100  ; Every this many msec I will retake the poison damage dealt me...
37605      PoisonDuration        = 3000       ; ... for this long after last hit by poison damage
37606    End
37607   
37608    Geometry = CYLINDER
37609    Scale = 0.95                            ;Scaling
37610    GeometryMajorRadius = 1.0
37611    GeometryMinorRadius = 1.0
37612    GeometryHeight = 8.0
37613    GeometryIsSmall = Yes
37614    Shadow = SHADOW_DECAL
37615    ShadowSizeX = 9;
37616    ShadowSizeY = 9;
37617    ShadowTexture = ShadowI;
37618    BuildCompletion = APPEARS_AT_RALLY_POINT
37619  
37620  End
37621  
37622  ;------------------------------------------------------------------------------
37623  ;*************************** Cinematic-only unit ******************************
37624  Object CINE_AmericaJetStealthFighter
37625  
37626    ; *** ART Parameters ***
37627    SelectPortrait         = SAStealth_L
37628    ButtonImage            = SAStealth_L
37629    
37630    UpgradeCameo1 = Upgrade_AmericaLaserMissiles
37631    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
37632    ;UpgradeCameo3 = NONE
37633    ;UpgradeCameo4 = NONE
37634    ;UpgradeCameo5 = NONE
37635    
37636    Draw = W3DModelDraw ModuleTag_01
37637  
37638      DefaultConditionState
37639        Model                           = AVStealth
37640        HideSubObject                   = BurnerFX03 BurnerFX04
37641        WeaponLaunchBone  = PRIMARY WeaponA
37642      End
37643      
37644      ConditionState        = JETEXHAUST
37645        ParticleSysBone     = Wingtip01 JetContrail
37646        ParticleSysBone     = Wingtip02 JetContrail
37647      End
37648  
37649      ConditionState        = JETEXHAUST JETAFTERBURNER
37650        ; exhaust
37651        ParticleSysBone     = Wingtip01 JetContrail
37652        ParticleSysBone     = Wingtip02 JetContrail
37653        ; afterburners
37654        ShowSubObject       = BurnerFX03 BurnerFX04
37655        ParticleSysBone     = Engine01 JetLenzflare
37656        ParticleSysBone     = Engine02 JetLenzflare
37657      End
37658  
37659      ConditionState        = REALLYDAMAGED
37660        Model               = AVStealth_D
37661        ; damage
37662        ParticleSysBone     = Smoke01 JetSmoke
37663        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
37664      End
37665  
37666      ConditionState        = REALLYDAMAGED JETEXHAUST
37667        Model               = AVStealth_D
37668        ; damage
37669        ParticleSysBone     = Smoke01 JetSmoke
37670        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
37671        ; exhaust
37672        ParticleSysBone     = Wingtip01 JetContrail
37673        ParticleSysBone     = Wingtip02 JetContrail
37674      End
37675  
37676      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
37677        Model               = AVStealth_D
37678        ; damage
37679        ParticleSysBone     = Smoke01 JetSmoke
37680        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
37681        ; exhaust
37682        ParticleSysBone     = Wingtip01 JetContrail
37683        ParticleSysBone     = Wingtip02 JetContrail
37684        ; afterburners
37685        ShowSubObject       = BurnerFX03 BurnerFX04
37686        ParticleSysBone     = Engine01 JetLenzflare
37687        ParticleSysBone     = Engine02 JetLenzflare
37688      End
37689  
37690      ConditionState        = RUBBLE
37691        Model               = AVStealth_D1
37692        HideSubObject       = None 
37693        ShowSubObject       = None
37694      End
37695  
37696      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
37697        Model               = AVStealth_D1
37698        ;HideSubObject is needed cause there're inherited from default condition state      
37699        HideSubObject       = None 
37700        ShowSubObject       = None
37701        ParticleSysBone     = Engine01 JetExhaust
37702        ParticleSysBone     = Engine02 JetExhaust
37703        ParticleSysBone     = Wingtip01 JetContrail
37704        ParticleSysBone     = Wingtip02 JetContrail
37705      End
37706      
37707      OkToChangeModelColor = Yes
37708  
37709    End
37710  
37711    ; ***DESIGN parameters ***
37712    DisplayName           = OBJECT:StealthFighter
37713    EditorSorting         = VEHICLE
37714    Side                  = America
37715    TransportSlotCount    = 0                 ;how many "slots" we take in a transport (0 == not transportable)
37716    VisionRange           = 300.0 
37717    ShroudClearingRange   = 300.0
37718    Prerequisites
37719      Object = AmericaAirfield
37720      Science = SCIENCE_StealthFighter
37721    End
37722    WeaponSet
37723      Conditions = None 
37724      Weapon = PRIMARY CINE_StealthJetMissileWeapon
37725    End
37726    WeaponSet
37727      Conditions = PLAYER_UPGRADE
37728      Weapon = PRIMARY StealthJetLaserGuidedMissileWeapon
37729    End
37730    ArmorSet
37731      Conditions      = None
37732      Armor           = AirplaneArmor
37733      DamageFX        = None
37734    End
37735  
37736    BuildCost           = 1600
37737    BuildTime           = 25.0            ;in seconds  
37738    ExperienceValue     = 100 100 200 300 ;Experience point value at each level
37739    ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
37740    IsTrainable         = Yes             ;Can gain experience
37741    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
37742    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
37743    CommandSet = AmericaJetStealthFighterCommandSet
37744  
37745    ; *** AUDIO Parameters ***
37746    VoiceSelect     = StealthFighterVoiceSelect
37747    VoiceMove       = StealthFighterVoiceMove
37748    VoiceAttack     = StealthFighterVoiceAttack
37749    VoiceAttackAir  = StealthFighterVoiceAttackAir
37750    VoiceGuard      = StealthFighterVoiceAirPatrol
37751    SoundAmbient    = StealthFighterAmbientLoop
37752    SoundAmbientRubble    = NoSound
37753    SoundDie        = StealthFighterVoiceFalling
37754    SoundStealthOn  = StealthOn
37755    SoundStealthOff = StealthOff
37756    UnitSpecificSounds
37757      VoiceCreate   = StealthFighterVoiceCreate
37758      SoundEject    = PilotSoundEject
37759      VoiceEject    = PilotVoiceEject
37760      Afterburner   = RaptorAfterburner
37761      VoiceLowFuel  = AuroraBomberVoiceLowFuel
37762      VoiceGarrison = StealthFighterVoiceMove
37763    End
37764  
37765    ; *** ENGINEERING Parameters ***
37766    RadarPriority   = LOCAL_UNIT_ONLY
37767    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
37768    Body = ActiveBody ModuleTag_02
37769      MaxHealth       = 160.0
37770      InitialHealth   = 160.0
37771    End
37772  
37773    Behavior                          = JetSlowDeathBehavior ModuleTag_03
37774      FXOnGroundDeath                 = FX_JetOnGroundDeath
37775      OCLOnGroundDeath                = OCL_StealthDeathFinalBlowUp
37776      DestructionDelay                = 99999999; destruction will happen when we
37777      RollRate                        = 0.2
37778      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
37779      PitchRate                       = 0.0
37780      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
37781      FXInitialDeath                  = FX_JetDeathInitial
37782      ;OCLInitialDeath                = None
37783      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
37784      FXSecondary                     = FX_JetDeathSecondary
37785      ;OCLSecondary                   = None
37786      FXHitGround                     = FX_JetDeathHitGround
37787      ;OCLHitGround                   = None
37788      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
37789      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
37790      OCLFinalBlowUp                  = OCL_StealthDeathFinalBlowUp
37791  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
37792    End
37793    Behavior = EjectPilotDie ModuleTag_04
37794      GroundCreationList = OCL_EjectPilotOnGround
37795      AirCreationList = OCL_EjectPilotViaParachute
37796      ExemptStatus = HIJACKED
37797      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
37798    End
37799   
37800    Behavior = PhysicsBehavior ModuleTag_05
37801      Mass = 500.0
37802    End
37803  
37804    Behavior = JetAIUpdate ModuleTag_06
37805      OutOfAmmoDamagePerSecond = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
37806                                      ; note that it's expressed as a percent of max health, not an absolute
37807      TakeoffSpeedForMaxLift = 100%   ; smaller numbers give more lift sooner when taking off
37808      TakeoffPause           = 500
37809      MinHeight              = 5
37810      ReturnToBaseIdleTime   = 10000         ; if idle for this long, return to base, even if not out of ammo
37811    End
37812  
37813    Behavior = WeaponSetUpgrade ModuleTag_07
37814      TriggeredBy = Upgrade_AmericaLaserMissiles
37815    End
37816  
37817    Behavior = ExperienceScalarUpgrade ModuleTag_08
37818      TriggeredBy = Upgrade_AmericaAdvancedTraining
37819      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
37820    End
37821  
37822    Behavior = StealthUpdate ModuleTag_09
37823      StealthDelay                          = 1 ; msec
37824      StealthForbiddenConditions            = FIRING_PRIMARY
37825      ; not currently used... but maybe someday? (srj)
37826      ;RevealDistanceFromTarget             = 0.0f
37827      FriendlyOpacityMin                    = 50.0%
37828      FriendlyOpacityMax                    = 100.0%
37829      InnateStealth                         = Yes
37830      OrderIdleEnemiesToAttackMeUponReveal  = Yes
37831    End
37832  
37833    Locomotor = SET_NORMAL CINE_StealthJetLocomotor
37834    Locomotor = SET_TAXIING CINE_BasicJetTaxiLocomotor
37835  
37836    Behavior = FlammableUpdate ModuleTag_21
37837      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
37838      AflameDamageAmount = 3       ; taking this much damage...
37839      AflameDamageDelay = 500       ; this often.
37840    End
37841  
37842    Behavior                 = TransitionDamageFX ModuleTag_22
37843      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
37844      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
37845    End
37846  
37847  
37848    Geometry = Cylinder
37849    GeometryIsSmall = Yes
37850    GeometryMajorRadius = 7.0
37851    GeometryMinorRadius = 7.0
37852    GeometryHeight = 7.0
37853    Shadow = SHADOW_VOLUME
37854    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
37855  
37856  End
37857  
37858  ;------------------------------------------------------------------------------
37859  ;------------------------------------------------------------------------------
37860  ;*************************** Cinematic-only unit ******************************
37861  Object CINE_AmericaJetStealthFighterUSA08
37862  
37863    ; *** ART Parameters ***
37864    SelectPortrait         = SAStealth_L
37865    ButtonImage            = SAStealth
37866    
37867    UpgradeCameo1 = Upgrade_AmericaLaserMissiles
37868    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
37869    ;UpgradeCameo3 = NONE
37870    ;UpgradeCameo4 = NONE
37871    ;UpgradeCameo5 = NONE
37872    
37873    Draw = W3DModelDraw ModuleTag_01
37874  
37875      DefaultConditionState
37876        Model                           = AVStealth
37877        HideSubObject                   = BurnerFX03 BurnerFX04
37878        WeaponLaunchBone  = PRIMARY WeaponA
37879      End
37880      
37881      ConditionState        = JETEXHAUST
37882        ParticleSysBone     = Wingtip01 JetContrail
37883        ParticleSysBone     = Wingtip02 JetContrail
37884      End
37885  
37886      ConditionState        = JETEXHAUST JETAFTERBURNER
37887        ; exhaust
37888        ParticleSysBone     = Wingtip01 JetContrail
37889        ParticleSysBone     = Wingtip02 JetContrail
37890        ; afterburners
37891        ShowSubObject       = BurnerFX03 BurnerFX04
37892        ParticleSysBone     = Engine01 JetLenzflare
37893        ParticleSysBone     = Engine02 JetLenzflare
37894      End
37895  
37896      ConditionState        = REALLYDAMAGED
37897        Model               = AVStealth_D
37898        ; damage
37899        ParticleSysBone     = Smoke01 JetSmoke
37900        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
37901      End
37902  
37903      ConditionState        = REALLYDAMAGED JETEXHAUST
37904        Model               = AVStealth_D
37905        ; damage
37906        ParticleSysBone     = Smoke01 JetSmoke
37907        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
37908        ; exhaust
37909        ParticleSysBone     = Wingtip01 JetContrail
37910        ParticleSysBone     = Wingtip02 JetContrail
37911      End
37912  
37913      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
37914        Model               = AVStealth_D
37915        ; damage
37916        ParticleSysBone     = Smoke01 JetSmoke
37917        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
37918        ; exhaust
37919        ParticleSysBone     = Wingtip01 JetContrail
37920        ParticleSysBone     = Wingtip02 JetContrail
37921        ; afterburners
37922        ShowSubObject       = BurnerFX03 BurnerFX04
37923        ParticleSysBone     = Engine01 JetLenzflare
37924        ParticleSysBone     = Engine02 JetLenzflare
37925      End
37926  
37927      ConditionState        = RUBBLE
37928        Model               = AVStealth_D1
37929        HideSubObject       = None 
37930        ShowSubObject       = None
37931      End
37932  
37933      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
37934        Model               = AVStealth_D1
37935        ;HideSubObject is needed cause there're inherited from default condition state      
37936        HideSubObject       = None 
37937        ShowSubObject       = None
37938        ParticleSysBone     = Engine01 JetExhaust
37939        ParticleSysBone     = Engine02 JetExhaust
37940        ParticleSysBone     = Wingtip01 JetContrail
37941        ParticleSysBone     = Wingtip02 JetContrail
37942      End
37943      
37944      OkToChangeModelColor = Yes
37945  
37946    End
37947  
37948    ; ***DESIGN parameters ***
37949    DisplayName           = OBJECT:StealthFighter
37950    EditorSorting         = VEHICLE
37951    Side                  = America
37952    TransportSlotCount    = 0                 ;how many "slots" we take in a transport (0 == not transportable)
37953    VisionRange           = 300.0 
37954    ShroudClearingRange   = 300.0
37955    Prerequisites
37956      Object = AmericaAirfield
37957      Science = SCIENCE_StealthFighter
37958    End
37959    WeaponSet
37960      Conditions = None 
37961      Weapon = PRIMARY CINE_StealthJetMissileWeapon
37962    End
37963    WeaponSet
37964      Conditions = PLAYER_UPGRADE
37965      Weapon = PRIMARY StealthJetLaserGuidedMissileWeapon
37966    End
37967    ArmorSet
37968      Conditions      = None
37969      Armor           = AirplaneArmor
37970      DamageFX        = None
37971    End
37972  
37973    BuildCost           = 1600
37974    BuildTime           = 25.0            ;in seconds  
37975    ExperienceValue     = 100 100 200 300 ;Experience point value at each level
37976    ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
37977    IsTrainable         = Yes             ;Can gain experience
37978    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
37979    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
37980    CommandSet = AmericaJetStealthFighterCommandSet
37981  
37982    ; *** AUDIO Parameters ***
37983    VoiceSelect     = StealthFighterVoiceSelect
37984    VoiceMove       = StealthFighterVoiceMove
37985    VoiceAttack     = StealthFighterVoiceAttack
37986    VoiceAttackAir  = StealthFighterVoiceAttackAir
37987    VoiceGuard      = StealthFighterVoiceAirPatrol
37988    SoundAmbient    = StealthFighterAmbientLoop
37989    SoundAmbientRubble    = NoSound
37990    SoundDie        = StealthFighterVoiceFalling
37991    SoundStealthOn  = StealthOn
37992    SoundStealthOff = StealthOff
37993    UnitSpecificSounds
37994      VoiceCreate   = StealthFighterVoiceCreate
37995      SoundEject    = PilotSoundEject
37996      VoiceEject    = PilotVoiceEject
37997      Afterburner   = RaptorAfterburner
37998      VoiceLowFuel  = AuroraBomberVoiceLowFuel
37999      VoiceGarrison = StealthFighterVoiceMove
38000    End
38001  
38002    ; *** ENGINEERING Parameters ***
38003    RadarPriority   = LOCAL_UNIT_ONLY
38004    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
38005    Body = ActiveBody ModuleTag_02
38006      MaxHealth       = 160.0
38007      InitialHealth   = 160.0
38008    End
38009  
38010    Behavior                          = JetSlowDeathBehavior ModuleTag_03
38011      FXOnGroundDeath                 = FX_JetOnGroundDeath
38012      OCLOnGroundDeath                = OCL_StealthDeathFinalBlowUp
38013      DestructionDelay                = 99999999; destruction will happen when we
38014      RollRate                        = 0.2
38015      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
38016      PitchRate                       = 0.0
38017      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
38018      FXInitialDeath                  = FX_JetDeathInitial
38019      ;OCLInitialDeath                = None
38020      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
38021      FXSecondary                     = FX_JetDeathSecondary
38022      ;OCLSecondary                   = None
38023      FXHitGround                     = FX_JetDeathHitGround
38024      ;OCLHitGround                   = None
38025      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
38026      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
38027      OCLFinalBlowUp                  = OCL_StealthDeathFinalBlowUp
38028  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
38029    End
38030    Behavior = EjectPilotDie ModuleTag_04
38031      GroundCreationList = OCL_EjectPilotOnGround
38032      AirCreationList = OCL_EjectPilotViaParachute
38033      ExemptStatus = HIJACKED
38034      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
38035    End
38036   
38037    Behavior = PhysicsBehavior ModuleTag_05
38038      Mass = 500.0
38039    End
38040  
38041    Behavior = JetAIUpdate ModuleTag_06
38042      OutOfAmmoDamagePerSecond = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
38043                                      ; note that it's expressed as a percent of max health, not an absolute
38044      TakeoffSpeedForMaxLift = 100%   ; smaller numbers give more lift sooner when taking off
38045      TakeoffPause           = 500
38046      MinHeight              = 5
38047      ReturnToBaseIdleTime   = 10000         ; if idle for this long, return to base, even if not out of ammo
38048    End
38049  
38050    Behavior = WeaponSetUpgrade ModuleTag_07
38051      TriggeredBy = Upgrade_AmericaLaserMissiles
38052    End
38053  
38054    Behavior = ExperienceScalarUpgrade ModuleTag_08
38055      TriggeredBy = Upgrade_AmericaAdvancedTraining
38056      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
38057    End
38058  
38059  ;  Behavior = StealthUpdate ModuleTag_09
38060  ;    StealthDelay                          = 1 ; msec
38061  ;    StealthForbiddenConditions            = FIRING_PRIMARY
38062  ;    ; not currently used... but maybe someday? (srj)
38063  ;    ;RevealDistanceFromTarget             = 0.0f
38064  ;    FriendlyOpacityMin                    = 50.0%
38065  ;    FriendlyOpacityMax                    = 100.0%
38066  ;    InnateStealth                         = Yes
38067  ;    OrderIdleEnemiesToAttackMeUponReveal  = Yes
38068  ;  End
38069  
38070    Locomotor = SET_NORMAL CINE_StealthJetLocomotor
38071    Locomotor = SET_TAXIING CINE_BasicJetTaxiLocomotor
38072  
38073    Behavior = FlammableUpdate ModuleTag_21
38074      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
38075      AflameDamageAmount = 3       ; taking this much damage...
38076      AflameDamageDelay = 500       ; this often.
38077    End
38078  
38079    Behavior                 = TransitionDamageFX ModuleTag_22
38080      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
38081      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
38082    End
38083  
38084  
38085    Geometry = Cylinder
38086    GeometryIsSmall = Yes
38087    GeometryMajorRadius = 7.0
38088    GeometryMinorRadius = 7.0
38089    GeometryHeight = 7.0
38090    Shadow = SHADOW_VOLUME
38091    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
38092  
38093  End
38094  
38095  ;------------------------------------------------------------------------------
38096  ;***************************** Cinematic-only unit ****************************
38097  Object CINE_GLAInfantryTerrorist
38098  
38099  ; *** ART Parameters ***
38100    SelectPortrait         = SUTerrorist_L
38101    ButtonImage            = SUTerrorist
38102    
38103    ;UpgradeCameo1 = NONE
38104    ;UpgradeCameo2 = NONE
38105    ;UpgradeCameo3 = NONE
38106    ;UpgradeCameo4 = NONE
38107    ;UpgradeCameo5 = NONE
38108  
38109    Draw = W3DModelDraw ModuleTag_01
38110      OkToChangeModelColor = Yes
38111      DefaultConditionState
38112        Model = UITRST_SKN
38113        IdleAnimation = UITRST_SKL.UITRST_STA 0 25
38114        ;Regular spice animations
38115        IdleAnimation = UITRST_SKL.UITRST_IDA
38116        IdleAnimation = UITRST_SKL.UITRST_IDB
38117        AnimationMode = ONCE
38118        TransitionKey = TRANS_Stand
38119      End
38120  
38121      ConditionState = REALLYDAMAGED
38122        Animation = UITRST_SKL.UITRST_STA
38123        AnimationMode = LOOP
38124        TransitionKey = TRANS_Stand
38125      End
38126  
38127      ConditionState = FREEFALL
38128        Animation = UITRST_SKL.UITRST_PFL
38129        AnimationMode = LOOP
38130        TransitionKey = TRANS_Falling
38131      End
38132      AliasConditionState = FREEFALL REALLYDAMAGED
38133      AliasConditionState = FREEFALL DYING
38134  
38135      ConditionState = PARACHUTING
38136        Animation = UITRST_SKL.UITRST_PHG
38137        AnimationMode = LOOP
38138        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
38139        TransitionKey = TRANS_Chute
38140      End
38141      AliasConditionState = PARACHUTING REALLYDAMAGED
38142      AliasConditionState = PARACHUTING DYING
38143  
38144      ConditionState = MOVING
38145        Animation = UITRST_SKL.UITRST_RNA 23 ; used to be 15
38146        AnimationMode = LOOP
38147        Flags = RANDOMSTART
38148        TransitionKey = None
38149        ParticleSysBone   = None InfantryDustTrails
38150      End
38151      AliasConditionState = MOVING REALLYDAMAGED
38152  
38153      ConditionState = ATTACKING MOVING
38154        Animation = UITRST_SKL.UITRST_RNB 10
38155        AnimationMode = LOOP
38156        Flags = RANDOMSTART
38157        TransitionKey = None
38158      End
38159      AliasConditionState = ATTACKING MOVING REALLYDAMAGED
38160  
38161      ConditionState = PREATTACK_A
38162        Animation = UITRST_SKL.UITRST_ATA
38163        AnimationMode = ONCE
38164      End
38165      AliasConditionState = PREATTACK_A MOVING
38166   
38167      ConditionState = DYING
38168        Animation = UITRST_SKL.UITRST_DTA
38169        Animation = UITRST_SKL.UITRST_DTC
38170        AnimationMode = ONCE
38171        TransitionKey = TRANS_Dying
38172      End
38173  
38174      TransitionState = TRANS_Dying TRANS_Flailing
38175        Animation = UITRST_SKL.UITRST_ADTE1
38176        AnimationMode = ONCE
38177      End
38178  
38179      ConditionState = DYING EXPLODED_FLAILING
38180        Animation = UITRST_SKL.UITRST_ADTE2
38181        AnimationMode = LOOP
38182        TransitionKey = TRANS_Flailing
38183      End
38184  
38185      ConditionState = DYING EXPLODED_BOUNCING
38186        Animation = UITRST_SKL.UITRST_ADTE3
38187        AnimationMode = ONCE
38188        TransitionKey = None
38189      End
38190  
38191      ConditionState = SPECIAL_CHEERING
38192        Animation = UITRST_SKL.UITRST_CHA
38193        AnimationMode = LOOP
38194      End
38195  
38196      TransitionState = TRANS_Falling TRANS_Chute
38197        Animation = UITRST_SKL.UITRST_POP
38198        AnimationMode = ONCE
38199        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
38200      End
38201  
38202      TransitionState = TRANS_Chute TRANS_Stand
38203        Animation = UITRST_SKL.UITRST_PTD
38204        AnimationMode = ONCE
38205      End
38206  
38207    End
38208  
38209    ; ***DESIGN parameters ***
38210    DisplayName      = OBJECT:Terrorist
38211    Side = GLA
38212    EditorSorting = INFANTRY
38213    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
38214    WeaponSet
38215      Conditions = None 
38216      ;Kill himself so we can use FireWeaponWhenDead to fire the real weapon -- and use UNRESISTABLE
38217      ;damage to do ini logic for type of death to play -- unresistable for success.
38218      Weapon = PRIMARY TerroristSuicideWeapon 
38219    End
38220    ArmorSet
38221      Conditions      = None
38222      Armor           = HumanArmor
38223      DamageFX        = InfantryDamageFX
38224    End
38225    VisionRange = 150
38226    ShroudClearingRange = 200
38227    Prerequisites
38228      Object = GLABarracks
38229    End
38230    BuildCost = 200
38231    BuildTime = 5.0          ;in seconds    
38232    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
38233    CommandSet    = GLAInfantryTerroristCommandSet
38234  
38235    ; *** AUDIO Parameters ***
38236    VoiceSelect = TerroristVoiceSelect
38237    VoiceMove = TerroristVoiceMove
38238    VoiceAttack = TerroristVoiceAttack
38239    SoundDie = TerroristVoiceDie
38240    SoundDieFire = DieByFireGLA
38241    SoundDieToxin = DieByToxinGLA
38242    VoiceFear = TerroristVoiceFear
38243    VoiceGuard = TerroristVoiceMove
38244    UnitSpecificSounds
38245      VoiceGarrison         = TerroristVoiceMove
38246      VoiceCreate           = TerroristVoiceCreate
38247      VoiceEnter            = TerroristVoiceEnter
38248      VoiceEnterHostile     = TerroristVoiceEnterHostile
38249      VoiceGetHealed      = TerroristVoiceMove
38250    End
38251  
38252    ; *** ENGINEERING Parameters ***
38253    RadarPriority = UNIT
38254    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
38255  
38256    Body = ActiveBody ModuleTag_02
38257      MaxHealth       = 120.0
38258      InitialHealth   = 120.0
38259    End
38260  
38261    ExperienceValue     = 20 20 20 20  ; Experience point value at each level
38262  
38263    Behavior = AIUpdateInterface ModuleTag_03
38264      AutoAcquireEnemiesWhenIdle = Yes
38265    End
38266    Locomotor = SET_NORMAL CINE_FastHumanLocomotor
38267    Behavior = PhysicsBehavior ModuleTag_04
38268      Mass = 5.0
38269    End
38270  
38271    ;Kris
38272    Behavior = ConvertToCarBombCrateCollide       ModuleTag_06
38273      RequiredKindOf    = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
38274      ;ForbiddenKindOf  = TRANSPORT DOZER  ; but not to TRANSPORTs or DOZERs!
38275      FXList            = FX_MakeCarBombSuccess
38276    End
38277   
38278    Behavior = SquishCollide ModuleTag_07
38279      ;nothing
38280    End
38281  
38282  ; --- begin Death modules ---
38283    Behavior = SlowDeathBehavior ModuleTag_Death01
38284      DeathTypes          = ALL -CRUSHED -SPLATTED -SUICIDED -EXPLODED -BURNED -LASERED
38285      SinkDelay           = 3000
38286      SinkRate            = 0.5     ; in Dist/Sec
38287      DestructionDelay    = 8000
38288      FX                  = INITIAL FX_GIDie
38289    End
38290    Behavior = SlowDeathBehavior ModuleTag_Death02
38291      DeathTypes          = NONE +POISONED
38292      DestructionDelay    = 0
38293      FX                  = INITIAL FX_GIDie
38294      OCL                 = INITIAL OCL_ToxicInfantry
38295    End
38296    ; If he is killed by "powerful arms", then "detonate" him.
38297    Behavior = SlowDeathBehavior ModuleTag_Death03
38298      ;DeathTypes         = ****everything else!!!
38299      SinkDelay           = 3000
38300      SinkRate            = 0.5     ; in Dist/Sec
38301      DestructionDelay    = 8000
38302      FX                  = INITIAL FX_TerroristExplode
38303      FlingForce          = 8
38304      FlingForceVariance  = 3
38305      FlingPitch          = 60
38306      FlingPitchVariance  = 10
38307    End
38308    Behavior = FireWeaponWhenDeadBehavior ModuleTag_Death04
38309      DeathWeapon   = SuicideDynamitePack
38310      StartsActive  = Yes                      ; turned on by upgrade
38311      DeathTypes = NONE +SUICIDED +CRUSHED +SPLATTED +LASERED +BURNED +EXPLODED
38312    End
38313  ; --- end Death modules ---
38314  
38315    Behavior = PoisonedBehavior ModuleTag_14
38316      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
38317      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
38318    End
38319   
38320    Geometry = CYLINDER
38321    Scale = 0.95                            ;Scaling
38322    GeometryMajorRadius = 1.0
38323    GeometryMinorRadius = 1.0
38324    GeometryHeight = 8.0
38325    GeometryIsSmall = Yes
38326    Shadow = SHADOW_DECAL
38327    ShadowSizeX = 9;
38328    ShadowSizeY = 9;
38329    ShadowTexture = ShadowI;
38330    BuildCompletion = APPEARS_AT_RALLY_POINT
38331  
38332  End
38333  
38334  ;------------------------------------------------------------------------------
38335  ;**************************** Cinematic-only unit *****************************
38336  ;Also called Toxin Tractor && ToxinTractor
38337  Object CINE_GLAVehicleToxinTruck
38338  
38339    ; *** ART Parameters ***
38340    SelectPortrait         = SUToxinTractor_L
38341    ButtonImage            = SUToxinTractor
38342    
38343    UpgradeCameo1 = Upgrade_GLAAnthraxBeta
38344    UpgradeCameo2 = Upgrade_GLAJunkRepair
38345    ;UpgradeCameo3 = NONE
38346    ;UpgradeCameo4 = NONE
38347    ;UpgradeCameo5 = NONE
38348    
38349    Draw = W3DTruckDraw ModuleTag_01
38350      OkToChangeModelColor = Yes
38351      ConditionState = NONE
38352        Model = UVToxinTrk
38353        Turret = Turret
38354        TurretPitch = TurretEL
38355        WeaponFireFXBone = PRIMARY WeaponA
38356        WeaponLaunchBone = PRIMARY WeaponA
38357        WeaponFireFXBone = SECONDARY Spigot
38358        WeaponLaunchBone = SECONDARY Spigot
38359      End
38360      
38361      ConditionState = REALLYDAMAGED
38362        Model = UVToxinTrk_D
38363        Turret = Turret
38364        TurretPitch = TurretEL
38365        WeaponFireFXBone = PRIMARY WeaponA
38366        WeaponLaunchBone = PRIMARY WeaponA
38367        WeaponFireFXBone = SECONDARY Spigot
38368        WeaponLaunchBone = SECONDARY Spigot
38369      End
38370      
38371      ConditionState = RUBBLE
38372        Model = UVToxinTrk_D
38373        Turret = Turret
38374        TurretPitch = TurretEL
38375        WeaponFireFXBone = PRIMARY WeaponA
38376        WeaponLaunchBone = PRIMARY WeaponA
38377        WeaponFireFXBone = SECONDARY Spigot
38378        WeaponLaunchBone = SECONDARY Spigot
38379      End
38380      
38381      TrackMarks = EXTireTrack.tga
38382      LeftFrontTireBone = Tire01
38383      RightFrontTireBone = Tire02
38384      LeftRearTireBone = Tire03
38385  
38386      RightRearTireBone = Tire04
38387      TireRotationMultiplier = 0.2   ; this * speed = rotation.
38388      PowerslideRotationAddition = 0   ; This vehicle doesn't powerslide.
38389  
38390      Dust = RocketBuggyDust
38391      DirtSpray = RocketBuggyDirtSpray
38392  
38393    End
38394  
38395    ; ***DESIGN parameters ***
38396    DisplayName         = OBJECT:ToxinTruck
38397    Side                = GLA
38398    EditorSorting       = VEHICLE
38399    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
38400    WeaponSet 
38401      Conditions        = None 
38402      Weapon            = PRIMARY     ToxinTruckGun
38403      Weapon            = SECONDARY   ToxinTruckSprayer
38404      AutoChooseSources = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
38405      AutoChooseSources = SECONDARY   NONE ;Special attack only
38406    End
38407    WeaponSet
38408      Conditions        = PLAYER_UPGRADE 
38409      Weapon            = PRIMARY     ToxinTruckGunUpgraded
38410      Weapon            = SECONDARY   ToxinTruckSprayerUpgraded
38411      AutoChooseSources = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
38412      AutoChooseSources = SECONDARY   NONE ;Special attack only
38413    End
38414    ArmorSet
38415      Conditions        = None
38416      Armor             = ToxinTruckArmor
38417      DamageFX          = TruckDamageFX
38418    End
38419    BuildCost           = 600
38420    BuildTime           = 5.0          ;in seconds    
38421    VisionRange         = 150
38422    ShroudClearingRange = 200
38423    Prerequisites
38424      Object = GLAArmsDealer
38425    End
38426  
38427    ExperienceValue     = 50 50 100 150    ;Experience point value at each level
38428    ExperienceRequired  = 0 100 150 300  ;Experience points needed to gain each level
38429    IsTrainable         = Yes             ;Can gain experience
38430    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
38431    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
38432    CommandSet          = GLAVehicleToxinTruckCommandSet
38433  
38434    ; *** AUDIO Parameters ***
38435    VoiceSelect         = ToxinTractorVoiceSelect
38436    VoiceMove           = ToxinTractorVoiceMove
38437    VoiceGuard          = ToxinTractorVoiceMove
38438    VoiceAttack         = ToxinTractorVoiceAttack
38439    SoundMoveStart      = ToxinTractorMoveStart
38440    SoundMoveStartDamaged = ToxinTractorMoveStart
38441    SoundDie            = ToxinTractorDie
38442  
38443    UnitSpecificSounds
38444      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
38445      VoiceCreate         = ToxinTractorVoiceCreate
38446      TurretMoveStart     = NoSound
38447      TurretMoveLoop      = TurretMoveLoop
38448     TruckLandingSound    = NoSound
38449     TruckPowerslideSound = NoSound
38450      VoiceCrush      = ToxinTractorVoiceCrush
38451      VoiceEnter           = ToxinTractorVoiceMove
38452      VoicePoisonLocation = ToxinTractorVoiceAttackContam
38453  
38454    End
38455  
38456    ; *** ENGINEERING Parameters ***
38457    RadarPriority         = UNIT
38458    KindOf                = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
38459  
38460    Body = ActiveBody ModuleTag_02
38461      MaxHealth           = 240.0
38462      InitialHealth       = 240.0
38463    End
38464  
38465    Behavior = AIUpdateInterface ModuleTag_03
38466      AutoAcquireEnemiesWhenIdle = Yes
38467      Turret
38468        TurretTurnRate            = 180
38469        TurretPitchRate           = 180
38470        AllowsPitch               = Yes
38471        MinPhysicalPitch          = -20 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
38472        TurretFireAngleSweep      = PRIMARY 8
38473        TurretSweepSpeedModifier  = PRIMARY 0.5    ; Sweep slower than you turn
38474        ControlledWeaponSlots     = PRIMARY
38475      End
38476    End
38477    Locomotor             = SET_NORMAL CINE_ToxinTruckLocomotor
38478    Behavior              = PhysicsBehavior ModuleTag_04
38479      Mass                = 10.0
38480    End
38481  
38482    Behavior                    = SlowDeathBehavior  ModuleTag_05
38483      DeathTypes                = ALL -CRUSHED -SPLATTED
38484      ProbabilityModifier       = 5
38485      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
38486      DestructionDelay          = 0
38487      DestructionDelayVariance  = 200
38488      OCL                       = INITIAL OCL_ToxinTractorDeathEffect
38489      FX                        = FINAL FX_ToxinTruckExplosionOneFinal
38490      OCL                       = FINAL OCL_PoisonFieldSmall
38491    End
38492    Behavior                    = InstantDeathBehavior  ModuleTag_06
38493      DeathTypes                = NONE +CRUSHED +SPLATTED
38494      FX                        = FX_CarCrush
38495      OCL                       = OCL_CrusaderTank_CrushEffect
38496    End
38497      
38498    Behavior = CreateCrateDie ModuleTag_07
38499      CrateData   = SalvageCrateData
38500      ;CrateData  = EliteTankCrateData
38501      ;CrateData  = HeroicTankCrateData
38502    End
38503  
38504    Behavior = WeaponSetUpgrade ModuleTag_08
38505      ; the Toxin Tractor gets this upgrade if we either buy the upgrade,
38506      ; or if it gets HEROIC status
38507      TriggeredBy   = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
38508    End
38509    
38510    Behavior                          = TransitionDamageFX ModuleTag_11
38511      ReallyDamagedParticleSystem1  = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
38512      ReallyDamagedFXList1          = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
38513    End
38514    
38515    Behavior = AutoHealBehavior ModuleTag_12
38516      HealingAmount   = 2
38517      HealingDelay    = 1000 ; msec
38518      TriggeredBy     = Upgrade_GLAJunkRepair
38519    End
38520  
38521    Behavior = FlammableUpdate ModuleTag_21
38522      AflameDuration          = 5000         ; If I catch fire, I'll burn for this long...
38523      AflameDamageAmount      = 3       ; taking this much damage...
38524      AflameDamageDelay       = 500       ; this often.
38525    End
38526  
38527    Behavior = FireOCLAfterWeaponCooldownUpdate ModuleTag_13
38528      WeaponSlot            = SECONDARY
38529      ConflictsWith         = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
38530      OCL                   = OCL_PoisonFieldMedium
38531      MinShotsToCreateOCL   = 4
38532      OCLLifetimePerSecond  = 10000
38533      OCLLifetimeMaxCap     = 180000
38534    End
38535    Behavior = FireOCLAfterWeaponCooldownUpdate ModuleTag_14
38536      WeaponSlot            = SECONDARY
38537      TriggeredBy           = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
38538      OCL                   = OCL_PoisonFieldUpgradedMedium
38539      MinShotsToCreateOCL   = 4
38540      OCLLifetimePerSecond  = 10000
38541      OCLLifetimeMaxCap     = 180000
38542    End
38543    Geometry = BOX
38544    GeometryMajorRadius = 13.0
38545    GeometryMinorRadius = 9.0
38546    GeometryHeight = 10.0    ; set to make the projectile stream look right 
38547    GeometryIsSmall = Yes    
38548    Shadow = SHADOW_VOLUME
38549  
38550  End
38551  
38552  ;------------------------------------------------------------------------------
38553  ;*************************** Cinematic-only unit ******************************
38554  ;
38555  ; ??? This unit is used in a mission for "color".
38556  ; This unit is never human-controllable!
38557  ;
38558  Object CINE_AmericaInfantryOfficer
38559      ; *** ART Parameters ***
38560    Draw = W3DModelDraw ModuleTag_01
38561      OkToChangeModelColor = Yes
38562  
38563      ;NORMAL STANDING
38564      DefaultConditionState
38565        Model = AIOFCR_SKN
38566        IdleAnimation = AIOFCR_SKL.AIOFCR_STA 0 21
38567        ;Regular spice animations
38568        IdleAnimation = AIOFCR_SKL.AIOFCR_IDA
38569        IdleAnimation = AIOFCR_SKL.AIOFCR_IDB
38570        AnimationMode = ONCE
38571        WeaponFireFXBone = PRIMARY Muzzle
38572        WeaponMuzzleFlash = PRIMARY MuzzleFX
38573        TransitionKey = TRANS_STAND
38574      End
38575  
38576      ConditionState    = MOVING
38577        Animation       = AIOFCR_SKL.AIOFCR_RNA
38578        AnimationMode   = LOOP
38579        ParticleSysBone     = None InfantryDustTrails
38580      End
38581  
38582      ; NORMAL ATTACK
38583      ;--------------------------------------------------------
38584      ; Drawing gun
38585      ConditionState  = PREATTACK_A
38586        Animation     = AIOFCR_SKL.AIOFCR_ATAST
38587        AnimationMode = ONCE
38588      End
38589      AliasConditionState = PREATTACK_A MOVING
38590      AliasConditionState = PREATTACK_A FIRING_A
38591      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
38592  
38593      ; Firing gun
38594      ConditionState  = FIRING_A
38595        Animation     = AIOFCR_SKL.AIOFCR_ATALP
38596        AnimationMode = LOOP
38597        TransitionKey = TRANS_FIRING_A
38598      End
38599      ConditionState  = BETWEEN_FIRING_SHOTS_A
38600        Animation     = AIOFCR_SKL.AIOFCR_ATALP
38601        AnimationMode = LOOP
38602        TransitionKey = TRANS_FIRING_A
38603      End
38604      AliasConditionState = RELOADING_A
38605      AliasConditionState = MOVING FIRING_A
38606      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
38607      AliasConditionState = MOVING RELOADING_A
38608  
38609      ; This transition allows him to put his gun away when he's finished attacking.
38610      TransitionState = TRANS_FIRING_A TRANS_STAND
38611        Animation     = AIOFCR_SKL.AIOFCR_ATAED
38612        AnimationMode = ONCE
38613      End
38614      ;--------------------------------------------------------
38615  
38616      ConditionState  = DYING
38617        Animation     = AIOFCR_SKL.AIOFCR_DTA
38618        Animation     = AIOFCR_SKL.AIOFCR_DTB
38619        AnimationMode = ONCE
38620        TransitionKey = TRANS_Dying
38621      End
38622  
38623      TransitionState = TRANS_Dying TRANS_Flailing
38624        Animation = AIOFCR_SKL.AIOFCR_ADTE1
38625        AnimationMode = ONCE
38626      End
38627  
38628      ConditionState = DYING EXPLODED_FLAILING
38629        Animation = AIOFCR_SKL.AIOFCR_ADTE2
38630        AnimationMode = LOOP
38631        TransitionKey = TRANS_Flailing
38632      End
38633  
38634      ConditionState = DYING EXPLODED_BOUNCING
38635        Animation = AIOFCR_SKL.AIOFCR_ADTE3
38636        AnimationMode = ONCE
38637        TransitionKey = None
38638      End
38639  
38640      ConditionState  = SPECIAL_CHEERING
38641        Animation     = AIOFCR_SKL.AIOFCR_CHA
38642        AnimationMode = LOOP
38643      End
38644  
38645      ;PARACHUTING ANIMATIONS
38646  
38647      ;@TODO - MISSING ANIMATION FILE
38648      ;ConditionState   = FREEFALL
38649      ;  Animation      = AIOFCR_SKL.AIOFCR_PFL
38650      ;  AnimationMode  = LOOP
38651      ;  TransitionKey  = TRANS_Falling
38652      ;End
38653      ;AliasConditionState = FREEFALL REALLYDAMAGED
38654      ;AliasConditionState = FREEFALL DYING
38655      ConditionState  = PARACHUTING
38656        Animation     = AIOFCR_SKL.AIOFCR_PHG
38657        AnimationMode = LOOP
38658        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
38659        TransitionKey = TRANS_Chute
38660  
38661      End
38662      AliasConditionState = PARACHUTING REALLYDAMAGED
38663      AliasConditionState = PARACHUTING DYING
38664      TransitionState = TRANS_Falling TRANS_Chute
38665        Animation     = AIOFCR_SKL.AIOFCR_POP
38666        AnimationMode = ONCE
38667        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
38668      End
38669      TransitionState = TRANS_Chute TRANS_Stand
38670        Animation     = AIOFCR_SKL.AIOFCR_PTD
38671        AnimationMode = ONCE
38672      End
38673  
38674    End
38675  
38676    ; ***DESIGN parameters ***
38677    DisplayName      = OBJECT:Officer
38678    Side = America
38679    EditorSorting = INFANTRY
38680    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
38681    WeaponSet
38682      Conditions = None 
38683      Weapon = PRIMARY AmericaOfficerMachineGun
38684    End
38685    ArmorSet
38686      Conditions      = None
38687      Armor           = HumanArmor
38688      DamageFX        = InfantryDamageFX
38689    End
38690    VisionRange = 150
38691    ShroudClearingRange = 150
38692  
38693    BuildCost     = 400
38694    BuildTime     = 10.0          ;in seconds      
38695  
38696    ; *** AUDIO Parameters ***
38697    VoiceSelect = RangerVoiceSelect
38698    VoiceGroupSelect = BattleCrySound
38699    VoiceMove = RangerVoiceMove
38700    VoiceAttack = RangerVoiceAttack
38701    SoundDie = RangerVoiceDie
38702    SoundDieFire = DieByFireUSA
38703    SoundDieToxin = DieByToxinChina
38704  
38705    ; *** ENGINEERING Parameters ***
38706    RadarPriority = UNIT
38707    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
38708  
38709    Body = ActiveBody ModuleTag_02
38710      MaxHealth       = 100.0
38711      InitialHealth   = 100.0
38712    End
38713  
38714    Behavior = AIUpdateInterface ModuleTag_03
38715      AutoAcquireEnemiesWhenIdle = Yes
38716    End
38717    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
38718      ScanRate = 1000 ; once a second.
38719      ScanRange = 300 ;
38720      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
38721      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
38722    End
38723  
38724    Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
38725    Behavior = PhysicsBehavior ModuleTag_05
38726      Mass = 5.0
38727    End
38728   
38729    Behavior = SquishCollide ModuleTag_07
38730      ;nothing
38731    End
38732  
38733  ; --- begin Death modules ---
38734    Behavior = SlowDeathBehavior ModuleTag_Death01
38735      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
38736      SinkDelay           = 3000
38737      SinkRate            = 0.5     ; in Dist/Sec
38738      DestructionDelay    = 8000
38739      FX                  = INITIAL FX_GIDie
38740    End
38741    Behavior = SlowDeathBehavior ModuleTag_Death02
38742      DeathTypes          = NONE +CRUSHED +SPLATTED
38743      SinkDelay           = 3000
38744      SinkRate            = 0.5     ; in Dist/Sec
38745      DestructionDelay    = 8000
38746      FX                  = INITIAL FX_GIDieCrushed
38747    End
38748    Behavior = SlowDeathBehavior ModuleTag_Death03
38749      DeathTypes          = NONE +EXPLODED
38750      SinkDelay           = 3000
38751      SinkRate            = 0.5     ; in Dist/Sec
38752      DestructionDelay    = 8000
38753      FX                  = INITIAL FX_GIDie
38754      FlingForce          = 8
38755      FlingForceVariance  = 3
38756      FlingPitch          = 60
38757      FlingPitchVariance  = 10
38758    End
38759    Behavior = SlowDeathBehavior ModuleTag_Death04
38760      DeathTypes          = NONE +BURNED
38761      DestructionDelay    = 0
38762      FX                  = INITIAL FX_GIDie
38763      OCL                 = INITIAL OCL_FlamingInfantry
38764    End
38765    Behavior = SlowDeathBehavior ModuleTag_Death05
38766      DeathTypes          = NONE +POISONED
38767      DestructionDelay    = 0
38768      FX                  = INITIAL FX_GIDie
38769      OCL                 = INITIAL OCL_ToxicInfantry
38770    End
38771  ; --- end Death modules ---
38772  
38773    Behavior = PoisonedBehavior ModuleTag_10
38774      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
38775      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
38776    End
38777   
38778    Geometry = CYLINDER
38779    Scale = 0.95                            ;Scaling
38780    GeometryMajorRadius = 1.0
38781    GeometryMinorRadius = 1.0
38782    GeometryHeight = 8.0
38783    GeometryIsSmall = Yes
38784    Shadow = SHADOW_DECAL
38785    ShadowSizeX = 9;
38786    ShadowSizeY = 9;
38787    ShadowTexture = ShadowI;
38788    BuildCompletion = APPEARS_AT_RALLY_POINT
38789  
38790  End
38791  
38792  ;------------------------------------------------------------------------------
38793  ;************************ Cinematic-only unit *********************************
38794  Object CINE_ChinaAmbassador
38795  
38796      ; *** ART Parameters ***
38797    Draw = W3DModelDraw ModuleTag_01
38798      OkToChangeModelColor = Yes
38799  
38800      DefaultConditionState
38801        Model = NIAMBSDR_SKN
38802        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
38803        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
38804        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
38805        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
38806        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
38807        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
38808        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
38809        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDA
38810        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDB
38811        AnimationMode = ONCE
38812        TransitionKey = TRANS_Stand
38813      End
38814          
38815      ConditionState = MOVING
38816        Animation = NIAMBSDR_SKL.NIAMBSDR_RNA ;***was using WKA but it doesn't exist so I changed it to kill the assert -- Kris 
38817        AnimationMode = LOOP
38818        Flags = RANDOMSTART
38819      End
38820  
38821      ConditionState = MOVING PANICKING
38822        Animation = NIAMBSDR_SKL.NIAMBSDR_RNA 
38823        AnimationMode = LOOP
38824        Flags = RANDOMSTART
38825      End
38826  
38827      ConditionState = DYING
38828        Animation = NIAMBSDR_SKL.NIAMBSDR_DTA
38829        Animation = NIAMBSDR_SKL.NIAMBSDR_DTB
38830        AnimationMode = ONCE
38831        TransitionKey = TRANS_Dying
38832      End
38833  
38834      ;TransitionState = TRANS_Dying TRANS_Flailing
38835      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD1
38836      ;  AnimationMode = ONCE
38837      ;End
38838  
38839      ;ConditionState = DYING EXPLODED_FLAILING
38840      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD2
38841      ;  AnimationMode = LOOP
38842      ;  TransitionKey = TRANS_Flailing
38843      ;End
38844  
38845      ;ConditionState = DYING EXPLODED_BOUNCING
38846      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD3
38847      ;  AnimationMode = ONCE
38848      ;  TransitionKey = None
38849      ;End
38850    End
38851  
38852    ; ***DESIGN parameters ***
38853    Buildable           = No
38854    DisplayName         = OBJECT:Ambassador
38855    Side                = China
38856    EditorSorting       = INFANTRY
38857    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
38858    WeaponSet
38859      ; no weapons
38860    End
38861    ArmorSet
38862      Conditions      = None
38863      Armor           = HumanArmor
38864      DamageFX        = InfantryDamageFX
38865    End
38866    VisionRange = 150
38867    ShroudClearingRange = 150
38868  
38869    ExperienceValue = 50 100 150 400    ;Experience point value at each level
38870    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
38871    IsTrainable = Yes             ;Can gain experience
38872  
38873    ; *** AUDIO Parameters ***
38874    SoundDie = RedGuardVoiceDie
38875  
38876    ; *** ENGINEERING Parameters ***
38877    RadarPriority = UNIT
38878    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
38879  
38880    Body = ActiveBody ModuleTag_02
38881      MaxHealth       = 50.0
38882      InitialHealth   = 50.0
38883    End
38884  
38885    Behavior = AIUpdateInterface ModuleTag_03
38886      AutoAcquireEnemiesWhenIdle = Yes
38887    End
38888    Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
38889    Behavior = PhysicsBehavior ModuleTag_04
38890      Mass = 5.0
38891    End
38892    Behavior = SlowDeathBehavior ModuleTag_05
38893      SinkDelay = 3000
38894      SinkRate = 0.5     ; in Dist/Sec
38895      DestructionDelay = 8000
38896    End
38897   
38898    Behavior = SquishCollide ModuleTag_06
38899      ;nothing
38900    End
38901  
38902    Behavior = FXListDie ModuleTag_07
38903      DeathTypes = ALL -CRUSHED -SPLATTED
38904      DeathFX = FX_GIDie
38905    End
38906    Behavior = FXListDie ModuleTag_08
38907      DeathTypes = NONE +CRUSHED +SPLATTED
38908      DeathFX = FX_GIDieCrushed
38909    End
38910  
38911    Behavior = PoisonedBehavior ModuleTag_09
38912      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
38913      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
38914    End
38915   
38916    Geometry = CYLINDER
38917    Scale = 0.95                            ;Scaling
38918    GeometryMajorRadius = 1.0
38919    GeometryMinorRadius = 1.0
38920    GeometryHeight = 8.0
38921    GeometryIsSmall = Yes
38922    Shadow = SHADOW_DECAL
38923    ShadowSizeX = 9
38924    ShadowSizeY = 9
38925    ShadowTexture = ShadowI
38926    BuildCompletion = APPEARS_AT_RALLY_POINT
38927  
38928  End
38929  
38930  ;------------------------------------------------------------------------------
38931  ;************************* Cinematic-only unit ********************************
38932  Object CINE_GLAInfantryWorker
38933  
38934    ; *** ART Parameters ***
38935    SelectPortrait         = SUWorker_L
38936    ButtonImage            = SUWorker
38937    
38938    ;UpgradeCameo1 = NONE
38939    ;UpgradeCameo2 = NONE
38940    ;UpgradeCameo3 = NONE
38941    ;UpgradeCameo4 = NONE
38942    ;UpgradeCameo5 = NONE
38943  
38944    Draw = W3DModelDraw ModuleTag_01
38945      OkToChangeModelColor = Yes
38946  
38947      DefaultConditionState
38948        HideSubObject = BOX MINED_SKIN
38949        Model         = UIWRKR_SKN
38950        IdleAnimation = UIWRKR_SKL.UIWRKR_STA 0 9
38951        IdleAnimation = UIWRKR_SKL.UIWRKR_IDA
38952        AnimationMode = ONCE
38953        TransitionKey = TRANS_Stand
38954      End
38955  
38956      ConditionState  = MOVING
38957        Animation     = UIWRKR_SKL.UIWRKR_RNA 16
38958        AnimationMode = LOOP
38959        Flags         = RANDOMSTART
38960        TransitionKey = TRANS_Stand
38961        ParticleSysBone = None InfantryDustTrails
38962      End
38963      ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
38964      ; since we flip the bit once we get pretty close to the target. but it looks
38965      ; funky to do the construction animation while moving. 
38966      ; so just use the normal move animation in that case.
38967      AliasConditionState = ACTIVELY_CONSTRUCTING MOVING
38968  
38969      ConditionState = ATTACKING
38970        ShowSubObject = MINED_SKIN
38971        Animation = UIWRKR_SKL.UIWRKR_MS
38972        AnimationMode = LOOP
38973        Flags = RANDOMSTART
38974        TransitionKey = TRANS_MetalDetector
38975      End
38976  
38977      ConditionState = MOVING ATTACKING
38978        ShowSubObject = MINED_SKIN
38979        Animation = UIWRKR_SKL.UIWRKR_MSW 50
38980        AnimationMode = LOOP
38981        Flags = RANDOMSTART
38982        TransitionKey = TRANS_MetalDetector
38983        ParticleSysBone = None InfantryDustTrails
38984      End
38985  
38986      TransitionState = TRANS_Stand TRANS_MetalDetector
38987        ShowSubObject = MINED_SKIN
38988        Animation     = UIWRKR_SKL.UIWRKR_TRB1
38989        AnimationMode = ONCE
38990        AnimationSpeedFactorRange = 2 2
38991      End
38992  
38993      TransitionState = TRANS_MetalDetector TRANS_Stand
38994        ShowSubObject = MINED_SKIN
38995        Animation     = UIWRKR_SKL.UIWRKR_TRB2
38996        AnimationMode = ONCE
38997        AnimationSpeedFactorRange = 2 2
38998      End
38999  
39000      ConditionState = MOVING CARRYING
39001        ShowSubObject = BOX
39002        Animation = UIWRKR_SKL.UIWRKR_CARY 12
39003        AnimationMode = LOOP
39004        Flags = RANDOMSTART
39005        TransitionKey = TRANS_Carry
39006        ParticleSysBone = None InfantryDustTrails
39007      End
39008      ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
39009      ; since we flip the bit once we get pretty close to the target. but it looks
39010      ; funky to do the construction animation while moving. 
39011      ; so just use the normal move animation in that case.
39012      AliasConditionState = ACTIVELY_CONSTRUCTING MOVING CARRYING
39013  
39014      ConditionState = CARRYING
39015        ShowSubObject = BOX
39016        Animation = UIWRKR_SKL.UIWRKR_CARST 30 
39017        AnimationMode = LOOP
39018        Flags = RANDOMSTART
39019        TransitionKey = TRANS_Carry
39020      End
39021  
39022      ConditionState = DYING
39023        Animation = UIWRKR_SKL.UIWRKR_DTA
39024        AnimationMode = ONCE
39025        TransitionKey = TRANS_Dying
39026      End
39027      AliasConditionState = DYING CARRYING
39028  
39029      TransitionState = TRANS_Dying TRANS_Flailing
39030        Animation = UIWRKR_SKL.UIWRKR_ADTE1
39031        AnimationMode = ONCE
39032      End
39033  
39034      ConditionState = DYING EXPLODED_FLAILING
39035        Animation = UIWRKR_SKL.UIWRKR_ADTE2
39036        AnimationMode = LOOP
39037        TransitionKey = TRANS_Flailing
39038      End
39039  
39040      ConditionState = DYING EXPLODED_BOUNCING
39041        Animation = UIWRKR_SKL.UIWRKR_ADTE3
39042        AnimationMode = ONCE
39043        TransitionKey = None
39044      End
39045  
39046      ConditionState  = SPECIAL_CHEERING
39047        Animation     = UIWRKR_SKL.UIWRKR_CHA
39048        AnimationMode = ONCE
39049      End
39050      
39051      ConditionState  = ACTIVELY_CONSTRUCTING
39052        Animation     = UIWRKR_SKL.UIWRKR_BDA
39053        AnimationMode = LOOP
39054        TransitionKey = TRANS_Constructing
39055      End
39056      AliasConditionState = ACTIVELY_CONSTRUCTING CARRYING
39057  
39058      ; --------------------
39059  
39060      TransitionState = TRANS_Stand TRANS_Carry
39061        ShowSubObject = BOX
39062        Animation     = UIWRKR_SKL.UIWRKR_PIK
39063        AnimationMode = ONCE
39064      End
39065  
39066      TransitionState = TRANS_Carry TRANS_Stand
39067        ShowSubObject = BOX
39068        Animation     = UIWRKR_SKL.UIWRKR_PIK
39069        AnimationMode = ONCE_BACKWARDS
39070        Flags         = START_FRAME_LAST
39071      End
39072      
39073      TransitionState = TRANS_Stand TRANS_Constructing
39074        Animation     = UIWRKR_SKL.UIWRKR_TRA1
39075        AnimationMode = ONCE
39076      End
39077  
39078      TransitionState = TRANS_Constructing TRANS_Stand
39079        Animation     = UIWRKR_SKL.UIWRKR_TRA2
39080        AnimationMode = ONCE
39081      End
39082    End
39083  
39084    ; ***DESIGN parameters ***
39085    DisplayName = OBJECT:Worker
39086    Side = GLA
39087    EditorSorting = INFANTRY
39088    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
39089  
39090  
39091    WeaponSet
39092      Conditions = None 
39093      Weapon = PRIMARY None
39094    End
39095    WeaponSet
39096      Conditions = MINE_CLEARING_DETAIL 
39097      Weapon = PRIMARY WorkerMineDisarmingWeapon
39098    End
39099  
39100  
39101    ArmorSet
39102      Conditions      = None
39103      Armor           = HumanArmor
39104      DamageFX        = InfantryDamageFX
39105    End
39106    VisionRange = 100
39107    ShroudClearingRange = 200
39108   ;Prerequisites
39109   ;  Object = GLABarracks GLASupplyStash ;commented out, or else you can't build from Con Yard as Dozer.
39110   ;End
39111    BuildCost = 200
39112    BuildTime = 5.0          ;in seconds    
39113    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
39114    CommandSet = GLAWorkerCommandSet
39115  
39116    ; *** AUDIO Parameters ***
39117    VoiceSelect = WorkerVoiceSelect
39118    VoiceMove = WorkerVoiceMove
39119    VoiceAttack = WorkerVoiceMove
39120    SoundDie = WorkerVoiceDie
39121    SoundDieFire = DieByFireGLA
39122    SoundDieToxin = DieByToxinChina
39123    VoiceGuard = WorkerVoiceMove
39124    VoiceFear = WorkerVoiceFear
39125    VoiceTaskComplete = WorkerVoiceBuildComplete
39126    UnitSpecificSounds
39127      VoiceEnter = WorkerVoiceMove
39128      VoiceEnterHostile = WorkerVoiceMove
39129      VoiceGarrison     = WorkerVoiceGarrison
39130      VoiceCreate       = WorkerVoiceCreate
39131      VoiceSupply       = WorkerVoiceSupply
39132      VoiceNoBuild      = WorkerVoiceBuildNot
39133      VoiceRepair       = WorkerVoiceRepair
39134      VoiceDisarm       = WorkerVoiceClearMine
39135      VoiceBuildResponse = WorkerVoiceBuild
39136      VoiceGetHealed      = WorkerVoiceMove
39137  
39138    End
39139  
39140    ; *** ENGINEERING Parameters ***
39141    RadarPriority = UNIT
39142    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER DOZER HARVESTER SCORE
39143  
39144    Body = ActiveBody ModuleTag_02
39145      MaxHealth       = 100.0
39146      InitialHealth   = 100.0
39147    End
39148  
39149    Behavior = WorkerAIUpdate ModuleTag_03
39150      RepairHealthPercentPerSecond  = 2%    ; % of max health to repair each second
39151      BoredTime                     = 5000  ; in milliseconds
39152      BoredRange                    = 150   ; when bored, we look this far away to do something 
39153      MaxBoxes                      = 1
39154      SupplyCenterActionDelay       = 150 ;400 ; ms for whole thing (one transaction)
39155      SupplyWarehouseActionDelay    = 150 ;400 ;ms per box (many small transactions)
39156      SupplyWarehouseScanDistance   = 700 ;350 ; Max distance to look for a warehouse, or we go home.  (Direct dock command on warehouse overrides, and no max on Center Scan)
39157      SuppliesDepletedVoice = WorkerVoiceSuppliesDepleted
39158      ; the only "enemies" that workers can acquire are mines, to be disarmed...
39159      AutoAcquireEnemiesWhenIdle    = Yes
39160    End
39161    Locomotor = SET_NORMAL CINE_FastHumanLocomotor
39162    Behavior = PhysicsBehavior ModuleTag_04
39163      Mass = 5.0
39164    End
39165   
39166    Behavior = SquishCollide ModuleTag_06
39167      ;nothing
39168    End
39169  
39170  ; --- begin Death modules ---
39171    Behavior = SlowDeathBehavior ModuleTag_Death01
39172      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
39173      SinkDelay           = 3000
39174      SinkRate            = 0.5     ; in Dist/Sec
39175      DestructionDelay    = 8000
39176      FX                  = INITIAL FX_GIDie
39177    End
39178    Behavior = SlowDeathBehavior ModuleTag_Death02
39179      DeathTypes          = NONE +CRUSHED +SPLATTED
39180      SinkDelay           = 3000
39181      SinkRate            = 0.5     ; in Dist/Sec
39182      DestructionDelay    = 8000
39183      FX                  = INITIAL FX_GIDieCrushed
39184    End
39185    Behavior = SlowDeathBehavior ModuleTag_Death03
39186      DeathTypes          = NONE +EXPLODED
39187      SinkDelay           = 3000
39188      SinkRate            = 0.5     ; in Dist/Sec
39189      DestructionDelay    = 8000
39190      FX                  = INITIAL FX_GIDie
39191      FlingForce          = 8
39192      FlingForceVariance  = 3
39193      FlingPitch          = 60
39194      FlingPitchVariance  = 10
39195    End
39196    Behavior = SlowDeathBehavior ModuleTag_Death04
39197      DeathTypes          = NONE +BURNED
39198      DestructionDelay    = 0
39199      FX                  = INITIAL FX_GIDie
39200      OCL                 = INITIAL OCL_FlamingInfantry
39201    End
39202    Behavior = SlowDeathBehavior ModuleTag_Death05
39203      DeathTypes          = NONE +POISONED
39204      DestructionDelay    = 0
39205      FX                  = INITIAL FX_GIDie
39206      OCL                 = INITIAL OCL_ToxicInfantry
39207    End
39208  ; --- end Death modules ---
39209  
39210    Behavior = StealthDetectorUpdate ModuleTag_12
39211      DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
39212      ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
39213      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
39214      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
39215      ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
39216    End
39217  
39218    Behavior = PoisonedBehavior ModuleTag_13
39219      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
39220      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
39221    End
39222   
39223    Geometry = CYLINDER
39224    Scale = 0.95                            ;Scaling
39225    GeometryMajorRadius = 1.0
39226    GeometryMinorRadius = 1.0
39227    GeometryHeight = 8.0
39228    GeometryIsSmall = Yes
39229    Shadow = SHADOW_DECAL
39230    ShadowSizeX = 9;
39231    ShadowSizeY = 9;
39232    ShadowTexture = ShadowI;
39233    BuildCompletion = APPEARS_AT_RALLY_POINT
39234  
39235  End
39236  ;------------------------------------------------------------------------------
39237  ;--- Being used to spawn a Cinematic Pilot for the USA02 intro.
39238  Object CINE_AmericaVehicleComanche02
39239  
39240    ; *** ART Parameters ***
39241    SelectPortrait         = SACCommanche_L
39242    ButtonImage            = SACCommanche
39243    
39244    UpgradeCameo1 = Upgrade_ComancheRocketPods
39245    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
39246    ;UpgradeCameo3 = NONE
39247    ;UpgradeCameo4 = NONE
39248    ;UpgradeCameo5 = NONE
39249    
39250    Draw = W3DModelDraw ModuleTag_01
39251  
39252      DefaultConditionState
39253        Model                           = AVComanche
39254        HideSubObject                   = MissileUpgrade
39255        Animation                       = AVComanche.AVComanche
39256        AnimationMode                   = LOOP
39257        WeaponMuzzleFlash               = PRIMARY TurretFX
39258        WeaponFireFXBone                = PRIMARY Muzzle
39259        WeaponFireFXBone                = SECONDARY Muzzle
39260        WeaponLaunchBone  = SECONDARY Muzzle
39261      End
39262  
39263      ConditionState = REALLYDAMAGED
39264        Model                           = AVComanche_d
39265        Animation                       = AVComanche_d.AVComanche_d
39266        AnimationMode                   = LOOP
39267      End
39268  
39269      ConditionState = WEAPONSET_PLAYER_UPGRADE
39270        ShowSubObject                   = MissileUpgrade
39271        Animation                       = AVComanche.AVComanche
39272        AnimationMode                   = LOOP
39273        WeaponFireFXBone                = TERTIARY WeaponB
39274        WeaponLaunchBone  = TERTIARY WeaponB
39275      End
39276  
39277      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
39278        Model                           = AVComanche_d
39279        ShowSubObject                   = MissileUpgrade
39280        Animation                       = AVComanche_d.AVComanche_d
39281        AnimationMode                   = LOOP
39282        WeaponFireFXBone                = TERTIARY WeaponB
39283        WeaponLaunchBone  = TERTIARY WeaponB
39284      End
39285  
39286      ConditionState = RUBBLE
39287        Model                           = AVComanche_d
39288        Animation                       = AVComanche_d.AVComanche_d
39289        AnimationMode                   = LOOP
39290      End
39291  
39292      ConditionState = RUBBLE SPECIAL_DAMAGED
39293        Model                           = AVComanche_d
39294        HideSubObject                   = AVComanche_Prop
39295      End
39296  
39297      OkToChangeModelColor = Yes
39298    End
39299  
39300    ; ***DESIGN parameters ***
39301    DisplayName         = OBJECT:Comanche
39302    EditorSorting       = VEHICLE
39303    Side                = America
39304    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
39305    VisionRange         = 400.0 
39306    ShroudClearingRange = 600
39307    Prerequisites
39308      Object            = AmericaAirfield
39309    End
39310  
39311    WeaponSet
39312      Conditions          = None 
39313      ; -----
39314      Weapon              = PRIMARY     Comanche20mmCannonWeapon
39315      PreferredAgainst    = PRIMARY     INFANTRY
39316      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
39317      ; -----
39318      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
39319      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
39320      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
39321      ; -----
39322      Weapon              = TERTIARY    NONE
39323    End
39324    WeaponSet
39325      Conditions          = PLAYER_UPGRADE 
39326      ; -----
39327      Weapon              = PRIMARY     Comanche20mmCannonWeapon
39328      PreferredAgainst    = PRIMARY     INFANTRY
39329      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
39330      ; -----
39331      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
39332      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
39333      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
39334      ; -----
39335      Weapon              = TERTIARY    ComancheRocketPodWeapon
39336      AutoChooseSources   = TERTIARY    NONE
39337    End
39338    ArmorSet
39339      Conditions      = None
39340      Armor           = ComancheArmor
39341      DamageFX        = None
39342    End
39343    BuildCost           = 1500
39344    BuildTime           = 10              ; in seconds  
39345    ExperienceValue     = 50 50 100 200   ; Experience point value at each level
39346    ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
39347    IsTrainable         = Yes             ; Can gain experience
39348    CommandSet          = AmericaVehicleComancheCommandSet
39349  
39350    ; *** AUDIO Parameters ***
39351    VoiceSelect     = ComancheVoiceSelect
39352    VoiceMove       = ComancheVoiceMove
39353    VoiceGuard      = ComancheVoiceMove
39354    VoiceAttack     = ComancheVoiceAttack
39355    SoundAmbient    = ComancheAmbientLoop
39356    SoundAmbientRubble    = NoSound
39357    SoundDie        = ComancheVoiceFalling
39358    UnitSpecificSounds
39359      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
39360      VoiceCreate   = ComancheVoiceCreate
39361      SoundEject    = PilotSoundEject
39362      VoiceEject    = PilotVoiceEject
39363      Afterburner   = RaptorAfterburner
39364      VoiceGarrison = ComancheVoiceMove
39365      TurretMoveStart = NoSound
39366      TurretMoveLoop  = NoSound
39367    End
39368  
39369  
39370    ; *** ENGINEERING Parameters ***
39371    RadarPriority   = UNIT
39372    KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
39373  
39374    Behavior = WeaponSetUpgrade ModuleTag_02
39375      TriggeredBy = Upgrade_ComancheRocketPods
39376    End
39377    Behavior = ExperienceScalarUpgrade ModuleTag_03
39378      TriggeredBy = Upgrade_AmericaAdvancedTraining
39379      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
39380    End
39381  
39382    Body = ActiveBody ModuleTag_04
39383      MaxHealth       = 220.0
39384      InitialHealth   = 220.0
39385    End
39386  
39387    Behavior = FXListDie ModuleTag_05
39388      DeathFX = FX_HelicopterStartDeath
39389    End
39390  
39391    Behavior = JetAIUpdate ModuleTag_06
39392      MinHeight                     = 5
39393      NeedsRunway                   = No
39394      KeepsParkingSpaceWhenAirborne = No
39395      AutoAcquireEnemiesWhenIdle    = Yes
39396      ; note that comanches do not return to base when idle
39397      
39398      ; this is a bit of a trick... normally, units cannot move-and-fire at
39399      ; the same time. we need the comanche to be able to. so we give it
39400      ; a "turret" (invisible) and put the two main weapons on it, but with
39401      ; no turn rate. voila!
39402      Turret
39403        TurretTurnRate = 0      ; this "turret" does not turn
39404        TurretPitchRate = 0     ; nor does it pitch
39405        ControlledWeaponSlots = PRIMARY SECONDARY
39406      End
39407  
39408    End
39409    Locomotor = SET_NORMAL  ComancheLocomotor
39410    Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
39411  
39412    Behavior = PhysicsBehavior ModuleTag_07
39413      Mass = 50.0
39414    End
39415    Behavior = HelicopterSlowDeathBehavior ModuleTag_08
39416      DestructionDelay                = 99999999        ; the destruction delay
39417      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
39418      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
39419      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
39420      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
39421      SoundDeathLoop                  = ComancheDamagedLoop
39422      MinSelfSpin                     = 100                     ; in degrees per second
39423      MaxSelfSpin                     = 300                     ; in degrees per second
39424      SelfSpinUpdateDelay             = 100             ; in milliseconds
39425      SelfSpinUpdateAmount            = 10             ; in degrees   
39426      FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
39427      MinBladeFlyOffDelay             = 1500            ; in milliseconds
39428      MaxBladeFlyOffDelay             = 1500            ; in milliseconds
39429      AttachParticle                  = SootySmokeTrail
39430      AttachParticleBone              = Propeller02
39431      BladeObjectName                 = ComancheBlades
39432      BladeBoneName                   = Propeller01    
39433      ; Most things that eject pilots do so immediately upon death,
39434      ; via use of EjectPilotDie, but Helicopters are a special case...
39435      ; they need to do so after their blades are ejected. 
39436      OCLEjectPilot                   = OCL_CINE_EjectPilotViaParachute
39437      FXBlade                         = FX_HelicopterBladeExplosion
39438      OCLBlade                        = OCL_HelicopterBladeExplosion
39439      FXHitGround                     = FX_HelicopterHitGround
39440      OCLHitGround                    = OCL_HelicopterHitGround
39441      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
39442      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
39443      DelayFromGroundToFinalDeath     = 1500
39444      FinalRubbleObject               = ComancheRubbleHull
39445    End
39446  
39447    Behavior = TransitionDamageFX ModuleTag_09
39448      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
39449      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
39450    End
39451  
39452    Behavior = FlammableUpdate ModuleTag_21
39453      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
39454      AflameDamageAmount = 3       ; taking this much damage...
39455      AflameDamageDelay = 500       ; this often.
39456    End
39457  
39458    Geometry = BOX
39459    GeometryMajorRadius = 20.0
39460    GeometryMinorRadius = 3.0
39461    GeometryHeight = 25.0     
39462    GeometryIsSmall = No
39463    Shadow = SHADOW_VOLUME    
39464    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
39465  
39466  End
39467  
39468  ;------------------------------------------------------------------------------
39469  ;------------------------------------------------------------------------------
39470  ; This pilot is being used for USA02, he surrenders as soon as he hits the ground.
39471  Object CINE_AmericaInfantryPilot
39472  
39473    ; *** ART Parameters ***
39474    SelectPortrait         = SAPilot_L
39475    ButtonImage            = SAPilot
39476    
39477    ;UpgradeCameo1 = NONE
39478    ;UpgradeCameo2 = NONE
39479    ;UpgradeCameo3 = NONE
39480    ;UpgradeCameo4 = NONE
39481    ;UpgradeCameo5 = NONE
39482    
39483    Draw = W3DModelDraw ModuleTag_01
39484      OkToChangeModelColor = Yes
39485  
39486      DefaultConditionState
39487        Model = AIRPlt_SKN
39488        IdleAnimation = AIRPlt_SKL.AIRPlt_SST 0 20 
39489        AnimationMode = ONCE
39490        TransitionKey = TRANS_Stand
39491      End
39492      ;AliasConditionState = REALLYDAMAGED
39493  
39494      ConditionState = FREEFALL
39495        Animation = AIRPlt_SKL.AIRPLT_PFL
39496        AnimationMode = ONCE
39497        TransitionKey = TRANS_Falling
39498      End
39499      ;AliasConditionState = FREEFALL REALLYDAMAGED
39500      AliasConditionState = FREEFALL DYING
39501  
39502      ConditionState = PARACHUTING
39503        Animation = AIRPlt_SKL.AIRPlt_PHG
39504        AnimationMode = LOOP
39505        TransitionKey = TRANS_Chute
39506        WaitForStateToFinishIfPossible = TRANS_Falling
39507      End
39508      AliasConditionState = PARACHUTING REALLYDAMAGED
39509      AliasConditionState = PARACHUTING DYING
39510  
39511      ConditionState = MOVING
39512        Animation = AIRPlt_SKL.AIRPlt_RNA 
39513        AnimationMode = LOOP
39514        TransitionKey = TRANS_Move
39515        ParticleSysBone     = None InfantryDustTrails
39516      End
39517      ;AliasConditionState = MOVING REALLYDAMAGED
39518  
39519      ConditionState = DYING
39520        Animation = AIRPlt_SKL.AIRPlt_DTA 
39521        Animation = AIRPlt_SKL.AIRPlt_DTB 
39522        AnimationMode = ONCE
39523        TransitionKey = TRANS_Dying
39524      End
39525      
39526      TransitionState = TRANS_Move TRANS_Stand
39527        Animation = AIRPlt_SKL.AIRPlt_SUR
39528        AnimationMode = ONCE
39529      End
39530      
39531      TransitionState = TRANS_Dying TRANS_Flailing
39532        Animation = AIRPlt_SKL.AIRPlt_ADTE1
39533        AnimationMode = ONCE
39534      End
39535  
39536      ConditionState = DYING EXPLODED_FLAILING
39537        Animation = AIRPlt_SKL.AIRPlt_ADTE2
39538        AnimationMode = LOOP
39539        TransitionKey = TRANS_Flailing
39540      End
39541  
39542      ConditionState = DYING EXPLODED_BOUNCING
39543        Animation = AIRPlt_SKL.AIRPlt_ADTE3
39544        AnimationMode = ONCE
39545        TransitionKey = None
39546      End
39547  
39548      ConditionState = SPECIAL_CHEERING
39549        Animation = AIRPLT_SKL.AIRPLT_CHA
39550        AnimationMode = LOOP
39551      End
39552  
39553      ;@TODO -- MISSING ANIMATION FILE
39554      ;TransitionState = TRANS_Falling TRANS_Chute
39555      ;  Animation = AIRPLT_SKL.AIRPLT_POP
39556      ;  AnimationMode = ONCE
39557      ;  Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
39558      ;End
39559      
39560      TransitionState = TRANS_Chute TRANS_Stand
39561        Animation = AIRPlt_SKL.AIRPlt_SUR
39562        AnimationMode = ONCE
39563      End
39564  
39565    End
39566  
39567    ; ***DESIGN parameters ***
39568    DisplayName = OBJECT:Pilot
39569    Side = America
39570    EditorSorting = INFANTRY
39571    TransportSlotCount = 1               ;how many "slots" we take in a transport (0 == not transportable)
39572    ExperienceValue    = 10 10 10 10 ;Experience point value at each level
39573    ExperienceRequired =  0 1 2 3 ;Experience points needed to gain each level
39574    IsTrainable     = Yes  ;Can gain experience
39575    CommandSet = AmericaInfantryPilotCommandSet
39576  
39577    ArmorSet
39578      Conditions      = None
39579      Armor           = HumanArmor
39580      DamageFX        = InfantryDamageFX
39581    End
39582  
39583    VisionRange = 150
39584    ShroudClearingRange = 300
39585    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
39586  
39587    ; *** AUDIO Parameters ***
39588    VoiceSelect = PilotVoiceSelect
39589    VoiceMove = PilotVoiceMove
39590    VoiceAttack = PilotVoiceMove
39591    SoundDie = PilotVoiceDie
39592    SoundDieFire = DieByFireUSA
39593    SoundDieToxin = DieByToxinUSA
39594    VoiceGarrison = PilotVoiceGarrison
39595    VoiceFear = PilotVoiceFear
39596    UnitSpecificSounds
39597      VoiceEnter = PilotVoiceEnter
39598      VoiceEnterHostile     = PilotVoiceEnter
39599      VoiceGetHealed      = PilotVoiceMove
39600    End
39601  
39602    ; *** ENGINEERING Parameters ***
39603    RadarPriority = UNIT
39604    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY NO_GARRISON SCORE
39605  
39606    Behavior = VeterancyGainCreate ModuleTag_02
39607      ; omit the "ScienceRequired" so that this upgrade always occurs.
39608      ; Pilots should never (repeat, never) be less than VETERAN status.
39609      StartingLevel = VETERAN
39610    End
39611  
39612    Behavior = VeterancyCrateCollide       ModuleTag_03
39613      RequiredKindOf = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
39614      ForbiddenKindOf = DOZER       ; but not to TRANSPORTs or DOZERs!
39615      EffectRange = 0               ; 0=="affect only the thing you collide with"
39616      AddsOwnerVeterancy = Yes      ; we add our own veterancy to the target (rather than just +1 level)
39617      IsPilot = Yes                 ; set the pilot flag because it's different than the veterancy crate and has extra checking
39618    End
39619  
39620    Body = ActiveBody ModuleTag_04
39621      MaxHealth       = 100.0
39622      InitialHealth   = 100.0
39623    End
39624  
39625    Behavior = AIUpdateInterface ModuleTag_05
39626      AutoAcquireEnemiesWhenIdle = Yes
39627    End
39628  
39629    Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
39630      ScanRate = 1000 ; once a second.
39631      ScanRange = 300 ;
39632      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
39633      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
39634    End
39635  
39636    Behavior = PilotFindVehicleUpdate   ModuleTag_07 ; This update will have the unit go to a vehicle. jba 
39637      ScanRate = 1000 ; once a second.
39638      ScanRange = 300 ;
39639      MinHealth = 0.5 ;  don't enter a vehicl less than 50% healthy.
39640    End
39641  
39642    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
39643    Locomotor = SET_NORMAL_UPGRADED BasicHumanLocomotorPlus25
39644  
39645    Behavior = PhysicsBehavior ModuleTag_08
39646      Mass = 5.0
39647    End
39648  
39649    Behavior = LocomotorSetUpgrade ModuleTag_10
39650      TriggeredBy = Upgrade_Veterancy_HEROIC
39651    End
39652  
39653    Behavior = SquishCollide ModuleTag_11
39654      ;nothing
39655    End
39656  
39657  
39658  ; --- begin Death modules ---
39659    Behavior = SlowDeathBehavior ModuleTag_Death01
39660      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
39661      SinkDelay           = 3000
39662      SinkRate            = 0.5     ; in Dist/Sec
39663      DestructionDelay    = 8000
39664      FX                  = INITIAL FX_GIDie
39665    End
39666    Behavior = SlowDeathBehavior ModuleTag_Death02
39667      DeathTypes          = NONE +CRUSHED +SPLATTED
39668      SinkDelay           = 3000
39669      SinkRate            = 0.5     ; in Dist/Sec
39670      DestructionDelay    = 8000
39671      FX                  = INITIAL FX_GIDieCrushed
39672    End
39673    Behavior = SlowDeathBehavior ModuleTag_Death03
39674      DeathTypes          = NONE +EXPLODED
39675      SinkDelay           = 3000
39676      SinkRate            = 0.5     ; in Dist/Sec
39677      DestructionDelay    = 8000
39678      FX                  = INITIAL FX_GIDie
39679      FlingForce          = 8
39680      FlingForceVariance  = 3
39681      FlingPitch          = 60
39682      FlingPitchVariance  = 10
39683    End
39684    Behavior = SlowDeathBehavior ModuleTag_Death04
39685      DeathTypes          = NONE +BURNED
39686      DestructionDelay    = 0
39687      FX                  = INITIAL FX_GIDie
39688      OCL                 = INITIAL OCL_FlamingInfantry
39689    End
39690    Behavior = SlowDeathBehavior ModuleTag_Death05
39691      DeathTypes          = NONE +POISONED
39692      DestructionDelay    = 0
39693      FX                  = INITIAL FX_GIDie
39694      OCL                 = INITIAL OCL_ToxicInfantry
39695    End
39696    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
39697      DeathTypes          = NONE +POISONED_BETA
39698      DestructionDelay    = 0
39699      FX                  = INITIAL FX_GIDie
39700      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
39701    End
39702  ; --- end Death modules ---
39703  
39704    Behavior = PoisonedBehavior ModuleTag_14
39705      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
39706      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
39707    End
39708   
39709    Geometry = CYLINDER
39710    Scale = 0.95                            ;Scaling
39711    GeometryMajorRadius = 1.0
39712    GeometryMinorRadius = 1.0
39713    GeometryHeight = 8.0
39714    GeometryIsSmall = Yes
39715    Shadow = SHADOW_DECAL
39716    ShadowSizeX = 9;
39717    ShadowSizeY = 9;
39718    ShadowTexture = ShadowI;
39719    BuildCompletion = APPEARS_AT_RALLY_POINT
39720  
39721  End
39722  
39723  ;------------------------------------------------------------------------------
39724  ;Shippack
39725  Object AmericaVehicleHover
39726  
39727  
39728    SelectPortrait = T2
39729    ButtonImage    = T2
39730  
39731    UpgradeCameo1 = Upgrade_SeaRepair
39732    UpgradeCameo2 = Upgrade_SeaArmour
39733    ;UpgradeCameo3 = NONE
39734    ;UpgradeCameo4 = NONE
39735    ;UpgradeCameo5 = NONE
39736  
39737    ; *** ART Parameters ***
39738    Draw              = W3DModelDraw ModuleTag_01
39739      OkToChangeModelColor = Yes
39740      ConditionState  = NONE
39741        Model         = AVAMPHIB
39742  
39743        Animation     = AVAMPHIB.AVAMPHIB ; fans off
39744        AnimationMode = MANUAL
39745        Flags         = START_FRAME_FIRST
39746      End
39747  
39748      ConditionState  = OVER_WATER
39749        Model         = AVAMPHIB
39750        ParticleSysBone = TreadFX01 AmphibWaveRest
39751        Animation     = AVAMPHIB.AVAMPHIB ; fans off
39752        AnimationMode = MANUAL
39753        Flags         = START_FRAME_FIRST
39754      End
39755  
39756      ConditionState  = MOVING
39757        Model         = AVAMPHIB
39758  ;      ParticleSysBone = Exhaust01 SteamVent ;Want turned off until better solution or final cut solution is reached
39759  ;      ParticleSysBone = Exhaust02 SteamVent
39760         ParticleSysBone = Mist01 AmphibDirt
39761  ;      ParticleSysBone = Mist01 AmphibDirtClods
39762  
39763  ;      ParticleSysBone = TreadFX01 RocketBuggyDust
39764  
39765        Animation     = AVAMPHIB.AVAMPHIB ; fans on
39766        AnimationMode = LOOP
39767        Flags         = START_FRAME_FIRST
39768      End
39769      ConditionState  = MOVING OVER_WATER
39770        Model         = AVAMPHIB
39771  ;      ParticleSysBone = Exhaust01 SteamVent
39772  ;      ParticleSysBone = Exhaust02 SteamVent
39773  
39774        ParticleSysBone = Mist01 AmphibMist
39775        ParticleSysBone = Mist02 AmphibMist
39776        ParticleSysBone = Mist03 AmphibMistSide
39777        ParticleSysBone = Mist04 AmphibMistSide
39778        ParticleSysBone = TreadFX01 AmphibWave
39779        ParticleSysBone = TreadFX02 AmphibWave
39780        Animation     = AVAMPHIB.AVAMPHIB ; fans on
39781        AnimationMode = LOOP
39782        Flags         = START_FRAME_FIRST
39783      End
39784    End
39785  
39786    ; The exit door
39787    Draw = W3DModelDraw ModuleTag_02
39788      DefaultConditionState
39789        Model         = AVAMPHIB_A
39790        Animation     = AVAMPHIB_A.AVAMPHIB_A
39791        AnimationMode = MANUAL
39792        Flags         = START_FRAME_FIRST
39793      End
39794      ConditionState  = DOOR_1_OPENING
39795        Model         = AVAMPHIB_A
39796        Animation     = AVAMPHIB_A.AVAMPHIB_A
39797        AnimationMode = ONCE
39798        Flags         = START_FRAME_FIRST
39799      End
39800      ConditionState  = DOOR_1_CLOSING
39801        Model         = AVAMPHIB_A1
39802        Animation     = AVAMPHIB_A1.AVAMPHIB_A1
39803        AnimationMode = ONCE
39804        Flags         = START_FRAME_FIRST
39805      End
39806    End
39807  
39808    VoiceSelect     = ChinookVoiceSelect
39809    ; ***DESIGN parameters ***
39810    DisplayName       = OBJECT:AmphibiousTransport
39811    Side              = America
39812    EditorSorting     = VEHICLE
39813    CommandSet        = HoverCommandSet
39814  
39815    
39816    ArmorSet
39817      Armor           = TruckArmor
39818      DamageFX        = DefaultDamageFX
39819    End
39820  
39821    WeaponSet
39822      Conditions      = None
39823      Weapon          = PRIMARY None
39824    End
39825    BuildCost = 1000
39826    BuildTime = 30.0
39827    VisionRange       = 150
39828    Prerequisites
39829      Object = AmericaWarFactory
39830      Object = AmericaStrategyCenter
39831      Science = SCIENCE_StealthFighter
39832    End
39833    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
39834    CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
39835  
39836    ; *** AUDIO Parameters ***
39837    SoundMoveLoop = AmphibiousTransportMoveLoop
39838  
39839    ; *** ENGINEERING Parameters ***  
39840    RadarPriority          = UNIT
39841    KindOf            = SELECTABLE VEHICLE TRANSPORT
39842  
39843    Body              = ActiveBody ModuleTag_03
39844      MaxHealth       = 500.0
39845      InitialHealth   = 500.0
39846    End
39847  
39848    Behavior = MaxHealthUpgrade ModuleTag_09
39849      TriggeredBy   = Upgrade_SeaArmour
39850      AddMaxHealth  = 250.0
39851      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
39852    End
39853  
39854    Behavior = AutoHealBehavior ModuleTag_05
39855      HealingAmount = 3
39856      HealingDelay = 500 ; msec
39857      TriggeredBy = Upgrade_SeaRepair
39858    End
39859  
39860    Behavior              = TransportContain ModuleTag_04
39861      Slots               = 9
39862      AllowInsideKindOf   = INFANTRY VEHICLE
39863      DoorOpenTime        = 2000
39864      ScatterNearbyOnExit = No ; I have bones for exiting
39865    End 
39866    Behavior          = PhysicsBehavior ModuleTag_05
39867      Mass            = 30.0
39868    End
39869    Behavior = TransportAIUpdate ModuleTag_06
39870      ;<NO DATA>
39871    End
39872    Locomotor         = SET_NORMAL BasicAmphibiousLocomotor
39873    Behavior               = DestroyDie ModuleTag_07
39874      ;<NO DATA>
39875    End
39876    Behavior               = CreateObjectDie ModuleTag_08
39877      DeathTypes = ALL
39878      CreationList    = OCL_GenericCarExplode
39879    End
39880    Behavior               = FXListDie ModuleTag_09
39881      DeathTypes = ALL -FLOODED
39882      DeathFX         = FX_GenericCarExplode
39883    End
39884  
39885    Behavior = FlammableUpdate ModuleTag_21
39886      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
39887      AflameDamageAmount = 5       ; taking this much damage...
39888      AflameDamageDelay = 500       ; this often.
39889    End
39890  
39891    Behavior = SlowDeathBehavior ModuleTag_16
39892      ProbabilityModifier = 25
39893      DestructionDelay = 200
39894      DestructionDelayVariance = 100
39895      OCL = FINAL    OCL_FirestormSmall
39896      FX  = FINAL    WeaponFX_NapalmMissileDetonation
39897    End
39898  
39899    Geometry            = BOX
39900    Scale = 1.0                            ;Scaling
39901    GeometryIsSmall     = No
39902    GeometryMajorRadius = 23.0
39903    GeometryMinorRadius = 17.0
39904    GeometryHeight      = 20.0
39905    Shadow              = SHADOW_VOLUME
39906  
39907  End
39908  
39909  ;------------------------------------------------------------------------------
39910  Object ChinaVehicleBattleShip
39911  
39912    SelectPortrait = T1
39913    ButtonImage    = T1
39914  
39915    UpgradeCameo1 = Upgrade_SeaRepair
39916    UpgradeCameo2 = Upgrade_SeaArmour
39917    ;UpgradeCameo3 = NONE
39918    ;UpgradeCameo4 = NONE
39919    ;UpgradeCameo5 = NONE
39920  
39921    ; *** ART Parameters ***
39922    Draw                   = W3DModelDraw ModuleTag_01
39923      OkToChangeModelColor = Yes
39924      InitialRecoilSpeed   = 120
39925      MaxRecoilDistance    = 8
39926      RecoilSettleSpeed    = 6
39927  
39928      ConditionState       = NONE
39929        Model              = nvhuangfeng
39930        Animation          = nvhuangfeng.nvhuangfeng
39931        AnimationMode      = LOOP
39932  
39933        Turret             = Turret01
39934        WeaponFireFXBone   = PRIMARY MUZZLE
39935        WeaponMuzzleFlash  = PRIMARY MUZZLEFX
39936        WeaponLaunchBone   = PRIMARY MUZZLE
39937        WeaponFireFXBone  = SECONDARY WEAPONA
39938        WeaponLaunchBone   = SECONDARY WEAPONA
39939  
39940        ParticleSysBone = Smoke01 SteamVent
39941      End
39942  
39943  
39944      ConditionState       = OVER_WATER
39945        Model              = nvhuangfeng
39946        Animation          = nvhuangfeng.nvhuangfeng
39947        AnimationMode      = LOOP
39948  
39949        Turret             = Turret01
39950        WeaponFireFXBone   = PRIMARY MUZZLE
39951        WeaponMuzzleFlash  = PRIMARY MUZZLEFX
39952        WeaponLaunchBone   = PRIMARY MUZZLE
39953        WeaponFireFXBone  = SECONDARY WEAPONA
39954        WeaponLaunchBone   = SECONDARY WEAPONA
39955  
39956        ParticleSysBone = Smoke01 SteamVent
39957      End
39958  
39959      ConditionState       = MOVING OVER_WATER
39960        Model              = nvhuangfeng
39961        Animation          = nvhuangfeng.nvhuangfeng
39962        AnimationMode      = LOOP
39963  
39964        Turret             = Turret01
39965  
39966        WeaponFireFXBone   = PRIMARY MUZZLE
39967        WeaponMuzzleFlash  = PRIMARY MUZZLEFX
39968        WeaponLaunchBone   = PRIMARY MUZZLE
39969        WeaponFireFXBone  = SECONDARY WEAPONAFX
39970        WeaponLaunchBone   = SECONDARY WEAPONA
39971  
39972        ParticleSysBone = Mist01 AmphibMistSide
39973  
39974        ParticleSysBone = TreadFX01 AmphibWave
39975        ParticleSysBone = TreadFX02 AmphibWave
39976        ParticleSysBone = TreadFX03 AmphibWave
39977        ParticleSysBone = TreadFX04 AmphibWave
39978  
39979        ParticleSysBone = Smoke01 SteamVent
39980        ParticleSysBone = Smoke02 SteamVent
39981      End
39982    End
39983  
39984    VoiceSelect = OverlordTankVoiceSelect
39985  
39986   
39987    ; ***DESIGN parameters ***
39988    DisplayName            = OBJECT:Battleship
39989    Side                   = GLA
39990    EditorSorting          = VEHICLE
39991    TransportSlotCount     = 9                 ;how many "slots" we take in a transport (0 == not transportable)
39992    WeaponSet
39993      Conditions           = None
39994      Weapon               = PRIMARY     MLRSRocket
39995      PreferredAgainst     = PRIMARY         NONE
39996   
39997    End
39998  
39999    ArmorSet
40000      Conditions           = None
40001      ;Armor                = InvulnerableArmor
40002      Armor = TankDamage
40003      DamageFX = TankDamageFX
40004    End
40005    BuildCost = 2000
40006    BuildTime = 30.0
40007    VisionRange            = 400
40008    ShroudClearingRange = 450
40009    Prerequisites
40010      Object = GLAArmsDealer
40011      Object = GLAPalace
40012    End
40013    CommandSet             = BattleShipCommandSetFabius
40014  
40015    ; *** AUDIO Parameters ***
40016    SoundAmbient           = BattleshipAmbientLoop
40017    VoiceSelect = OverlordTankVoiceSelect
40018    UnitSpecificSounds
40019      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
40020      TurretMoveLoop       = TurretMoveLoop
40021    End
40022  
40023    ; *** ENGINEERING Parameters ***
40024    RadarPriority          = UNIT
40025    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE
40026  
40027    Body = ActiveBody ModuleTag_02
40028      MaxHealth            = 2000.0
40029      InitialHealth        = 2000.0
40030    End
40031  
40032    Behavior = MaxHealthUpgrade ModuleTag_09
40033      TriggeredBy   = Upgrade_SeaArmour
40034      AddMaxHealth  = 1000.0
40035      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
40036    End
40037  
40038    Behavior = AutoHealBehavior ModuleTag_05
40039      HealingAmount = 7
40040      HealingDelay = 500 ; msec
40041      TriggeredBy = Upgrade_SeaRepair
40042    End
40043  
40044    Behavior = AIUpdateInterface ModuleTag_03
40045      Turret
40046        TurretTurnRate     = 160
40047        TurretPitchRate    = 80
40048        FirePitch          = 12            ; Instead of aiming pitchwise at the target, it will aim here
40049        AllowsPitch        = Yes
40050        RecenterTime       = 5000       ; how long to wait during idle before recentering
40051        ControlledWeaponSlots = PRIMARY
40052        NaturalTurretAngle = 180  ; this turret points backwards normally
40053      End
40054      AltTurret
40055        TurretTurnRate     = 160
40056        TurretPitchRate    = 80
40057        FirePitch          = 15          ; Instead of aiming pitchwise at the target, it will aim here
40058        AllowsPitch        = Yes
40059        RecenterTime       = 5000     ; how long to wait during idle before recentering
40060        ControlledWeaponSlots = SECONDARY
40061      End
40062    End
40063    Locomotor = SET_NORMAL ChinaVehicleFrigateLocomotor 
40064  
40065    Behavior               = PhysicsBehavior ModuleTag_04
40066      Mass                 = 5000.0
40067    End
40068  
40069    Behavior = SlowDeathBehavior ModuleTag_16
40070      ProbabilityModifier = 25
40071      DestructionDelay = 200
40072      DestructionDelayVariance = 100
40073      OCL = FINAL    OCL_FirestormSmall
40074      FX  = FINAL    WeaponFX_NapalmMissileDetonation
40075    End
40076  
40077    Geometry               = BOX
40078    GeometryMajorRadius    = 200.0
40079    GeometryMinorRadius    = 20.0
40080    GeometryHeight         = 40     
40081    GeometryIsSmall        = No 
40082    Shadow                 = SHADOW_VOLUME   
40083  
40084  End
40085  
40086  
40087  
40088  ;------------------------------------------------------------------------------
40089  Object ToxinTrooper
40090  ;*** ART Parameters ***
40091  
40092    SelectPortrait = T7
40093    ButtonImage    = T7
40094  
40095  UpgradeCameo1 = Upgrade_GLACamouflage
40096     
40097    Draw = W3DModelDraw ModuleTag_01
40098      OkToChangeModelColor = Yes
40099  
40100      ;NORMAL STANDING
40101      DefaultConditionState
40102        Model = AITECH_SKN
40103        IdleAnimation = AITECH_SKL.AITECH_STA 0 21
40104        ;Regular spice animations
40105        IdleAnimation = AITECH_SKL.AITECH_IDA
40106        IdleAnimation = AITECH_SKL.AITECH_IDB
40107        AnimationMode = ONCE
40108        WeaponLaunchBone = PRIMARY BIOGUNFX
40109        TransitionKey = TRANS_Stand
40110      End
40111  
40112      ; NORMAL ATTACK
40113      ConditionState = FIRING_A
40114        Animation = AITECH_SKL.AITECH_STA
40115        AnimationMode = LOOP
40116        TransitionKey = TRANS_FiringA
40117      End
40118      AliasConditionState = BETWEEN_FIRING_SHOTS_A
40119      AliasConditionState = RELOADING_A
40120      AliasConditionState = FIRING_A REALLYDAMAGED
40121      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
40122      AliasConditionState = RELOADING_A REALLYDAMAGED
40123  
40124  
40125      ConditionState = MOVING FIRING_A 
40126        Animation = AITECH_SKL.AITECH_WKB 15
40127        AnimationMode = LOOP
40128        Flags = RANDOMSTART
40129        TransitionKey = None
40130        ParticleSysBone     = None InfantryDustTrails
40131      End
40132      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
40133      AliasConditionState = MOVING RELOADING_A
40134  
40135      ConditionState = MOVING
40136        Animation = AITECH_SKL.AITECH_WKA 15
40137        AnimationMode = LOOP
40138        Flags = RANDOMSTART
40139        TransitionKey = None
40140        ParticleSysBone     = None InfantryDustTrails
40141      End
40142  
40143      ConditionState = DYING
40144        Animation = AITECH_SKL.AITECH_DTA
40145        Animation = AITECH_SKL.AITECH_DTB
40146        AnimationMode = ONCE
40147        TransitionKey = TRANS_Dying
40148      End
40149  
40150      TransitionState = TRANS_Dying TRANS_Flailing
40151        Animation = AITECH_SKL.AITECH_ADTD1
40152        AnimationMode = ONCE
40153      End
40154  
40155      ConditionState = DYING EXPLODED_FLAILING
40156        Animation = AITECH_SKL.AITECH_ADTD2
40157        AnimationMode = LOOP
40158        TransitionKey = TRANS_Flailing
40159      End
40160  
40161      ConditionState = DYING EXPLODED_BOUNCING
40162        Animation = AITECH_SKL.AITECH_ADTD3
40163        AnimationMode = ONCE
40164        TransitionKey = None
40165      End
40166  
40167      ConditionState = SPECIAL_CHEERING
40168        Animation = AITECH_SKL.AITECH_CHA
40169        AnimationMode = LOOP
40170      End
40171  
40172      ;PARACHUTING ANIMATIONS
40173      ConditionState = FREEFALL
40174        Animation = AITECH_SKL.AITECH_PFL
40175        AnimationMode = LOOP
40176        TransitionKey = TRANS_Falling
40177      End
40178      AliasConditionState = FREEFALL REALLYDAMAGED
40179      AliasConditionState = FREEFALL DYING
40180      ConditionState = PARACHUTING
40181        Animation = AITECH_SKL.AITECH_PHG
40182        AnimationMode = LOOP
40183        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
40184        TransitionKey = TRANS_Chute
40185      End
40186      AliasConditionState = PARACHUTING REALLYDAMAGED
40187      AliasConditionState = PARACHUTING DYING
40188      TransitionState = TRANS_Falling TRANS_Chute
40189        Animation = AITECH_SKL.AITECH_POP
40190        AnimationMode = ONCE
40191        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
40192      End
40193      TransitionState = TRANS_Chute TRANS_Stand
40194        Animation = AITECH_SKL.AITECH_PDN
40195        AnimationMode = ONCE
40196      End
40197  
40198    End
40199  
40200    ; ***DESIGN parameters ***
40201    DisplayName         = OBJECT:ToxinTrooper
40202    Side                = GLA
40203    EditorSorting       = INFANTRY
40204    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
40205    
40206    WeaponSet 
40207      ;*** Fully automated and driven by the CleanupHazardUpdate ***
40208      Conditions        = None 
40209      Weapon = PRIMARY DragonTankFlameWeaponUpgraded
40210      Weapon = SECONDARY   ToxinTruckGun
40211    End
40212    ArmorSet
40213      Conditions      = None
40214      Armor           = HazMatHumanArmor
40215      DamageFX        = InfantryDamageFX
40216    End
40217  
40218    VisionRange = 100
40219    ShroudClearingRange = 400
40220    Prerequisites
40221      Object = GLABarracks
40222      Object = GLABlackMarket
40223      Science = SCIENCE_MarauderTank
40224    End
40225    BuildCost = 700
40226    BuildTime = 10.0          ;in seconds  
40227    
40228    ExperienceValue = 50 100 150 400    ;Experience point value at each level
40229    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
40230    IsTrainable = Yes             ;Can gain experience
40231    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
40232    CommandSet          = ToxinTrooperCommandSet
40233  
40234    ; *** AUDIO Parameters ***
40235    VoiceSelect = RebelVoiceSelect
40236    VoiceMove = RebelVoiceMove
40237    VoiceGuard = RebelVoiceMove
40238    VoiceAttack = RebelVoiceAttack
40239    SoundDie = RebelVoiceDie
40240    SoundDieFire = DieByFireGLA
40241    VoiceFear = RebelVoiceFear
40242    UnitSpecificSounds
40243      VoiceCreate = RebelVoiceCreate
40244      VoiceSubdue = RebelVoiceSubdue
40245      VoiceGarrison = RebelVoiceGarrison
40246      VoiceEnter = RebelVoiceMove
40247      VoiceEnterHostile = RebelVoiceMove
40248      VoiceGetHealed      = RebelVoiceMove
40249    End
40250  
40251    ; *** ENGINEERING Parameters ***
40252    RadarPriority = UNIT
40253    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
40254  
40255    Body = ActiveBody ModuleTag_02
40256  
40257      MaxHealth       = 100.0
40258      InitialHealth   = 100.0
40259    End
40260  
40261    Behavior = AIUpdateInterface ModuleTag_03
40262      AutoAcquireEnemiesWhenIdle = Yes
40263    End
40264  
40265  
40266    Locomotor = SET_NORMAL MissileDefenderLocomotor
40267  
40268    Behavior = PhysicsBehavior ModuleTag_04
40269      Mass = 5.0
40270    End
40271   
40272    Behavior = SquishCollide ModuleTag_06
40273      ;nothing
40274    End
40275  
40276    Behavior = StealthUpdate ModuleTag_07
40277      StealthDelay                = 2500 ; msec
40278      StealthForbiddenConditions  = ATTACKING USING_ABILITY
40279      MoveThresholdSpeed          = 3
40280      InnateStealth               = No ;Requires upgrade first
40281      OrderIdleEnemiesToAttackMeUponReveal  = Yes
40282    End
40283  
40284    Behavior = StealthUpgrade ModuleTag_08
40285      TriggeredBy = Upgrade_GLACamouflage
40286    End
40287  
40288    Behavior           = OCLSpecialPower ModuleTag_12
40289      SpecialPowerTemplate = SuperweaponBlackMarketNuke
40290      OCL                  = SUPERWEAPON_BlackMarketNuke
40291      CreateLocation       = CREATE_AT_EDGE_NEAR_SOURCE
40292    End
40293  ; --- begin Death modules ---
40294    Behavior = SlowDeathBehavior ModuleTag_Death01
40295      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
40296      SinkDelay           = 50000
40297      SinkRate            = 0.5     ; in Dist/Sec
40298      DestructionDelay    = 8000000
40299      FX                  = INITIAL FX_GIDie
40300    End
40301    Behavior = SlowDeathBehavior ModuleTag_Death02
40302      DeathTypes          = NONE +CRUSHED +SPLATTED
40303      SinkDelay           = 50000
40304      SinkRate            = 0.5     ; in Dist/Sec
40305      DestructionDelay    = 8000000
40306      FX                  = INITIAL FX_GIDieCrushed
40307    End
40308    Behavior = SlowDeathBehavior ModuleTag_Death03
40309      DeathTypes          = NONE +EXPLODED
40310      SinkDelay           = 50000
40311      SinkRate            = 0.5     ; in Dist/Sec
40312      DestructionDelay    = 8000000
40313      FX                  = INITIAL FX_GIDie
40314      FlingForce          = 8
40315      FlingForceVariance  = 3
40316      FlingPitch          = 60
40317      FlingPitchVariance  = 10
40318    End
40319    Behavior = SlowDeathBehavior ModuleTag_Death04
40320      DeathTypes          = NONE +BURNED
40321      DestructionDelay    = 0
40322      FX                  = INITIAL FX_GIDie
40323      OCL                 = INITIAL OCL_FlamingInfantry
40324    End
40325    Behavior = SlowDeathBehavior ModuleTag_Death05
40326      DeathTypes          = NONE +POISONED
40327      DestructionDelay    = 0
40328      FX                  = INITIAL FX_GIDie
40329      OCL                 = INITIAL OCL_ToxicInfantry
40330    End
40331  ; --- end Death modules ---
40332  
40333    Geometry = CYLINDER
40334    Scale = 0.95                            ;Scaling
40335    GeometryMajorRadius = 1.0
40336    GeometryMinorRadius = 1.0
40337    GeometryHeight = 8.0
40338  
40339    GeometryIsSmall = Yes
40340    Shadow = SHADOW_DECAL
40341    ShadowSizeX = 9;
40342    ShadowSizeY = 9;
40343    ShadowTexture = ShadowI;
40344    BuildCompletion = APPEARS_AT_RALLY_POINT
40345  End
40346  
40347  ;------------------------------------------------------------------------------
40348  Object A10
40349  
40350    ; *** ART Parameters ***
40351    SelectPortrait         = T11
40352    ButtonImage            = T11
40353    
40354    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
40355    ;UpgradeCameo2 = NONE
40356    ;UpgradeCameo3 = NONE
40357    ;UpgradeCameo4 = NONE
40358    ;UpgradeCameo5 = NONE
40359    
40360    Draw                   = W3DModelDraw ModuleTag_01
40361   
40362      DefaultConditionState
40363        Model             = AVWarthog
40364        WeaponMuzzleFlash = PRIMARY MuzzleFX01
40365        WeaponFireFXBone  = PRIMARY Muzzle01
40366        ParticleSysBone = Engine01 JetBlackTrailThin
40367        ParticleSysBone = Engine02 JetBlackTrailThin
40368        ParticleSysBone = Wingtip01 JetContrailThin
40369        ParticleSysBone = Wingtip02 JetContrailThin
40370      End
40371  
40372      ConditionState        = JETEXHAUST
40373        ; exhaust
40374        ParticleSysBone     = Wingtip01 JetContrail
40375        ParticleSysBone     = Wingtip02 JetContrail
40376      End
40377  
40378      ConditionState        = JETEXHAUST JETAFTERBURNER
40379        ; exhaust
40380        ParticleSysBone     = Wingtip01 JetContrail
40381        ParticleSysBone     = Wingtip02 JetContrail
40382        ; afterburner
40383        ShowSubObject       = BurnerFX01 BurnerFX02
40384        ParticleSysBone     = Engine01 JetLenzflare
40385        ParticleSysBone     = Engine02 JetLenzflare
40386      End
40387  
40388      ConditionState      = REALLYDAMAGED
40389        Model             = AVWarthog_D
40390        WeaponMuzzleFlash = PRIMARY MuzzleFX01
40391        WeaponFireFXBone  = PRIMARY Muzzle01
40392      End
40393      
40394      ConditionState        = REALLYDAMAGED JETEXHAUST
40395        Model               = AVWarthog_D
40396        ; damage
40397        ParticleSysBone     = Smoke01 JetSmoke
40398        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
40399        ; exhaust
40400        ParticleSysBone     = Wingtip01 JetContrail
40401        ParticleSysBone     = Wingtip02 JetContrail
40402      End
40403  
40404      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
40405        Model               = AVWarthog_D
40406        ; damage
40407        ParticleSysBone     = Smoke01 JetSmoke
40408        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
40409        ; afterburner
40410        ShowSubObject       = BurnerFX01 BurnerFX02
40411        ParticleSysBone     = Engine01 JetLenzflare
40412        ParticleSysBone     = Engine02 JetLenzflare
40413        ; exhaust
40414        ParticleSysBone     = Wingtip01 JetContrail
40415        ParticleSysBone     = Wingtip02 JetContrail
40416      End
40417  
40418      ConditionState        = RUBBLE
40419        Model               = AVWarthog_D
40420        HideSubObject       = None 
40421        ShowSubObject       = None
40422      End
40423  
40424      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
40425        Model               = AVWarthog_D
40426        ;HideSubObject is needed cause there're inherited from default condition state      
40427        HideSubObject       = None 
40428        ShowSubObject       = None
40429        ParticleSysBone     = Engine01 JetExhaust
40430        ParticleSysBone     = Engine02 JetExhaust
40431        ; exhaust
40432        ParticleSysBone     = Wingtip01 JetContrail
40433        ParticleSysBone     = Wingtip02 JetContrail
40434      End
40435  
40436      OkToChangeModelColor = Yes
40437  
40438    End
40439  
40440    ; ***DESIGN parameters ***
40441    DisplayName             = OBJECT:A10Thunderbolt
40442    EditorSorting           = VEHICLE
40443    Side                    = America
40444    TransportSlotCount      = 0 ;how many "slots" we take in a transport (0 == not transportable)
40445    VisionRange             = 300.0 
40446    ShroudClearingRange     = 400
40447    Prerequisites
40448      Object                = AmericaAirfield
40449      Science               = SCIENCE_PaladinTank
40450    End
40451  
40452    WeaponSet
40453      Conditions            = None 
40454      Weapon                = PRIMARY A10Vulcan
40455      Weapon                = SECONDARY A10Missiles
40456    End
40457  
40458    ArmorSet
40459      Conditions            = None
40460      Armor                 = AirplaneArmor
40461      DamageFX              = None
40462    End
40463  
40464    BuildCost               = 1500
40465    BuildTime               = 15   
40466    ExperienceValue         = 50 50 100 150  ;Experience point value at each level
40467    ExperienceRequired      = 0 100 200 400   ;Experience points needed to gain each level
40468    IsTrainable             = Yes             ;Can gain experience
40469    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
40470    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
40471    CommandSet              = AmericaJetRaptorCommandSet
40472  
40473    ; *** AUDIO Parameters ***
40474    VoiceSelect            = RaptorVoiceSelect
40475    VoiceMove              = RaptorVoiceMove
40476    VoiceAttack            = RaptorVoiceAttack
40477    VoiceAttackAir         = RaptorVoiceAttackAir
40478    VoiceGuard             = RaptorVoiceAirPatrol
40479    SoundDie               = RaptorVoiceFalling
40480    SoundAmbient           = A10ThunderboltAmbientLoop
40481    SoundAmbientRubble     = NoSound
40482    ; For now, it is better to have some sound than no sound cause there is a bug in
40483    ; what triggers the sound move loop sound, and the multiplayer test is only days away
40484    ; SoundMoveLoop          = RaptorAmbientLoop  ; don't want sound while sitting at airfield
40485    ; SoundAmbient           = NoSound
40486    UnitSpecificSounds
40487      VoiceCreate          = RaptorVoiceCreate
40488      SoundEject           = PilotSoundEject
40489      VoiceEject           = PilotVoiceEject
40490      Afterburner          = RaptorAfterburner
40491      VoiceLowFuel         = RaptorVoiceLowFuel
40492      VoiceGarrison        = RaptorVoiceMove
40493    End
40494  
40495    ; *** ENGINEERING Parameters ***
40496    RadarPriority          = UNIT
40497    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
40498    Body                   = ActiveBody ModuleTag_02
40499      MaxHealth            = 300.0
40500      InitialHealth        = 300.0
40501    End
40502  
40503    Behavior = ExperienceScalarUpgrade ModuleTag_04
40504      TriggeredBy = Upgrade_AmericaAdvancedTraining
40505      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
40506    End
40507  
40508    Behavior                          = JetSlowDeathBehavior ModuleTag_03
40509      FXOnGroundDeath                 = FX_JetOnGroundDeath
40510      OCLOnGroundDeath                = OCL_RaptorDeathFinalBlowUp
40511      DestructionDelay                = 99999999; destruction will happen when we
40512      RollRate                        = 0.2
40513      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
40514      PitchRate                       = 0.0
40515      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
40516      FXInitialDeath                  = FX_JetDeathInitial
40517      OCLInitialDeath                 = None
40518      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
40519      FXSecondary                     = FX_JetDeathSecondary
40520      OCLSecondary                    = None
40521      FXHitGround                     = FX_JetDeathHitGround
40522      OCLHitGround                    = OCL_A10DeathHitGround
40523      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
40524      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
40525      OCLFinalBlowUp                  = OCL_A10DeathFinalBlowUp
40526  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
40527    End
40528    Behavior                    = EjectPilotDie ModuleTag_06
40529      ExemptStatus         = HIJACKED
40530      GroundCreationList = OCL_EjectPilotOnGround
40531      AirCreationList = OCL_EjectPilotViaParachute
40532      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
40533    End
40534    
40535    Behavior               = PhysicsBehavior ModuleTag_05
40536      Mass                 = 500.0
40537    End
40538  
40539    Behavior                 = TransitionDamageFX ModuleTag_08
40540      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
40541      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
40542    End
40543  
40544    Behavior = JetAIUpdate ModuleTag_09
40545      OutOfAmmoDamagePerSecond  = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
40546                                      ; note that it's expressed as a percent of max health, not an absolute
40547      TakeoffSpeedForMaxLift    = 100%   ; smaller numbers give more lift sooner when taking off
40548      TakeoffPause              = 500
40549      MinHeight                 = 5
40550      ParkingOffset             = 3             ; scooch it a little forward so the tail doesn't hit the doors
40551      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
40552    End
40553  
40554  
40555    Locomotor = SET_NORMAL A10Thunderbolt2Locomotor
40556    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
40557  
40558  
40559  
40560    Behavior = FlammableUpdate ModuleTag_21
40561      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
40562      AflameDamageAmount = 3       ; taking this much damage...
40563      AflameDamageDelay = 500       ; this often.
40564    End
40565  
40566  
40567    Geometry                 = Box
40568    GeometryIsSmall          = Yes
40569    GeometryMajorRadius      = 14.0
40570    GeometryMinorRadius      = 7.0
40571    GeometryHeight           = 5.0
40572    Shadow                   = SHADOW_VOLUME
40573    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length.
40574  
40575  End
40576  
40577  
40578  ;------------------------------------------------------------------------------
40579  ;--------------------------------------------
40580  ;------------------------------------------------------------------------------
40581  
40582  
40583  ;------------------------------------------------------------------------------
40584  Object NukeTruck
40585  
40586    ; *** ART Parameters ***
40587    SelectPortrait         = SSConvoy_L
40588    ButtonImage            = SSConvoy_L
40589    
40590    ;UpgradeCameo1 = NONE
40591    ;UpgradeCameo2 = NONE
40592    ;UpgradeCameo3 = NONE
40593    ;UpgradeCameo4 = NONE
40594    ;UpgradeCameo5 = NONE
40595    
40596    
40597    Draw = W3DTruckDraw ModuleTag_01
40598      OkToChangeModelColor = Yes
40599      ConditionState  = NONE
40600        Model         = NVConvoy
40601      End
40602      ConditionState  = LOADED
40603        Model         = NVConvoy
40604      End  
40605      CabRotationMultiplier = 1.5
40606  
40607      TrailerRotationMultiplier = 0.2
40608      ;CabBone = CAB
40609      ;TrailerBone = TRAILER
40610      RotationDamping = 0.7
40611  
40612      RightFrontTireBone = Tire01
40613      LeftFrontTireBone = Tire02
40614      ;MidRightFrontTireBone = Tire03
40615      ;MidLeftFrontTireBone = Tire04
40616      ;MidRightMidTireBone = Tire05
40617      ;MidLeftMidTireBone = Tire06
40618      MidRightRearTireBone = Tire07
40619      MidLeftRearTireBone = Tire08
40620      RightRearTireBone = Tire09
40621      LeftRearTireBone = Tire10
40622  
40623      TireRotationMultiplier = 0.2   ; this * speed = rotation.
40624      
40625      TrackMarks = EXTireTrack.tga
40626      Dust = RocketBuggyDust
40627      DirtSpray = RocketBuggyDirtSpray
40628    End
40629  
40630    ; ***DESIGN parameters ***
40631    DisplayName      = OBJECT:NukeTruck
40632    Side = GLA
40633    EditorSorting   = VEHICLE
40634    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
40635    WeaponSet
40636      Conditions      = CARBOMB
40637      Weapon          = PRIMARY NukeTruck
40638    End
40639    ArmorSet
40640      Conditions      = None
40641      Armor           = TruckArmor
40642      DamageFX        = TruckDamageFX
40643    End
40644    BuildCost       = 1800
40645    BuildTime       = 30.0          ;in seconds    
40646    VisionRange     = 150 ; Used in attack move targeting
40647    ShroudClearingRange     = 350
40648  
40649    Prerequisites
40650      Object = GLAArmsDealer
40651      Object = GLABlackMarket
40652      Science               = SCIENCE_TechnicalTraining
40653    End
40654  
40655    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
40656    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
40657    CommandSet = CivilianTransportWithNukeCommandSet
40658  
40659    ; *** AUDIO Parameters ***
40660    VoiceSelect             = SupplyTruckVoiceSelect
40661    VoiceMove               = SupplyTruckVoiceMove
40662    VoiceAttack             = SupplyTruckVoiceAttack
40663    SoundMoveStart          = SupplyTruckMoveStart
40664    SoundMoveStartDamaged   = SupplyTruckMoveStart
40665    UnitSpecificSounds
40666      VoiceCreate           = SupplyTruckVoiceCreate
40667      TruckLandingSound     = NoSound
40668      TruckPowerslideSound  = NoSound
40669    End
40670  
40671    ; *** ENGINEERING Parameters ***
40672    RadarPriority          = UNIT
40673    KindOf            = SELECTABLE CAN_ATTACK VEHICLE SHOW_PORTRAIT_WHEN_CONTROLLED 
40674  
40675    Body              = ActiveBody ModuleTag_02
40676      MaxHealth       = 250.0
40677      InitialHealth   = 250.0
40678    End
40679  
40680    Behavior               = DestroyDie ModuleTag_03
40681                      ;nothing
40682    End
40683    Behavior               = CreateObjectDie ModuleTag_04
40684      DeathTypes = ALL 
40685      CreationList    = OCL_GenericCarExplode
40686    End
40687    Behavior               = CreateObjectDie ModuleTag_05
40688      DeathTypes = NONE +SUICIDED
40689      CreationList    = OCL_BurnedCarHull
40690    End
40691  
40692    Behavior = AIUpdateInterface ModuleTag_06
40693    End
40694    Locomotor       = SET_NORMAL CINE_SupplyTruckLocomotor
40695    Locomotor       = SET_WANDER WanderCarLocomotor
40696    Locomotor       = SET_PANIC PanicCarLocomotor
40697  
40698    Behavior          = PhysicsBehavior ModuleTag_07
40699      Mass            = 30.0
40700    End
40701  
40702    Behavior           = OCLSpecialPower ModuleTag_08
40703      SpecialPowerTemplate = SuperweaponDetonateDirtyNuke
40704      OCL                  = SUPERWEAPON_DetonateDirtyNuke
40705      CreateLocation       = USE_OWNER_OBJECT
40706    End
40707  
40708    Behavior = FlammableUpdate ModuleTag_21
40709      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
40710      AflameDamageAmount = 5       ; taking this much damage...
40711      AflameDamageDelay = 500       ; this often.
40712    End
40713  
40714    Geometry            = BOX
40715    GeometryIsSmall     = NO
40716    GeometryMajorRadius = 20.0
40717    GeometryMinorRadius = 8.0
40718    GeometryHeight      = 16.0
40719    Shadow              = SHADOW_VOLUME
40720  
40721  End
40722  
40723  
40724  ;------------------------------------------------------------------------------
40725  Object PTBoat
40726  
40727    SelectPortrait = T31
40728    ButtonImage    = T31
40729  
40730    ; *** ART Parameters ***
40731    Draw              = W3DModelDraw ModuleTag_01 ; Boat
40732  
40733    ;UpgradeCameo1 = Upgrade_SeaRepair
40734    ;UpgradeCameo1 = Upgrade_SeaArmour
40735    ;UpgradeCameo3 = NONE
40736    ;UpgradeCameo4 = NONE
40737    ;UpgradeCameo5 = NONE
40738    
40739      ConditionState  = NONE
40740        Model         = AVPTBoat
40741      End
40742  
40743      ConditionState  = MOVING
40744        Model         = AVPTBoat
40745      End
40746  
40747      ConditionState  = OVER_WATER
40748        Model         = AVPTBoat
40749      End
40750  
40751      ConditionState  = MOVING OVER_WATER
40752        Model         = AVPTBoat
40753        ParticleSysBone = TreadFX01 AmphibWave
40754      End
40755    End
40756  
40757    Draw = W3DModelDraw             ModuleTag_02 ; Gunner 
40758      OkToChangeModelColor = Yes
40759      AttachToBoneInAnotherModule = Dum_Turret
40760  
40761         DefaultConditionState
40762        Model = UITech_SKN
40763        Turret = Dum-TurManMVR
40764        TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
40765        HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
40766        IdleAnimation = UITech_SKL.UITech_STA 0 6
40767        IdleAnimation = UITech_SKL.UITech_IDA
40768        IdleAnimation = UITech_SKL.UITech_IDB
40769        AnimationMode = ONCE
40770        ShowSubObject = 20Cal
40771        WeaponMuzzleFlash = PRIMARY MuzzleFX01
40772        WeaponFireFXBone = PRIMARY Muzzle01
40773      End
40774  
40775      ConditionState = RUBBLE MOVING TURRET_ROTATE
40776        Animation = None
40777        HideSubObject = UITech-SKN
40778        ShowSubObject = 20Cal
40779        WeaponMuzzleFlash = PRIMARY MuzzleFX01
40780        WeaponFireFXBone = PRIMARY Muzzle01
40781      End
40782  
40783      ConditionState = MOVING
40784        Animation = UITech_SKL.UITech_MVB
40785        AnimationMode = LOOP
40786        ShowSubObject = 20Cal
40787        WeaponMuzzleFlash = PRIMARY MuzzleFX01
40788        WeaponFireFXBone = PRIMARY Muzzle01
40789      End
40790  
40791      ConditionState = TURRET_ROTATE
40792        Animation = UITech_SKL.UITech_TNA
40793        AnimationMode = LOOP
40794        ShowSubObject = 20Cal
40795        WeaponMuzzleFlash = PRIMARY MuzzleFX01
40796        WeaponFireFXBone = PRIMARY Muzzle01
40797      End
40798      AliasConditionState = TURRET_ROTATE MOVING
40799      AliasConditionState = TURRET_ROTATE FIRING_A
40800      AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
40801      AliasConditionState = TURRET_ROTATE RELOADING_A
40802      AliasConditionState = TURRET_ROTATE MOVING FIRING_A
40803      AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
40804      AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
40805  
40806      ConditionState = FIRING_A 
40807        Animation = UITech_SKL.UITech_ATA
40808        AnimationMode = LOOP
40809        ShowSubObject = 20Cal
40810        WeaponMuzzleFlash = PRIMARY MuzzleFX01
40811        WeaponFireFXBone = PRIMARY Muzzle01
40812      End
40813  
40814      ; AliasConditionState is a new keyword that says,
40815      ; "give me another ConditionState exactly like the previous
40816      ; one, except with different conditions". Useful when you
40817      ; have several states that are the same with only different condition bits.
40818      AliasConditionState = BETWEEN_FIRING_SHOTS_A
40819      AliasConditionState = RELOADING_A
40820  
40821      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
40822      AliasConditionState = MOVING FIRING_A
40823      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
40824      AliasConditionState = MOVING RELOADING_A
40825    End  
40826    
40827  
40828    ; ***DESIGN parameters ***
40829    DisplayName       = OBJECT:PTBoat
40830    Side              = GLA
40831    EditorSorting     = VEHICLE
40832    CommandSet        = GenericCommandSet
40833    TransportSlotCount = 4     
40834    
40835    ArmorSet
40836      Armor           = TruckArmor
40837      DamageFX        = DefaultDamageFX
40838    End
40839  
40840    WeaponSet
40841      Conditions      = None
40842      Weapon          = PRIMARY PTGun
40843      Weapon          = SECONDARY PTMissiles
40844    End
40845  
40846    BuildCost = 1800
40847    BuildTime = 20.0
40848    VisionRange         = 400
40849    ShroudClearingRange = 450
40850    Prerequisites
40851      Object = GLAArmsDealer
40852      Object = GLAPalace
40853    End
40854  
40855    CrusherLevel      = 0  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
40856    CrushableLevel    = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
40857  
40858    ; *** AUDIO Parameters ***
40859    SoundMoveLoop = AmphibiousTransportMoveLoop
40860    VoiceSelect = MarauderTankVoiceSelect
40861  
40862    ; *** ENGINEERING Parameters ***  
40863    RadarPriority     = UNIT
40864    KindOf            = SELECTABLE VEHICLE BOAT
40865  
40866    Body              = ActiveBody ModuleTag_03
40867      MaxHealth       = 600.0
40868      InitialHealth   = 600.0
40869    End
40870    
40871  ;  Behavior = MaxHealthUpgrade ModuleTag_09
40872  ;    TriggeredBy   = Upgrade_SeaArmour
40873  ;    AddMaxHealth  = 150.0
40874  ;    ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
40875  ;  End
40876  
40877  ;  Behavior = AutoHealBehavior ModuleTag_05
40878  ;    HealingAmount = 3
40879  ;    HealingDelay = 500 ; msec
40880  ;    TriggeredBy = Upgrade_SeaRepair
40881  ;  End
40882  
40883    Behavior               = DestroyDie ModuleTag_04
40884     End
40885  
40886    Behavior               = CreateObjectDie ModuleTag_05
40887      DeathTypes = ALL
40888      CreationList    = OCL_GenericCarExplode
40889    End
40890    Behavior               = FXListDie ModuleTag_06
40891      DeathTypes = ALL -FLOODED
40892      DeathFX         = FX_GenericCarExplode
40893    End
40894  
40895    Behavior = AIUpdateInterface ModuleTag_07
40896      Turret
40897        TurretTurnRate = 180       ; turn rate, in degrees per sec
40898        NaturalTurretAngle = 0
40899        MinIdleScanAngle = 30      ; in degrees off the natural turret angle
40900        MaxIdleScanAngle = 60      ; in degrees off the natural turret angle
40901        MinIdleScanInterval = 5000 ; in milliseconds
40902        MaxIdleScanInterval = 10000 ; in milliseconds
40903        ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
40904      End
40905      AutoAcquireEnemiesWhenIdle = Yes
40906    End
40907    Locomotor       = SET_NORMAL BasicBoatLocomotor
40908  
40909    Behavior          = PhysicsBehavior ModuleTag_08
40910      Mass            = 30.0
40911    End
40912  
40913    Behavior = FlammableUpdate ModuleTag_21
40914      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
40915      AflameDamageAmount = 5       ; taking this much damage...
40916      AflameDamageDelay = 500       ; this often.
40917    End
40918  
40919    Behavior = FloatUpdate UpdateTag_01
40920      Enabled = No ; 'no' because we dont want to be lifted by this update, just swayed around like a buoy
40921    End
40922  
40923    Geometry            = BOX
40924    Scale = 1.0                            ;Scaling
40925    GeometryIsSmall     = No
40926    GeometryMajorRadius = 48.0
40927    GeometryMinorRadius = 12.0
40928    GeometryHeight      = 14.0
40929    Shadow              = SHADOW_VOLUME
40930  
40931  End
40932  
40933  ;------------------------------------------------------------------------------
40934  
40935  Object AmericaVehicleCV
40936  
40937    ; *** ART Parameters ***
40938    SelectPortrait         = SAPowTruck_L
40939    ButtonImage            = SAPowTruck_L
40940  
40941    ;UpgradeCameo1 = NONE
40942    ;UpgradeCameo2 = NONE
40943    ;UpgradeCameo3 = NONE
40944    ;UpgradeCameo4 = NONE
40945    ;UpgradeCameo5 = NONE
40946  
40947    Draw                   = W3DTruckDraw ModuleTag_01
40948      OkToChangeModelColor = Yes
40949      ConditionState       = NONE
40950        Model              = AVPOWTRUCK
40951      End
40952  
40953      ConditionState       = REALLYDAMAGED
40954        Model              = AVPOWTRUCK_D
40955      End
40956  
40957      ConditionState       = RUBBLE
40958        Model              = AVPOWTruck_D
40959      End
40960  
40961      TrackMarks           = EXTireTrack.tga
40962      Dust                 = RocketBuggyDust
40963      DirtSpray            = RocketBuggyDirtSpray
40964      PowerslideSpray      = RocketBuggyDirtPowerSlide
40965      ; These parameters are only used if the model has a separate suspension, 
40966      ; and the locomotor has HasSuspension = Yes.
40967      LeftFrontTireBone          = Tire01
40968      RightFrontTireBone         = Tire02
40969      MidLeftRearTireBone        = Tire03
40970      MidRightRearTireBone       = Tire05
40971      LeftRearTireBone           = Tire04
40972      RightRearTireBone          = Tire06
40973      TireRotationMultiplier     = 0.2   ; this * speed = rotation.
40974      PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
40975    End
40976  
40977    ; ***DESIGN parameters ***
40978    DisplayName          = OBJECT:Command Vehicle
40979    Side                 = America
40980    EditorSorting        = VEHICLE
40981    TransportSlotCount   = 3                 ;how many "slots" we take in a transport (0 == not transportable)
40982    ArmorSet
40983      Conditions         = None
40984      Armor              = TruckArmor
40985      DamageFX           = TankDamageFX
40986    End
40987  
40988    Buildable = Yes
40989    BuildCost            = 1500
40990    BuildTime            = 20.0          ;in seconds    
40991    VisionRange          = 200
40992    ShroudClearingRange  = 300
40993    Prerequisites
40994      Object = AmericaWarFactory
40995      Object = AmericaStrategyCenter
40996      Science = SCIENCE_StealthFighter
40997    End
40998  
40999    ExperienceValue      = 50 50 50 50    ;Experience point value at each level
41000    ExperienceRequired   = 0 150 450 900  ;Experience points needed to gain each level
41001    IsTrainable          = Yes             ;Can gain experience
41002    CrusherLevel         = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
41003    CrushableLevel       = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
41004    
41005    CommandSet           = CVCommandSet
41006  
41007    ; *** AUDIO Parameters ***
41008    VoiceSelect = POWTruckUSAVoiceSelect
41009    VoiceMove = POWTruckUSAVoiceMove
41010    VoiceGuard = POWTruckUSAVoiceMove
41011    SoundEnter = POWTruckEnter
41012    SoundExit = POWTruckExit
41013    UnitSpecificSounds
41014      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
41015      VoiceCreate          = POWTruckUSAVoiceCreate
41016      TurretMoveLoop       = TurretMoveLoop
41017      SoundMoveStart       = POWTruckUSAMoveStart
41018      SoundMoveStartDamaged = POWTruckUSAMoveStart
41019      SoundEject           = PilotSoundEject
41020      VoiceEject           = PilotVoiceEject
41021      VoiceCrush           = POWTruckUSAVoiceCrush
41022      ; Required for the W3DTruckDraw module
41023      TruckLandingSound    = RocketBuggyLand
41024      TruckPowerslideSound = POWTruckUSAMoveStart
41025      VoiceEnter           = POWTruckUSAVoiceMove
41026    End
41027  
41028    ; *** ENGINEERING Parameters ***
41029    RadarPriority          = UNIT
41030    KindOf                 = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE TRANSPORT SCORE
41031    Body                   = ActiveBody ModuleTag_02
41032      MaxHealth            = 1000.0
41033      InitialHealth        = 1000.0
41034    End
41035  
41036    Behavior = OCLSpecialPower ModuleTag_23
41037      SpecialPowerTemplate = SuperweaponCarpetBomb
41038      OCL = SUPERWEAPON_CarpetBomb
41039    End
41040  
41041    ; nope, sorry, can't do interesting things like this. (srj)
41042    ;Behavior               = POWTruckBehavior ModuleTag_03
41043    ;  ContainMax           = 10
41044    ;  EnterSound           = EnterPOWTruck
41045    ;  ExitSound            = ExitPOWTruck
41046    ;End
41047    ; nope, sorry, can't do interesting things like this. (srj)
41048    ;Behavior = POWTruckAIUpdate ModuleTag_04
41049    ;  BoredTime            = 10000  ; in milliseconds
41050    ;  AtPrisonDistance     = 160.0 ; This close to a prison is close enough to be doing nothing at
41051    ;End
41052    ; but we must have an AIUpdate in order for our Locomotor to work.
41053    Behavior = AIUpdateInterface ModuleTag_04
41054      ; no data
41055    End
41056  
41057    Locomotor              = SET_NORMAL POWTruckLocomotor
41058    Behavior               = PhysicsBehavior ModuleTag_05
41059      Mass                 = 50.0
41060    End
41061  
41062  Behavior = TransportContain ModuleTag_03
41063      Slots                 = 8
41064      PassengersAllowedToFire = Yes
41065      AllowInsideKindOf  = INFANTRY
41066      EnterSound      = GarrisonEnter
41067      ExitSound       = GarrisonExit
41068      DamagePercentToUnits  = 50%
41069    End
41070  
41071    Behavior               = SlowDeathBehavior ModuleTag_06
41072      DeathTypes           = ALL -CRUSHED -SPLATTED
41073      ProbabilityModifier  = 25
41074      DestructionDelay     = 1
41075      FX                   = FINAL    FX_BattleMasterExplosionOneFinal
41076      OCL                  = FINAL    OCL_AmericanPOWTruckDeathEffect
41077    End
41078  
41079    Behavior               = FXListDie ModuleTag_07
41080      DeathTypes           = NONE +CRUSHED +SPLATTED
41081      DeathFX              = FX_CarCrush
41082    End
41083  
41084    Behavior = TransitionDamageFX ModuleTag_09
41085      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
41086      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
41087    End
41088  
41089    Behavior = ExperienceScalarUpgrade ModuleTag_10
41090      TriggeredBy = Upgrade_AmericaAdvancedTraining
41091      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
41092    End
41093  
41094    Behavior = FlammableUpdate ModuleTag_21
41095      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
41096      AflameDamageAmount = 3       ; taking this much damage...
41097      AflameDamageDelay = 500       ; this often.
41098    End
41099  
41100     Behavior = SpecialAbility ModuleTag_16
41101      SpecialPowerTemplate      = SpecialAbilityRedGuardCaptureBuilding
41102      UpdateModuleStartsAttack  = Yes
41103      StartsPaused              = Yes
41104      InitiateSound         = RedGuardVoiceCapture
41105    End
41106    Behavior = SpecialAbilityUpdate ModuleTag_17
41107      SpecialPowerTemplate  = SpecialAbilityRedGuardCaptureBuilding
41108      StartAbilityRange  = 5.0
41109      UnpackTime            = 3000  ; (changing this will scale anim speed)
41110      PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
41111      PackTime              = 2000  ; (changing this will scale anim speed)
41112      DoCaptureFX           = Yes
41113      AwardXPForTriggering  = 4
41114      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
41115    End
41116  
41117    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_18
41118      SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
41119      TriggeredBy = Upgrade_InfantryCaptureBuilding
41120    End
41121  
41122  
41123  
41124    Geometry               = BOX
41125    GeometryMajorRadius    = 15.0
41126    GeometryMinorRadius    = 7.0
41127    GeometryHeight         = 13.5     
41128    GeometryIsSmall        = Yes 
41129    Shadow                 = SHADOW_VOLUME   
41130  End
41131  
41132  
41133  ;------------------------------------------------------------------------------
41134  
41135  Object GLAVehicleToxinPlane
41136  
41137    ; *** ART Parameters ***
41138    SelectPortrait         = T6
41139    ButtonImage            = T6
41140  
41141    UpgradeCameo1 = Upgrade_GLAAnthraxBeta
41142    UpgradeCameo2 = Upgrade_GLAJunkRepair
41143    ;UpgradeCameo3 = NONE
41144    ;UpgradeCameo4 = NONE
41145    ;UpgradeCameo5 = NONE
41146   
41147  
41148    Draw                   = W3DModelDraw ModuleTag_01
41149   
41150      OkToChangeModelColor = Yes
41151  
41152   
41153     ConditionState = NONE
41154        Model = CVCDTPLN
41155      End
41156      
41157      ConditionState = REALLYDAMAGED
41158        Model = CVCDTPLN_D
41159      End
41160      
41161      ConditionState = RUBBLE
41162        Model = CVCDTPLN_D
41163      End
41164  
41165    End
41166  
41167    ; ***DESIGN parameters ***
41168    DisplayName             = OBJECT:ToxinPlane
41169    EditorSorting           = VEHICLE
41170    Side                    = GLA
41171    TransportSlotCount      = 0 ;how many "slots" we take in a transport (0 == not transportable)
41172    VisionRange             = 200.0 
41173    ShroudClearingRange     = 200
41174    Prerequisites
41175      Object                = GLAAirfield
41176      Science               = SCIENCE_TechnicalTraining
41177    End
41178  
41179     WeaponSet 
41180      Conditions        = None 
41181      Weapon            = PRIMARY     ToxinPlaneSprayer
41182      Weapon            = SECONDARY   PlaneSuicideBomb
41183      AutoChooseSources = SECONDARY    NONE
41184    End
41185    WeaponSet
41186      Conditions        = PLAYER_UPGRADE 
41187      Weapon            = PRIMARY     ToxinPlaneSprayerUpgraded
41188      Weapon            = SECONDARY   PlaneSuicideBombUpgraded
41189      AutoChooseSources = SECONDARY    NONE
41190    End
41191    ArmorSet
41192      Conditions      = None
41193      Armor           = HazMatHumanArmor
41194      DamageFX        = None
41195    End
41196  
41197    BuildCost               = 500
41198    BuildTime               = 10   
41199    CrusherLevel            = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
41200    CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
41201    CommandSet              = ToxinPlaneCommandSet
41202  
41203    ; *** AUDIO Parameters ***
41204   
41205    SoundAmbient = CivPropPlaneAmbientLoop
41206    
41207    UnitSpecificSounds
41208      StartDive  = A10ThunderboltDive
41209    End
41210  
41211    ; *** ENGINEERING Parameters ***
41212    RadarPriority          = LOCAL_UNIT_ONLY
41213    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
41214    Body                   = ActiveBody ModuleTag_02
41215      MaxHealth            = 150.0
41216      InitialHealth        = 150.0
41217    End
41218  
41219    Behavior                          = JetSlowDeathBehavior ModuleTag_05
41220      FXOnGroundDeath                 = FX_JetOnGroundDeath
41221      OCLOnGroundDeath                = OCL_RaptorDeathFinalBlowUp
41222      DestructionDelay                = 99999999; destruction will happen when we
41223      RollRate                        = 0.2
41224      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
41225      PitchRate                       = 0.0
41226      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
41227      FXInitialDeath                  = FX_JetDeathInitial
41228      OCLInitialDeath                 = None
41229      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
41230      FXSecondary                     = FX_JetDeathSecondary
41231      OCLSecondary                    = OCL_ToxinPlaneDeath
41232      FXHitGround                     = FX_JetDeathHitGround
41233      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
41234      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
41235    End
41236    
41237    Behavior               = PhysicsBehavior ModuleTag_07
41238      Mass                 = 500.0
41239    End
41240  
41241    Behavior                 = TransitionDamageFX ModuleTag_08
41242      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
41243      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
41244    End
41245    Behavior = JetAIUpdate ModuleTag_09
41246      OutOfAmmoDamagePerSecond  = 0%  ; amount of damage to take per SEC (not per frame) when out of ammo
41247                                      ; note that it's expressed as a percent of max health, not an absolute
41248      TakeoffSpeedForMaxLift    = 100%   ; smaller numbers give more lift sooner when taking off
41249      TakeoffPause              = 100
41250      MinHeight                 = 1
41251      ParkingOffset             = 3             ; scooch it a little forward so the tail doesn't hit the doors
41252      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
41253    End
41254    Locomotor = SET_NORMAL TerrorPlaneLocomotor
41255    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
41256  Behavior = WeaponSetUpgrade ModuleTag_12
41257      ; the Toxin Tractor gets this upgrade if we either buy the upgrade,
41258      ; or if it gets HEROIC status
41259      TriggeredBy   = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
41260    End
41261    Behavior = FlammableUpdate ModuleTag_21
41262      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
41263      AflameDamageAmount = 3       ; taking this much damage...
41264      AflameDamageDelay = 500       ; this often.
41265    End
41266  
41267    Behavior = AutoHealBehavior ModuleTag_05
41268      HealingAmount = 2
41269      HealingDelay = 500 ; msec
41270      TriggeredBy = Upgrade_GLAJunkRepair
41271    End
41272  
41273    Geometry = Cylinder
41274    GeometryIsSmall          = Yes
41275    GeometryMajorRadius      = 10.0
41276    GeometryMinorRadius      = 10.0
41277    GeometryHeight           = 10.0
41278    Shadow                   = SHADOW_VOLUME
41279    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length.
41280  
41281  End
41282  
41283  ;------------------------------------------------------------------------------
41284  Object Chinook
41285  
41286    ; *** ART Parameters ***
41287    SelectPortrait         = T3
41288    ButtonImage            = T3
41289    
41290    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
41291    ;UpgradeCameo2 = NONE
41292    ;UpgradeCameo3 = NONE
41293    ;UpgradeCameo4 = NONE
41294    ;UpgradeCameo5 = NONE
41295  
41296    Draw = W3DModelDraw                         ModuleTag_01 ; Helicopter 
41297  
41298      ExtraPublicBone = RopeStart
41299      ExtraPublicBone = RopeEnd
41300  
41301      DefaultConditionState
41302        Model = uh-60
41303        Animation = uh-60.uh-60
41304        AnimationMode = LOOP
41305      End
41306  
41307      ConditionState = REALLYDAMAGED
41308        Model = uh-60_d
41309        Animation = uh-60_d.uh-60_d
41310        AnimationMode = LOOP
41311      End
41312  
41313      ConditionState = RUBBLE
41314        Model = uh-60_d
41315        Animation = uh-60_d.uh-60_d
41316        AnimationMode = LOOP
41317      End
41318  
41319      ConditionState = RUBBLE SPECIAL_DAMAGED
41320        Model = uh-60_d
41321        HideSubObject = Props01
41322        HideSubObject = Props02
41323      End
41324  
41325      OkToChangeModelColor = Yes
41326    End
41327  
41328    Draw = W3DModelDraw                         ModuleTag_02 ; Cargo net 
41329      ConditionState = NONE
41330        Model = None  ; Nothing here
41331        TransitionKey = TRANS_Empty
41332        WaitForStateToFinishIfPossible = TRANS_Unloading
41333      End
41334  
41335      ConditionState = DYING 
41336        Model = None  ; Nothing here
41337      End
41338      AliasConditionState = RUBBLE
41339      AliasConditionState = CARRYING RUBBLE
41340      AliasConditionState = DOCKING RUBBLE
41341      AliasConditionState = DOCKING CARRYING RUBBLE
41342   
41343       ConditionState = CARRYING
41344        Model = AVChinook_A ;Carrying a full wobbly net of stuff
41345        Animation = AVChinook_A.AVChinook_A
41346        AnimationMode = LOOP
41347        TransitionKey = TRANS_Full
41348        WaitForStateToFinishIfPossible = TRANS_PickingUp
41349      End
41350  
41351      ConditionState = DOCKING
41352        Model = AVChinook_A1MSH ;Lowering an empty net, pulling up with stuff
41353        Animation = AVChinook_A1SK.AVChinook_A1
41354        AnimationMode = ONCE_BACKWARDS
41355        Flags = START_FRAME_LAST
41356        AnimationSpeedFactorRange = .75 .75
41357        TransitionKey = TRANS_PickingUp
41358        WaitForStateToFinishIfPossible = TRANS_Unloading  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
41359      End
41360  
41361      ConditionState = DOCKING CARRYING
41362        Model = AVChinook_A1MSH ; Lowering a full net, letting stuff fall out, and pulling up an empty net
41363        Animation = AVChinook_A1SK.AVChinook_A1
41364        AnimationMode = ONCE
41365        AnimationSpeedFactorRange = 2.75 2.75
41366        TransitionKey = TRANS_Unloading
41367        WaitForStateToFinishIfPossible = TRANS_PickingUp  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
41368      End
41369    End
41370  
41371    ; ***DESIGN parameters ***
41372    DisplayName         = OBJECT:ChinookG
41373    EditorSorting       = VEHICLE
41374    Side                = America
41375    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
41376    VisionRange         = 300.0 
41377    ShroudClearingRange = 600
41378    BuildCost           = 1200
41379    BuildTime           = 10.0          ;in seconds  
41380    Prerequisites
41381      Object = AmericaAirfield
41382    End
41383  
41384    WeaponSet
41385      Conditions          = None 
41386      Weapon              = PRIMARY Chinook
41387      PreferredAgainst    = PRIMARY     INFANTRY
41388      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
41389    End
41390  
41391    ExperienceValue     = 50 50 50 50 ;Experience point value at each level
41392    ExperienceRequired  = 0 50 100 750   ;Experience points needed to gain each level
41393    IsTrainable         = Yes  
41394    CommandSet          = ChinookCommandSet
41395    ArmorSet
41396      Conditions      = None
41397      Armor           = ChinookArmor
41398      DamageFX        = None
41399    End
41400  
41401    ; *** AUDIO Parameters ***
41402    VoiceSelect     = ChinookVoiceSelect
41403    VoiceMove       = ChinookVoiceMove
41404    VoiceAttack     = ChinookVoiceAttack
41405    SoundAmbient    = ChinookAmbientLoop
41406    SoundAmbientRubble    = NoSound
41407    SoundDie        = ChinookVoiceFalling
41408    SoundEnter      = HumveeEnter
41409    SoundExit       = HumveeExit
41410    UnitSpecificSounds
41411      VoiceCreate         = ChinookVoiceCreate
41412      VoiceSupply         = ChinookVoiceSupply
41413      VoiceUnload         = ChinookVoiceUnload
41414      VoiceCombatDrop     = ChinookVoiceCombatDrop
41415      VoiceClearBuilding  = RangerVoiceClearBuilding ;Special combat drop that clears buildings!
41416      VoiceGarrison       = ChinookVoiceMove
41417    End
41418  
41419    ; *** ENGINEERING Parameters ***
41420    RadarPriority   = UNIT
41421    KindOf          = PRELOAD CAN_CAST_REFLECTIONS SELECTABLE VEHICLE TRANSPORT AIRCRAFT CAN_ATTACK SCORE PRODUCED_AT_HELIPAD
41422  
41423    Body = ActiveBody ModuleTag_03
41424      MaxHealth       = 300.0
41425      InitialHealth   = 300.0
41426    End
41427  
41428    Behavior = ExperienceScalarUpgrade ModuleTag_04
41429      TriggeredBy = Upgrade_AmericaAdvancedTraining
41430      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
41431    End
41432  
41433    Behavior = FXListDie ModuleTag_05
41434      DeathFX = FX_HelicopterStartDeath
41435    End
41436  
41437    Behavior                       = TransitionDamageFX ModuleTag_06
41438      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
41439      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
41440    End
41441  
41442    Behavior = ChinookAIUpdate ModuleTag_07
41443      MaxBoxes                = 8
41444      SupplyCenterActionDelay = 99999     ; ms for whole thing (one transaction)
41445      SupplyWarehouseActionDelay = 99999  ; 875 ; ms per box (many small transactions)
41446      SupplyWarehouseScanDistance = 00 ;350 ; Max distance to look for a warehouse, or we go home.  (Direct dock command on warehouse overrides, and no max on Center Scan)
41447      SuppliesDepletedVoice = ChinookVoiceSuppliesDepleted
41448      NumRopes                = 4
41449      ; these define how long we can wait, once a guy is on-rope, before throwing another
41450      ; guy onto that same rope. (Hint: you don't want to use zero.) Omit entirely
41451      ; and we'll wait for each guy to clear before spawning another.
41452      PerRopeDelayMin         = 900
41453      PerRopeDelayMax         = 1500
41454      RopeWidth               = 0.5
41455      RopeColor               = R:0 G:0 B:0
41456      RopeWobbleLen           = 10
41457      RopeWobbleAmplitude     = 0.25
41458      RopeWobbleRate          = 180
41459      RopeFinalHeight         = 10    ; stop this far above ground
41460      RappelSpeed             = 30
41461      MinDropHeight           = 40      ; if dropping into a tall bldg, go at least this far above it
41462      AutoAcquireEnemiesWhenIdle    = Yes    
41463    End
41464    Locomotor = SET_NORMAL    ChinookLocomotor
41465    Locomotor = SET_TAXIING   BasicHelicopterTaxiLocomotor
41466  
41467    Behavior = TransportContain ModuleTag_08
41468      Slots                 = 8
41469      DamagePercentToUnits  = 100%
41470      AllowInsideKindOf     = INFANTRY
41471      ForbidInsideKindOf    = AIRCRAFT HUGE_VEHICLE
41472      ExitDelay             = 100
41473      NumberOfExitPaths     = 1
41474    End
41475  
41476    Behavior = PhysicsBehavior ModuleTag_09
41477      Mass = 50.0
41478    End
41479  
41480    Behavior = HelicopterSlowDeathBehavior ModuleTag_10
41481      DestructionDelay                = 99999999        ; the destruction delay
41482      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
41483      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
41484      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
41485      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
41486      SoundDeathLoop                  = ComancheDamagedLoop
41487      MinSelfSpin                     = 100                     ; in degrees per second
41488      MaxSelfSpin                     = 300                     ; in degrees per second
41489      SelfSpinUpdateDelay             = 100                     ; in milliseconds
41490      SelfSpinUpdateAmount            = 10                      ; in degrees   
41491      FallHowFast                     = 12.0%                   ; fraction of gravity, lower = take longer to fall
41492      MinBladeFlyOffDelay             = 1500                    ; in milliseconds
41493      MaxBladeFlyOffDelay             = 1500                    ; in milliseconds
41494      AttachParticle                  = SootySmokeTrail
41495      AttachParticleBone              = Propeller02
41496      BladeObjectName                 = ComancheBlades
41497      BladeBoneName                   = Propeller01    
41498      FXBlade                         = FX_HelicopterBladeExplosion
41499      OCLBlade                        = OCL_HelicopterBladeExplosion
41500      FXHitGround                     = FX_HelicopterHitGround
41501      OCLHitGround                    = OCL_HelicopterHitGround
41502      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
41503      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
41504      DelayFromGroundToFinalDeath     = 30
41505      FinalRubbleObject               = ChinookRubbleHull
41506    End
41507  
41508    Behavior = FlammableUpdate ModuleTag_21
41509      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
41510      AflameDamageAmount = 3       ; taking this much damage...
41511      AflameDamageDelay = 500       ; this often.
41512    End
41513  
41514    Geometry              = BOX
41515    GeometryMajorRadius   = 20.0
41516    GeometryMinorRadius   = 6.0
41517    GeometryHeight        = 12.0     
41518    GeometryIsSmall       = No
41519    Shadow                = SHADOW_VOLUME    
41520    ShadowSizeX           = 89  ; minimum elevation angle above horizon. Used to limit shadow length
41521  
41522  End
41523  
41524  ;------------------------------------------------------------------------------
41525  Object ChinaVehicleMI171
41526  
41527    ; *** ART Parameters ***
41528    SelectPortrait         = T8
41529    ButtonImage            = T8
41530  
41531    UpgradeCameo1 = none
41532    UpgradeCameo2 = none
41533    ;UpgradeCameo3 = NONE
41534    ;UpgradeCameo4 = NONE
41535    ;UpgradeCameo5 = NONE
41536  
41537  
41538      Draw = W3DModelDraw                         ModuleTag_01 ; Helicopter
41539      ExtraPublicBone = RopeStart
41540      ExtraPublicBone = RopeEnd
41541  
41542      DefaultConditionState
41543        Model                           = nvmi171
41544        HideSubObject                   = MissileUpgrade
41545        Animation                       = nvmi171.nvmi171
41546        AnimationMode                   = LOOP
41547        WeaponMuzzleFlash               = PRIMARY TurretFX
41548        WeaponFireFXBone                = PRIMARY Muzzle
41549        WeaponFireFXBone                = SECONDARY Muzzle
41550        WeaponLaunchBone  = SECONDARY Muzzle
41551      End
41552  
41553      ConditionState = REALLYDAMAGED
41554        Model                           = nvmi171
41555        Animation                       = nvmi171.nvmi171
41556        AnimationMode                   = LOOP
41557      End
41558  
41559      ConditionState = WEAPONSET_PLAYER_UPGRADE
41560        ShowSubObject                   = MissileUpgrade
41561        Animation                       = nvmi171.nvmi171
41562        AnimationMode                   = LOOP
41563        WeaponFireFXBone                = TERTIARY WeaponB
41564        WeaponLaunchBone  = TERTIARY WeaponB
41565      End
41566  
41567      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
41568        Model                           = nvmi171
41569        ShowSubObject                   = MissileUpgrade
41570        Animation                       = nvmi171.nvmi171
41571        AnimationMode                   = LOOP
41572        WeaponFireFXBone                = TERTIARY WeaponB
41573        WeaponLaunchBone  = TERTIARY WeaponB
41574      End
41575  
41576      ConditionState = RUBBLE
41577        Model                           = nvmi171
41578        Animation                       = nvmi171.nvmi171
41579        AnimationMode                   = LOOP
41580      End
41581  
41582      ConditionState = RUBBLE SPECIAL_DAMAGED
41583        Model                           = nvmi171
41584        HideSubObject                   = nvmi171
41585      End
41586  
41587      OkToChangeModelColor = Yes
41588  
41589  
41590    End
41591  
41592    ; ***DESIGN parameters ***
41593    DisplayName         = OBJECT:MI171
41594    EditorSorting       = VEHICLE
41595    Side                = China
41596    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
41597    VisionRange         = 180.0
41598    ShroudClearingRange = 600
41599    Prerequisites
41600      Object            = ChinaAirfield
41601      Object            = ChinaPropagandaCenter
41602      Science           = SCIENCE_NukeLauncher
41603    End
41604  
41605    WeaponSet
41606      Conditions          = None
41607      ; -----
41608      Weapon              = PRIMARY     ComancheRocketPodWeapon
41609      AutoChooseSources   = PRIMARY    NONE
41610   
41611    End
41612  
41613    ArmorSet
41614      Conditions      = None
41615      Armor           = ComancheArmor
41616      DamageFX        = None
41617    End
41618    BuildCost           = 1500
41619    BuildTime           = 20              ; in seconds
41620    ExperienceValue     = 50 50 100 200   ; Experience point value at each level
41621    ExperienceRequired  = 0 10 20 40   ; Experience points needed to gain each level
41622    IsTrainable         = Yes             ; Can gain experience
41623    CommandSet          = MI171CommandSet
41624  
41625    ; *** AUDIO Parameters ***
41626    VoiceSelect           = RedGuardVoiceSelect
41627    VoiceMove             = RedGuardVoiceMove
41628    VoiceGuard            = RedGuardVoiceMove
41629    VoiceAttack           = RedGuardVoiceAttack
41630    SoundAmbient          = ChinookAmbientLoop
41631    SoundAmbientRubble    = NoSound
41632    SoundDie              = ChinookVoiceFalling
41633    UnitSpecificSounds
41634      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
41635      VoiceCreate         = ChinookVoiceCreate
41636      SoundEject          = PilotSoundEject
41637      VoiceEject          = PilotVoiceEject
41638      Afterburner         = RaptorAfterburner
41639      VoiceGarrison       = RedGuardVoiceMove
41640      TurretMoveStart     = NoSound
41641      TurretMoveLoop      = NoSound
41642      VoiceFireRocketPods = ChinookVoiceAttackRocket
41643    End
41644  
41645  
41646    ; *** ENGINEERING Parameters ***
41647  RadarPriority = UNIT
41648  ; note that, although Chinooks aren't produced at helipads, we want to set this KINDOF so that they can land at
41649  ; (well, "near" actually) an Airfield to get healed...
41650  ; also note that we should NOT set CAN_ATTACK for chinooks. they can't attack. so there.
41651  KindOf = CAN_ATTACK PRELOAD CAN_CAST_REFLECTIONS SELECTABLE VEHICLE TRANSPORT AIRCRAFT SCORE PRODUCED_AT_HELIPAD
41652  ;HARVESTER
41653  
41654  Body = ActiveBody ModuleTag_03
41655  MaxHealth = 300.0
41656  InitialHealth = 300.0
41657  End
41658  
41659  Behavior = FXListDie ModuleTag_05
41660  DeathFX = FX_HelicopterStartDeath
41661  End
41662   
41663   
41664  
41665   
41666  Behavior = TransitionDamageFX ModuleTag_06
41667  ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
41668  ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
41669  End
41670  
41671  Behavior = ChinookAIUpdate ModuleTag_07
41672  MaxBoxes = 1
41673  
41674  NumRopes = 4
41675  ; these define how long we can wait, once a guy is on-rope, before throwing another
41676  ; guy onto that same rope. (Hint: you don't want to use zero.) Omit entirely
41677  ; and we'll wait for each guy to clear before spawning another.
41678  PerRopeDelayMin = 900
41679  PerRopeDelayMax = 1500
41680  RopeWidth = 0.5
41681  RopeColor = R:0 G:0 B:0
41682  RopeWobbleLen = 10
41683  RopeWobbleAmplitude = 0.25
41684  RopeWobbleRate = 180
41685  RopeFinalHeight = 10 ; stop this far above ground
41686  RappelSpeed = 30
41687  MinDropHeight = 40 ; if dropping into a tall bldg, go at least this far above it
41688  
41689  End
41690  Locomotor = SET_NORMAL ChinookLocomotor
41691  Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
41692  
41693  Behavior = TransportContain ModuleTag_08
41694  Slots = 8
41695  DamagePercentToUnits = 100%
41696  AllowInsideKindOf = INFANTRY
41697  ForbidInsideKindOf = VEHICLE AIRCRAFT HUGE_VEHICLE
41698  ExitDelay = 100
41699  NumberOfExitPaths = 1
41700  End
41701  Behavior = PhysicsBehavior ModuleTag_09
41702  Mass = 50.0
41703  End
41704  Behavior = HelicopterSlowDeathBehavior ModuleTag_10
41705  DestructionDelay = 99999999 ; the destruction delay
41706  SpiralOrbitTurnRate = 140.0 ; in degrees per second, bigger # = tighter spiral
41707  SpiralOrbitForwardSpeed = 350.0 ; bigger # = larger spiral
41708  SpiralOrbitForwardSpeedDamping = .9999 ; smaller #'s = slow down faster
41709  MaxBraking = 190 ; max braking we can use during death spiral (lower num = wilder spiral)
41710  SoundDeathLoop = ComancheDamagedLoop
41711  MinSelfSpin = 100 ; in degrees per second
41712  MaxSelfSpin = 300 ; in degrees per second
41713  SelfSpinUpdateDelay = 100 ; in milliseconds
41714  SelfSpinUpdateAmount = 10 ; in degrees
41715  FallHowFast = 12.0% ; fraction of gravity, lower = take longer to fall
41716  MinBladeFlyOffDelay = 1500 ; in milliseconds
41717  MaxBladeFlyOffDelay = 1500 ; in milliseconds
41718  AttachParticle = SootySmokeTrail
41719  AttachParticleBone = Propeller02
41720  BladeObjectName = ComancheBlades
41721  BladeBoneName = Propeller01
41722  FXBlade = FX_HelicopterBladeExplosion
41723  OCLBlade = OCL_HelicopterBladeExplosion
41724  FXHitGround = FX_HelicopterHitGround
41725  OCLHitGround = OCL_HelicopterHitGround
41726  FXFinalBlowUp = FX_GroundedHelicopterBlowUp
41727  OCLFinalBlowUp = OCL_GroundedHelicopterBlowUp
41728  DelayFromGroundToFinalDeath = 30
41729  FinalRubbleObject = ChinookRubbleHull
41730  End
41731  
41732  Behavior = FlammableUpdate ModuleTag_21
41733  AflameDuration = 5000 ; If I catch fire, I'll burn for this long...
41734  AflameDamageAmount = 3 ; taking this much damage...
41735  AflameDamageDelay = 500 ; this often.
41736  End
41737  
41738  Geometry = BOX
41739  GeometryMajorRadius = 20.0
41740  GeometryMinorRadius = 6.0
41741  GeometryHeight = 12.0
41742  GeometryIsSmall = No
41743  Shadow = SHADOW_VOLUME
41744  ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length
41745  
41746  End
41747  
41748  ;------------------------------------------------------------------------------
41749  
41750  Object ChinaInfantryCommando
41751  
41752      ; *** ART Parameters ***
41753    SelectPortrait         = SNRedGuard_L
41754    ButtonImage            = SNRedGuard_L
41755  
41756    UpgradeCameo1 = none
41757    ;UpgradeCameo2 = NONE
41758    ;UpgradeCameo3 = NONE
41759    ;UpgradeCameo4 = NONE
41760    ;UpgradeCameo5 = NONE
41761  
41762    Draw = W3DModelDraw ModuleTag_01
41763  
41764      OkToChangeModelColor = Yes
41765  
41766    DefaultConditionState
41767        Model             = CIUNSL_SKN
41768        IdleAnimation     = AIHERO_SKL.AIHERO_STA 0 25
41769        IdleAnimation     = AIHERO_SKL.AIHERO_IDA
41770        AnimationMode     = ONCE
41771        WeaponFireFXBone  = PRIMARY Muzzle
41772        WeaponMuzzleFlash = PRIMARY MuzzleFX
41773        TransitionKey     = TRANS_Stand
41774      End
41775  
41776      ConditionState      = FIRING_A
41777        Animation         = CIUNSL_SKL.CIUNSL_ATA1_LP
41778        AnimationMode     = LOOP
41779        TransitionKey     = TRANS_FiringA
41780      End
41781      AliasConditionState = BETWEEN_FIRING_SHOTS_A
41782      AliasConditionState = RELOADING_A
41783  
41784      TransitionState     = TRANS_Stand TRANS_FiringA
41785        Animation         = CIUNSL_SKL.CIUNSL_ATA1_ST
41786        AnimationMode     = ONCE
41787        AnimationSpeedFactorRange = 4 4
41788      End
41789  
41790      TransitionState     = TRANS_FiringA TRANS_Stand
41791        Animation         = CIUNSL_SKL.CIUNSL_ATA1_ED
41792        AnimationMode     = ONCE
41793        AnimationSpeedFactorRange = 4 4
41794      End
41795  
41796      ; these aliases handle the attack-move case.
41797      AliasConditionState = MOVING FIRING_A
41798      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
41799      AliasConditionState = MOVING RELOADING_A
41800  
41801      ConditionState      = FREEFALL
41802        Animation         = CIUNSL_SKL.CIUNSL_PFL
41803        AnimationMode     = LOOP
41804        TransitionKey     = TRANS_Falling
41805      End
41806  
41807      ConditionState      = PARACHUTING
41808        Animation         = CIUNSL_SKL.CIUNSL_PHG
41809        AnimationMode     = LOOP
41810        TransitionKey     = TRANS_Chute
41811      End
41812      AliasConditionState = PARACHUTING DYING
41813  
41814      ConditionState      = MOVING
41815        Animation         = CIUNSL_SKL.CIUNSL_RNA
41816        AnimationMode     = LOOP
41817        Flags             = RANDOMSTART
41818        TransitionKey     = None
41819      End
41820  
41821      ConditionState      = DYING
41822        Animation         = CIUNSL_SKL.CIUNSL_DTA
41823        Animation         = CIUNSL_SKL.CIUNSL_DTB
41824        AnimationMode     = ONCE
41825        TransitionKey     = TRANS_Dying
41826      End
41827  
41828      TransitionState     = TRANS_Dying TRANS_Flailing
41829        Animation         = CIUNSL_SKL.CIUNSL_ADTA1
41830        AnimationMode     = ONCE
41831      End
41832  
41833      ConditionState      = DYING EXPLODED_FLAILING
41834        Animation         = CIUNSL_SKL.CIUNSL_ADTA2
41835        AnimationMode     = LOOP
41836        TransitionKey     = TRANS_Flailing
41837      End
41838  
41839      ConditionState      = DYING EXPLODED_BOUNCING
41840        Animation         = CIUNSL_SKL.CIUNSL_ADTA3
41841        AnimationMode     = ONCE
41842        TransitionKey     = None
41843      End
41844      AliasConditionState = DYING SPLATTED
41845  
41846      TransitionState     = TRANS_Falling TRANS_Chute
41847        Animation         = CIUNSL_SKL.CIUNSL_POP
41848        AnimationMode     = ONCE
41849      End
41850  
41851      TransitionState     = TRANS_Chute TRANS_Stand
41852        Animation         = CIUNSL_SKL.CIUNSL_PTD
41853        AnimationMode     = ONCE
41854      End
41855         ; climbing
41856      ConditionState      = CLIMBING
41857        Animation         = AIHERO_SKL.AIHERO_CLMID
41858        AnimationMode     = LOOP
41859        TransitionKey     = TRANS_Climbing
41860      End
41861      AliasConditionState = RAPPELLING
41862      AliasConditionState = CLIMBING REALLYDAMAGED
41863      AliasConditionState = RAPPELLING REALLYDAMAGED
41864  
41865      ConditionState      = CLIMBING MOVING
41866        Animation         = AIHERO_SKL.AIHERO_CLMUP
41867        AnimationMode     = LOOP
41868        TransitionKey     = TRANS_Climbing
41869      End
41870      AliasConditionState = CLIMBING MOVING REALLYDAMAGED
41871  
41872      ConditionState      = RAPPELLING MOVING
41873        Animation         = AIHERO_SKL.AIHERO_CLMUP
41874        AnimationMode     = LOOP_BACKWARDS
41875        TransitionKey     = TRANS_Climbing
41876      End
41877      AliasConditionState = RAPPELLING MOVING REALLYDAMAGED
41878  
41879  ; these transitions don't really work well with our code. leave 'em out.
41880  ;    TransitionState     = TRANS_Climbing TRANS_Stand
41881  ;      Animation         = AIHERO_SKL.AIHERO_CLMST
41882  ;      AnimationMode     = ONCE
41883  ;    End
41884  ;
41885  ;    TransitionState     = TRANS_Stand TRANS_Climbing
41886  ;      Animation         = AIHERO_SKL.AIHERO_CLMST
41887  ;      AnimationMode     = ONCE_BACKWARDS
41888  ;    End
41889              ; injured moving
41890      ConditionState     = MOVING REALLYDAMAGED
41891        Animation        = AIHERO_SKL.AIHERO_IRNA 26
41892        AnimationMode    = LOOP
41893        Flags            = RANDOMSTART
41894        TransitionKey    = TRANS_WalkingInjured
41895        ParticleSysBone  = None InfantryDustTrails
41896        HideSubObject     = MUZZLEFX01
41897      End
41898      AliasConditionState = MOVING FIRING_A REALLYDAMAGED
41899      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
41900      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
41901      AliasConditionState = MOVING FIRING_B REALLYDAMAGED
41902      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
41903      AliasConditionState = MOVING RELOADING_B REALLYDAMAGED
41904  
41905      ; injured idle
41906      ConditionState        = REALLYDAMAGED
41907        IdleAnimation       = AIHERO_SKL.AIHERO_ISTA 0 30
41908        IdleAnimation       = AIHERO_SKL.AIHERO_IIDA
41909        IdleAnimation       = AIHERO_SKL.AIHERO_IIDB
41910        AnimationMode       = ONCE
41911        TransitionKey       = TRANS_StandInjured
41912      End
41913  
41914  
41915      TransitionState     = TRANS_Stand TRANS_StandInjured
41916        Animation         = AIHERO_SKL.AIHERO_ISTAHIT
41917        AnimationMode     = ONCE
41918      End
41919  
41920  
41921  
41922    End
41923  
41924    ; ***DESIGN parameters ***
41925    DisplayName      = OBJECT:Commando
41926    Side = China
41927    EditorSorting = INFANTRY
41928    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
41929  
41930    WeaponSet
41931      Conditions = None
41932      Weapon = PRIMARY CommandoWeapon
41933      AutoChooseSources   = PRIMARY   NONE
41934    End
41935    ArmorSet
41936      Conditions      = None
41937      Armor           = HumanArmor
41938      DamageFX        = InfantryDamageFX
41939    End
41940  
41941    VisionRange = 200
41942    ShroudClearingRange = 400
41943    Prerequisites
41944      Object = ChinaBarracks
41945      Object = CommandandControl
41946      Science = SCIENCE_RedGuardTraining
41947    End
41948    BuildCost = 1000
41949    BuildTime = 20.0          ;in seconds
41950  
41951    ExperienceValue = 40 40 60 80    ;Experience point value at each level
41952    ExperienceRequired = 0 50 100 200  ;Experience points needed to gain each level
41953    IsTrainable = Yes             ;Can gain experience
41954    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
41955    CommandSet      = ChinaCommandoCommandSET
41956  
41957    ; *** AUDIO Parameters ***
41958    VoiceSelect = PathfinderVoiceSelect
41959    VoiceMove = PathfinderVoiceMove
41960    VoiceGuard = PathfinderVoiceMove
41961    VoiceAttack = PathfinderVoiceAttack
41962    SoundDie = PathfinderVoiceDie
41963    SoundDieFire = DieByFireUSA
41964    SoundDieToxin = DieByToxinUSA
41965    VoiceFear = PathfinderVoiceFear
41966    SoundStealthOn = StealthOn
41967    SoundStealthOff = StealthOff
41968    VoiceFear = PathfinderVoiceFear
41969  
41970    UnitSpecificSounds
41971      VoiceCreate          = PathfinderVoiceCreate
41972      VoiceGarrison = PathfinderVoiceGarrison
41973      VoiceEnter = PathfinderVoiceMove
41974      VoiceEnterHostile =  PathfinderVoiceMove
41975      VoiceGetHealed      = PathfinderVoiceMove
41976    End
41977  
41978    ; *** ENGINEERING Parameters ***
41979    RadarPriority = UNIT
41980    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY STEALTH_GARRISON PARACHUTABLE CAN_RAPPEL SCORE
41981  
41982    Body = ActiveBody ModuleTag_02
41983      MaxHealth       = 200.0
41984      InitialHealth   = 200.0
41985    End
41986  
41987    Behavior = AIUpdateInterface ModuleTag_03
41988      AutoAcquireEnemiesWhenIdle = No Stealthed
41989      MoodAttackCheckRate        = 250
41990    End
41991  
41992    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba
41993      ScanRate = 1000 ; once a second.
41994      ScanRange = 300 ;
41995      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
41996      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
41997    End
41998  
41999    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor  ColonelBurtonCliffLocomotor
42000  
42001    Behavior = ExperienceScalarUpgrade ModuleTag_05
42002      TriggeredBy = Upgrade_AmericaAdvancedTraining
42003      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
42004    End
42005  
42006    Behavior = PhysicsBehavior ModuleTag_06
42007      Mass = 5.0
42008    End
42009    Behavior = StealthDetectorUpdate ModuleTag_08
42010      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
42011      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
42012      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
42013      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
42014    End
42015    Behavior = StealthUpdate ModuleTag_07
42016      StealthDelay                = 2000 ; msec
42017      StealthForbiddenConditions  = FIRING_PRIMARY
42018      HintDetectableConditions    = IS_FIRING_WEAPON
42019      FriendlyOpacityMin          = 50.0%
42020      FriendlyOpacityMax          = 100.0%
42021      InnateStealth               = Yes
42022      OrderIdleEnemiesToAttackMeUponReveal  = Yes
42023    End
42024  
42025  
42026    Behavior = SquishCollide ModuleTag_10
42027      ;nothing
42028    End
42029  
42030    Behavior = SpecialAbility ModuleTag_07
42031      SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack
42032      UpdateModuleStartsAttack = Yes
42033      InitiateSound = TankHunterVoiceTNT
42034    End
42035    Behavior = SpecialAbilityUpdate ModuleTag_08
42036      SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack
42037      StartAbilityRange = 5.0
42038      PreparationTime = 0
42039      SpecialObject = TNTStickyBomb
42040      MaxSpecialObjects = 8
42041      SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
42042      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
42043      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
42044      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
42045    End
42046    Behavior           = OCLSpecialPower ModuleTag_16
42047      SpecialPowerTemplate = SuperweaponNapalmStrike
42048      OCL                  = SUPERWEAPON_NapalmStrike
42049    End
42050  
42051  
42052  ; --- begin Death modules ---
42053    Behavior = SlowDeathBehavior ModuleTag_Death01
42054      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
42055      SinkDelay           = 50000
42056      SinkRate            = 0.5     ; in Dist/Sec
42057      DestructionDelay    = 8000000
42058      FX                  = INITIAL FX_GIDie
42059    End
42060    Behavior = SlowDeathBehavior ModuleTag_Death02
42061      DeathTypes          = NONE +CRUSHED +SPLATTED
42062      SinkDelay           = 50000
42063      SinkRate            = 0.5     ; in Dist/Sec
42064      DestructionDelay    = 8000000
42065      FX                  = INITIAL FX_GIDieCrushed
42066    End
42067    Behavior = SlowDeathBehavior ModuleTag_Death03
42068      DeathTypes          = NONE +EXPLODED
42069      SinkDelay           = 50000
42070      SinkRate            = 0.5     ; in Dist/Sec
42071      DestructionDelay    = 8000000
42072      FX                  = INITIAL FX_GIDie
42073      FlingForce          = 8
42074      FlingForceVariance  = 3
42075      FlingPitch          = 60
42076      FlingPitchVariance  = 10
42077    End
42078    Behavior = SlowDeathBehavior ModuleTag_Death04
42079      DeathTypes          = NONE +BURNED
42080      DestructionDelay    = 0
42081      FX                  = INITIAL FX_GIDie
42082      OCL                 = INITIAL OCL_FlamingInfantry
42083    End
42084    Behavior = SlowDeathBehavior ModuleTag_Death05
42085      DeathTypes          = NONE +POISONED
42086      DestructionDelay    = 0
42087      FX                  = INITIAL FX_GIDie
42088      OCL                 = INITIAL OCL_ToxicInfantry
42089    End
42090    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
42091      DeathTypes          = NONE +POISONED_BETA
42092      DestructionDelay    = 0
42093      FX                  = INITIAL FX_GIDie
42094      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
42095    End
42096  ; --- end Death modules ---
42097  
42098    Behavior = PoisonedBehavior ModuleTag_13
42099      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
42100      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
42101    End
42102  
42103    Geometry = CYLINDER
42104    GeometryMajorRadius = 10.0
42105    GeometryMinorRadius = 10.0
42106    GeometryHeight = 12.0
42107    GeometryIsSmall = Yes
42108    Shadow = SHADOW_DECAL
42109    ShadowSizeX = 14;
42110    ShadowSizeY = 14;
42111    ShadowTexture = ShadowI;
42112    BuildCompletion = APPEARS_AT_RALLY_POINT
42113  
42114  End
42115  
42116  ;--------------------------------------------------------------------
42117  
42118  Object ChinaSunnykit
42119  
42120    ; *** ART Parameters ***
42121    SelectPortrait         = T18     ;SACDaisyCutter
42122    ButtonImage            = T18
42123    
42124    ;UpgradeCameo1 = Upgrade_ChinaAircraftArmor
42125    ;UpgradeCameo2 = NONE
42126    ;UpgradeCameo3 = NONE
42127    ;UpgradeCameo4 = NONE
42128    ;UpgradeCameo5 = NONE
42129    
42130    Draw = W3DModelDraw ModuleTag_01
42131  
42132      OkToChangeModelColor = Yes
42133  
42134      DefaultConditionState
42135        Model               = Mig-29B         ; avtomahawk_M
42136      End
42137  
42138      ConditionState        = JETEXHAUST
42139        ParticleSysBone     = Wingtip01 JetContrail
42140        ParticleSysBone     = Wingtip02 JetContrail
42141      End
42142  
42143      ConditionState       = JETEXHAUST JETAFTERBURNER
42144        ParticleSysBone     = Exhaust01 JetExhaust
42145        ParticleSysBone     = Exhaust02 JetExhaust
42146        ParticleSysBone     = Wingtip01 JetContrail
42147        ParticleSysBone     = Wingtip02 JetContrail
42148      End
42149  
42150      ConditionState        = REALLYDAMAGED
42151        Model               = Mig-29B
42152      End
42153  
42154      ConditionState        = RUBBLE
42155        Model               = Mig-29B
42156      End
42157  
42158      ConditionState        = REALLYDAMAGED JETEXHAUST
42159        Model               = Mig-29B
42160      End
42161  
42162      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
42163        Model               = Mig-29B
42164      End
42165  
42166      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
42167        Model               = Mig-29B
42168      End
42169  
42170    End
42171  
42172    ; ***DESIGN parameters ***
42173    DisplayName             = OBJECT:ChinaSunnykit
42174    EditorSorting           = VEHICLE
42175    Side                    = GLA
42176    TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
42177    VisionRange             = 450.0 
42178    ShroudClearingRange     = 500.0
42179  
42180    Prerequisites
42181      Object                = GLAAirfield
42182      Science               = SCIENCE_ScudLauncher
42183    End
42184  
42185    WeaponSet
42186      Conditions        = None 
42187      Weapon            = PRIMARY     su30Weapon
42188      Weapon            = SECONDARY   MIG29weapon    
42189     End
42190  
42191    ArmorSet
42192      Conditions           = None
42193      Armor                = AirplaneArmor
42194      DamageFX             = None
42195    End
42196  
42197    BuildCost               = 900
42198    BuildTime               = 10
42199    ExperienceValue         = 50 50 100 150   ;Experience point value at each level
42200    ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
42201    IsTrainable = Yes             ;Can gain experience
42202    CrusherLevel           = 3  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
42203    CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
42204    CommandSet             = ChinaJetMIGCommandSet
42205  
42206    ; *** AUDIO Parameters ***
42207    VoiceSelect             = MigVoiceSelect
42208    VoiceMove               = MigVoiceMove
42209    VoiceAttack             = MigVoiceAttack
42210    VoiceAttackAir          = MigVoiceAttackAir
42211    VoiceGuard              = MigVoiceAirPatrol
42212    SoundAmbient            = MigAmbientLoop
42213    SoundDie                = MigVoiceFalling
42214    UnitSpecificSounds
42215      VoiceCreate           = MigVoiceCreate
42216      Afterburner           = RaptorAfterburner
42217      VoiceGarrison         = MigVoiceMove
42218    End
42219  
42220    ; *** ENGINEERING Parameters ***
42221    RadarPriority          = UNIT
42222    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
42223    Body                   = ActiveBody ModuleTag_02
42224      MaxHealth            = 200.0
42225      InitialHealth        = 200.0
42226    End
42227  
42228    Behavior                          = JetSlowDeathBehavior ModuleTag_03
42229      FXOnGroundDeath                 = FX_JetOnGroundDeath
42230      OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp
42231      DestructionDelay                = 99999999  ; destruction will happen when we
42232      RollRate                        = 0.2
42233      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
42234      PitchRate                       = 0.0
42235      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
42236      FXInitialDeath                  = FX_JetDeathInitial
42237      OCLInitialDeath                 = OCL_MIGDeathInitial
42238      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
42239      FXSecondary                     = FX_JetDeathSecondary
42240      OCLSecondary                    = OCL_MIGDeathSecondary
42241      FXHitGround                     = FX_JetDeathHitGround
42242      OCLHitGround                    = OCL_MIGDeathHitGround
42243      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
42244      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
42245      OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp
42246    End
42247  
42248    Behavior = WeaponSetUpgrade ModuleTag_04
42249      TriggeredBy = Upgrade_ChinaBlackNapalm
42250    End
42251  
42252    Behavior = PhysicsBehavior ModuleTag_05
42253      Mass = 500.0
42254    End
42255  
42256    Behavior = JetAIUpdate ModuleTag_06
42257      OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
42258                                          ; note that it's expressed as a percent of max health, not an absolute
42259      TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
42260      TakeoffPause              = 500
42261      MinHeight                 = 5
42262      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
42263    End
42264  
42265    Locomotor = SET_NORMAL MIGLocomotor
42266    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
42267  
42268  
42269    Behavior = FlammableUpdate ModuleTag_08
42270      AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
42271      AflameDamageAmount = 3       ; taking this much damage...
42272      AflameDamageDelay = 500      ; this often.
42273    End
42274  
42275    Behavior                       = TransitionDamageFX ModuleTag_09
42276      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
42277      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
42278    End
42279  
42280    Behavior        = MaxHealthUpgrade ModuleTag_10
42281      TriggeredBy   = Upgrade_ChinaAircraftArmor
42282      AddMaxHealth  = 40.0
42283      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
42284    End
42285  
42286  
42287  
42288    Geometry                 = Box
42289    GeometryIsSmall          = Yes
42290    GeometryMajorRadius      = 14.0
42291    GeometryMinorRadius      = 7.0
42292    GeometryHeight           = 5.0
42293    Shadow                   = SHADOW_VOLUME
42294    
42295    Shadow = SHADOW_VOLUME
42296    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
42297  
42298  End
42299  ;------------------------------------------------------------------------------
42300  
42301  
42302  
42303  
42304  Object AmericaJetB52X
42305  
42306    ; *** ART Parameters ***
42307    SelectPortrait         = T10
42308    ButtonImage            = T10
42309    
42310    UpgradeCameo1 = none
42311    
42312    Draw = W3DModelDraw ModuleTag_01
42313   DefaultConditionState
42314        Model = AVBomber
42315        ParticleSysBone = Engine01 JetBlackTrailThin
42316        ParticleSysBone = Engine02 JetBlackTrailThin
42317        ParticleSysBone = Engine03 JetBlackTrailThin
42318        ParticleSysBone = Engine04 JetBlackTrailThin
42319        ParticleSysBone = WingTip01 JetContrailThin
42320        ParticleSysBone = WingTip02 JetContrailThin
42321      End
42322      ConditionState = DAMAGED
42323        Model = AVBomber_D
42324        ParticleSysBone = Smoke01 JetFireLarge
42325        ParticleSysBone = Smoke02 JetFireLarge
42326        ParticleSysBone = Engine01 JetBlackTrailThin
42327        ParticleSysBone = Engine02 JetBlackTrailThin
42328        ParticleSysBone = Engine03 JetBlackTrailThin
42329        ParticleSysBone = Engine04 JetBlackTrailThin
42330        ParticleSysBone = Smoke01 JetSmokeLarge
42331        ParticleSysBone = Smoke02 JetSmokeLarge
42332      End
42333      ConditionState = REALLYDAMAGED
42334        Model = AVBomber_D
42335        ParticleSysBone = Smoke01 JetFireLarge
42336        ParticleSysBone = Smoke02 JetFireLarge
42337        ParticleSysBone = Engine01 JetBlackTrailThin
42338        ParticleSysBone = Engine02 JetBlackTrailThin
42339        ParticleSysBone = Engine03 JetBlackTrailThin
42340        ParticleSysBone = Engine04 JetBlackTrailThin
42341        ParticleSysBone = Smoke01 JetSmokeLarge
42342        ParticleSysBone = Smoke02 JetSmokeLarge
42343      End
42344      ConditionState = RUBBLE
42345        Model = AVBomber_D1
42346        ParticleSysBone = Smoke01 JetFireLarge
42347        ParticleSysBone = Smoke02 JetFireLarge
42348        ParticleSysBone = Smoke01 JetSmokeLarge
42349        ParticleSysBone = Smoke02 JetSmokeLarge
42350      End
42351  
42352      OkToChangeModelColor = Yes
42353    End
42354  
42355    ; ***DESIGN parameters ***
42356    DisplayName         = OBJECT:B52
42357    EditorSorting       = VEHICLE
42358    Side                = America
42359    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
42360    VisionRange         = 500.0 
42361    ShroudClearingRange = 500
42362    Prerequisites
42363      Object = AmericaAirfield
42364      Object = USAAdvLab
42365      Science = SCIENCE_PaladinTank
42366    End
42367    BuildCost           = 5000
42368    BuildTime           = 50.0          ;in seconds     
42369    WeaponSet
42370      Conditions = None 
42371      Weapon = PRIMARY B52CarpetBomb
42372    End
42373    ArmorSet
42374      Conditions      = None
42375      Armor           = AirplaneArmor
42376      DamageFX        = None
42377    End
42378  
42379    ExperienceValue = 200 200 400 400   ;Experience point value at each level
42380    ExperienceRequired = 0 200 400 800  ;Experience points needed to gain each level
42381    IsTrainable = Yes                   ;Can gain experience
42382    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
42383    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
42384    MaxSimultaneousOfType = 1
42385    CommandSet            = AmericaJetAuroraCommandSet
42386  
42387    ; *** AUDIO Parameters ***
42388    VoiceSelect = AuroraBomberVoiceSelect
42389    VoiceMove = AuroraBomberVoiceMove
42390    VoiceGuard = AuroraBomberVoiceMove
42391    VoiceAttack = AuroraBomberVoiceAttack
42392    SoundAmbient = B52AmbientLoop
42393    SoundAmbientRubble    = NoSound
42394    SoundDie = AuroraBomberVoiceFalling
42395    UnitSpecificSounds
42396      VoiceCreate          = AuroraBomberVoiceCreate
42397      SoundEject           = PilotSoundEject
42398      VoiceEject           = PilotVoiceEject
42399      Afterburner          = RaptorAfterburner
42400      VoiceLowFuel         = AuroraBomberVoiceLowFuel
42401      VoiceGarrison        = AuroraBomberVoiceMove
42402    End
42403  
42404    ; *** ENGINEERING Parameters ***
42405    RadarPriority = UNIT
42406    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
42407    Body = ActiveBody ModuleTag_02
42408      MaxHealth       = 650.0
42409      InitialHealth   = 650.0
42410    End
42411  
42412    Behavior                          = JetSlowDeathBehavior ModuleTag_03
42413      FXOnGroundDeath                 = FX_JetOnGroundDeath
42414      OCLOnGroundDeath                = OCL_AuroraDeathFinalBlowUp
42415      DestructionDelay                = 99999999; destruction will happen when we
42416      RollRate                        = 0.2
42417      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
42418      PitchRate                       = 0.0
42419     FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
42420      FXInitialDeath                  = FX_JetBigDeathInitial
42421      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
42422      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
42423      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
42424      FXSecondary                     = FX_BigPlaneDeath
42425     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
42426     OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
42427    End
42428    Behavior = EjectPilotDie ModuleTag_04
42429      GroundCreationList = OCL_EjectPilotOnGround
42430      AirCreationList = OCL_EjectPilotViaParachute
42431      ExemptStatus = HIJACKED
42432      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
42433    End
42434  
42435    Behavior = PhysicsBehavior ModuleTag_05
42436      Mass = 500.0
42437    End
42438  
42439    Behavior = ExperienceScalarUpgrade ModuleTag_06
42440      TriggeredBy = Upgrade_AmericaAdvancedTraining
42441      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
42442    End
42443  
42444    Behavior = JetAIUpdate ModuleTag_07
42445      OutOfAmmoDamagePerSecond    = 10%    ; amount of damage to take per SEC (not per frame) when out of ammo
42446                                           ; note that it's expressed as a percent of max health, not an absolute
42447      TakeoffSpeedForMaxLift      = 100%   ; smaller numbers give more lift sooner when taking off
42448      TakeoffPause                = 500
42449      MinHeight                   = 5
42450      ReturnToBaseIdleTime        = 1000000         ; if idle for this long, return to base, even if not out of ammo
42451    End
42452    Locomotor = SET_NORMAL      B52Locomotor2
42453    Locomotor = SET_TAXIING     BasicJetTaxiLocomotor
42454  
42455    Behavior = FlammableUpdate ModuleTag_21
42456      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
42457      AflameDamageAmount = 3       ; taking this much damage...
42458      AflameDamageDelay = 500       ; this often.
42459    End
42460  
42461    Behavior                 = TransitionDamageFX ModuleTag_22
42462      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
42463      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
42464    End
42465  
42466  
42467    Geometry = Box
42468    GeometryIsSmall = No
42469    GeometryMajorRadius = 60.0
42470    GeometryMinorRadius = 10.0
42471    GeometryHeight = 10.0
42472    Shadow = SHADOW_VOLUME
42473    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
42474  End
42475  
42476  
42477  
42478  
42479  ;------------------------------------------------------------------------------
42480  
42481  
42482  
42483  
42484  
42485  Object SmallBomb
42486  
42487    ; *** ART Parameters ***
42488    Draw = W3DModelDraw ModuleTag_01
42489      DefaultConditionState
42490        Model = SMALLBOMB
42491      End
42492    End
42493  
42494    ; ***DESIGN parameters ***
42495    Side = America
42496    EditorSorting     = SYSTEM
42497    ArmorSet
42498      Conditions      = None
42499      Armor           = ProjectileArmor
42500      DamageFX        = None
42501    End
42502    VisionRange       = 0.0  
42503  
42504    ; *** AUDIO Parameters ***
42505  
42506    ; *** ENGINEERING Parameters ***
42507    KindOf            = PROJECTILE
42508    Body              = ActiveBody ModuleTag_02
42509      MaxHealth       = 100.0
42510      InitialHealth   = 100.0
42511    End
42512  
42513    Behavior              = PhysicsBehavior ModuleTag_03
42514      Mass                = 75.0
42515      AerodynamicFriction = 2     ; this is now friction-per-sec
42516      ForwardFriction     = 2     ; this is now friction-per-sec
42517      CenterOfMassOffset  = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
42518    End
42519  
42520    ; it may seem odd to have a "bomb" with a Locomotor, especially a Thrust locomotor,
42521    ; but there's a good reason: the Aurora moves so freakin' fast that it's really
42522    ; hard to (1) find a reliable drop location, and (2) actually get it close enough to
42523    ; that location. So we cheat: just get fairly close, then let the "bomb" do a little (subtle)
42524    ; navigation on the way down. This works pretty well and actually looks much better
42525    ; than you might think. (srj)
42526    Behavior = MissileAIUpdate ModuleTag_04
42527      TryToFollowTarget   = No 
42528      FuelLifetime        = 0
42529      IgnitionDelay       = 0
42530      InitialVelocity     = 0                ; in dist/sec
42531      DistanceToTravelBeforeTurning = 0
42532      DistanceToTargetBeforeDiving  = 0
42533    End
42534    Locomotor = SET_NORMAL AuroraBombLocomotor   ; yes, that's right.
42535  
42536    Geometry = Sphere
42537    GeometryIsSmall = Yes
42538    GeometryMajorRadius = 2.0
42539  
42540  End
42541  Object SmallBombinvis
42542  
42543    ; *** ART Parameters ***
42544    Draw = W3DModelDraw ModuleTag_01
42545      DefaultConditionState
42546        Model = None
42547      End
42548    End
42549  
42550    ; ***DESIGN parameters ***
42551    Side = America
42552    EditorSorting     = SYSTEM
42553    ArmorSet
42554      Conditions      = None
42555      Armor           = ProjectileArmor
42556      DamageFX        = None
42557    End
42558    VisionRange       = 0.0  
42559  
42560    ; *** AUDIO Parameters ***
42561  
42562    ; *** ENGINEERING Parameters ***
42563    KindOf            = PROJECTILE
42564    Body              = ActiveBody ModuleTag_02
42565      MaxHealth       = 100.0
42566      InitialHealth   = 100.0
42567    End
42568  
42569    Behavior              = PhysicsBehavior ModuleTag_03
42570      Mass                = 75.0
42571      AerodynamicFriction = 2     ; this is now friction-per-sec
42572      ForwardFriction     = 2     ; this is now friction-per-sec
42573      CenterOfMassOffset  = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
42574    End
42575  
42576    ; it may seem odd to have a "bomb" with a Locomotor, especially a Thrust locomotor,
42577    ; but there's a good reason: the Aurora moves so freakin' fast that it's really
42578    ; hard to (1) find a reliable drop location, and (2) actually get it close enough to
42579    ; that location. So we cheat: just get fairly close, then let the "bomb" do a little (subtle)
42580    ; navigation on the way down. This works pretty well and actually looks much better
42581    ; than you might think. (srj)
42582    Behavior = MissileAIUpdate ModuleTag_04
42583      TryToFollowTarget   = No 
42584      FuelLifetime        = 0
42585      IgnitionDelay       = 0
42586      InitialVelocity     = 0                ; in dist/sec
42587      DistanceToTravelBeforeTurning = 0
42588      DistanceToTargetBeforeDiving  = 0
42589    End
42590    Locomotor = SET_NORMAL AuroraBombLocomotor   ; yes, that's right.
42591  
42592    Geometry = Sphere
42593    GeometryIsSmall = Yes
42594    GeometryMajorRadius = 2.0
42595  
42596  End
42597  
42598  Object GuidedSmallBomb
42599  
42600    ; *** ART Parameters ***
42601    Draw = W3DModelDraw ModuleTag_01
42602      DefaultConditionState
42603        Model = SMALLBOMB
42604      End
42605    End
42606  
42607    ; ***DESIGN parameters ***
42608    Side = America
42609    EditorSorting     = SYSTEM
42610    ArmorSet
42611      Conditions      = None
42612      Armor           = ProjectileArmor
42613      DamageFX        = None
42614    End
42615    VisionRange       = 0.0  
42616  
42617    ; *** AUDIO Parameters ***
42618  
42619    ; *** ENGINEERING Parameters ***
42620    KindOf            = PROJECTILE
42621    Body              = ActiveBody ModuleTag_02
42622      MaxHealth       = 100.0
42623      InitialHealth   = 100.0
42624    End
42625  
42626    Behavior              = PhysicsBehavior ModuleTag_03
42627      Mass                = 75.0
42628      AerodynamicFriction = 2     ; this is now friction-per-sec
42629      ForwardFriction     = 2     ; this is now friction-per-sec
42630      CenterOfMassOffset  = 4     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
42631    End
42632  
42633    ; it may seem odd to have a "bomb" with a Locomotor, especially a Thrust locomotor,
42634    ; but there's a good reason: the Aurora moves so freakin' fast that it's really
42635    ; hard to (1) find a reliable drop location, and (2) actually get it close enough to
42636    ; that location. So we cheat: just get fairly close, then let the "bomb" do a little (subtle)
42637    ; navigation on the way down. This works pretty well and actually looks much better
42638    ; than you might think. (srj)
42639    Behavior = MissileAIUpdate ModuleTag_04
42640      TryToFollowTarget   = Yes
42641      FuelLifetime        = 0
42642      IgnitionDelay       = 0
42643      InitialVelocity     = 0                ; in dist/sec
42644      DistanceToTravelBeforeTurning = 0
42645      DistanceToTargetBeforeDiving  = 0
42646    End
42647    Locomotor = SET_NORMAL AuroraBombLocomotor   ; yes, that's right.
42648  
42649    Geometry = Sphere
42650    GeometryIsSmall = Yes
42651    GeometryMajorRadius = 2.0
42652  
42653  End
42654  
42655  ;------------------------------------------------------------------------------
42656  
42657  Object ChinaJetBadger
42658  
42659    ; *** ART Parameters ***
42660    SelectPortrait         = SSBayonet    
42661    ButtonImage            = SSBayonet
42662    
42663    UpgradeCameo1 = Upgrade_ChinaAircraftArmor
42664    ;UpgradeCameo3 = NONE
42665    ;UpgradeCameo4 = NONE
42666    ;UpgradeCameo5 = NONE
42667    
42668    Draw = W3DModelDraw ModuleTag_01
42669  
42670      OkToChangeModelColor = Yes
42671      ProjectileBoneFeedbackEnabledSlots = PRIMARY SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
42672      DefaultConditionState
42673        Model               = NVBADGER
42674        HideSubObject       = BurnerFX01 BurnerFX02
42675        WeaponLaunchBone    = PRIMARY WeaponA01
42676      WeaponLaunchBone    = SECONDARY WeaponA02
42677      Turret              = TURRET01
42678      WeaponLaunchBone    = TERTIARY WeaponA02
42679      WeaponHideShowBone = PRIMARY MISSILE01
42680        WeaponHideShowBone = SECONDARY MISSILE02
42681      
42682      
42683      End
42684  
42685      ConditionState        = JETEXHAUST
42686        ParticleSysBone     = Wingtip01 JetContrail
42687        ParticleSysBone     = Wingtip02 JetContrail
42688      End
42689  
42690      ConditionState       = JETEXHAUST JETAFTERBURNER
42691        ShowSubObject      = BurnerFX01 BurnerFX02
42692        ParticleSysBone     = ENGINE01 JetExhaust
42693        ParticleSysBone     = ENGINE02 JetExhaust
42694        ParticleSysBone     = Wingtip01 JetContrail
42695        ParticleSysBone     = Wingtip02 JetContrail
42696      End
42697  
42698      ConditionState        = REALLYDAMAGED
42699        Model               = NVBADGER
42700        ParticleSysBone     = Wingtip01 JetContrail
42701        ParticleSysBone     = Wingtip02 JetContrail
42702      End
42703  
42704      ConditionState        = RUBBLE
42705        Model               = NVBADGER
42706      End
42707  
42708      ConditionState        = REALLYDAMAGED JETEXHAUST
42709        Model               = NVBADGER
42710        ParticleSysBone     = Wingtip01 JetContrail
42711        ParticleSysBone     = Wingtip02 JetContrail
42712      End
42713  
42714      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
42715        Model               = NVBADGER
42716        ShowSubObject       = BurnerFX01 BurnerFX02
42717        ParticleSysBone     = Engine01 JetExhaust
42718        ParticleSysBone     = Engine02 JetExhaust
42719        ParticleSysBone     = Wingtip01 JetContrail
42720        ParticleSysBone     = Wingtip02 JetContrail
42721      End
42722  
42723      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
42724        ; @todo srj -- model missing
42725        ;Model              = NVMIG_D1B
42726        Model               = NVBADGER
42727        ;HideSubObject is needed cause there're inherited from default condition state      
42728        HideSubObject       = None 
42729        ShowSubObject       = None
42730        ParticleSysBone     = Engine01 JetExhaust
42731        ParticleSysBone     = Engine02 JetExhaust
42732        ParticleSysBone     = Wingtip01 JetContrail
42733        ParticleSysBone     = Wingtip02 JetContrail
42734      End
42735  
42736    End
42737  
42738    ; ***DESIGN parameters ***
42739    DisplayName             = OBJECT:BADGERBOMBER
42740    EditorSorting           = VEHICLE
42741    Side                    = China
42742    TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
42743    VisionRange             = 500.0 
42744    ShroudClearingRange     = 300.0
42745  
42746    Prerequisites
42747      Object                = ChinaAirfield
42748      Object                = CommandandControl
42749      Science               = SCIENCE_NukeLauncher
42750    End
42751  
42752    WeaponSet
42753          Conditions        = None 
42754          Weapon            = PRIMARY     BeagleJetBombWeapon
42755    End
42756  
42757    ArmorSet
42758      Conditions           = None
42759      Armor                = AirplaneArmor
42760      DamageFX             = None
42761    End
42762  
42763    BuildCost               = 4000
42764    BuildTime               = 40  
42765    ExperienceValue         = 50 50 100 150   ;Experience point value at each level
42766    ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
42767    IsTrainable = Yes             ;Can gain experience
42768    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
42769    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
42770    MaxSimultaneousOfType  = 1
42771    CommandSet             = ChinaJetMIGCommandSet
42772  
42773    ; *** AUDIO Parameters ***
42774    VoiceSelect             = MigVoiceSelect
42775    VoiceMove               = MigVoiceMove
42776    VoiceAttack             = MigVoiceAttack
42777    VoiceAttackAir          = MigVoiceAttackAir
42778    VoiceGuard              = MigVoiceAirPatrol
42779    SoundAmbient            = MigAmbientLoop
42780    SoundDie                = MigVoiceFalling
42781    UnitSpecificSounds
42782      VoiceCreate           = MigVoiceCreate
42783      Afterburner           = RaptorAfterburner
42784      VoiceGarrison         = MigVoiceMove
42785    End
42786  
42787    ; *** ENGINEERING Parameters ***
42788    RadarPriority          = UNIT
42789    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
42790    Body                   = ActiveBody ModuleTag_02
42791      MaxHealth            = 260.0
42792      InitialHealth        = 260.0
42793    End
42794  
42795    Behavior                          = JetSlowDeathBehavior ModuleTag_03
42796      FXOnGroundDeath                 = FX_JetOnGroundDeath
42797      OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp
42798      DestructionDelay                = 99999999  ; destruction will happen when we
42799      RollRate                        = 0.2
42800      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
42801      PitchRate                       = 0.0
42802      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
42803      FXInitialDeath                  = FX_JetDeathInitial
42804      OCLInitialDeath                 = OCL_MIGDeathInitial
42805      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
42806      FXSecondary                     = FX_JetDeathSecondary
42807      OCLSecondary                    = OCL_MIGDeathSecondary
42808      FXHitGround                     = FX_JetDeathHitGround
42809      OCLHitGround                    = OCL_MIGDeathHitGround
42810      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
42811      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
42812      OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp
42813    End
42814  
42815  
42816    Behavior = PhysicsBehavior ModuleTag_05
42817      Mass = 500.0
42818    End
42819  
42820    Behavior = JetAIUpdate ModuleTag_06
42821      OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
42822                                          ; note that it's expressed as a percent of max health, not an absolute
42823      TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
42824      TakeoffPause              = 500
42825      MinHeight                 = 5
42826      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
42827  Turret
42828        TurretTurnRate = 180      ; this "turret" does not turn
42829        TurretPitchRate = 90     ; nor does it pitch
42830        ControlledWeaponSlots = TERTIARY
42831      End
42832    End
42833  
42834    Locomotor = SET_NORMAL B52Locomotor2
42835    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
42836  
42837  
42838    Behavior = FlammableUpdate ModuleTag_08
42839      AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
42840      AflameDamageAmount = 3       ; taking this much damage...
42841      AflameDamageDelay = 500      ; this often.
42842    End
42843  
42844    Behavior                       = TransitionDamageFX ModuleTag_09
42845      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
42846      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
42847    End
42848  
42849    Behavior        = MaxHealthUpgrade ModuleTag_10
42850      TriggeredBy   = Upgrade_ChinaAircraftArmor
42851      AddMaxHealth  = 100.0
42852      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
42853    End
42854  
42855  
42856  
42857    Geometry                 = Box
42858    GeometryIsSmall          = Yes
42859    GeometryMajorRadius      = 14.0
42860    GeometryMinorRadius      = 7.0
42861    GeometryHeight           = 5.0
42862    Shadow                   = SHADOW_VOLUME
42863    
42864    Shadow = SHADOW_VOLUME
42865    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
42866  
42867  End
42868  
42869  ;------------------------------------------------------------------------------
42870  Object GLAVehicleChopper
42871  
42872    ; *** ART Parameters ***
42873   SelectPortrait         = SNPOWTruck_L
42874    ButtonImage            = SNPOWTruck_L
42875    
42876    ;UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
42877    ;UpgradeCameo2 = NONE
42878    ;UpgradeCameo3 = NONE
42879    ;UpgradeCameo4 = NONE
42880    ;UpgradeCameo5 = NONE
42881  
42882    Draw = W3DModelDraw                         ModuleTag_01 ; Helicopter 
42883  
42884      ExtraPublicBone = RopeStart
42885      ExtraPublicBone = RopeEnd
42886   
42887      DefaultConditionState
42888        Model                           = LittleBird
42889        Animation                       = LittleBird.LittleBird
42890        AnimationMode                   = LOOP
42891        WeaponLaunchBone  = SECONDARY WEAPONA02
42892      WeaponLaunchBone  = PRIMARY WEAPONA01
42893      End
42894  
42895      ConditionState = REALLYDAMAGED
42896         Model                           = LittleBird
42897        Animation                       = LittleBird.LittleBird
42898        AnimationMode                   = LOOP
42899      End
42900  
42901  
42902      ConditionState = RUBBLE
42903        Model                           = LittleBird
42904        Animation                       = LittleBird.LittleBird
42905        AnimationMode                   = LOOP
42906      End
42907  
42908      ConditionState = RUBBLE SPECIAL_DAMAGED
42909        Model = LittleBird
42910        HideSubObject = Props01
42911      End
42912  
42913      OkToChangeModelColor = Yes
42914    End
42915  
42916    Draw = W3DModelDraw                         ModuleTag_02 ; Cargo net 
42917      ConditionState = NONE
42918        Model = None  ; Nothing here
42919        TransitionKey = TRANS_Empty
42920        WaitForStateToFinishIfPossible = TRANS_Unloading
42921      End
42922  
42923      ConditionState = DYING 
42924        Model = None  ; Nothing here
42925      End
42926      AliasConditionState = RUBBLE
42927      AliasConditionState = CARRYING RUBBLE
42928      AliasConditionState = DOCKING RUBBLE
42929      AliasConditionState = DOCKING CARRYING RUBBLE
42930   
42931       ConditionState = CARRYING
42932        Model = LittleBird ;Carrying a full wobbly net of stuff
42933        Animation = LittleBird.LittleBird
42934        AnimationMode = LOOP
42935        TransitionKey = TRANS_Full
42936        WaitForStateToFinishIfPossible = TRANS_PickingUp
42937      End
42938  
42939      ConditionState = DOCKING
42940        Model = LittleBird ;Lowering an empty net, pulling up with stuff
42941        Animation = LittleBird.LittleBird
42942        AnimationMode = ONCE_BACKWARDS
42943        Flags = START_FRAME_LAST
42944        AnimationSpeedFactorRange = .75 .75
42945        TransitionKey = TRANS_PickingUp
42946        WaitForStateToFinishIfPossible = TRANS_Unloading  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
42947      End
42948  
42949      ConditionState = DOCKING CARRYING
42950        Model = LittleBird ; Lowering a full net, letting stuff fall out, and pulling up an empty net
42951        Animation = LittleBird.LittleBird
42952        AnimationMode = ONCE
42953        AnimationSpeedFactorRange = 2.75 2.75
42954        TransitionKey = TRANS_Unloading
42955        WaitForStateToFinishIfPossible = TRANS_PickingUp  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
42956      End
42957    End
42958  
42959    ; ***DESIGN parameters ***
42960    DisplayName         = OBJECT:Chopper
42961    EditorSorting       = VEHICLE
42962    Side                = GLA
42963    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
42964    VisionRange         = 300.0 
42965    ShroudClearingRange = 300
42966    BuildCost           = 700
42967    BuildTime           = 15.0          ;in seconds  
42968    Prerequisites
42969    End
42970    ExperienceValue     = 50 50 50 50 ;Experience point value at each level
42971    IsTrainable         = No  
42972    CommandSet          = GLAVehicleChopperCommandSet
42973  
42974  
42975    Prerequisites
42976      Object                = GLAAirfield
42977      Object                = GLABlackMarket
42978    End
42979  WeaponSet
42980      Conditions = None 
42981      Weapon = PRIMARY HumveeGun    
42982    End
42983    ArmorSet
42984      Conditions      = None
42985      Armor           = ComancheArmor
42986      DamageFX        = None
42987    End
42988  
42989    ; *** AUDIO Parameters ***
42990   VoiceSelect = TechnicalVoiceSelect
42991    VoiceMove = TechnicalVoiceMove
42992    VoiceGuard = TechnicalVoiceMove
42993    VoiceAttack = TechnicalVoiceAttack
42994    SoundDie = TechnicalVoiceDie
42995    SoundEnter = HumveeEnter
42996    SoundExit = HumveeExit
42997    SoundAmbient          = ComancheAmbientLoop
42998    UnitSpecificSounds
42999      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
43000      VoiceCreate          = TechnicalVoiceCreate
43001    End
43002  
43003    
43004    ; *** ENGINEERING Parameters ***
43005    RadarPriority   = LOCAL_UNIT_ONLY
43006    ; note that, although Chinooks aren't produced at helipads, we want to set this KINDOF so that they can land at
43007    ; (well, "near" actually) an Airfield to get healed...
43008    ; also note that we should NOT set CAN_ATTACK for chinooks. they can't attack. so there.
43009    KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE TRANSPORT AIRCRAFT SCORE PRODUCED_AT_HELIPAD
43010  
43011    Body = ActiveBody ModuleTag_03
43012      MaxHealth       = 120.0
43013      InitialHealth   = 120.0
43014    End
43015  
43016    Behavior = FXListDie ModuleTag_05
43017      DeathFX = FX_HelicopterStartDeath
43018    End
43019  
43020    Behavior                       = TransitionDamageFX ModuleTag_06
43021      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
43022      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
43023    End
43024  
43025    Behavior = ChinookAIUpdate ModuleTag_07
43026      MaxBoxes                = 8
43027      SupplyCenterActionDelay = 2000     ; ms for whole thing (one transaction)
43028      SupplyWarehouseActionDelay = 870  ; 875 ; ms per box (many small transactions)
43029      SupplyWarehouseScanDistance = 700 ;350 ; Max distance to look for a warehouse, or we go home.  (Direct dock command on warehouse overrides, and no max on Center Scan)
43030      SuppliesDepletedVoice = ChinookVoiceSuppliesDepleted
43031      NumRopes                = 4
43032      ; these define how long we can wait, once a guy is on-rope, before throwing another
43033      ; guy onto that same rope. (Hint: you don't want to use zero.) Omit entirely
43034      ; and we'll wait for each guy to clear before spawning another.
43035      PerRopeDelayMin         = 900
43036      PerRopeDelayMax         = 1500
43037      RopeWidth               = 0.5
43038      RopeColor               = R:0 G:0 B:0
43039      RopeWobbleLen           = 10
43040      RopeWobbleAmplitude     = 0.25
43041      RopeWobbleRate          = 180
43042      RopeFinalHeight         = 10    ; stop this far above ground
43043      RappelSpeed             = 30
43044      MinDropHeight           = 40      ; if dropping into a tall bldg, go at least this far above it
43045  
43046    End
43047    Locomotor = SET_NORMAL    ChinookLocomotor
43048    Locomotor = SET_TAXIING   BasicHelicopterTaxiLocomotor
43049  
43050    Behavior = TransportContain ModuleTag_08
43051      PassengersAllowedToFire = Yes
43052      Slots                 = 2
43053      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
43054      DamagePercentToUnits  = 100%
43055      AllowInsideKindOf     = INFANTRY 
43056      ForbidInsideKindOf    = AIRCRAFT HUGE_VEHICLE VEHICLE
43057      ExitDelay             = 100
43058      NumberOfExitPaths     = 1
43059    End
43060    Behavior = PhysicsBehavior ModuleTag_09
43061      Mass = 50.0
43062    End
43063    Behavior = HelicopterSlowDeathBehavior ModuleTag_10
43064      DestructionDelay                = 99999999        ; the destruction delay
43065      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
43066      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
43067      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
43068      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
43069      SoundDeathLoop                  = ComancheDamagedLoop
43070      MinSelfSpin                     = 100                     ; in degrees per second
43071      MaxSelfSpin                     = 300                     ; in degrees per second
43072      SelfSpinUpdateDelay             = 100                     ; in milliseconds
43073      SelfSpinUpdateAmount            = 10                      ; in degrees   
43074      FallHowFast                     = 12.0%                   ; fraction of gravity, lower = take longer to fall
43075      MinBladeFlyOffDelay             = 1500                    ; in milliseconds
43076      MaxBladeFlyOffDelay             = 1500                    ; in milliseconds
43077      AttachParticle                  = SootySmokeTrail
43078      AttachParticleBone              = Propeller02
43079      BladeObjectName                 = ComancheBlades
43080      BladeBoneName                   = Propeller01    
43081      FXBlade                         = FX_HelicopterBladeExplosion
43082      OCLBlade                        = OCL_HelicopterBladeExplosion
43083      FXHitGround                     = FX_HelicopterHitGround
43084      OCLHitGround                    = OCL_HelicopterHitGround
43085      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
43086      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
43087      DelayFromGroundToFinalDeath     = 30
43088      FinalRubbleObject               = ChinookRubbleHull
43089    End
43090  
43091    Behavior = FlammableUpdate ModuleTag_21
43092      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
43093      AflameDamageAmount = 3       ; taking this much damage...
43094      AflameDamageDelay = 500       ; this often.
43095    End
43096  
43097    Geometry              = BOX
43098    GeometryMajorRadius   = 20.0
43099    GeometryMinorRadius   = 6.0
43100    GeometryHeight        = 12.0     
43101    GeometryIsSmall       = No
43102    Shadow                = SHADOW_VOLUME    
43103    ShadowSizeX           = 89  ; minimum elevation angle above horizon. Used to limit shadow length
43104  
43105  End
43106  
43107  
43108  ;---------------------------------------------------------------------------------
43109  
43110  Object ChinaVehicleRL
43111   ; *** ART Parameters ***
43112    SelectPortrait         = T19
43113    ButtonImage            = T19
43114  
43115    Draw = W3DTankDraw ModuleTag_01
43116  
43117      OkToChangeModelColor = Yes
43118  
43119      DefaultConditionState
43120        Model               = s300_rdy
43121        Turret              = Turret
43122        TurretPitch         = TURRETEL
43123        WeaponFireFXBone    = PRIMARY WEAPONA01
43124        WeaponLaunchBone = PRIMARY WEAPONA01
43125        WeaponFireFXBone    = SECONDARY WEAPONA02
43126        WeaponLaunchBone = SECONDARY WEAPONA02
43127      End
43128  
43129      ConditionState       = REALLYDAMAGED
43130        Model              = s300_rdy
43131        Turret              = Turret
43132        TurretPitch         = TURRETEL
43133      End
43134      ConditionState       = RUBBLE
43135        Model              = s300_rdy
43136        Turret              = Turret
43137        TurretPitch         = TURRETEL
43138      End
43139  
43140      ;*** PACKED STATE -- ready to move ***
43141      ConditionState    = MOVING
43142        Animation       = s300_rdy.s300_rdy
43143        AnimationMode   = ONCE_BACKWARDS
43144        Flags           = START_FRAME_FIRST
43145      End
43146      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
43147      AliasConditionState = BETWEEN_FIRING_SHOTS_A
43148      ;***
43149      ConditionState    = REALLYDAMAGED MOVING
43150        Model           = s300_rdy
43151        Animation       = s300_rdy.s300_rdy
43152        AnimationMode   = ONCE_BACKWARDS
43153        Flags           = START_FRAME_FIRST
43154      End
43155      AliasConditionState = REALLYDAMAGED MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
43156  
43157  
43158      ;*** UNPACKING STATE  -- preparing to fire ***
43159      ConditionState    = UNPACKING
43160        Animation       = s300_rdy.s300_rdy
43161        AnimationMode   = ONCE
43162      End
43163      AliasConditionState = UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
43164      ;***
43165      ConditionState    = REALLYDAMAGED UNPACKING
43166        Model           = s300_rdy
43167        Animation       = s300_rdy.s300_rdy
43168        AnimationMode   = ONCE
43169      End
43170      AliasConditionState = REALLYDAMAGED UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
43171  
43172      ;*** PACKING STATE -- preparing to move ***
43173      ConditionState    = PACKING
43174        Animation       = s300_rdy.s300_rdy
43175        AnimationMode   = ONCE_BACKWARDS
43176        Flags           = START_FRAME_LAST
43177      End
43178  
43179      AliasConditionState = PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
43180      ;***
43181      ConditionState    = REALLYDAMAGED PACKING
43182        Model           = s300_rdy.s300_rdy
43183        Animation       = s300_f.s300_f
43184        AnimationMode   = ONCE_BACKWARDS
43185        Flags           = START_FRAME_LAST
43186      End
43187      AliasConditionState = REALLYDAMAGED PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
43188  
43189      ;*** DEPLOYED STATE -- ready to fire ***
43190      ConditionState  = DEPLOYED
43191        Animation       = s300_rdy.s300_rdy
43192        AnimationMode   = ONCE
43193        Flags           = START_FRAME_LAST
43194        TransitionKey   = TRANS_FIRING_A
43195      End
43196      AliasConditionState = DEPLOYED FIRING_A
43197      AliasConditionState = DEPLOYED BETWEEN_FIRING_SHOTS_A
43198      AliasConditionState = DEPLOYED RELOADING_A
43199      AliasConditionState = DEPLOYED MOVING
43200  
43201      ConditionState  = DEPLOYED REALLYDAMAGED
43202        Model           = s300_rdy
43203        Animation       = s300_rdy.s300_rdy
43204        AnimationMode   = ONCE
43205        Flags           = START_FRAME_LAST
43206        TransitionKey   = TRANS_FIRING_A
43207      End
43208      AliasConditionState = DEPLOYED REALLYDAMAGED FIRING_A
43209      AliasConditionState = DEPLOYED REALLYDAMAGED BETWEEN_FIRING_SHOTS_A
43210      AliasConditionState = DEPLOYED REALLYDAMAGED RELOADING_A
43211      AliasConditionState = DEPLOYED REALLYDAMAGED MOVING
43212  
43213      TrackMarks              = EXTnkTrack.tga
43214      TreadAnimationRate      = 4.0  ; amount of tread texture to move per second
43215  
43216    End
43217  
43218   ; ***DESIGN parameters ***
43219    DisplayName      = OBJECT:ChinaVehicleS300
43220    Side = China
43221    EditorSorting   = VEHICLE
43222    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
43223     WeaponSet
43224      Conditions           = None
43225      Weapon               = PRIMARY ChinaMLRSRocket
43226      Weapon           = SECONDARY ChinaMLRSRocket
43227    End
43228    ArmorSet
43229      Conditions      = None
43230      Armor           = TruckArmor
43231      DamageFX        = TankDamageFX
43232    End
43233    BuildCost       = 1500
43234    BuildTime       = 10.0          ;in seconds
43235    VisionRange     = 300
43236    ShroudClearingRange = 400
43237    Prerequisites
43238      Object = ChinaWarFactory
43239    End
43240  
43241  
43242    ; *** ENGINEERING Parameters ***
43243    RadarPriority = UNIT
43244    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
43245  
43246    Body = ActiveBody ModuleTag_02
43247      MaxHealth       = 200.0
43248      InitialHealth   = 200.0
43249    End
43250  
43251    ExperienceValue = 100 100 200 400    ;Experience point value at each level
43252    ExperienceRequired = 0 200 300 600 ;Experience points needed to gain each level
43253    IsTrainable = Yes             ;Can gain experience
43254    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
43255    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
43256    CommandSet       = ChinaVehicleBattleMasterCommandSet
43257  
43258    Behavior = HordeUpdate ModuleTag_04
43259      RubOffRadius = 150    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
43260      UpdateRate = 1000     ; how often to recheck horde status (msec)
43261      Radius = 75           ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
43262      KindOf = VEHICLE      ; what KindOf's must match to count towards horde-ness
43263      AlliesOnly = Yes      ; do we only count allies towards horde status?
43264      ExactMatch = Yes      ; do we only count units of our exact same type towards horde status? (overrides kindof)
43265      Count = 5             ; how many units must be within Radius to grant us horde-ness
43266      Action = HORDE        ; when horde-ing, grant us the HORDE bonus
43267    End
43268  
43269    Behavior = DeployStyleAIUpdate ModuleTag_24
43270      Turret
43271        TurretTurnRate        = 0
43272        TurretPitchRate       = 0
43273        FirePitch             = 90            ; Instead of aiming pitchwise at the target, it will aim here
43274        AllowsPitch           = Yes
43275        RecenterTime          = 5000         ; how long to wait during idle before recentering
43276        ControlledWeaponSlots = PRIMARY
43277        NaturalTurretAngle    = 0
43278        InitiallyDisabled     = Yes
43279      End
43280      AutoAcquireEnemiesWhenIdle = No
43281      PackTime = 3333
43282      UnpackTime = 3333
43283      TurretsFunctionOnlyWhenDeployed = Yes
43284      TurretsMustCenterBeforePacking = Yes
43285      AutoAcquireEnemiesWhenIdle = No
43286      PackTime = 3333
43287      UnpackTime = 3333
43288      TurretsFunctionOnlyWhenDeployed = Yes
43289      TurretsMustCenterBeforePacking = Yes
43290    End
43291  
43292    Locomotor = SET_NORMAL ChinaNukeCannonLocomotor
43293    Behavior = PhysicsBehavior ModuleTag_03
43294      Mass = 50.0
43295    End
43296  
43297   Behavior = SlowDeathBehavior ModuleTag_05
43298      DeathTypes = ALL -CRUSHED -SPLATTED
43299      DestructionDelay = 200
43300      DestructionDelayVariance = 100
43301      FX  = FINAL    FX_SupplyTruckExplosionOneFinal
43302      OCL = FINAL    OCL_ChinaSupplyTruckDeathEffect
43303    End
43304  
43305    Behavior = FXListDie ModuleTag_06
43306      DeathTypes = NONE +CRUSHED +SPLATTED
43307      DeathFX = FX_CarCrush
43308    End
43309  
43310    Behavior = CreateObjectDie ModuleTag_07
43311      DeathTypes = NONE +CRUSHED +SPLATTED
43312      CreationList = OCL_ChinaSupplyTruck_CrushEffect
43313    End
43314  
43315  
43316    Behavior = TransitionDamageFX ModuleTag_13
43317      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
43318      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
43319    End
43320  
43321    Behavior = FlammableUpdate ModuleTag_21
43322      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
43323      AflameDamageAmount = 3       ; taking this much damage...
43324      AflameDamageDelay = 500       ; this often.
43325    End
43326  
43327    Geometry = BOX
43328    GeometryMajorRadius = 13.0
43329    GeometryMinorRadius = 9.0
43330    GeometryHeight = 10
43331    GeometryIsSmall = Yes
43332    Shadow = SHADOW_VOLUME
43333    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
43334  
43335  End
43336  
43337  ;------------------------------------------------------------------------------
43338  Object ScorpionMissile2
43339  
43340    ; *** ART Parameters ***
43341    Draw = W3DModelDraw ModuleTag_01
43342      OkToChangeModelColor = Yes
43343      ConditionState = NONE
43344        Model = UVScorpion_m
43345      End
43346    End
43347  
43348    ; ***DESIGN parameters ***
43349    DisplayName      = OBJECT:Missile
43350    EditorSorting   = SYSTEM
43351    VisionRange = 0.0  
43352    ArmorSet
43353      Conditions      = None
43354      Armor           = ProjectileArmor
43355      DamageFX        = None
43356    End
43357  
43358    ; *** ENGINEERING Parameters ***
43359    KindOf = PROJECTILE SMALL_MISSILE
43360    Body = ActiveBody ModuleTag_02
43361      MaxHealth       = 100.0
43362      InitialHealth   = 100.0
43363    End
43364  
43365  ; ---- begin Projectile death behaviors
43366    Behavior = InstantDeathBehavior DeathModuleTag_01
43367      DeathTypes = NONE +DETONATED
43368      ; we detonated normally.
43369      ; no FX, just quiet destroy ourselves
43370    End
43371    Behavior = InstantDeathBehavior DeathModuleTag_02
43372      DeathTypes = NONE +LASERED
43373      ; shot down by laser.
43374      FX         = FX_GenericMissileDisintegrate
43375      OCL        = OCL_GenericMissileDisintegrate
43376    End
43377    Behavior = InstantDeathBehavior DeathModuleTag_03
43378      DeathTypes = ALL -LASERED -DETONATED
43379      ; shot down by nonlaser.
43380      FX         = FX_GenericMissileDeath
43381    End
43382  ; ---- end Projectile death behaviors
43383  
43384    Behavior = PhysicsBehavior ModuleTag_07
43385      Mass = 1
43386    End
43387    Behavior = MissileAIUpdate ModuleTag_08
43388      TryToFollowTarget     = Yes 
43389      FuelLifetime          = 10000
43390      InitialVelocity       = 75                ; in dist/sec
43391      IgnitionDelay         = 30
43392      IgnitionFX            = FX_JetMissileIgnition
43393    End
43394    Locomotor = SET_NORMAL ScorpionMissileLocomotor2
43395  
43396  
43397    Behavior = WeaponBonusUpgrade ModuleTag_08
43398      TriggeredBy = Upgrade_GLAAPRockets
43399    End
43400  
43401    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_18
43402    SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
43403    TriggeredBy = Upgrade_InfantryCaptureBuilding
43404    End
43405  
43406    Geometry = Sphere
43407    GeometryIsSmall = Yes
43408    GeometryMajorRadius = 1.0
43409  
43410    
43411  
43412  End
43413  
43414  ;------------------------------------------------------------------------------
43415  Object ChinaInfantryOfficer
43416  
43417      ; *** ART Parameters ***
43418    SelectPortrait         = SNConscript_L
43419    ButtonImage            = SNConscript
43420    
43421    UpgradeCameo1 = NONE
43422    ;UpgradeCameo2 = NONE
43423    ;UpgradeCameo3 = NONE
43424    ;UpgradeCameo4 = NONE
43425    ;UpgradeCameo5 = NONE
43426    
43427    Draw = W3DModelDraw ModuleTag_01
43428  
43429      OkToChangeModelColor = Yes
43430  
43431      DefaultConditionState
43432        Model = NIAMBSDR_SKN
43433        IdleAnimation = AIOFCR_SKL.AIOFCR_STA 0 21
43434        ;Regular spice animations
43435        IdleAnimation = AIOFCR_SKL.AIOFCR_IDA
43436        IdleAnimation = AIOFCR_SKL.AIOFCR_IDB
43437        AnimationMode = ONCE
43438        WeaponFireFXBone = PRIMARY Muzzle
43439        WeaponMuzzleFlash = PRIMARY MuzzleFX
43440        TransitionKey = TRANS_STAND
43441      End
43442  
43443      ConditionState    = MOVING
43444        Animation       = AIOFCR_SKL.AIOFCR_RNA
43445        AnimationMode   = LOOP
43446        ParticleSysBone     = None InfantryDustTrails
43447      End
43448  
43449      ; NORMAL ATTACK
43450      ;--------------------------------------------------------
43451      ; Drawing gun
43452      ConditionState  = PREATTACK_A
43453        Animation     = AIOFCR_SKL.AIOFCR_ATAST
43454        AnimationMode = ONCE
43455      End
43456      AliasConditionState = PREATTACK_A MOVING
43457      AliasConditionState = PREATTACK_A FIRING_A
43458      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
43459  
43460      ; Firing gun
43461      ConditionState  = FIRING_A
43462        Animation     = AIOFCR_SKL.AIOFCR_ATALP
43463        AnimationMode = LOOP
43464        TransitionKey = TRANS_FIRING_A
43465      End
43466      ConditionState  = BETWEEN_FIRING_SHOTS_A
43467        Animation     = AIOFCR_SKL.AIOFCR_ATALP
43468        AnimationMode = LOOP
43469        TransitionKey = TRANS_FIRING_A
43470      End
43471      AliasConditionState = RELOADING_A
43472      AliasConditionState = MOVING FIRING_A
43473      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
43474      AliasConditionState = MOVING RELOADING_A
43475  
43476      ; This transition allows him to put his gun away when he's finished attacking.
43477      TransitionState = TRANS_FIRING_A TRANS_STAND
43478        Animation     = AIOFCR_SKL.AIOFCR_ATAED
43479        AnimationMode = ONCE
43480      End
43481      ;--------------------------------------------------------
43482  
43483      ConditionState  = DYING
43484        Animation     = AIOFCR_SKL.AIOFCR_DTA
43485        Animation     = AIOFCR_SKL.AIOFCR_DTB
43486        AnimationMode = ONCE
43487        TransitionKey = TRANS_Dying
43488      End
43489  
43490      TransitionState = TRANS_Dying TRANS_Flailing
43491        Animation = AIOFCR_SKL.AIOFCR_ADTE1
43492        AnimationMode = ONCE
43493      End
43494  
43495      ConditionState = DYING EXPLODED_FLAILING
43496        Animation = AIOFCR_SKL.AIOFCR_ADTE2
43497        AnimationMode = LOOP
43498        TransitionKey = TRANS_Flailing
43499      End
43500  
43501      ConditionState = DYING EXPLODED_BOUNCING
43502        Animation = AIOFCR_SKL.AIOFCR_ADTE3
43503        AnimationMode = ONCE
43504        TransitionKey = None
43505      End
43506  
43507      ConditionState  = SPECIAL_CHEERING
43508        Animation     = AIOFCR_SKL.AIOFCR_CHA
43509        AnimationMode = LOOP
43510      End
43511  
43512      ;PARACHUTING ANIMATIONS
43513  
43514      ;@TODO - MISSING ANIMATION FILE
43515      ;ConditionState   = FREEFALL
43516      ;  Animation      = AIOFCR_SKL.AIOFCR_PFL
43517      ;  AnimationMode  = LOOP
43518      ;  TransitionKey  = TRANS_Falling
43519      ;End
43520      ;AliasConditionState = FREEFALL REALLYDAMAGED
43521      ;AliasConditionState = FREEFALL DYING
43522      ConditionState  = PARACHUTING
43523        Animation     = AIOFCR_SKL.AIOFCR_PHG
43524        AnimationMode = LOOP
43525        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
43526        TransitionKey = TRANS_Chute
43527  
43528      End
43529      AliasConditionState = PARACHUTING REALLYDAMAGED
43530      AliasConditionState = PARACHUTING DYING
43531      TransitionState = TRANS_Falling TRANS_Chute
43532        Animation     = AIOFCR_SKL.AIOFCR_POP
43533        AnimationMode = ONCE
43534        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
43535      End
43536      TransitionState = TRANS_Chute TRANS_Stand
43537        Animation     = AIOFCR_SKL.AIOFCR_PTD
43538        AnimationMode = ONCE
43539      End
43540  
43541      ;SURRENDER ANIMATIONS
43542  ; surrender is cut. sorry. (srj)
43543  ;    ConditionState  = SURRENDER
43544  ;      Animation     = AIOFCR_SKL.AIOFCR_SLP
43545  ;      AnimationMode = LOOP
43546  ;      TransitionKey = TRANS_SurrenderStand
43547  ;    End
43548  ;    ConditionState  = SURRENDER MOVING
43549  ;      Animation     = AIOFCR_SKL.AIOFCR_SWKLP
43550  ;      AnimationMode = LOOP
43551  ;      TransitionKey = TRANS_SurrenderMoving
43552  ;    End
43553  ;    TransitionState = TRANS_SurrenderStand TRANS_SurrenderMoving
43554  ;      Animation     = AIOFCR_SKL.AIOFCR_SWKST
43555  ;      AnimationMode = ONCE
43556  ;    End
43557  ;    TransitionState = TRANS_Stand TRANS_SurrenderStand
43558  ;      Animation     = AIOFCR_SKL.AIOFCR_SST
43559  ;      AnimationMode = ONCE
43560  ;    End
43561  
43562    End
43563  
43564    
43565    ; ***DESIGN parameters ***
43566    DisplayName      = OBJECT:Officer
43567    Side = America
43568    EditorSorting = INFANTRY
43569    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
43570    
43571    WeaponSet
43572      Conditions = None 
43573      Weapon = PRIMARY AmericaOfficerMachineGun
43574    End
43575    ArmorSet
43576      Conditions      = None
43577      Armor           = HumanArmor
43578      DamageFX        = InfantryDamageFX
43579    End
43580  
43581    VisionRange = 200
43582    ShroudClearingRange = 400
43583    Prerequisites
43584      Object = AmericaBarracks
43585   
43586  
43587    End
43588    BuildCost = 1000
43589    BuildTime = 30.0          ;in seconds  
43590    
43591    ExperienceValue = 40 40 60 80    ;Experience point value at each level
43592    ExperienceRequired = 0 0 0 0  ;Experience points needed to gain each level
43593    IsTrainable = Yes             ;Can gain experience
43594    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
43595    CommandSet      = SpyCommandSet
43596  
43597    ; *** AUDIO Parameters ***
43598    VoiceSelect = PathfinderVoiceSelect
43599    VoiceMove = PathfinderVoiceMove
43600    VoiceGuard = PathfinderVoiceMove
43601    VoiceAttack = PathfinderVoiceAttack
43602    SoundDie = PathfinderVoiceDie
43603    SoundDieFire = DieByFireUSA
43604    SoundDieToxin = DieByToxinUSA
43605    VoiceFear = PathfinderVoiceFear
43606  ; surrender is cut. sorry. (srj)
43607  ;  VoiceSurrender =VoiceSurrender
43608    SoundStealthOn = StealthOn
43609    SoundStealthOff = StealthOff
43610    VoiceFear = PathfinderVoiceFear
43611    
43612    UnitSpecificSounds
43613      VoiceCreate          = PathfinderVoiceCreate
43614      VoiceGarrison = PathfinderVoiceGarrison
43615      VoiceEnter = PathfinderVoiceMove
43616      VoiceEnterHostile =  PathfinderVoiceMove
43617      VoiceGetHealed      = PathfinderVoiceMove
43618    End
43619  
43620    ; *** ENGINEERING Parameters ***
43621    RadarPriority = UNIT
43622    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY STEALTH_GARRISON SCORE
43623  
43624    Body = ActiveBody ModuleTag_02
43625      MaxHealth       = 120.0
43626      InitialHealth   = 120.0
43627    End
43628  
43629    Behavior = AIUpdateInterface ModuleTag_03
43630      AutoAcquireEnemiesWhenIdle = Yes Stealthed
43631      MoodAttackCheckRate        = 250
43632    End
43633  
43634    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
43635      ScanRate = 1000 ; once a second.
43636      ScanRange = 300 ;
43637      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
43638      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
43639    End
43640  
43641    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
43642  
43643    Behavior = ExperienceScalarUpgrade ModuleTag_05
43644      TriggeredBy = Upgrade_AmericaAdvancedTraining
43645      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
43646    End
43647  
43648    Behavior = PhysicsBehavior ModuleTag_06
43649      Mass = 5.0
43650    End
43651  
43652    Behavior = SquishCollide ModuleTag_10
43653      ;nothing
43654    End
43655  
43656  
43657  ; --- begin Death modules ---
43658    Behavior = SlowDeathBehavior ModuleTag_Death01
43659      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
43660      SinkDelay           = 3000
43661      SinkRate            = 0.5     ; in Dist/Sec
43662      DestructionDelay    = 8000
43663      FX                  = INITIAL FX_GIDie
43664    End
43665    Behavior = SlowDeathBehavior ModuleTag_Death02
43666      DeathTypes          = NONE +CRUSHED +SPLATTED
43667      SinkDelay           = 3000
43668      SinkRate            = 0.5     ; in Dist/Sec
43669      DestructionDelay    = 8000
43670      FX                  = INITIAL FX_GIDieCrushed
43671    End
43672    Behavior = SlowDeathBehavior ModuleTag_Death03
43673      DeathTypes          = NONE +EXPLODED
43674      SinkDelay           = 3000
43675      SinkRate            = 0.5     ; in Dist/Sec
43676      DestructionDelay    = 8000
43677      FX                  = INITIAL FX_GIDie
43678      FlingForce          = 8
43679      FlingForceVariance  = 3
43680      FlingPitch          = 60
43681      FlingPitchVariance  = 10
43682    End
43683    Behavior = SlowDeathBehavior ModuleTag_Death04
43684      DeathTypes          = NONE +BURNED
43685      DestructionDelay    = 0
43686      FX                  = INITIAL FX_GIDie
43687      OCL                 = INITIAL OCL_FlamingInfantry
43688    End
43689    Behavior = SlowDeathBehavior ModuleTag_Death05
43690      DeathTypes          = NONE +POISONED
43691      DestructionDelay    = 0
43692      FX                  = INITIAL FX_GIDie
43693      OCL                 = INITIAL OCL_ToxicInfantry
43694    End
43695    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
43696      DeathTypes          = NONE +POISONED_BETA
43697      DestructionDelay    = 0
43698      FX                  = INITIAL FX_GIDie
43699      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
43700    End
43701  ; --- end Death modules ---
43702  
43703    Behavior = PoisonedBehavior ModuleTag_13
43704      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
43705      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
43706    End
43707   
43708    Geometry = CYLINDER
43709    GeometryMajorRadius = 10.0
43710    GeometryMinorRadius = 10.0
43711    GeometryHeight = 12.0
43712    GeometryIsSmall = Yes
43713    Shadow = SHADOW_DECAL
43714    ShadowSizeX = 14;
43715    ShadowSizeY = 14;
43716    ShadowTexture = ShadowI;
43717    BuildCompletion = APPEARS_AT_RALLY_POINT
43718  
43719  End
43720  
43721  
43722  
43723  ;------------------------------------------------------------------------------
43724  
43725  Object ChinaTankMine
43726  
43727    ; *** ART Parameters ***
43728    SelectPortrait         = T14
43729    ButtonImage            = T14
43730  
43731    Draw                      = W3DTankDraw ModuleTag_01
43732  
43733      OkToChangeModelColor  = Yes
43734      DefaultConditionState
43735        Model               = NVMINE
43736        Turret             = Turret01
43737        AltTurret          = Turret02
43738        WeaponFireFXBone   = PRIMARY Tur1Muzzle
43739        WeaponRecoilBone   = PRIMARY Tur1Barrel
43740        WeaponFireFXBone   = SECONDARY Tur2Muzzle
43741        WeaponRecoilBone   = SECONDARY Tur2Barrel
43742      End
43743  
43744    End
43745  
43746    ; ***DESIGN parameters ***
43747    DisplayName               = OBJECT:ChinaTankMine
43748    Side                      = China
43749    EditorSorting             = VEHICLE
43750    TransportSlotCount        = 3            ;how many "slots" we take in a transport (0 == not transportable)
43751  
43752    WeaponSet
43753      Conditions = None
43754      Weapon                  = PRIMARY   HumveeGun
43755      AutoChooseSources       = PRIMARY   NONE
43756      Weapon                  = SECONDARY RocketMines
43757       AutoChooseSources      = SECONDARY   NONE
43758       Conditions             = MINE_CLEARING_DETAIL
43759      Weapon                =  TERTIARY   DozerMineDisarmingWeapon
43760    End
43761  
43762    ArmorSet
43763      Conditions    = None
43764      Armor         = AntiAirVehicle
43765      DamageFX      = TankDamageFX
43766    End
43767  
43768    BuildCost       = 2000           ;00
43769    BuildTime       = 20            ;0.0          ;in seconds
43770    VisionRange     = 350
43771    ShroudClearingRange = 400
43772  
43773    Prerequisites
43774      Object        = ChinaWarFactory
43775      Object        = CommandandControl
43776      Science       = SCIENCE_ArtilleryTraining
43777    End
43778  
43779    ExperienceValue = 20 20 50 80  ;Experience point value at each level
43780    ExperienceRequired = 0 50 80 120  ;Experience points needed to gain each level
43781    IsTrainable = Yes             ;Can gain experience
43782    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
43783    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
43784    MaxSimultaneousOfType = 3
43785    CommandSet            = ChinaVehicleTankMineCommandSet
43786  
43787    Behavior = AIUpdateInterface ModuleTag_20
43788      AutoAcquireEnemiesWhenIdle = Yes
43789      MoodAttackCheckRate        = 250
43790    End
43791  
43792    ; *** AUDIO Parameters ***
43793    VoiceSelect     = GattlingTankVoiceSelect
43794    VoiceMove       = GattlingTankVoiceMove
43795    VoiceGuard      = GattlingTankVoiceMove
43796    VoiceAttack     = GattlingTankVoiceAttack
43797    SoundMoveStart  = GattlingTankMoveStart
43798    SoundMoveStartDamaged = GattlingTankMoveStart
43799  
43800    UnitSpecificSounds
43801      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
43802      VoiceCreate     = GattlingTankVoiceCreate
43803      TurretMoveStart = NoSound
43804      TurretMoveLoop  = TurretMoveLoopLoud
43805      VoiceCrush      = GattlingTankVoiceCrush
43806      VoiceEnter      = GattlingTankVoiceMove
43807      VoiceRapidFire  = GattlingTankVoiceRapid
43808    End
43809  
43810    ; *** ENGINEERING Parameters ***
43811    RadarPriority     = UNIT
43812    KindOf            = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
43813  
43814    Body              = ActiveBody ModuleTag_02
43815      MaxHealth       = 100.0
43816      InitialHealth   = 100.0
43817    End
43818  
43819  
43820  
43821     Behavior = AIUpdateInterface ModuleTag_04
43822      Turret
43823        TurretTurnRate = 100
43824        TurretPitchRate = 100
43825        AllowsPitch = Yes
43826        FirePitch = 45
43827        ControlledWeaponSlots = SECONDARY
43828      End
43829      AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
43830    End
43831  
43832    Locomotor       = SET_NORMAL GattlingTankLocomotor
43833  
43834    Behavior          = PhysicsBehavior ModuleTag_04
43835      Mass            = 80.0
43836    End
43837  
43838    ; Just explode death
43839    Behavior = SlowDeathBehavior ModuleTag_05
43840      ProbabilityModifier = 19
43841      DestructionDelay = 200
43842      DestructionDelayVariance = 100
43843  
43844      SinkRate = 0.5     ; in Dist/Sec
43845  
43846      OCL = FINAL    OCL_ChinaTankGattlingDebris
43847      FX  = FINAL    FX_GattlingExplosionOneFinal
43848    End
43849  
43850    Behavior = CreateCrateDie ModuleTag_06
43851      CrateData = SalvageCrateData
43852      ;CrateData = EliteTankCrateData
43853      ;CrateData = HeroicTankCrateData
43854    End
43855  
43856    Behavior = TransitionDamageFX ModuleTag_07
43857      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
43858      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
43859    End
43860  
43861    Behavior = FlammableUpdate ModuleTag_21
43862      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
43863      AflameDamageAmount = 3       ; taking this much damage...
43864      AflameDamageDelay = 500       ; this often.
43865    End
43866  
43867    Geometry            = BOX
43868    GeometryMajorRadius = 15.0
43869    GeometryMinorRadius = 10.0
43870    GeometryHeight      = 15.0
43871    GeometryIsSmall     = Yes
43872    Shadow              = SHADOW_VOLUME
43873    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
43874  
43875  End
43876  Object ChinaSMine
43877    ; *** ART Parameters ***
43878    Draw = W3DModelDraw ModuleTag_01
43879      ConditionState        = NONE
43880        Model               = AVRaptor_M
43881      End
43882    End
43883    ; ***DESIGN parameters ***
43884    DisplayName           = OBJECT:Missile
43885    EditorSorting         = SYSTEM
43886    TransportSlotCount    = 0                 ;how many "slots" we take in a transport (0 == not transportable)
43887    VisionRange           = 0
43888    ArmorSet
43889      Conditions      = None
43890      Armor           = ProjectileArmor
43891      DamageFX        = None
43892    End
43893    ; *** ENGINEERING Parameters ***
43894    KindOf = CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
43895    Body = ActiveBody ModuleTag_02
43896      MaxHealth       = 100.0
43897      InitialHealth   = 100.0
43898    End
43899    Behavior = DestroyDie ModuleTag_03
43900      ;nothing
43901    End
43902    Behavior = DumbProjectileBehavior ModuleTag_04
43903      DetonateCallsKill = Yes
43904      FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
43905      SecondHeight = 150
43906      FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
43907      SecondPercentIndent = 90%
43908      FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
43909    End
43910    Behavior = PhysicsBehavior ModuleTag_05
43911      Mass = 1.0
43912    End
43913    Behavior = HeightDieUpdate ModuleTag_06
43914      TargetHeight = 1.0
43915      TargetHeightIncludesStructures = No
43916      OnlyWhenMovingDown = Yes
43917      InitialDelay                    = 1000
43918    End
43919  
43920    Behavior = GenerateMinefieldBehavior ModuleTag_07
43921      MineName                = ChinaClusterMine
43922      DistanceAroundObject    = 0
43923      GenerateOnlyOnDeath     = Yes
43924     SmartBorder             = No
43925      SmartBorderSkipInterior = No
43926      AlwaysCircular          = Yes
43927      GenerationFX            = WeaponFX_ClusterMineImpact
43928    End
43929  
43930    Behavior = InstantDeathBehavior DeathModuleTag_09
43931      DeathTypes = NONE +DETONATED
43932    End
43933    Geometry = Sphere
43934    GeometryIsSmall = Yes
43935    GeometryMajorRadius = 1.0
43936  End
43937  ;------------------------------------------------------------------------------
43938  Object ChinaTankT98
43939  
43940    ; *** ART Parameters ***
43941    SelectPortrait         = T13
43942    ButtonImage            = T13
43943  
43944    UpgradeCameo1 = Upgrade_Nationalism
43945    UpgradeCameo2 = Upgrade_ChinaUraniumShells
43946    UpgradeCameo3 = Upgrade_ChinaNuclearTanks
43947    UpgradeCameo4 = Upgrade_ChinaT98ReactiveArmor
43948    ;UpgradeCameo5 = NONE
43949  
43950    Draw = W3DTankDraw ModuleTag_01
43951      OkToChangeModelColor = Yes
43952      DefaultConditionState
43953        Model               = NVT98
43954        Turret              = Turret01
43955        WeaponFireFXBone    = PRIMARY Muzzle
43956        WeaponRecoilBone    = PRIMARY Barrel
43957        WeaponMuzzleFlash   = PRIMARY MuzzleFX
43958        WeaponLaunchBone    = PRIMARY Muzzle
43959        AltTurret       = GUN
43960        WeaponFireFXBone       = SECONDARY GUN
43961        WeaponLaunchBone       = SECONDARY GUN
43962      End
43963  
43964      ConditionState = REALLYDAMAGED
43965        Model               = NVT98
43966        Turret              = Turret01
43967        WeaponFireFXBone    = PRIMARY Muzzle
43968        WeaponRecoilBone    = PRIMARY Barrel
43969        WeaponMuzzleFlash   = PRIMARY MuzzleFX
43970        WeaponLaunchBone    = PRIMARY Muzzle
43971        AltTurret       = GUN
43972        WeaponFireFXBone       = SECONDARY GUN
43973        WeaponLaunchBone       = SECONDARY GUN
43974      End
43975  
43976      ConditionState = WEAPONSET_PLAYER_UPGRADE
43977        Model               = NVT98
43978        Turret              = Turret01
43979        WeaponFireFXBone    = PRIMARY Muzzle
43980        WeaponRecoilBone    = PRIMARY Barrel
43981        WeaponMuzzleFlash   = PRIMARY MuzzleFX
43982        WeaponLaunchBone    = PRIMARY Muzzle
43983        AltTurret       = GUN
43984        WeaponFireFXBone       = SECONDARY GUN
43985        WeaponLaunchBone       = SECONDARY GUN
43986        WeaponFireFXBone       = TERTIARY GUN
43987        WeaponLaunchBone       = TERTIARY GUN
43988  
43989      End
43990  
43991      ConditionState = REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE
43992        Model               = NVT98
43993        Turret              = Turret01
43994        WeaponFireFXBone    = PRIMARY Muzzle
43995        WeaponRecoilBone    = PRIMARY Barrel
43996        WeaponMuzzleFlash   = PRIMARY MuzzleFX
43997        WeaponLaunchBone    = PRIMARY Muzzle
43998        AltTurret       = GUN
43999        WeaponFireFXBone       = SECONDARY GUN
44000        WeaponLaunchBone       = SECONDARY GUN
44001        WeaponFireFXBone       = TERTIARY GUN
44002        WeaponLaunchBone       = TERTIARY GUN
44003      End
44004  
44005      ConditionState = RUBBLE
44006        Model               = NVT98
44007        Turret              = Turret01
44008      End
44009  
44010      TrackMarks              = EXTnkTrack.tga
44011    End
44012  
44013    ; ***DESIGN parameters ***
44014    DisplayName      = OBJECT:T98
44015    Side = China
44016    EditorSorting   = VEHICLE
44017    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
44018  
44019    WeaponSet
44020      Conditions          = None
44021      Weapon         = PRIMARY     T98TankGun
44022     
44023      Weapon         = SECONDARY     HumveeGun
44024      
44025    End
44026  
44027    WeaponSet
44028      Conditions = PLAYER_UPGRADE
44029      Weapon         = PRIMARY     T98TankGun
44030      Weapon         = SECONDARY     HumveeGun
44031  
44032    End
44033  
44034    ArmorSet
44035      Conditions      = None
44036      Armor           = TankArmor
44037      DamageFX        = TankDamageFX
44038    End
44039  
44040    BuildCost       = 1500
44041    BuildTime       = 15.0          ;in seconds
44042    VisionRange     = 150
44043    ShroudClearingRange = 300
44044  
44045    Prerequisites
44046  ;    Object = ChinaWarFactory
44047  ;    Object = ChinaPropagandaCenter
44048       Science = SCIENCE_T98Tank
44049    End
44050  
44051    ExperienceValue = 100 100 200 400    ;Experience point value at each level
44052    ExperienceRequired = 0 20 30 60 ;Experience points needed to gain each level
44053    IsTrainable = Yes             ;Can gain experience
44054    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
44055    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
44056    CommandSet       = ChinaVehicleBattleMasterCommandSet
44057  
44058    ; *** AUDIO Parameters ***
44059    VoiceSelect = BattleMasterTankVoiceSelect
44060    VoiceMove = BattleMasterTankVoiceMove
44061    VoiceGuard = BattleMasterTankVoiceMove
44062    VoiceAttack = BattleMasterTankVoiceAttack
44063    SoundMoveStart = BattleMasterTankMoveStart
44064    SoundMoveStartDamaged = BattleMasterTankMoveStart
44065  
44066    UnitSpecificSounds
44067      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
44068      VoiceCreate          = BattleMasterTankVoiceCreate
44069      TurretMoveStart = NoSound
44070      TurretMoveLoop = TurretMoveLoop
44071      VoiceCrush = BattleMasterTankVoiceCrush
44072      VoiceEnter = BattleMasterTankVoiceMove
44073    End
44074  
44075    ; *** ENGINEERING Parameters ***
44076    RadarPriority = UNIT
44077    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
44078  
44079    Body = ActiveBody ModuleTag_02
44080      MaxHealth       = 700.0
44081      InitialHealth   = 700.0
44082    End
44083  
44084    Behavior = AIUpdateInterface ModuleTag_03
44085      Turret
44086        TurretTurnRate = 120   ; turn rate, in degrees per sec
44087        ControlledWeaponSlots = PRIMARY
44088      End
44089  
44090      AltTurret
44091        TurretTurnRate = 360   ; turn rate, in degrees per sec
44092        ControlledWeaponSlots = SECONDARY TERTIARY
44093      End
44094      AutoAcquireEnemiesWhenIdle = Yes
44095    End
44096  
44097    Locomotor = SET_NORMAL T98Locomotor
44098    Locomotor = SET_NORMAL_UPGRADED NuclearBattleMasterLocomotor
44099  
44100    Behavior = HordeUpdate ModuleTag_04
44101      RubOffRadius = 150    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
44102      UpdateRate = 1000     ; how often to recheck horde status (msec)
44103      Radius = 75           ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
44104      KindOf = VEHICLE      ; what KindOf's must match to count towards horde-ness
44105      AlliesOnly = Yes      ; do we only count allies towards horde status?
44106      ExactMatch = Yes      ; do we only count units of our exact same type towards horde status? (overrides kindof)
44107      Count = 5             ; how many units must be within Radius to grant us horde-ness
44108      Action = HORDE        ; when horde-ing, grant us the HORDE bonus
44109    End
44110  
44111    Behavior = PhysicsBehavior ModuleTag_05
44112      Mass = 40.0
44113    End
44114  
44115    Behavior = FireWeaponWhenDeadBehavior ModuleTag_06
44116      DeathWeapon   = NuclearTankDeathWeapon
44117      StartsActive  = No                        ; turned on by upgrade
44118      TriggeredBy   = Upgrade_ChinaNuclearTanks
44119    End
44120    Behavior = LocomotorSetUpgrade ModuleTag_07
44121      TriggeredBy = Upgrade_ChinaNuclearTanks
44122    End
44123  
44124    ; A crushing defeat
44125    Behavior = DestroyDie ModuleTag_08
44126      DeathTypes = NONE +CRUSHED +SPLATTED
44127    End
44128    Behavior = FXListDie ModuleTag_09
44129      DeathTypes = NONE +CRUSHED +SPLATTED
44130      DeathFX = FX_CarCrush
44131    End
44132    Behavior = CreateObjectDie ModuleTag_10
44133      DeathTypes = NONE +CRUSHED +SPLATTED
44134      CreationList = OCL_CrusaderTank_CrushEffect
44135    End
44136    Behavior = CreateCrateDie ModuleTag_11
44137      CrateData = SalvageCrateData
44138      ;CrateData = EliteTankCrateData
44139      ;CrateData = HeroicTankCrateData
44140    End
44141  
44142  
44143    Behavior = SlowDeathBehavior ModuleTag_12
44144      DeathTypes = ALL -CRUSHED -SPLATTED
44145      ProbabilityModifier = 25
44146      DestructionDelay = 200
44147      DestructionDelayVariance = 100
44148      OCL = FINAL    OCL_ChinaTankBattleMasterDebris
44149      FX  = FINAL    FX_BattleMasterExplosionOneFinal
44150    End
44151  
44152    Behavior = TransitionDamageFX ModuleTag_13
44153      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
44154      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
44155    End
44156  
44157    Behavior = MaxHealthUpgrade ModuleTag_10
44158      TriggeredBy = Upgrade_ChinaT98ReactiveArmor
44159          AddMaxHealth  = 200.0
44160      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
44161   
44162   
44163    End
44164  
44165    Behavior = FlammableUpdate ModuleTag_21
44166      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
44167      AflameDamageAmount = 3       ; taking this much damage...
44168      AflameDamageDelay = 500       ; this often.
44169    End
44170  
44171    Geometry = BOX
44172    GeometryMajorRadius = 13.0
44173    GeometryMinorRadius = 9.0
44174    GeometryHeight = 10
44175    GeometryIsSmall = Yes
44176    Shadow = SHADOW_VOLUME
44177    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
44178  
44179  End
44180  ;----------------------------------------------------------------------------
44181  Object ChinaJetSU30
44182  
44183    ; *** ART Parameters ***
44184    SelectPortrait         = T1
44185    ButtonImage            = T1
44186  
44187    UpgradeCameo1 = Upgrade_ChinaAircraftArmor
44188    ;UpgradeCameo2 = NONE
44189    ;UpgradeCameo3 = NONE
44190    ;UpgradeCameo4 = NONE
44191    ;UpgradeCameo5 = NONE
44192  
44193    Draw = W3DModelDraw ModuleTag_01
44194  
44195      OkToChangeModelColor = Yes
44196      ProjectileBoneFeedbackEnabledSlots = PRIMARY SECONDARY
44197  
44198      DefaultConditionState
44199        Model               = Su-30mk
44200        HideSubObject       = BurnerFX01 BurnerFX02
44201        WeaponLaunchBone = PRIMARY WeaponA
44202        WeaponLaunchBone = SECONDARY WeaponA
44203  
44204      End
44205  
44206      ConditionState        = JETEXHAUST
44207        ParticleSysBone     = Wingtip01 JetContrail
44208        ParticleSysBone     = Wingtip02 JetContrail
44209      End
44210  
44211      ConditionState       = JETEXHAUST JETAFTERBURNER
44212        ShowSubObject      = BurnerFX01 BurnerFX02
44213        ParticleSysBone     = Exhaust01 JetExhaust
44214        ParticleSysBone     = Exhaust02 JetExhaust
44215        ParticleSysBone     = Wingtip01 JetContrail
44216        ParticleSysBone     = Wingtip02 JetContrail
44217      End
44218  
44219      ConditionState        = REALLYDAMAGED
44220        Model               = Su-30mk
44221        ParticleSysBone     = Wingtip01 JetContrail
44222        ParticleSysBone     = Wingtip02 JetContrail
44223      End
44224  
44225      ConditionState        = RUBBLE
44226        Model               = Su-30mk
44227      End
44228  
44229      ConditionState        = REALLYDAMAGED JETEXHAUST
44230        Model               = Su-30mk
44231        ParticleSysBone     = Wingtip01 JetContrail
44232        ParticleSysBone     = Wingtip02 JetContrail
44233      End
44234  
44235      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
44236        Model               = Su-30mk
44237        ShowSubObject       = BurnerFX01 BurnerFX02
44238        ParticleSysBone     = Engine01 JetExhaust
44239        ParticleSysBone     = Engine02 JetExhaust
44240        ParticleSysBone     = Wingtip01 JetContrail
44241        ParticleSysBone     = Wingtip02 JetContrail
44242      End
44243  
44244      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
44245        ; @todo srj -- model missing
44246        ;Model              = NVMIG_D1B
44247        Model               = Su-30mk
44248        ;HideSubObject is needed cause there're inherited from default condition state
44249        HideSubObject       = None
44250        ShowSubObject       = None
44251        ParticleSysBone     = Engine01 JetExhaust
44252        ParticleSysBone     = Engine02 JetExhaust
44253        ParticleSysBone     = Wingtip01 JetContrail
44254        ParticleSysBone     = Wingtip02 JetContrail
44255      End
44256  
44257    End
44258  
44259    ; ***DESIGN parameters ***
44260    DisplayName             = OBJECT:SU30
44261    EditorSorting           = VEHICLE
44262    Side                    = China
44263    TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
44264    VisionRange             = 300.0
44265    ShroudClearingRange     = 400.0
44266  
44267    Prerequisites
44268      Object                = ChinaAirfield
44269      Object                = CommandandControl
44270      Science               = SCIENCE_NukeLauncher
44271  
44272    End
44273    WeaponSet
44274      Conditions = None
44275      Weapon = PRIMARY su30Weapon
44276      PreferredAgainst = PRIMARY   VEHICLE
44277      Weapon = SECONDARY AuroraBombWeapon
44278      PreferredAgainst = SECONDARY  STRUCTURE
44279  
44280    End
44281  
44282  
44283  
44284    ArmorSet
44285      Conditions           = None
44286      Armor                = AirplaneArmor
44287      DamageFX             = None
44288    End
44289  
44290    BuildCost               = 2000
44291    BuildTime               = 20
44292    ExperienceValue         = 50 50 100 150   ;Experience point value at each level
44293    ExperienceRequired      = 0 50 60 80  ;Experience points needed to gain each level
44294    IsTrainable = Yes             ;Can gain experience
44295    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
44296    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
44297    CommandSet             = ChinaJetsu30CommandSet
44298  
44299    ; *** AUDIO Parameters ***
44300    VoiceSelect             = MigVoiceSelect
44301    VoiceMove               = MigVoiceMove
44302    VoiceAttack             = MigVoiceAttack
44303    VoiceAttackAir          = MigVoiceAttackAir
44304    VoiceGuard              = MigVoiceAirPatrol
44305    SoundAmbient            = MigAmbientLoop
44306    SoundDie                = MigVoiceFalling
44307    UnitSpecificSounds
44308      VoiceCreate           = MigVoiceCreate
44309      Afterburner           = RaptorAfterburner
44310      VoiceGarrison         = MigVoiceMove
44311    End
44312  
44313    ; *** ENGINEERING Parameters ***
44314    RadarPriority          = UNIT
44315    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
44316    Body                   = ActiveBody ModuleTag_02
44317      MaxHealth            = 250.0
44318      InitialHealth        = 250.0
44319    End
44320  
44321    Behavior                          = JetSlowDeathBehavior ModuleTag_03
44322      FXOnGroundDeath                 = FX_JetOnGroundDeath
44323      OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp
44324      DestructionDelay                = 99999999  ; destruction will happen when we
44325      RollRate                        = 0.2
44326      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
44327      PitchRate                       = 0.0
44328      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
44329      FXInitialDeath                  = FX_JetDeathInitial
44330      OCLInitialDeath                 = OCL_MIGDeathInitial
44331      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
44332      FXSecondary                     = FX_JetDeathSecondary
44333      OCLSecondary                    = OCL_MIGDeathSecondary
44334      FXHitGround                     = FX_JetDeathHitGround
44335      OCLHitGround                    = OCL_MIGDeathHitGround
44336      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
44337      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
44338      OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp
44339    End
44340  
44341    Behavior = WeaponSetUpgrade ModuleTag_04
44342      TriggeredBy = Upgrade_ChinaBlackNapalm
44343    End
44344  
44345    Behavior = PhysicsBehavior ModuleTag_05
44346      Mass = 500.0
44347    End
44348  
44349  
44350    Behavior = JetAIUpdate ModuleTag_06
44351      OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
44352                                          ; note that it's expressed as a percent of max health, not an absolute
44353      TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
44354      TakeoffPause              = 500
44355      MinHeight                 = 5
44356      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
44357    End
44358  
44359    Locomotor = SET_NORMAL MIGLocomotor
44360    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
44361  
44362  
44363    Behavior = FlammableUpdate ModuleTag_08
44364      AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
44365      AflameDamageAmount = 3       ; taking this much damage...
44366      AflameDamageDelay = 500      ; this often.
44367    End
44368  
44369    Behavior                       = TransitionDamageFX ModuleTag_09
44370      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
44371      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
44372    End
44373  
44374    Behavior        = MaxHealthUpgrade ModuleTag_10
44375      TriggeredBy   = Upgrade_ChinaAircraftArmor
44376      AddMaxHealth  = 40.0
44377      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
44378    End
44379  
44380  
44381  
44382    Geometry                 = Box
44383    GeometryIsSmall          = Yes
44384    GeometryMajorRadius      = 14.0
44385    GeometryMinorRadius      = 7.0
44386    GeometryHeight           = 5.0
44387    Shadow                   = SHADOW_VOLUME
44388  
44389    Shadow = SHADOW_VOLUME
44390    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
44391  
44392  End
44393  
44394  
44395  
44396  ;copy This to Factionunit.ini------------------------------------------------------------------------------  
44397  Object Blackhawk
44398  
44399  ; *** ART Parameters *** 
44400  SelectPortrait = T15
44401  ButtonImage = T15    
44402  ;UpgradeCameo1 = NONE
44403  ;UpgradeCameo2 = NONE
44404  ;UpgradeCameo3 = NONE 
44405  ;UpgradeCameo4 = NONE 
44406  ;UpgradeCameo5 = NONE 
44407  
44408  Draw = W3DModelDraw ModuleTag_01 ; Helicopter 
44409  
44410  ExtraPublicBone = RopeStart 
44411  ExtraPublicBone = RopeEnd 
44412  
44413  DefaultConditionState 
44414  Model = uh-60
44415  HideSubObject = MissileUpgrade 
44416  Animation = uh-60.uh-60
44417  AnimationMode = LOOP 
44418  WeaponMuzzleFlash = PRIMARY MuzzleFX 
44419  WeaponFireFXBone = PRIMARY Muzzle 
44420  WeaponFireFXBone = SECONDARY WEAPONA 
44421  WeaponLaunchBone = SECONDARY WEAPONA 
44422  End 
44423  
44424  ConditionState = REALLYDAMAGED 
44425  Model = uh-60
44426  Animation = uh-60.uh-60 
44427  AnimationMode = LOOP 
44428  End 
44429  
44430  ConditionState = RUBBLE 
44431  Model = uh-60
44432  Animation = uh-60.uh-60 
44433  AnimationMode = LOOP 
44434  End 
44435  
44436  ConditionState = RUBBLE SPECIAL_DAMAGED 
44437  Model = uh-60
44438  HideSubObject = AVComanche_Prop 
44439  End 
44440  
44441  OkToChangeModelColor = Yes 
44442  End 
44443  
44444  Draw = W3DModelDraw ModuleTag_02 ; Cargo net 
44445  ConditionState = NONE 
44446  Model = None ; Nothing here 
44447  TransitionKey = TRANS_Empty 
44448  WaitForStateToFinishIfPossible = TRANS_Unloading 
44449  End 
44450  
44451  ConditionState = DYING 
44452  Model = None ; Nothing here 
44453  End 
44454  AliasConditionState = RUBBLE 
44455  AliasConditionState = CARRYING RUBBLE 
44456  AliasConditionState = DOCKING RUBBLE 
44457  AliasConditionState = DOCKING CARRYING RUBBLE 
44458  
44459  ConditionState = CARRYING 
44460  Model = uh-60
44461  Animation = uh-60.uh-60 
44462  AnimationMode = LOOP 
44463  TransitionKey = TRANS_Full 
44464  WaitForStateToFinishIfPossible = TRANS_PickingUp 
44465  End 
44466  
44467  ConditionState = DOCKING 
44468  Model = uh-60 
44469  Animation = uh-60.uh-60 
44470  AnimationMode = LOOP 
44471  TransitionKey = TRANS_PickingUp 
44472  WaitForStateToFinishIfPossible = TRANS_Unloading ;Trick. Without hardcoding the difference between what we are docking with, need to use DOCKING for both. 
44473  End 
44474  
44475  ConditionState = DOCKING CARRYING 
44476  Model = uh-60
44477  Animation = uh-60.uh-60 
44478  AnimationMode = LOOP 
44479  TransitionKey = TRANS_Unloading 
44480  WaitForStateToFinishIfPossible = TRANS_PickingUp ;Trick. Without hardcoding the difference between what we are docking with, need to use DOCKING for both. 
44481  End 
44482  End 
44483  
44484  ; ***DESIGN parameters *** 
44485  DisplayName = OBJECT:Blackhawk 
44486  EditorSorting = VEHICLE 
44487  Side = America 
44488  TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) 
44489  VisionRange = 300.0 
44490  ShroudClearingRange = 600 
44491  BuildCost = 1500 
44492  BuildTime = 25.0 ;in seconds 
44493  Prerequisites 
44494   Object = AmericaAirfield
44495   Science = SCIENCE_StealthFighter
44496  End 
44497  ExperienceValue = 50 50 50 50 ;Experience point value at each level 
44498  IsTrainable = No 
44499  CommandSet = blackhawkcommandset 
44500  WeaponSet 
44501  Conditions = None 
44502  ; ----- 
44503  Weapon = PRIMARY Chinook
44504  PreferredAgainst = PRIMARY INFANTRY PROJECTILE AIRCRAFT
44505  AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI 
44506  ; ----- 
44507  Weapon = SECONDARY RocketDisMines
44508  AutoChooseSources   = SECONDARY   NONE
44509  End 
44510  
44511  ArmorSet 
44512  Conditions = None 
44513  Armor = ComancheArmor 
44514  DamageFX = None 
44515  End 
44516  
44517  ; *** AUDIO Parameters *** 
44518  VoiceSelect = ChinookVoiceSelect 
44519  VoiceMove = ChinookVoiceMove 
44520  VoiceAttack = ChinookVoiceAttack 
44521  SoundAmbient = ChinookAmbientLoop 
44522  SoundAmbientRubble = NoSound 
44523  SoundDie = ChinookVoiceFalling 
44524  SoundEnter = HumveeEnter 
44525  SoundExit = HumveeExit 
44526  UnitSpecificSounds 
44527  VoiceCreate = ChinookVoiceCreate 
44528  VoiceSupply = ChinookVoiceSupply 
44529  VoiceUnload = ChinookVoiceUnload 
44530  VoiceCombatDrop = ChinookVoiceCombatDrop 
44531  VoiceClearBuilding = RangerVoiceClearBuilding ;Special combat drop that clears buildings! 
44532  VoiceGarrison = ChinookVoiceMove 
44533  End 
44534  
44535  ; *** ENGINEERING Parameters *** 
44536  RadarPriority = UNIT 
44537  ; note that, although Chinooks aren't produced at helipads, we want to set this KINDOF so that they can land at 
44538  ; (well, "near" actually) an Airfield to get healed... 
44539  ; also note that we should NOT set CAN_ATTACK for chinooks. they can't attack. so there. 
44540  KindOf = PRELOAD CAN_CAST_REFLECTIONS SELECTABLE VEHICLE TRANSPORT AIRCRAFT SCORE PRODUCED_AT_HELIPAD 
44541  
44542  Behavior = WeaponSetUpgrade ModuleTag_02 
44543  TriggeredBy = Upgrade_ComancheRocketPods 
44544  End 
44545  
44546  Body = ActiveBody ModuleTag_03 
44547  MaxHealth = 400.0 
44548  InitialHealth = 400.0 
44549  End 
44550  
44551  Behavior = FXListDie ModuleTag_05 
44552  DeathFX = FX_HelicopterStartDeath 
44553  End 
44554  
44555  Behavior = TransitionDamageFX ModuleTag_06 
44556  ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown 
44557  ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition 
44558  End 
44559  
44560  Behavior = ChinookAIUpdate ModuleTag_07 
44561  ;MaxBoxes = 8 
44562  ;SupplyCenterActionDelay = 3000 ; ms for whole thing (one transaction) 
44563  ;SupplyWarehouseActionDelay = 1250 ; 875 ; ms per box (many small transactions) 
44564  ;SupplyWarehouseScanDistance = 700 ;350 ; Max distance to look for a warehouse, or we go home. (Direct dock command on warehouse overrides, and no max on Center Scan) 
44565  ;SuppliesDepletedVoice = ChinookVoiceSuppliesDepleted 
44566  NumRopes = 4 
44567  ; these define how long we can wait, once a guy is on-rope, before throwing another 
44568  ; guy onto that same rope. (Hint: you don't want to use zero.) Omit entirely 
44569  ; and we'll wait for each guy to clear before spawning another. 
44570  PerRopeDelayMin = 900 
44571  PerRopeDelayMax = 1500 
44572  RopeWidth = 0.5 
44573  RopeColor = R:0 G:0 B:0 
44574  RopeWobbleLen = 10 
44575  RopeWobbleAmplitude = 0.25 
44576  RopeWobbleRate = 180 
44577  RopeFinalHeight = 10 ; stop this far above ground 
44578  RappelSpeed = 30 
44579  MinDropHeight = 40 ; if dropping into a tall bldg, go at least this far above it 
44580  
44581  End 
44582  Locomotor = SET_NORMAL ChinookLocomotor 
44583  Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor 
44584  
44585  Behavior = TransportContain ModuleTag_08 
44586  PassengersAllowedToFire = Yes 
44587  Slots = 4 
44588  DamagePercentToUnits = 100% 
44589  AllowInsideKindOf = INFANTRY 
44590  ForbidInsideKindOf = AIRCRAFT HUGE_VEHICLE 
44591  ExitDelay = 100 
44592  NumberOfExitPaths = 1 
44593  GoAggressiveOnExit = Yes 
44594  End 
44595  Behavior = PhysicsBehavior ModuleTag_09 
44596  Mass = 50.0 
44597  End 
44598  Behavior = HelicopterSlowDeathBehavior ModuleTag_10 
44599  DestructionDelay = 99999999 ; the destruction delay 
44600  SpiralOrbitTurnRate = 140.0 ; in degrees per second, bigger # = tighter spiral 
44601  SpiralOrbitForwardSpeed = 350.0 ; bigger # = larger spiral 
44602  SpiralOrbitForwardSpeedDamping = .9999 ; smaller #'s = slow down faster 
44603  MaxBraking = 190 ; max braking we can use during death spiral (lower num = wilder spiral) 
44604  SoundDeathLoop = ComancheDamagedLoop 
44605  MinSelfSpin = 100 ; in degrees per second 
44606  MaxSelfSpin = 300 ; in degrees per second 
44607  SelfSpinUpdateDelay = 100 ; in milliseconds 
44608  SelfSpinUpdateAmount = 10 ; in degrees 
44609  FallHowFast = 12.0% ; fraction of gravity, lower = take longer to fall 
44610  MinBladeFlyOffDelay = 1500 ; in milliseconds 
44611  MaxBladeFlyOffDelay = 1500 ; in milliseconds 
44612  AttachParticle = SootySmokeTrail 
44613  AttachParticleBone = Propeller02 
44614  BladeObjectName = ComancheBlades 
44615  BladeBoneName = Propeller01 
44616  FXBlade = FX_HelicopterBladeExplosion 
44617  OCLBlade = OCL_HelicopterBladeExplosion 
44618  FXHitGround = FX_HelicopterHitGround 
44619  OCLHitGround = OCL_HelicopterHitGround 
44620  FXFinalBlowUp = FX_GroundedHelicopterBlowUp 
44621  OCLFinalBlowUp = OCL_GroundedHelicopterBlowUp 
44622  DelayFromGroundToFinalDeath = 30 
44623  FinalRubbleObject = ChinookRubbleHull 
44624  End 
44625  
44626  Behavior = FlammableUpdate ModuleTag_21 
44627  AflameDuration = 5000 ; If I catch fire, I'll burn for this long... 
44628  AflameDamageAmount = 3 ; taking this much damage... 
44629  AflameDamageDelay = 500 ; this often. 
44630  End 
44631  
44632    Behavior = StealthDetectorUpdate ModuleTag_08
44633      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
44634      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
44635      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
44636      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
44637    End
44638  
44639  Geometry = BOX 
44640  GeometryMajorRadius = 20.0 
44641  GeometryMinorRadius = 6.0 
44642  GeometryHeight = 12.0 
44643  GeometryIsSmall = No 
44644  Shadow = SHADOW_VOLUME 
44645  ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length 
44646  
44647  End 
44648  
44649  ;------------------------------------------------------------------------------
44650  Object GLATankt72
44651  
44652    ; *** ART Parameters ***
44653    SelectPortrait         = T16
44654    ButtonImage            = T16
44655    UpgradeCameo1 = NONE
44656    UpgradeCameo2 = Upgrade_GLAAPRockets
44657    UpgradeCameo3 = Upgrade_GLAToxinShells
44658    UpgradeCameo4 = Upgrade_GLAJunkRepair
44659    ;UpgradeCameo5 = NONE
44660  
44661    Draw = W3DTankDraw ModuleTag_01
44662      OkToChangeModelColor = Yes
44663  
44664      ProjectileBoneFeedbackEnabledSlots = SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
44665  
44666      DefaultConditionState
44667        Model = T-72
44668        Turret = Turret01
44669        ; note, order-dependent: we must hide/show Missile AFTER we hide/show MissileRack!
44670        HideSubObject = MissleRack01 Missile ; MissileRack misspelled in the Art
44671        WeaponFireFXBone = PRIMARY Muzzle
44672        WeaponRecoilBone = PRIMARY Barrel
44673        WeaponMuzzleFlash = PRIMARY MuzzleFX
44674        WeaponLaunchBone = PRIMARY Muzzle
44675      End
44676  
44677      ConditionState = REALLYDAMAGED
44678        Model = T-72
44679      End
44680  
44681      ConditionState = RUBBLE
44682        Model = UVLiteTank_d
44683      End
44684  
44685      ConditionState = WEAPONSET_PLAYER_UPGRADE
44686        ShowSubObject = MissleRack01
44687        WeaponFireFXBone = SECONDARY WeaponA
44688        WeaponLaunchBone = SECONDARY WeaponA
44689        WeaponHideShowBone = SECONDARY Missile
44690      End
44691  
44692      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
44693        Model = T-72
44694        ShowSubObject = MissleRack01
44695        WeaponFireFXBone = SECONDARY WeaponA
44696        WeaponLaunchBone = SECONDARY WeaponA
44697        WeaponHideShowBone = SECONDARY Missile
44698      End
44699  
44700      TrackMarks = EXTnkTrack.tga
44701      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
44702    End
44703  
44704    ; ***DESIGN parameters ***
44705    DisplayName           = OBJECT:t72
44706    Side                  = GLA
44707    EditorSorting         = VEHICLE
44708    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
44709    WeaponSet
44710      Conditions = None
44711      Weapon = PRIMARY  t72TankGun  
44712      Weapon = SECONDARY  DozerMineDisarmingWeapon
44713      Conditions = MINE_CLEARING_DETAIL
44714     
44715  
44716    End
44717  
44718    ArmorSet
44719      Conditions      = None
44720      Armor           = T72TankArmor
44721      DamageFX        = TankDamageFX
44722    End
44723    BuildCost       = 850
44724    BuildTime       = 10.0          ;in seconds
44725    VisionRange     = 125
44726    ShroudClearingRange = 300
44727    Prerequisites
44728      Object = GLAArmsDealer
44729      Object = GLAPalace
44730      Science = SCIENCE_ScudLauncher
44731      
44732    End
44733  
44734    ExperienceValue = 60 60 120 200    ;Experience point value at each level
44735    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
44736    IsTrainable = Yes             ;Can gain experience
44737    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
44738    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
44739    CommandSet      = GLATankt72CommandSet
44740  
44741    ; *** AUDIO Parameters ***
44742    VoiceSelect = ScorpionTankVoiceSelect
44743    VoiceMove = ScorpionTankVoiceMove
44744    VoiceAttack = ScorpionTankVoiceAttack
44745    SoundMoveStart = ScorpionTankMoveStart
44746    SoundMoveStartDamaged = ScorpionTankMoveStart
44747    VoiceGuard = ScorpionTankVoiceMove
44748  
44749    UnitSpecificSounds
44750      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
44751      VoiceCreate          = ScorpionTankVoiceCreate
44752      ;TurretMoveStart = NoSound
44753      TurretMoveLoop = TurretMoveLoop
44754      VoiceEnter = ScorpionTankVoiceMove
44755    End
44756  
44757    ; *** ENGINEERING Parameters ***
44758    RadarPriority = UNIT
44759    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
44760  
44761    Body = ActiveBody ModuleTag_02
44762      MaxHealth       = 370.0
44763      InitialHealth   = 370.0
44764    End
44765  
44766    Behavior = AIUpdateInterface ModuleTag_03
44767      Turret
44768        TurretTurnRate = 100
44769        RecenterTime = 5000   ; how long to wait during idle before recentering
44770        ControlledWeaponSlots = PRIMARY SECONDARY
44771      End
44772      AutoAcquireEnemiesWhenIdle = Yes
44773    End
44774    Locomotor = SET_NORMAL NuclearBattleMasterLocomotor
44775    Behavior = PhysicsBehavior ModuleTag_04
44776      Mass = 50.0
44777    End
44778    Behavior = AutoHealBehavior ModuleTag_05
44779      HealingAmount = 2
44780      HealingDelay = 1000 ; msec
44781      TriggeredBy = Upgrade_GLAJunkRepair
44782    End
44783  
44784    ; Catch fire, and explode death
44785    Behavior = SlowDeathBehavior ModuleTag_06
44786      DeathTypes = ALL -CRUSHED -SPLATTED
44787      ProbabilityModifier = 50
44788      DestructionDelay = 2000
44789      DestructionDelayVariance = 300
44790      FX  = INITIAL  FX_CrusaderCatchFire
44791      OCL = FINAL    OCL_GenericTankDeathEffect
44792      FX  = FINAL    FX_BattleMasterExplosionOneFinal
44793    End
44794  
44795    Behavior = WeaponSetUpgrade ModuleTag_07
44796      TriggeredBy = Upgrade_GLAScorpionRocket
44797    End
44798  
44799    Behavior = DestroyDie ModuleTag_09
44800      DeathTypes = NONE +CRUSHED +SPLATTED
44801    End
44802  
44803    ; A crushing defeat
44804    Behavior = FXListDie ModuleTag_10
44805      DeathTypes = NONE +CRUSHED +SPLATTED
44806      DeathFX = FX_CarCrush
44807    End
44808    Behavior = CreateObjectDie ModuleTag_11
44809      DeathTypes = NONE +CRUSHED +SPLATTED
44810      CreationList = OCL_CrusaderTank_CrushEffect
44811    End
44812    Behavior = CreateCrateDie ModuleTag_12
44813      CrateData = SalvageCrateData
44814      ;CrateData = EliteTankCrateData
44815      ;CrateData = HeroicTankCrateData
44816    End
44817  
44818    Behavior                 = TransitionDamageFX ModuleTag_13
44819      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
44820      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
44821    End
44822  
44823    Behavior = FlammableUpdate ModuleTag_21
44824      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
44825      AflameDamageAmount = 3       ; taking this much damage...
44826      AflameDamageDelay = 500       ; this often.
44827    End
44828      Behavior = StealthDetectorUpdate ModuleTag_08
44829      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
44830      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
44831      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
44832      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
44833    End
44834  
44835    Geometry = BOX
44836    GeometryMajorRadius = 14.0
44837    GeometryMinorRadius = 9.0
44838    GeometryHeight = 10.5
44839    GeometryIsSmall = Yes
44840    Shadow = SHADOW_VOLUME
44841    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
44842  
44843  End
44844  
44845  
44846  Object SiegeTankShell
44847    Draw = W3DModelDraw ModuleTag_01
44848      ConditionState = NONE
44849        Model = AVTankShel
44850      End
44851    End
44852    DisplayName = OBJECT:TankShell
44853    EditorSorting = SYSTEM
44854    ArmorSet
44855      Armor = ProjectileArmor
44856    End
44857    VisionRange = 0.0  
44858    KindOf = PROJECTILE
44859    Body = ActiveBody ModuleTag_02
44860      MaxHealth = 100.0
44861      InitialHealth = 100.0
44862    End
44863    Behavior = DestroyDie ModuleTag_03
44864    End    
44865    Behavior = DumbProjectileBehavior ModuleTag_04
44866      FirstHeight = 50
44867      SecondHeight = 150
44868      FirstPercentIndent = 30%
44869      SecondPercentIndent = 70%
44870      FlightPathAdjustDistPerSecond = 0
44871    End
44872    Behavior = PhysicsBehavior ModuleTag_05
44873      Mass = 0.01
44874    End
44875    Geometry = Sphere
44876    GeometryIsSmall = Yes
44877    GeometryMajorRadius = 1.0
44878  End
44879  
44880  
44881  
44882  Object GLADozer2
44883  
44884    ; *** ART Parameters ***
44885    SelectPortrait         = T21
44886    ButtonImage            = T21
44887    
44888    Draw = W3DTruckDraw ModuleTag_01
44889  
44890      OkToChangeModelColor = Yes
44891  
44892      DefaultConditionState
44893        Model             = CVFKLT
44894        ParticleSysBone   = EXHAUSTFX01 DozerSmokeLight
44895        WaitForStateToFinishIfPossible = TRANS_DIGGING
44896      End
44897  
44898      ConditionState = PREATTACK_A 
44899        Animation         = AVCONSTDOZ_A.AVCONSTDOZ_A
44900        AnimationMode     = ONCE
44901        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
44902        ParticleSysBone   = DIRTFX01 DozerDirtFall ;gush of dirt
44903        TransitionKey     = TRANS_DIGGING
44904      End
44905  
44906      ConditionState = MOVING
44907        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
44908        WaitForStateToFinishIfPossible = TRANS_DIGGING
44909      End
44910  
44911      ConditionState      = REALLYDAMAGED RUBBLE
44912        Model             = CVFKLT
44913        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
44914        WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
44915      End
44916  
44917      ConditionState = PREATTACK_A REALLYDAMAGED RUBBLE
44918        Model             = CVFKLT
44919        Animation         = AVCONSTDOZ_AD.AVCONSTDOZ_AD
44920        AnimationMode     = ONCE
44921        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
44922        TransitionKey     = TRANS_DIGGING_DAMAGED
44923      End
44924  
44925      ConditionState      = MOVING REALLYDAMAGED RUBBLE
44926        Model             = CVFKLT
44927        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
44928        WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
44929      End
44930  
44931  
44932      TrackMarks            = EXTireTrack2.tga
44933      Dust                  = RocketBuggyDust
44934      DirtSpray             = RocketBuggyDirtSpray
44935  
44936      ; These parameters are only used if the model has a separate suspension, 
44937      ; and the locomotor has HasSuspension = Yes.
44938  
44939      LeftFrontTireBone     = TIRE01
44940      RightFrontTireBone    = TIRE02
44941      LeftRearTireBone      = TIRE03
44942      RightRearTireBone     = TIRE04
44943  
44944      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
44945      PowerslideRotationAddition  = 0   ; This vehicle doesn't powerslide.
44946  
44947    End
44948  
44949  
44950  
44951    ; ***DESIGN parameters ***
44952    DisplayName         = OBJECT:Dozer2
44953    Side                = GLA
44954    EditorSorting       = VEHICLE
44955    TransportSlotCount  = 5 ;how many "slots" we take in a transport (0 == not transportable)
44956    BuildCost           = 500
44957    BuildTime           = 5 ; in seconds
44958    VisionRange         = 200
44959    ShroudClearingRange = 200
44960  
44961    WeaponSet
44962      Conditions = None 
44963      Weapon = PRIMARY None
44964    End
44965  
44966  
44967    ArmorSet
44968      Conditions        = None
44969      Armor             = DozerArmor ;Special Explosion-Proof Armor
44970      DamageFX          = TankDamageFX
44971    End
44972    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
44973    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
44974    CommandSet          = GLADozer2CommandSet
44975  
44976   ; *** AUDIO Parameters ***
44977    VoiceSelect = WorkerVoiceSelect
44978    VoiceMove = WorkerVoiceMove
44979    VoiceAttack = WorkerVoiceMove
44980    SoundDie = WorkerVoiceDie
44981    SoundDieFire = DieByFireGLA
44982    SoundDieToxin = DieByToxinChina
44983    VoiceGuard = WorkerVoiceMove
44984    VoiceFear = WorkerVoiceFear
44985    VoiceTaskComplete = WorkerVoiceBuildComplete
44986    UnitSpecificSounds
44987      VoiceEnter = WorkerVoiceMove
44988      VoiceEnterHostile = WorkerVoiceMove
44989      VoiceGarrison     = WorkerVoiceGarrison
44990      VoiceCreate       = WorkerVoiceCreate
44991      VoiceSupply       = WorkerVoiceSupply
44992      VoiceNoBuild      = WorkerVoiceBuildNot
44993      VoiceRepair       = WorkerVoiceRepair
44994      VoiceDisarm       = WorkerVoiceClearMine
44995      VoiceBuildResponse = WorkerVoiceBuild
44996      VoiceGetHealed      = WorkerVoiceMove
44997  
44998    End
44999    ; *** ENGINEERING Parameters ***
45000    RadarPriority       = UNIT
45001    KindOf              = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER
45002   
45003    Body                = ActiveBody ModuleTag_02
45004      MaxHealth         = 150.0
45005      InitialHealth     = 150.0
45006    End
45007    Behavior = DozerAIUpdate ModuleTag_03
45008      RepairHealthPercentPerSecond = 2%    ; % of max health to repair each second
45009      BoredTime                    = 5000  ; in milliseconds
45010      BoredRange                   = 150   ; when bored, we look this far away to do something
45011      ; the only "enemies" that workers can acquire are mines, to be disarmed...
45012      AutoAcquireEnemiesWhenIdle   = Yes
45013    End
45014  
45015    Locomotor = SET_NORMAL AmericaVehicleDozerLocomotor
45016  
45017    Behavior            = PhysicsBehavior ModuleTag_04
45018      Mass              = 50.0
45019    End
45020  
45021    Behavior = StealthDetectorUpdate ModuleTag_05
45022      DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
45023      ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
45024      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
45025      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
45026      ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
45027    End
45028  
45029    Behavior                 = TransitionDamageFX ModuleTag_06
45030      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
45031      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
45032    End
45033  
45034    ; Catch fire, and explode death
45035    Behavior = SlowDeathBehavior ModuleTag_07
45036      DeathTypes = ALL -CRUSHED -SPLATTED
45037      ProbabilityModifier = 100
45038      DestructionDelay    = 1500
45039      DestructionDelayVariance = 600
45040      FX  = INITIAL  FX_CrusaderCatchFire
45041      OCL = FINAL    OCL_AmericaDozerExplode  
45042      FX  = FINAL    FX_BattleMasterExplosionOneFinal
45043    End   
45044  
45045    Behavior = CreateCrateDie ModuleTag_CratesChange
45046      CrateData = SalvageCrateData
45047    End
45048    
45049    Behavior = FlammableUpdate ModuleTag_21
45050      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
45051      AflameDamageAmount = 3       ; taking this much damage...
45052      AflameDamageDelay = 500       ; this often.
45053    End
45054  
45055    ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_22
45056    End
45057  
45058    Behavior               = FXListDie ModuleTag_23
45059      DeathTypes = NONE +CRUSHED +SPLATTED
45060      DeathFX         = FX_CarCrush
45061    End
45062  
45063    Behavior = DestroyDie ModuleTag_24
45064      DeathTypes = NONE +CRUSHED +SPLATTED
45065    End
45066  
45067    Geometry            = BOX
45068    GeometryMajorRadius = 15.0
45069    GeometryMinorRadius = 10.0
45070    GeometryHeight      = 15.0     
45071    GeometryIsSmall     = Yes
45072    Shadow              = SHADOW_VOLUME
45073    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
45074  
45075  End
45076  
45077  ;------------------------------------------------------------------------------
45078  Object RaptorJetMissile2
45079  
45080    ; *** ART Parameters ***
45081    Draw = W3DModelDraw ModuleTag_01
45082      OkToChangeModelColor = Yes
45083      DefaultConditionState
45084        Model = AVRaptor_M
45085      End
45086    End
45087  
45088    ; ***DESIGN parameters ***
45089    DisplayName       = OBJECT:Missile
45090    EditorSorting     = SYSTEM
45091    VisionRange = 0.0  
45092  
45093    ; *** ENGINEERING Parameters ***
45094    KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
45095    Body = ActiveBody ModuleTag_02
45096      MaxHealth       = 100.0
45097      InitialHealth   = 100.0
45098    End
45099  
45100  ; ---- begin Projectile death behaviors
45101    Behavior = InstantDeathBehavior DeathModuleTag_01
45102      DeathTypes = NONE +DETONATED
45103      ; we detonated normally.
45104      ; no FX, just quiet destroy ourselves
45105    End
45106    Behavior = InstantDeathBehavior DeathModuleTag_02
45107      DeathTypes = NONE +LASERED
45108      ; shot down by laser.
45109      FX         = FX_GenericMissileDisintegrate
45110      OCL        = OCL_GenericMissileDisintegrate
45111    End
45112    Behavior = InstantDeathBehavior DeathModuleTag_03
45113      DeathTypes = ALL -LASERED -DETONATED
45114      ; shot down by nonlaser.
45115      FX         = FX_GenericMissileDeath
45116    End
45117  ; ---- end Projectile death behaviors
45118  
45119    Behavior = PhysicsBehavior ModuleTag_07
45120      Mass = 1
45121    End
45122    Behavior = MissileAIUpdate ModuleTag_08
45123      TryToFollowTarget     = Yes 
45124      FuelLifetime          = 10000
45125      InitialVelocity       = 75                ; in dist/sec
45126      IgnitionDelay         = 30
45127      IgnitionFX            = FX_JetMissileIgnition
45128    End
45129    Locomotor = SET_NORMAL ScorpionMissileLocomotor2
45130  
45131    Geometry = Sphere
45132    GeometryIsSmall = Yes
45133    GeometryMajorRadius = 1.0
45134  
45135  End
45136  
45137  
45138  ;------------------------------------------------------------------------------
45139  Object InfernoTankShellUpgraded2
45140  
45141    ; *** ART Parameters ***
45142    Draw = W3DModelDraw ModuleTag_01
45143      OkToChangeModelColor = Yes
45144      ConditionState = NONE
45145        Model = UVScorpion_m
45146      End
45147    End
45148  
45149    ; ***DESIGN parameters ***
45150    DisplayName      = OBJECT:Missile
45151    EditorSorting   = SYSTEM
45152    VisionRange = 0.0  
45153    ArmorSet
45154      Conditions      = None
45155      Armor           = ProjectileArmor
45156      DamageFX        = None
45157    End
45158  
45159    ; *** ENGINEERING Parameters ***
45160    KindOf = PROJECTILE SMALL_MISSILE
45161    Body = ActiveBody ModuleTag_02
45162      MaxHealth       = 100.0
45163      InitialHealth   = 100.0
45164    End
45165  
45166  ; ---- begin Projectile death behaviors
45167    Behavior = InstantDeathBehavior DeathModuleTag_01
45168      DeathTypes = NONE +DETONATED
45169      ; we detonated normally.
45170      ; no FX, just quiet destroy ourselves
45171    End
45172    Behavior = InstantDeathBehavior DeathModuleTag_02
45173      DeathTypes = NONE +LASERED
45174      ; shot down by laser.
45175      FX         = FX_GenericMissileDisintegrate
45176      OCL        = OCL_GenericMissileDisintegrate
45177    End
45178    Behavior = InstantDeathBehavior DeathModuleTag_03
45179      DeathTypes = ALL -LASERED -DETONATED
45180      ; shot down by nonlaser.
45181      FX         = FX_GenericMissileDeath
45182    End
45183  ; ---- end Projectile death behaviors
45184      
45185    Behavior = PhysicsBehavior ModuleTag_06
45186      Mass = 1
45187    End
45188    Behavior = MissileAIUpdate ModuleTag_07
45189      TryToFollowTarget = Yes 
45190      FuelLifetime = 4000
45191      InitialVelocity = 150                ; in dist/sec
45192      IgnitionDelay = 0
45193      DistanceToTravelBeforeTurning = 30
45194      IgnitionFX = FX_JetMissileIgnition
45195    End
45196    Locomotor = SET_NORMAL ScorpionMissileLocomotor
45197  
45198  
45199    Behavior = WeaponBonusUpgrade ModuleTag_08
45200      TriggeredBy = Upgrade_GLAAPRockets
45201    End
45202  
45203  Behavior = DumbProjectileBehavior ModuleTag_09
45204      DetonateCallsKill = Yes
45205      ; To tweak a Bezier path, please see GS
45206      FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
45207      SecondHeight = 150
45208      FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
45209      SecondPercentIndent = 90%
45210      FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
45211    End
45212  
45213    Behavior = PhysicsBehavior ModuleTag_05
45214      Mass = 10
45215    End
45216  
45217    Behavior = HeightDieUpdate ModuleTag_06
45218      TargetHeight = 1.0
45219      TargetHeightIncludesStructures = Yes
45220      OnlyWhenMovingDown = Yes
45221      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
45222    End
45223  
45224    Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
45225      DeathWeapon   = SmallFireFieldUpgradedCreationWeapon
45226      StartsActive  = Yes
45227    End
45228  
45229    Geometry = Sphere
45230    GeometryIsSmall = Yes
45231    GeometryMajorRadius = 1.0
45232    
45233  
45234  End
45235  
45236  ;------------------------------------------------------------------------------
45237  
45238  Object MLRSMissile
45239  
45240    ; *** ART Parameters ***
45241    Draw = W3DModelDraw ModuleTag_01
45242      OkToChangeModelColor = Yes
45243      ConditionState = NONE
45244        Model = AVRaptor_M
45245      End
45246    End
45247  
45248    ; ***DESIGN parameters ***
45249    DisplayName      = OBJECT:MLRSMissile
45250    EditorSorting   = VEHICLE
45251    VisionRange = 300.0
45252    ShroudClearingRange = 0
45253  
45254    ; *** ENGINEERING Parameters ***
45255    KindOf = CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
45256    Body = ActiveBody ModuleTag_02
45257      MaxHealth       = 100.0
45258      InitialHealth   = 100.0
45259    End
45260  
45261  ; ---- begin Projectile death behaviors
45262    Behavior = InstantDeathBehavior DeathModuleTag_01
45263      DeathTypes = NONE +DETONATED
45264      ; we detonated normally.
45265      ; no FX, just quiet destroy ourselves
45266    End
45267    Behavior = InstantDeathBehavior DeathModuleTag_02
45268      DeathTypes = NONE +LASERED
45269      ; shot down by laser.
45270      FX         = FX_GenericMissileDisintegrate
45271      OCL        = OCL_GenericMissileDisintegrate
45272    End
45273    Behavior = InstantDeathBehavior DeathModuleTag_03
45274      DeathTypes = ALL -LASERED -DETONATED
45275      ; shot down by nonlaser.
45276      FX         = FX_GenericMissileDeath
45277    End
45278  ; ---- end Projectile death behaviors
45279      
45280    Behavior = PhysicsBehavior ModuleTag_04
45281      Mass = 1
45282    End
45283    Behavior = MissileAIUpdate ModuleTag_05
45284      TryToFollowTarget       = No 
45285      FuelLifetime            = 10000
45286      InitialVelocity         = 50                ; in dist/sec
45287      IgnitionDelay           = 0
45288      DistanceToTravelBeforeTurning = 5
45289    End
45290    Locomotor = SET_NORMAL PatriotMissileLocomotor
45291    Geometry = Sphere
45292    GeometryIsSmall = Yes
45293    GeometryMajorRadius = 2.0
45294  
45295  End
45296  
45297  ;--------------------------------------------
45298  Object ChinaVehicleBattleShip5
45299  
45300    SelectPortrait = T20
45301    ButtonImage         = T20
45302  
45303  
45304    
45305    UpgradeCameo1 = Upgrade_SeaRepair
45306    UpgradeCameo2 = Upgrade_SeaArmour
45307    ;UpgradeCameo3 =Upgrade_SubmarineStealth
45308    ;UpgradeCameo4 = NONE
45309    ;UpgradeCameo5 = NONE
45310  
45311    ; *** ART Parameters ***
45312    Draw                   = W3DModelDraw ModuleTag_01 ;W3DTankDraw ModuleTag_01
45313      OkToChangeModelColor = Yes
45314      InitialRecoilSpeed   = 120
45315      MaxRecoilDistance    = 8
45316      RecoilSettleSpeed    = 6
45317  
45318  
45319      ConditionState       = NONE
45320        Model              = JLJ-09X
45321        WeaponLaunchBone   = PRIMARY Muzzle
45322        WeaponFireFXBone   = PRIMARY MuzzleFX
45323  
45324        WeaponLaunchBone   = SECONDARY WEAPONA
45325        WeaponFireFXBone   = SECONDARY WEAPONAFX
45326        
45327      End
45328      ConditionState       = OVER_WATER
45329        Model              = JLJ-09X
45330        WeaponLaunchBone   = PRIMARY Muzzle
45331        WeaponFireFXBone   = PRIMARY MuzzleFX
45332  
45333        WeaponLaunchBone   = SECONDARY WEAPONA
45334        WeaponFireFXBone   = SECONDARY WEAPONAFX
45335      End
45336  
45337      ConditionState       = MOVING OVER_WATER
45338        Model              = JLJ-09X
45339        WeaponLaunchBone   = PRIMARY Muzzle
45340        WeaponFireFXBone   = PRIMARY MuzzleFX
45341  
45342        WeaponLaunchBone   = SECONDARY WEAPONA
45343        WeaponFireFXBone   = SECONDARY WEAPONAFX
45344  
45345  ;      ParticleSysBone = Mist01 AmphibMist ;Side β²¿
45346  ;      ParticleSysBone = Mist02 AmphibMist ;Side Öв¿
45347  ;      ParticleSysBone = Mist03 AmphibMist ;     Öв¿
45348  ;      ParticleSysBone = Mist04 AmphibMist ;Side Öв¿
45349  ;      ParticleSysBone = Mist05 AmphibMist ;Side Öв¿
45350  ;      ParticleSysBone = Mist06 AmphibMist ;Side Í·²¿
45351        ParticleSysBone = Mist07 AmphibMist ;Side  ½¢ÇÅ
45352  
45353  ;      ParticleSysBone = TreadFX01 AmphibWave ; β²¿
45354  ;      ParticleSysBone = TreadFX02 AmphibWave ; Öв¿
45355  ;      ParticleSysBone = TreadFX03 AmphibWave ; Öв¿
45356  ;      ParticleSysBone = TreadFX04 AmphibWave ; Öв¿
45357  ;      ParticleSysBone = TreadFX05 AmphibWave ; Öв¿
45358  ;      ParticleSysBone = TreadFX06 AmphibWave ; Í·²¿
45359        ParticleSysBone = TreadFX07 AmphibWave ;½¢ÇÅ
45360      End
45361    End
45362  
45363  
45364    VoiceSelect = OverlordTankVoiceSelect
45365  
45366    ; ***DESIGN parameters ***
45367    DisplayName            = OBJECT:Sub
45368    Side                   = China
45369    EditorSorting          = VEHICLE
45370    TransportSlotCount     = 8                 ;how many "slots" we take in a transport (0 == not transportable)
45371  
45372    WeaponSet
45373      Conditions           = None
45374      Weapon               = PRIMARY    submarineWeapon2
45375      PreferredAgainst     = PRIMARY    VEHICLE STRUCTURE
45376      AutoChooseSources    = PRIMARY    FROM_PLAYER FROM_SCRIPT FROM_AI
45377      Weapon               = SECONDARY  submarineWeapon
45378      AutoChooseSources    = SECONDARY  NONE
45379  
45380    End
45381  
45382    ArmorSet
45383      Conditions           = None
45384      Armor = TankArmor
45385      DamageFX = TankDamageFX
45386    End
45387  
45388    BuildCost = 5000
45389    BuildTime = 40.0
45390    VisionRange            = 400
45391    ShroudClearingRange = 450
45392    Prerequisites
45393      Object = ChinaNavalyard
45394      Object = ChinaPropagandaCenter
45395    End
45396    CommandSet             = ChinaSubmarineCommandSet
45397    MaxSimultaneousOfType = 2
45398  
45399    ; *** AUDIO Parameters ***
45400    SoundAmbient           = BattleshipAmbientLoop
45401    VoiceSelect = OverlordTankVoiceSelect
45402    UnitSpecificSounds
45403      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
45404      TurretMoveLoop       = TurretMoveLoop
45405    End
45406  
45407    ; *** ENGINEERING Parameters ***
45408    RadarPriority          = UNIT
45409    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS SCORE SELECTABLE VEHICLE
45410  
45411    Body = ActiveBody ModuleTag_02
45412      MaxHealth            = 3000.0
45413      InitialHealth        = 3000.0
45414    End
45415  
45416    Behavior = MaxHealthUpgrade ModuleTag_09
45417      TriggeredBy   = Upgrade_SubmarineArmor
45418      AddMaxHealth  = 1000.0
45419      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
45420    End
45421  
45422    Behavior = AutoHealBehavior ModuleTag_05
45423      HealingAmount = 7
45424      HealingDelay = 500 ; msec
45425      TriggeredBy = Upgrade_SubmarineRepair
45426    End
45427  
45428    Behavior = AIUpdateInterface ModuleTag_03
45429       AutoAcquireEnemiesWhenIdle = No
45430    End
45431  
45432    Locomotor = SET_NORMAL SubmarineLocomotor
45433  
45434    Behavior               = PhysicsBehavior ModuleTag_04
45435      Mass                 = 5000.0
45436    End
45437  
45438    Behavior = SlowDeathBehavior ModuleTag_16
45439      ProbabilityModifier = 25
45440      DestructionDelay = 200
45441      DestructionDelayVariance = 100
45442      OCL = FINAL    OCL_FirestormSmall
45443      FX  = FINAL    WeaponFX_NapalmMissileDetonation
45444    End
45445  
45446    Behavior = StealthUpdate ModuleTag_17
45447      StealthDelay                = 1000 ; msec
45448      StealthForbiddenConditions  = ATTACKING USING_ABILITY
45449      MoveThresholdSpeed          = 20
45450      InnateStealth               = No ;Requires upgrade first
45451      OrderIdleEnemiesToAttackMeUponReveal  = Yes
45452    End
45453  
45454    Behavior = StealthUpgrade ModuleTag_18
45455      TriggeredBy = Upgrade_SubmarineStealth
45456  
45457    End
45458   Behavior = MaxHealthUpgrade ModuleTag_09
45459      TriggeredBy   = Upgrade_SeaArmour
45460      AddMaxHealth  = 1000.0
45461      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
45462    End
45463  
45464    Behavior = AutoHealBehavior ModuleTag_05
45465      HealingAmount = 7
45466      HealingDelay = 500 ; msec
45467      TriggeredBy = Upgrade_SeaRepair
45468    End
45469     Behavior = StealthUpdate ModuleTag_07
45470      StealthDelay                = 2000 ; msec
45471      StealthForbiddenConditions  = FIRING_PRIMARY
45472      HintDetectableConditions    = IS_FIRING_WEAPON
45473      FriendlyOpacityMin          = 50.0%
45474      FriendlyOpacityMax          = 100.0%
45475      InnateStealth               = Yes
45476      OrderIdleEnemiesToAttackMeUponReveal  = Yes
45477    End
45478  
45479    Geometry               = BOX
45480    GeometryMajorRadius    = 200.0
45481    GeometryMinorRadius    = 20.0
45482    GeometryHeight         = 40
45483    GeometryIsSmall        = No
45484    Shadow                 = SHADOW_VOLUME
45485  
45486  End
45487  
45488  ;------------------------------------------------------------------
45489  Object GLAVehicleBalloonHulk
45490  
45491    ; *** ART Parameters ***
45492    Draw = W3DModelDraw                         ModuleTag_01 ; Helicopter
45493      DefaultConditionState
45494        Model = nvballoon_d
45495      End
45496    End
45497  
45498    ; ***DESIGN parameters ***
45499    DisplayName      = OBJECT:Chinook
45500    Side = GLA
45501  
45502    ; *** ENGINEERING Parameters ***
45503    KindOf = IMMOBILE NO_COLLIDE HULK
45504  
45505    Behavior = PhysicsBehavior ModuleTag_02
45506      Mass           = 15.0
45507      AllowBouncing  = Yes
45508    End
45509  
45510    Behavior = LifetimeUpdate ModuleTag_03
45511      MinLifetime    = 3000   ; min lifetime in msec
45512      MaxLifetime    = 3000   ; max lifetime in msec
45513    End
45514  
45515  End
45516  ;------------------------------------------------------------------------------
45517  Object GLAVehicleBalloon
45518  
45519    ; *** ART Parameters ***
45520    SelectPortrait         = T32
45521    ButtonImage            = T32
45522  
45523    UpgradeCameo1 = Upgrade_GLACamouflage
45524    UpgradeCameo2 = Upgrade_GLAJunkRepair
45525    
45526  ;  UpgradeCameo5 = None
45527  
45528    Draw = W3DModelDraw       ModuleTag_01 ; Helicopter
45529  
45530      DefaultConditionState
45531        Model = nvballoon
45532      End
45533  
45534      ConditionState = RUBBLE
45535        Model = nvballoon_d
45536      End
45537  
45538      OkToChangeModelColor = Yes
45539    End
45540  
45541  
45542  
45543    ; ***DESIGN parameters ***
45544    DisplayName         = OBJECT:Chinook
45545    EditorSorting       = VEHICLE
45546    Side                = GLA
45547    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
45548    VisionRange         = 300.0
45549    ShroudClearingRange = 600
45550  
45551    BuildCost           = 800
45552    BuildTime           = 20          ;in seconds
45553  
45554    ExperienceValue     = 50 50 50 50 ;Experience point value at each level
45555    IsTrainable         = No
45556    CommandSet          = BalloonCommandSet
45557  
45558    ArmorSet
45559      Conditions      = None
45560      Armor           = AirplaneArmor
45561      DamageFX        = None
45562    End
45563  
45564    ; *** AUDIO Parameters ***
45565    VoiceSelect     = ChinookVoiceSelect
45566    VoiceMove       = ChinookVoiceMove
45567    VoiceAttack     = ChinookVoiceAttack
45568    SoundAmbient    = ChinookAmbientLoop
45569    SoundAmbientRubble    = NoSound
45570    SoundDie        = ChinookVoiceFalling
45571    SoundEnter      = HumveeEnter
45572    SoundExit       = HumveeExit
45573    UnitSpecificSounds
45574      VoiceCreate         = ChinookVoiceCreate
45575      VoiceSupply         = ChinookVoiceSupply
45576      VoiceUnload         = ChinookVoiceUnload
45577      VoiceCombatDrop     = ChinookVoiceCombatDrop
45578      VoiceClearBuilding  = RangerVoiceClearBuilding ;Special combat drop that clears buildings!
45579      VoiceGarrison       = ChinookVoiceMove
45580    End
45581  
45582    ; *** ENGINEERING Parameters ***
45583    RadarPriority   = UNIT
45584    ; note that, although Chinooks aren't produced at helipads, we want to set this KINDOF so that they can land at
45585    ; (well, "near" actually) an Airfield to get healed...
45586    ; also note that we should NOT set CAN_ATTACK for chinooks. they can't attack. so there.
45587    KindOf          = PRELOAD CAN_CAST_REFLECTIONS SELECTABLE VEHICLE AIRCRAFT SCORE PRODUCED_AT_HELIPAD
45588  
45589    WeaponSet
45590      Conditions        = None
45591      Weapon            = PRIMARY  AntiSubMissileWeapon
45592    End
45593  
45594  
45595  
45596    Body = ActiveBody ModuleTag_03
45597      MaxHealth       = 200.0
45598      InitialHealth   = 200.0
45599    End
45600  
45601    Behavior = PhysicsBehavior ModuleTag_09
45602      Mass = 50.0
45603    End
45604  
45605    Behavior = JetAIUpdate ModuleTag_11
45606      MinHeight                     = 5
45607    End
45608  
45609    Locomotor = SET_NORMAL    BalloonLocomotor
45610    Locomotor = SET_TAXIING   BasicHelicopterTaxiLocomotor
45611  
45612    Behavior = TransportContain ModuleTag_08
45613    End
45614  
45615    Behavior = AutoHealBehavior ModuleTag_26
45616      HealingAmount = 2
45617      HealingDelay = 500 ; msec
45618      TriggeredBy = Upgrade_GLAJunkRepair
45619    End
45620  
45621    Behavior = HelicopterSlowDeathBehavior ModuleTag_10
45622      DestructionDelay                = 99999999        ; the destruction delay
45623      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
45624      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
45625      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
45626      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)
45627      SoundDeathLoop                  = ComancheDamagedLoop
45628      MinSelfSpin                     = 100                     ; in degrees per second
45629      MaxSelfSpin                     = 300                     ; in degrees per second
45630      SelfSpinUpdateDelay             = 100                     ; in milliseconds
45631      SelfSpinUpdateAmount            = 10                      ; in degrees
45632      FallHowFast                     = 12.0%                   ; fraction of gravity, lower = take longer to fall
45633      MinBladeFlyOffDelay             = 1500                    ; in milliseconds
45634      MaxBladeFlyOffDelay             = 1500                    ; in milliseconds
45635      AttachParticle                  = SootySmokeTrail
45636      AttachParticleBone              = Propeller02
45637      BladeObjectName                 = ComancheBlades
45638      BladeBoneName                   = Propeller01
45639      FXBlade                         = FX_HelicopterBladeExplosion
45640      OCLBlade                        = OCL_HelicopterBladeExplosion
45641      FXHitGround                     = FX_HelicopterHitGround
45642      OCLHitGround                    = OCL_HelicopterHitGround
45643      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
45644      OCLFinalBlowUp                  = OCL_FireFieldSmall
45645      DelayFromGroundToFinalDeath     = 30
45646      FinalRubbleObject               = GLAVehicleBalloonHulk
45647    End
45648  
45649    Behavior = StealthUpdate ModuleTag_22
45650      StealthDelay                = 2500 ; msec
45651      StealthForbiddenConditions  = NONE
45652      MoveThresholdSpeed          = 3
45653      InnateStealth               = No ;Requires upgrade first
45654      OrderIdleEnemiesToAttackMeUponReveal  = Yes
45655    End
45656  
45657    Behavior = StealthUpgrade ModuleTag_23
45658      TriggeredBy = Upgrade_GLACamouflage
45659    End
45660  
45661    Behavior = FireWeaponWhenDeadBehavior ModuleTag_29
45662      DeathWeapon   = PlaneSuicideBomb
45663      StartsActive  = Yes                      ; turned on by upgrade
45664    End
45665  
45666    Behavior = WeaponSetUpgrade ModuleTag_30
45667      TriggeredBy = Upgrade_ChinaBlackNapalm
45668    End
45669  
45670    Behavior        = MaxHealthUpgrade ModuleTag_31
45671      TriggeredBy   = Upgrade_ChinaAircraftArmor
45672      AddMaxHealth  = 40.0
45673      ChangeType    = ADD_CURRENT_HEALTH_TOO
45674    End
45675  
45676      Behavior = StealthDetectorUpdate ModuleTag_08
45677      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
45678      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
45679      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
45680      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
45681    End
45682  
45683    Behavior = FlammableUpdate ModuleTag_21
45684      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
45685      AflameDamageAmount = 3       ; taking this much damage...
45686      AflameDamageDelay = 500       ; this often.
45687    End
45688      Geometry = CYLINDER
45689    Scale = 1.95                           ;Scaling
45690    GeometryMajorRadius = 1.0
45691    GeometryMinorRadius = 1.0
45692    GeometryHeight = 8.0
45693  
45694    Geometry              = BOX
45695    GeometryMajorRadius   = 6.0
45696    GeometryMinorRadius   = 6.0
45697    GeometryHeight        = 6.0
45698    GeometryIsSmall       = No
45699    Shadow                = SHADOW_VOLUME
45700  
45701  End
45702  ;------------------------------------------------------------------------------
45703  Object SubMissile
45704  
45705    ; *** ART Parameters ***
45706    Draw                   = W3DModelDraw ModuleTag_01 ;W3DTankDraw ModuleTag_01
45707      OkToChangeModelColor = Yes
45708      ConditionState = NONE
45709        Model = AVTomahawk_M
45710     ParticleSysBone = ENGINE01 AmphibWave
45711     ParticleSysBone = ENGINE01 AmphibMist 
45712      End
45713    End
45714  
45715    ; ***DESIGN parameters ***
45716    DisplayName      = OBJECT:TomahawkMissile
45717    EditorSorting   = SYSTEM
45718    VisionRange = 0.0
45719    ArmorSet
45720      Conditions      = None
45721      ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
45722      ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
45723      ;*AntiBallisticMissile = Yes set in the Weapon.ini.
45724      Armor           = BallisticMissileArmor
45725      DamageFX        = None
45726    End
45727  
45728    ; *** ENGINEERING Parameters ***
45729    KindOf = PROJECTILE BALLISTIC_MISSILE
45730    Body = ActiveBody ModuleTag_02
45731      MaxHealth       = 200.0
45732      InitialHealth   = 100.0
45733    End
45734  
45735  ; ---- begin Projectile death behaviors
45736    Behavior = InstantDeathBehavior DeathModuleTag_01
45737      DeathTypes = NONE +DETONATED
45738      ; we detonated normally.
45739      FX          = WeaponFX_TomahawkMissileDetonation
45740    End
45741    Behavior = InstantDeathBehavior DeathModuleTag_02
45742      DeathTypes = NONE +LASERED
45743      ; shot down by laser.
45744      FX         = FX_GenericMissileDisintegrate
45745      OCL        = OCL_GenericMissileDisintegrate
45746    End
45747    Behavior = InstantDeathBehavior DeathModuleTag_03
45748      DeathTypes = ALL -LASERED -DETONATED
45749      ; shot down by nonlaser.
45750      FX         = FX_GenericMissileDeath
45751    End
45752  ; ---- end Projectile death behaviors
45753  
45754    Behavior = PhysicsBehavior ModuleTag_06
45755      Mass = 1
45756    End
45757    Behavior = MissileAIUpdate ModuleTag_07
45758      TryToFollowTarget = Yes
45759      FuelLifetime = 9000
45760      IgnitionDelay = 0
45761      IgnitionFX = FX_TomahawkIgnition
45762      InitialVelocity = 50                ; in dist/sec
45763      DistanceToTravelBeforeTurning = 80
45764      DistanceToTargetBeforeDiving = 100 ; When I hit this close to target, I ignore PreferredHeight.
45765      ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D
45766      ; heart, being over the target counts as "there", so we'll give up and just go straight.
45767  
45768      DistanceToTargetForLock = 10 ; Short lock on, as it looks better flying.  jba.
45769    End
45770    Locomotor = SET_NORMAL SubMissileLocomotor
45771  
45772    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
45773    GeometryMajorRadius = 8.0
45774    GeometryHeight = 4.0
45775    GeometryIsSmall = Yes
45776  
45777    Shadow = SHADOW_DECAL
45778  End
45779  
45780  
45781  Object SubNukeMissile
45782  
45783    ; *** ART Parameters ***
45784    Draw = W3DModelDraw ModuleTag_01
45785      OkToChangeModelColor = Yes
45786      ConditionState = NONE
45787        Model = SubNuMiss
45788      End
45789    End
45790  
45791    ; ***DESIGN parameters ***
45792    DisplayName      = OBJECT:Missile
45793    EditorSorting   = SYSTEM
45794    VisionRange = 0.0  
45795    ArmorSet
45796      Conditions      = None
45797      Armor           = ProjectileArmor
45798      DamageFX        = None
45799    End
45800  
45801    ; *** ENGINEERING Parameters ***
45802    KindOf = PROJECTILE SMALL_MISSILE
45803    Body = ActiveBody ModuleTag_02
45804      MaxHealth       = 100.0
45805      InitialHealth   = 100.0
45806    End
45807  
45808  ; ---- begin Projectile death behaviors
45809    Behavior = InstantDeathBehavior DeathModuleTag_01
45810      DeathTypes = NONE +DETONATED
45811      ; we detonated normally.
45812      ; no FX, just quiet destroy ourselves
45813    End
45814    Behavior = InstantDeathBehavior DeathModuleTag_02
45815      DeathTypes = NONE +LASERED
45816      ; shot down by laser.
45817      FX         = FX_GenericMissileDisintegrate
45818      OCL        = OCL_GenericMissileDisintegrate
45819    End
45820    Behavior = InstantDeathBehavior DeathModuleTag_03
45821      DeathTypes = ALL -LASERED -DETONATED
45822      ; shot down by nonlaser.
45823      FX         = FX_GenericMissileDeath
45824    End
45825  ; ---- end Projectile death behaviors
45826  
45827    Behavior = PhysicsBehavior ModuleTag_07
45828      Mass = 1
45829    End
45830    Behavior = MissileAIUpdate ModuleTag_08
45831      TryToFollowTarget     = Yes 
45832      FuelLifetime          = 10000
45833      InitialVelocity       = 75                ; in dist/sec
45834      IgnitionDelay         = 30
45835      IgnitionFX            = FX_JetMissileIgnition
45836    End
45837    Locomotor = SET_NORMAL SubNukeMissileLocomotor
45838  
45839  
45840    Behavior = WeaponBonusUpgrade ModuleTag_08
45841      TriggeredBy = Upgrade_GLAAPRockets
45842    End
45843  
45844    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_18
45845    SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
45846    TriggeredBy = Upgrade_InfantryCaptureBuilding
45847    End
45848  
45849    Geometry = Sphere
45850    GeometryIsSmall = Yes
45851    GeometryMajorRadius = 1.0
45852  
45853  End
45854  
45855  ;------------------------------------------------------------------------------
45856  Object AmericaJetB-2
45857  
45858    ; *** ART Parameters ***
45859    SelectPortrait         = T12
45860    ButtonImage            = T12
45861    
45862    ;UpgradeCameo1 = NONE
45863    ;UpgradeCameo2 = NONE
45864    ;UpgradeCameo3 = NONE
45865    ;UpgradeCameo4 = NONE
45866    ;UpgradeCameo5 = NONE
45867    
45868    Draw = W3DModelDraw ModuleTag_01
45869  
45870      DefaultConditionState
45871        Model                           = B-2
45872        HideSubObject                   = BurnerFX03 BurnerFX04
45873        WeaponLaunchBone  = PRIMARY WeaponA
45874      End
45875      
45876      ConditionState        = JETEXHAUST
45877        ParticleSysBone     = Wingtip01 JetContrail
45878        ParticleSysBone     = Wingtip02 JetContrail
45879      End
45880  
45881      ConditionState        = JETEXHAUST JETAFTERBURNER
45882        ; exhaust
45883        ParticleSysBone     = Wingtip01 JetContrail
45884        ParticleSysBone     = Wingtip02 JetContrail
45885        ; afterburners
45886        ShowSubObject       = BurnerFX03 BurnerFX04
45887        ParticleSysBone     = Engine01 JetLenzflare
45888        ParticleSysBone     = Engine02 JetLenzflare
45889      End
45890  
45891      ConditionState        = REALLYDAMAGED
45892        Model               = B-2
45893        ; damage
45894        ParticleSysBone     = Smoke01 JetSmoke
45895        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
45896      End
45897  
45898      ConditionState        = REALLYDAMAGED JETEXHAUST
45899        Model               = B-2
45900        ; damage
45901        ParticleSysBone     = Smoke01 JetSmoke
45902        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
45903        ; exhaust
45904        ParticleSysBone     = Wingtip01 JetContrail
45905        ParticleSysBone     = Wingtip02 JetContrail
45906      End
45907  
45908      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
45909        Model               = B-2
45910        ; damage
45911        ParticleSysBone     = Smoke01 JetSmoke
45912        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
45913        ; exhaust
45914        ParticleSysBone     = Wingtip01 JetContrail
45915        ParticleSysBone     = Wingtip02 JetContrail
45916        ; afterburners
45917        ShowSubObject       = BurnerFX03 BurnerFX04
45918        ParticleSysBone     = Engine01 JetLenzflare
45919        ParticleSysBone     = Engine02 JetLenzflare
45920      End
45921  
45922      ConditionState        = RUBBLE
45923        Model               = B-2
45924        HideSubObject       = None 
45925        ShowSubObject       = None
45926      End
45927  
45928      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
45929        Model               = B-2
45930        ;HideSubObject is needed cause there're inherited from default condition state      
45931        HideSubObject       = None 
45932        ShowSubObject       = None
45933        ParticleSysBone     = Engine01 JetExhaust
45934        ParticleSysBone     = Engine02 JetExhaust
45935        ParticleSysBone     = Wingtip01 JetContrail
45936        ParticleSysBone     = Wingtip02 JetContrail
45937      End
45938      
45939      OkToChangeModelColor = Yes
45940  
45941    End
45942  
45943    ; ***DESIGN parameters ***
45944    DisplayName           = OBJECT:B-2
45945    EditorSorting         = VEHICLE
45946    Side                  = America
45947    TransportSlotCount    = 0                 ;how many "slots" we take in a transport (0 == not transportable)
45948    VisionRange           = 180.0 
45949    ShroudClearingRange   = 300.0
45950    Prerequisites
45951      Object = AmericaAirfield2
45952      Object = USAAdvLab
45953      Science = SCIENCE_SpyDrone 
45954      
45955    End
45956    WeaponSet
45957      Conditions = None 
45958          Weapon = PRIMARY StealthJetBombWeapon
45959      PreferredAgainst    = PRIMARY   VEHICLE STRUCTURE
45960    End
45961    ArmorSet
45962      Conditions      = None
45963      Armor           = AirplaneArmor
45964      DamageFX        = None
45965    End
45966  
45967    BuildCost           = 3000
45968    BuildTime           = 35.0            ;in seconds  
45969    ExperienceValue     = 100 100 200 300 ;Experience point value at each level
45970    ExperienceRequired  = 0 200 300 600   ; Experience points needed to gain each level
45971    IsTrainable         = Yes             ;Can gain experience
45972    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
45973    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
45974    CommandSet = AmericaJetStealthFighterCommandSet
45975  
45976    MaxSimultaneousOfType = 2
45977  
45978    ; *** AUDIO Parameters ***
45979    VoiceSelect     = StealthFighterVoiceSelect
45980    VoiceMove       = StealthFighterVoiceMove
45981    VoiceAttack     = StealthFighterVoiceAttack
45982    VoiceAttackAir  = StealthFighterVoiceAttackAir
45983    VoiceGuard      = StealthFighterVoiceAirPatrol
45984    SoundAmbient    = StealthFighterAmbientLoop
45985    SoundAmbientRubble    = NoSound
45986    SoundDie        = StealthFighterVoiceFalling
45987    SoundStealthOn  = StealthOn
45988    SoundStealthOff = StealthOff
45989    UnitSpecificSounds
45990      VoiceCreate   = StealthFighterVoiceCreate
45991      SoundEject    = PilotSoundEject
45992      VoiceEject    = PilotVoiceEject
45993      Afterburner   = RaptorAfterburner
45994      VoiceLowFuel  = AuroraBomberVoiceLowFuel
45995      VoiceGarrison = StealthFighterVoiceMove
45996    End
45997  
45998    ; *** ENGINEERING Parameters ***
45999    RadarPriority   = LOCAL_UNIT_ONLY
46000    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
46001    Body = ActiveBody ModuleTag_02
46002      MaxHealth       = 180.0
46003      InitialHealth   = 180.0
46004    End
46005  
46006    Behavior                          = JetSlowDeathBehavior ModuleTag_03
46007      FXOnGroundDeath                 = FX_JetOnGroundDeath
46008      OCLOnGroundDeath                = OCL_StealthDeathFinalBlowUp
46009      DestructionDelay                = 99999999; destruction will happen when we
46010      RollRate                        = 0.2
46011      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
46012      PitchRate                       = 0.0
46013      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
46014      FXInitialDeath                  = FX_JetDeathInitial
46015      ;OCLInitialDeath                = None
46016      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
46017      FXSecondary                     = FX_JetDeathSecondary
46018      ;OCLSecondary                   = None
46019      FXHitGround                     = FX_JetDeathHitGround
46020      ;OCLHitGround                   = None
46021      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
46022      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
46023      OCLFinalBlowUp                  = OCL_StealthDeathFinalBlowUp
46024  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
46025    End
46026    Behavior = EjectPilotDie ModuleTag_04
46027      GroundCreationList = OCL_EjectPilotOnGround
46028      AirCreationList = OCL_EjectPilotViaParachute
46029      ExemptStatus = HIJACKED
46030      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
46031    End
46032   
46033    Behavior = PhysicsBehavior ModuleTag_05
46034      Mass = 500.0
46035    End
46036  
46037    Behavior = JetAIUpdate ModuleTag_06
46038      OutOfAmmoDamagePerSecond = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
46039                                      ; note that it's expressed as a percent of max health, not an absolute
46040      TakeoffSpeedForMaxLift = 100%   ; smaller numbers give more lift sooner when taking off
46041      TakeoffPause           = 500
46042      MinHeight              = 5
46043      ReturnToBaseIdleTime   = 10000         ; if idle for this long, return to base, even if not out of ammo
46044    End
46045  
46046    Behavior = StealthUpdate ModuleTag_09
46047      StealthDelay                          = 1500 ; msec
46048      StealthForbiddenConditions            = FIRING_PRIMARY
46049      ; not currently used... but maybe someday? (srj)
46050      ;RevealDistanceFromTarget             = 0.0f
46051      FriendlyOpacityMin                    = 50.0%
46052      FriendlyOpacityMax                    = 100.0%
46053      InnateStealth                         = Yes
46054      OrderIdleEnemiesToAttackMeUponReveal  = Yes
46055    End
46056  
46057    Locomotor = SET_NORMAL StealthJetLocomotor
46058    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
46059  
46060    Behavior = FlammableUpdate ModuleTag_21
46061      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
46062      AflameDamageAmount = 3       ; taking this much damage...
46063      AflameDamageDelay = 500       ; this often.
46064    End
46065  
46066    Behavior                 = TransitionDamageFX ModuleTag_22
46067      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
46068      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
46069    End
46070  
46071  
46072    Geometry = Cylinder
46073    GeometryIsSmall = Yes
46074    GeometryMajorRadius = 7.0
46075    GeometryMinorRadius = 7.0
46076    GeometryHeight = 7.0
46077    Shadow = SHADOW_VOLUME
46078    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
46079  
46080  End
46081  
46082   ;-----------------------------------------------------------------
46083  
46084   ;-----------------------------------------------------------------
46085  
46086  Object ChinaVehicleFrigate
46087  
46088    SelectPortrait = T28
46089    ButtonImage    = T28
46090  
46091    UpgradeCameo1 = Upgrade_SeaRepair
46092    UpgradeCameo2 = Upgrade_SeaArmour
46093    ;UpgradeCameo3 = NONE
46094    ;UpgradeCameo4 = NONE
46095    ;UpgradeCameo5 = NONE
46096  
46097    ; *** ART Parameters ***
46098    Draw                   = W3DModelDraw ModuleTag_01
46099      OkToChangeModelColor = Yes
46100      InitialRecoilSpeed   = 120
46101      MaxRecoilDistance    = 8
46102      RecoilSettleSpeed    = 6
46103  
46104      ConditionState       = NONE
46105        Model              = hwj071
46106        Animation          = hwj071.hwj071
46107        AnimationMode      = LOOP
46108  
46109        Turret             = Turret01
46110        WeaponFireFXBone   = PRIMARY MUZZLE
46111        WeaponMuzzleFlash  = PRIMARY MUZZLEFX
46112        WeaponLaunchBone   = PRIMARY MUZZLE
46113        WeaponFireFXBone  = SECONDARY WEAPONA
46114        WeaponLaunchBone   = SECONDARY WEAPONA
46115  
46116        ParticleSysBone = Smoke01 SteamVent
46117      End
46118  
46119  
46120      ConditionState       = OVER_WATER
46121        Model              = hwj071
46122        Animation          = hwj071.hwj071
46123        AnimationMode      = LOOP
46124  
46125        Turret             = Turret01
46126        WeaponFireFXBone   = PRIMARY MUZZLE
46127        WeaponMuzzleFlash  = PRIMARY MUZZLEFX
46128        WeaponLaunchBone   = PRIMARY MUZZLE
46129        WeaponFireFXBone  = SECONDARY WEAPONA
46130        WeaponLaunchBone   = SECONDARY WEAPONA
46131  
46132        ParticleSysBone = Smoke01 SteamVent
46133      End
46134  
46135      ConditionState       = MOVING OVER_WATER
46136        Model              = hwj071
46137        Animation          = hwj071.hwj071
46138        AnimationMode      = LOOP
46139  
46140        Turret             = Turret01
46141  
46142        WeaponFireFXBone   = PRIMARY MUZZLE
46143        WeaponMuzzleFlash  = PRIMARY MUZZLEFX
46144        WeaponLaunchBone   = PRIMARY MUZZLE
46145        WeaponFireFXBone  = SECONDARY WEAPONAFX
46146        WeaponLaunchBone   = SECONDARY WEAPONA
46147  
46148        ParticleSysBone = Mist01 AmphibMistSide
46149  
46150        ParticleSysBone = TreadFX01 AmphibWave
46151        ParticleSysBone = TreadFX02 AmphibWave
46152        ParticleSysBone = TreadFX03 AmphibWave
46153        ParticleSysBone = TreadFX04 AmphibWave
46154  
46155        ParticleSysBone = Smoke01 SteamVent
46156        ParticleSysBone = Smoke02 SteamVent
46157      End
46158    End
46159  
46160    VoiceSelect = OverlordTankVoiceSelect
46161  
46162    ; ***DESIGN parameters ***
46163    DisplayName            = OBJECT:Battleship
46164    Side                   = China
46165    EditorSorting          = VEHICLE
46166    TransportSlotCount     = 9                 ;how many "slots" we take in a transport (0 == not transportable)
46167    WeaponSet
46168      Conditions           = None
46169      Weapon               = PRIMARY     FrigateConnonWeapon
46170      PreferredAgainst     = PRIMARY         STRUCTURE
46171      Weapon               = SECONDARY    FrigateAntiAirMissileWeapon
46172      PreferredAgainst     = SECONDARY    SMALL_MISSILE  BALLISTIC_MISSILE
46173    End
46174  
46175    ArmorSet
46176      Conditions           = None
46177      ;Armor                = InvulnerableArmor
46178      Armor = TankDamage
46179      DamageFX = TankDamageFX
46180    End
46181    BuildCost = 4000 
46182    BuildTime = 30 
46183    VisionRange            = 400
46184    ShroudClearingRange = 450
46185    Prerequisites
46186  ;    Object = ChinaWarFactory
46187  ;    Object = ChinaPropagandaCenter
46188    End
46189    CommandSet             = BattleShipCommandSetFabius
46190  
46191    ; *** AUDIO Parameters ***
46192    SoundAmbient           = BattleshipAmbientLoop
46193    VoiceSelect = OverlordTankVoiceSelect
46194    UnitSpecificSounds
46195      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
46196      TurretMoveLoop       = TurretMoveLoop
46197    End
46198  
46199    ; *** ENGINEERING Parameters ***
46200    RadarPriority          = UNIT
46201    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE
46202  
46203    Body = ActiveBody ModuleTag_02
46204      MaxHealth            = 3000.0
46205      InitialHealth        = 3000.0
46206    End
46207  
46208    Behavior = MaxHealthUpgrade ModuleTag_09
46209      TriggeredBy   = Upgrade_SubmarineArmor
46210      AddMaxHealth  = 1000.0
46211      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
46212    End
46213  
46214    Behavior = AutoHealBehavior ModuleTag_05
46215      HealingAmount = 7
46216      HealingDelay = 500 ; msec
46217      TriggeredBy = Upgrade_SubmarineRepair
46218    End
46219  
46220    Behavior = AIUpdateInterface ModuleTag_03
46221      Turret
46222        TurretTurnRate = 100   ; turn rate, in degrees per sec
46223        ControlledWeaponSlots = PRIMARY
46224      End
46225      AutoAcquireEnemiesWhenIdle = Yes
46226  
46227    End
46228  
46229    Behavior            = SpawnBehavior ModuleTag_04
46230      SpawnNumber       = 1
46231      SpawnReplaceDelay = 3000 ; 3 seconds
46232  
46233          SpawnTemplateName = ChinaVehicleAntiSub
46234  
46235      ExitByBudding = No ;Yes;!
46236  
46237      InitialBurst = 1 ; the first set of 5 will not delay
46238      OneShot     = No
46239      AggregateHealth = No
46240    End
46241  
46242    Behavior = QueueProductionExitUpdate ModuleTag_05
46243      UnitCreatePoint   = X:  -70.0  Y:  0.0   Z:30.0
46244      NaturalRallyPoint = X: 0.0  Y:  0.0   Z:60.0
46245      ExitDelay     = 5000 ; 5 sec
46246      InitialBurst = 1 ; the first set of 5 will not delay
46247    End
46248  
46249    Locomotor = SET_NORMAL ChinaVehicleFrigateLocomotor
46250  
46251    Behavior               = PhysicsBehavior ModuleTag_06
46252      Mass                 = 1.0
46253    End
46254  
46255    Behavior = SlowDeathBehavior ModuleTag_07
46256      ProbabilityModifier = 25
46257      DestructionDelay = 200
46258      DestructionDelayVariance = 100
46259      OCL = FINAL    OCL_FirestormSmall
46260      FX  = FINAL    WeaponFX_NapalmMissileDetonation
46261    End
46262     Behavior = MaxHealthUpgrade ModuleTag_09
46263      TriggeredBy   = Upgrade_SeaArmour
46264      AddMaxHealth  = 1000.0
46265      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
46266    End
46267  
46268    Behavior = AutoHealBehavior ModuleTag_05
46269      HealingAmount = 7
46270      HealingDelay = 500 ; msec
46271      TriggeredBy = Upgrade_SeaRepair
46272    End
46273    Geometry               = BOX
46274    Scale                  = 0.85
46275    GeometryMajorRadius    = 164.0
46276    GeometryMinorRadius    = 18.0
46277    GeometryHeight         = 54.8
46278    GeometryIsSmall        = No
46279    Shadow                 = SHADOW_VOLUME
46280  
46281  End
46282  
46283  ;-----------------------------------------------------------------------------------
46284  Object ChinaVehicleAntiSub
46285  
46286    ; *** ART Parameters ***
46287    SelectPortrait         = T29
46288    ButtonImage            = T29
46289  
46290    ;UpgradeCameo1 = Upgrade_GLACamouflage
46291    ;UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
46292    ;UpgradeCameo3 = NONE
46293    ;UpgradeCameo4 = NONE
46294    ;UpgradeCameo5 = NONE
46295  
46296    Draw = W3DModelDraw ModuleTag_01
46297  
46298      DefaultConditionState
46299        Model                           = nvka28
46300        HideSubObject                   = MissileUpgrade
46301        Animation                       = nvka28.nvka28
46302        AnimationMode                   = LOOP
46303        WeaponMuzzleFlash               = PRIMARY TurretFX
46304        WeaponFireFXBone                = PRIMARY Muzzle
46305        WeaponFireFXBone                = SECONDARY Muzzle
46306        WeaponLaunchBone  = SECONDARY Muzzle
46307      End
46308  
46309      ConditionState = REALLYDAMAGED
46310        Model                           = nvka28
46311        Animation                       = nvka28.nvka28
46312        AnimationMode                   = LOOP
46313      End
46314  
46315      ConditionState = WEAPONSET_PLAYER_UPGRADE
46316        ShowSubObject                   = MissileUpgrade
46317        Animation                       = nvka28.nvka28
46318        AnimationMode                   = LOOP
46319        WeaponFireFXBone                = TERTIARY WeaponB
46320        WeaponLaunchBone  = TERTIARY WeaponB
46321      End
46322  
46323      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
46324        Model                           = nvka28
46325        ShowSubObject                   = MissileUpgrade
46326        Animation                       = nvka28.nvka28
46327        AnimationMode                   = LOOP
46328        WeaponFireFXBone                = TERTIARY WeaponB
46329        WeaponLaunchBone  = TERTIARY WeaponB
46330      End
46331  
46332      ConditionState = RUBBLE
46333        Model                           = nvka28
46334        Animation                       = nvka28.nvka28
46335        AnimationMode                   = LOOP
46336      End
46337  
46338      ConditionState = RUBBLE SPECIAL_DAMAGED
46339        Model                           = nvka28
46340        HideSubObject                   = nvka28
46341      End
46342  
46343      OkToChangeModelColor = Yes
46344    End
46345  
46346    ; ***DESIGN parameters ***
46347    DisplayName         = OBJECT:Comanche
46348    EditorSorting       = VEHICLE
46349    Side                = America
46350    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
46351    VisionRange         = 180.0
46352    ShroudClearingRange = 600
46353    Prerequisites
46354      Object            = AmericaAirfield
46355    End
46356  
46357    WeaponSet
46358      Conditions          = None
46359      Weapon              = PRIMARY     AntiSubMissileWeapon
46360      PreferredAgainst    = PRIMARY     VEHICLE
46361      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
46362    End
46363  
46364    ArmorSet
46365      Conditions      = None
46366      Armor           = ComancheArmor
46367      DamageFX        = None
46368    End
46369    BuildCost           = 1500
46370    BuildTime           = 20              ; in seconds
46371    ExperienceValue     = 50 50 100 200   ; Experience point value at each level
46372    ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
46373    IsTrainable         = Yes             ; Can gain experience
46374    CommandSet          = ChinaJetMIGCommandSet
46375  
46376    ; *** AUDIO Parameters ***
46377    VoiceSelect           = ComancheVoiceSelect
46378    VoiceMove             = ComancheVoiceMove
46379    VoiceGuard            = ComancheVoiceMove
46380    VoiceAttack           = ComancheVoiceAttack
46381    SoundAmbient          = ComancheAmbientLoop
46382    SoundAmbientRubble    = NoSound
46383    SoundDie              = ComancheVoiceFalling
46384    UnitSpecificSounds
46385      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
46386      VoiceCreate         = ComancheVoiceCreate
46387      SoundEject          = PilotSoundEject
46388      VoiceEject          = PilotVoiceEject
46389      Afterburner         = RaptorAfterburner
46390      VoiceGarrison       = ComancheVoiceMove
46391      TurretMoveStart     = NoSound
46392      TurretMoveLoop      = NoSound
46393      VoiceFireRocketPods = ComancheVoiceAttackRocket
46394    End
46395  
46396  
46397    ; *** ENGINEERING Parameters ***
46398    RadarPriority   = UNIT
46399    KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
46400  
46401    Behavior = WeaponSetUpgrade ModuleTag_02
46402      TriggeredBy = Upgrade_ComancheRocketPods
46403    End
46404    Behavior = ExperienceScalarUpgrade ModuleTag_03
46405      TriggeredBy = Upgrade_AmericaAdvancedTraining
46406      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
46407    End
46408  
46409    Body = ActiveBody ModuleTag_04
46410      MaxHealth       = 220.0
46411      InitialHealth   = 220.0
46412    End
46413  
46414    Behavior = FXListDie ModuleTag_05
46415      DeathFX = FX_HelicopterStartDeath
46416    End
46417  
46418    Behavior = JetAIUpdate ModuleTag_06
46419      MinHeight                     = 5
46420      NeedsRunway                   = No
46421      KeepsParkingSpaceWhenAirborne = No
46422      AutoAcquireEnemiesWhenIdle    = Yes
46423      ; note that comanches do not return to base when idle
46424  
46425      ; this is a bit of a trick... normally, units cannot move-and-fire at
46426      ; the same time. we need the comanche to be able to. so we give it
46427      ; a "turret" (invisible) and put the two main weapons on it, but with
46428      ; no turn rate. voila!
46429      Turret
46430        TurretTurnRate = 0      ; this "turret" does not turn
46431        TurretPitchRate = 0     ; nor does it pitch
46432        ControlledWeaponSlots = PRIMARY SECONDARY
46433      End
46434  
46435    End
46436    Locomotor = SET_NORMAL  ComancheLocomotor
46437    Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
46438  
46439    Behavior = PhysicsBehavior ModuleTag_07
46440      Mass = 50.0
46441    End
46442    Behavior = HelicopterSlowDeathBehavior ModuleTag_08
46443      DestructionDelay                = 99999999        ; the destruction delay
46444      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
46445      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
46446      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
46447      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)
46448      SoundDeathLoop                  = ComancheDamagedLoop
46449      MinSelfSpin                     = 100                     ; in degrees per second
46450      MaxSelfSpin                     = 300                     ; in degrees per second
46451      SelfSpinUpdateDelay             = 100             ; in milliseconds
46452      SelfSpinUpdateAmount            = 10             ; in degrees
46453      FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
46454      MinBladeFlyOffDelay             = 1500            ; in milliseconds
46455      MaxBladeFlyOffDelay             = 1500            ; in milliseconds
46456      AttachParticle                  = SootySmokeTrail
46457      AttachParticleBone              = Propeller02
46458      BladeObjectName                 = ComancheBlades
46459      BladeBoneName                   = Propeller01
46460      ; Most things that eject pilots do so immediately upon death,
46461      ; via use of EjectPilotDie, but Helicopters are a special case...
46462      ; they need to do so after their blades are ejected.
46463      OCLEjectPilot                   = OCL_EjectPilotViaParachute
46464      FXBlade                         = FX_HelicopterBladeExplosion
46465      OCLBlade                        = OCL_HelicopterBladeExplosion
46466      FXHitGround                     = FX_HelicopterHitGround
46467      OCLHitGround                    = OCL_HelicopterHitGround
46468      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
46469      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
46470      DelayFromGroundToFinalDeath     = 1500
46471      FinalRubbleObject               = ComancheRubbleHull
46472    End
46473  
46474    Behavior = TransitionDamageFX ModuleTag_09
46475      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
46476      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
46477    End
46478  
46479    Behavior = FlammableUpdate ModuleTag_21
46480      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
46481      AflameDamageAmount = 3       ; taking this much damage...
46482      AflameDamageDelay = 500       ; this often.
46483    End
46484  
46485      Behavior = StealthUpdate ModuleTag_07
46486      StealthDelay                = 2500 ; msec
46487      StealthForbiddenConditions  = ATTACKING USING_ABILITY
46488      MoveThresholdSpeed          = 3
46489      InnateStealth               = No ;Requires upgrade first
46490      OrderIdleEnemiesToAttackMeUponReveal  = Yes
46491    End
46492  
46493    Behavior = StealthUpgrade ModuleTag_08
46494      TriggeredBy = Upgrade_GLACamouflage
46495    End
46496  
46497    Behavior = MobMemberSlavedUpdate ModuleTag_22
46498      MustCatchUpRadius   = 500 ;????????
46499      NoNeedToCatchUpRadius = 180 ;??????
46500      Squirrelliness = 0.05
46501      CatchUpCrisisBailTime = 3000; this is in calls to this update, not in frames
46502    End
46503  
46504    Geometry = BOX
46505    GeometryMajorRadius = 20.0
46506    GeometryMinorRadius = 3.0
46507    GeometryHeight = 25.0
46508    GeometryIsSmall = No
46509    Shadow = SHADOW_VOLUME
46510    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
46511  
46512  End
46513  ;------------------------------------------------------------------------------
46514  Object ChinaVehicleFieldPorpaganda
46515    ; *** ART Parameters ***
46516    SelectPortrait         = T30
46517    ButtonImage            = T30
46518  
46519    UpgradeCameo1 = Upgrade_ChinaRadarJammer
46520  ;  UpgradeCameo2 = Upgrade_AmericaScoutDrone
46521    ;UpgradeCameo3 = NONE
46522    ;UpgradeCameo4 = NONE
46523    ;UpgradeCameo5 = NONE
46524  
46525  
46526      Draw = W3DTruckDraw ModuleTag_01
46527      OkToChangeModelColor = Yes
46528      DefaultConditionState
46529        Model              = NVPPTYK
46530        Animation      = NVPPTYK.NVPPTYK
46531        AnimationMode      = LOOP
46532      End
46533  
46534      ConditionState       = REALLYDAMAGED
46535        Model              = NVPPTYK
46536        Animation      = NVPPTYK.NVPPTYK
46537        AnimationMode      = LOOP
46538      End
46539  
46540      ConditionState       = RUBBLE
46541        Model              = NVPPTYK
46542        Animation      = NVPPTYK.NVPPTYK
46543        AnimationMode      = LOOP
46544      End
46545  
46546    End
46547  
46548    ; ***DESIGN parameters ***
46549    DisplayName      = OBJECT:Medic
46550    Side = China
46551    EditorSorting   = VEHICLE
46552    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
46553  
46554    WeaponSet
46555      Conditions        = None
46556    End
46557  
46558    ArmorSet
46559      Conditions      = None
46560      Armor           = TankArmor
46561      DamageFX        = TankDamageFX
46562    End
46563  
46564    BuildCost       = 800
46565    BuildTime       = 15 ;10.0          ;in seconds
46566    VisionRange     = 100
46567    ShroudClearingRange = 400
46568    Prerequisites
46569      Object = ChinaWarFactory
46570    End
46571    ExperienceValue    = 50 50 50 50 ;Experience point value at each level
46572    IsTrainable     = No
46573    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
46574    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
46575    CommandSet      = GenericCommandSet
46576  
46577    ; *** AUDIO Parameters ***
46578    VoiceSelect = RedGuardVoiceSelect
46579    VoiceMove = RedGuardVoiceMove
46580    VoiceGuard = RedGuardVoiceMove
46581    VoiceAttack = RedGuardVoiceAttack
46582    VoiceGroupSelect = BattleCrySound
46583    SoundDie = RedGuardVoiceDie
46584    SoundDieFire = DieByFireChina
46585    SoundDieToxin = DieByToxinChina
46586    VoiceFear = RedGuardVoiceFear
46587    VoiceTaskComplete = RedGuardVoiceCaptureComplete
46588    UnitSpecificSounds
46589      VoiceMelee      = RedGuardVoiceAttackBayonet
46590      VoiceGarrison   = RedGuardVoiceGarrison
46591      VoiceCreate     = RedGuardVoiceCreate
46592      VoiceSubdue     = RedGuardVoiceSubdue
46593      VoiceEnter      = RedGuardVoiceMove
46594      VoiceEnterHostile = RedGuardVoiceMove
46595      VoiceGetHealed      = RedGuardVoiceMove
46596    End
46597  
46598  
46599    ; *** ENGINEERING Parameters ***
46600    RadarPriority = UNIT
46601    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE SCORE
46602  
46603    Body = ActiveBody ModuleTag_02
46604      MaxHealth       = 240.0
46605      InitialHealth   = 240.0
46606    End
46607  
46608    Behavior = TransportAIUpdate ModuleTag_05
46609      ;
46610    End
46611    Locomotor = SET_NORMAL NuclearBattleMasterLocomotor
46612  
46613    Behavior = PhysicsBehavior ModuleTag_07
46614      Mass = 50.0
46615    End
46616    Behavior = SlowDeathBehavior ModuleTag_08
46617      DeathTypes = ALL -CRUSHED -SPLATTED
46618      DestructionDelay = 0
46619      FX  = FINAL FX_GenericTankDeathExplosion
46620      OCL = FINAL OCL_FinalAmbulanceDebris
46621    End
46622  
46623    Behavior = DestroyDie ModuleTag_12
46624      DeathTypes = NONE +CRUSHED +SPLATTED
46625    End
46626  
46627    Behavior = FXListDie ModuleTag_13
46628      DeathTypes = NONE +CRUSHED +SPLATTED
46629      DeathFX = FX_CarCrush
46630    End
46631  
46632    Behavior = CreateObjectDie ModuleTag_14
46633      DeathTypes = NONE +CRUSHED +SPLATTED
46634      CreationList = OCL_CrusaderTank_CrushEffect
46635    End
46636  
46637    Behavior = FXListDie ModuleTag_15
46638      DeathTypes = ALL -CRUSHED -SPLATTED
46639      DeathFX = FX_GenericTankDeathEffect
46640    End
46641  
46642    Behavior = CreateCrateDie ModuleTag_16
46643      CrateData = SalvageCrateData
46644      ;CrateData = EliteTankCrateData
46645      ;CrateData = HeroicTankCrateData
46646    End
46647  
46648    Behavior = TransitionDamageFX ModuleTag_18
46649      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
46650      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
46651    End
46652  
46653    Behavior = FlammableUpdate ModuleTag_21
46654      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
46655      AflameDamageAmount = 3       ; taking this much damage...
46656      AflameDamageDelay = 500       ; this often.
46657  
46658    End
46659  
46660    Behavior = AutoHealBehavior ModuleTag_22
46661      HealingAmount     = 4
46662      HealingDelay      = 1000 ; msec
46663      Radius            = 175.0f
46664      StartsActive      = Yes
46665      KindOf            = INFANTRY VEHICLE
46666    End
46667  
46668    Behavior = ActiveShroudUpgrade ModuleTag_23
46669      TriggeredBy = Upgrade_ChinaRadarJammer
46670      NewShroudRange = 175.0
46671      FXListUpgrade = FX_ChinaRadarJammerUpgrade
46672    End
46673  
46674    Behavior = StealthDetectorUpdate ModuleTag_24
46675      DetectionRate             = 900   ; how often to rescan for stealthed things in my sight (msec)
46676      ;DetectionRange           = ??? ;Dustin, enable this for independant balancing!
46677      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
46678      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
46679      PingSound                 = IRPing
46680      LoudPingSound             = IRPingLoud
46681      IRParticleSysName         = IRDetectSonar
46682      IRBrightParticleSysName   = IRDetectSonarBright
46683      IRGridParticleSysName     = IRDetectGrid
46684      IRBeaconParticleSysName   = IRLenzflare
46685      IRParticleSysBone         = SMOKE08
46686    End
46687  
46688    Geometry = BOX
46689    GeometryMajorRadius = 14.0
46690    GeometryMinorRadius = 7.0
46691    GeometryHeight = 12.0  ; height set to allow clear clipping of projectile streams
46692    GeometryIsSmall = Yes
46693    Shadow = SHADOW_VOLUME
46694  
46695  End
46696  ;---------------------------------------------------------------------------
46697  Object AntiSubMissile
46698    ; *** ART Parameters ***
46699    Draw = W3DModelDraw ModuleTag_01
46700      DefaultConditionState
46701        Model = EXCarptBmb
46702      End
46703    End
46704  
46705    ; ***DESIGN parameters ***
46706    Side = China
46707    EditorSorting     = SYSTEM
46708    ArmorSet
46709      Conditions      = None
46710      Armor           = ProjectileArmor
46711      DamageFX        = None
46712    End
46713    VisionRange       = 0.0
46714  
46715    ; *** AUDIO Parameters ***
46716  
46717    ; *** ENGINEERING Parameters ***
46718    KindOf            = PROJECTILE
46719    Body              = ActiveBody ModuleTag_02
46720      MaxHealth       = 100.0
46721      InitialHealth   = 100.0
46722    End
46723  
46724    Behavior              = PhysicsBehavior ModuleTag_03
46725      Mass                = 75.0
46726      AerodynamicFriction = 2     ; this is now friction-per-sec
46727      ForwardFriction     = 2     ; this is now friction-per-sec
46728      CenterOfMassOffset  = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
46729    End
46730  
46731    Behavior = MissileAIUpdate ModuleTag_04
46732      TryToFollowTarget   = No
46733      FuelLifetime        = 0
46734      IgnitionDelay       = 0
46735      InitialVelocity     = 0                ; in dist/sec
46736      DistanceToTravelBeforeTurning = 0
46737      DistanceToTargetBeforeDiving  = 0
46738    End
46739    Locomotor = SET_NORMAL AuroraBombLocomotor   ; yes, that's right.
46740  
46741    Geometry = Sphere
46742    GeometryIsSmall = Yes
46743    GeometryMajorRadius = 2.0
46744  End
46745  ;-----------------------------------------------------------------------------
46746  ;------------------------------------------------------------------------------
46747  Object ChinaVehicleTroopCrawlerf
46748  
46749    ; *** ART Parameters ***
46750    SelectPortrait         = SNTransport_L
46751    ButtonImage            = SNTransport
46752    
46753    ;UpgradeCameo1 = NONE
46754    ;UpgradeCameo2 = NONE
46755    ;UpgradeCameo3 = NONE
46756    ;UpgradeCameo4 = NONE
46757    ;UpgradeCameo5 = NONE
46758    
46759    Draw = W3DTruckDraw ModuleTag_01
46760      OkToChangeModelColor = Yes
46761      ConditionState = NONE
46762        Model = NVTCrawler
46763        ;note, the IRSonar particle system is added in StealthDetectorUpdate.cpp, not here
46764      End
46765      ConditionState       = REALLYDAMAGED RUBBLE ; THIS IS VERY IMPORTANT... DO NOT REMOVE 'RUBBLE' UNDER PENALTY OF DEATH MLorenzen
46766                                                  ; @todo find out why a non-animating model like this has such trouble matching
46767                                                  ; reallydamaged against moving against rubble, etc.
46768        Model              = NVTCrawler_D
46769      End
46770  
46771      TrackMarks = EXTireTrack.tga
46772  
46773      Dust = RocketBuggyDust
46774      DirtSpray = RocketBuggyDirtSpray
46775      ; PowerslideSpray = RocketBuggyDirtPowerSlide doesn't powerslide
46776  
46777      ; These parameters are only used if the model has a separate suspension, 
46778      ; and the locomotor has HasSuspension = Yes.
46779      LeftFrontTireBone     = Wheel01
46780      RightFrontTireBone    = Wheel08
46781      LeftRearTireBone      = Wheel03
46782      RightRearTireBone     = Wheel05
46783      MidLeftFrontTireBone  = Wheel02
46784      MidRightFrontTireBone = Wheel07
46785      MidLeftRearTireBone   = Wheel04
46786      MidRightRearTireBone  = Wheel06
46787  
46788      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
46789      PowerslideRotationAddition  = 0   ; This vehicle doesn't powerslide.
46790  
46791    End
46792  
46793  
46794    ; ***DESIGN parameters ***
46795    DisplayName      = OBJECT:TroopCrawler
46796    Side = China
46797    EditorSorting   = VEHICLE
46798    TransportSlotCount = 8                 ;Just enough to fit into a Chinook.
46799    WeaponSet
46800      Conditions = None 
46801      Weapon = PRIMARY TroopCrawlerAssault
46802    End
46803    ArmorSet
46804      Conditions      = None
46805      Armor           = TankArmor
46806      DamageFX        = TankDamageFX
46807    End
46808    BuildCost       = 1400
46809    BuildTime       = 15.0          ;in seconds    
46810    VisionRange     = 175           ;Needs to see farther and match it's weapon range -- else troop crawlers will get slaughtered against tanks!
46811    ShroudClearingRange = 400
46812    Prerequisites
46813      Object = ChinaWarFactory
46814    End
46815    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
46816    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
46817    CommandSet = ChinaTroopCrawlerCommandSet
46818  
46819    ; *** AUDIO Parameters ***
46820    VoiceSelect = TroopCrawlerVoiceSelect
46821    VoiceMove = TroopCrawlerVoiceMove
46822    VoiceGuard = TroopCrawlerVoiceMove
46823    VoiceAttack = TroopCrawlerVoiceAttack
46824    SoundMoveStart = TroopCrawlerMoveStart
46825    SoundMoveStartDamaged = TroopCrawlerMoveStart
46826    SoundEnter = HumveeEnter
46827    SoundExit = HumveeExit
46828    UnitSpecificSounds
46829      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
46830      VoiceCreate     = TroopCrawlerVoiceCreate
46831      TurretMoveStart = NoSound
46832      TurretMoveLoop = TurretMoveLoop
46833      TruckLandingSound = NoSound ;RocketBuggyLand
46834      TruckPowerslideSound = NoSound ;RocketBuggyPowerslide
46835      VoiceCrush = TroopCrawlerVoiceCrush
46836      VoiceUnload   = TroopCrawlerVoiceUnload
46837      VoiceEnter = TroopCrawlerVoiceMove
46838    End
46839  
46840  
46841   ; *** ENGINEERING Parameters ***
46842    RadarPriority = UNIT
46843    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS TRANSPORT VEHICLE SCORE
46844    
46845    Body = ActiveBody ModuleTag_02
46846      MaxHealth       = 240.0
46847      InitialHealth   = 240.0
46848    End
46849    Behavior = StealthDetectorUpdate ModuleTag_03
46850      DetectionRate             = 900   ; how often to rescan for stealthed things in my sight (msec)
46851      ;DetectionRange           = ??? ;Dustin, enable this for independant balancing!
46852      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
46853      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
46854      PingSound                 = IRPing
46855      LoudPingSound             = IRPingLoud
46856      IRParticleSysName         = IRDetectSonar
46857      IRBrightParticleSysName   = IRDetectSonarBright
46858      IRGridParticleSysName     = IRDetectGrid
46859      IRBeaconParticleSysName   = IRLenzflare
46860      IRParticleSysBone         = IRFX
46861    End
46862  
46863  ;OBSOLETE
46864  ;  Behavior = AIUpdateInterface ModuleTag_04
46865  ;    Turret
46866  ;      ControlledWeaponSlots = PRIMARY
46867  ;    End
46868  ;  End
46869    Behavior = AssaultTransportAIUpdate ModuleTag_NewAI
46870      MembersGetHealedAtLifeRatio = 0.5
46871    End
46872  
46873    Locomotor = SET_NORMAL TroopCrawlerLocomotor 
46874    Behavior = PhysicsBehavior ModuleTag_05
46875      Mass = 50.0
46876    End
46877    Behavior = TransportContain ModuleTag_06
46878      Slots                 = 8
46879      PassengersAllowedToFire = Yes
46880      InitialPayload        = ChinaInfantryCommando 8
46881      ScatterNearbyOnExit   = No
46882      HealthRegen%PerSec    = 10
46883      DamagePercentToUnits  = 10%
46884      AllowInsideKindOf     = INFANTRY
46885      ExitDelay         = 250
46886      NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
46887      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
46888    End
46889  
46890    Behavior = SlowDeathBehavior ModuleTag_07
46891      DeathTypes = ALL -CRUSHED -SPLATTED
46892      DestructionDelay = 1
46893      FX  = FINAL    FX_SupplyTruckExplosionOneFinal
46894      OCL = FINAL    OCL_FinalTroopCrawlerDebris
46895    End
46896  
46897    Behavior                 = TransitionDamageFX ModuleTag_08
46898      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
46899      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
46900    End
46901  
46902    Behavior = DestroyDie ModuleTag_09
46903      DeathTypes = NONE +CRUSHED +SPLATTED
46904    End
46905  
46906    Behavior = FXListDie ModuleTag_10
46907      DeathTypes = NONE +CRUSHED +SPLATTED
46908      DeathFX = FX_CarCrush
46909    End
46910  
46911    ; A crushing defeat
46912    Behavior = FXListDie ModuleTag_11
46913      DeathTypes = NONE +CRUSHED +SPLATTED
46914      DeathFX = FX_CarCrush
46915    End
46916  
46917    Behavior = CreateCrateDie ModuleTag_12
46918      CrateData = SalvageCrateData
46919      ;CrateData = EliteTankCrateData
46920      ;CrateData = HeroicTankCrateData
46921    End
46922  
46923    Behavior = FlammableUpdate ModuleTag_21
46924      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
46925      AflameDamageAmount = 3       ; taking this much damage...
46926      AflameDamageDelay = 500       ; this often.
46927    End
46928  
46929    Geometry = BOX
46930    GeometryMajorRadius = 22.0
46931    GeometryMinorRadius = 9.0
46932    GeometryHeight = 13.0     
46933    GeometryIsSmall = No
46934    Shadow = SHADOW_VOLUME
46935    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
46936  
46937  End
46938  
46939  
46940  ;------------------------------------------------------------------------------
46941  Object AmericaVehicleAvenger
46942  
46943    ; *** ART Parameters ***
46944    SelectPortrait         = T1
46945    ButtonImage            = T1    
46946  
46947    UpgradeCameo1 = Upgrade_AmericaBattleDrone
46948    UpgradeCameo2 = Upgrade_AmericaScoutDrone
46949    UpgradeCameo3 = Upgrade_AmericaTOWMissile
46950    UpgradeCameo4 = Upgrade_AmericaAdvancedTraining
46951    ;UpgradeCameo5 = XXX
46952  
46953    Draw = W3DTruckDraw ModuleTag_01
46954      OkToChangeModelColor = Yes
46955  
46956      ConditionState = NONE
46957        Model = AvAvenger
46958        Turret = Turret
46959        WeaponFireFXBone = PRIMARY Plane
46960        WeaponLaunchBone = PRIMARY Plane
46961        WeaponFireFXBone = SECONDARY Plane
46962        WeaponLaunchBone = SECONDARY Plane
46963      End
46964  
46965      ConditionState = REALLYDAMAGED
46966        Model = AvAvenger
46967        Turret = Turret
46968        WeaponFireFXBone = PRIMARY Plane
46969        WeaponLaunchBone = PRIMARY Plane
46970        WeaponFireFXBone = SECONDARY Plane
46971        WeaponLaunchBone = SECONDARY Plane
46972      End
46973  
46974      TrackMarks = EXTireTrack.tga
46975  
46976      Dust = RocketBuggyDust
46977      DirtSpray = RocketBuggyDirtSpray
46978      PowerslideSpray = RocketBuggyDirtPowerSlide
46979  
46980      ; These parameters are only used if the model has a separate suspension,
46981      ; and the locomotor has HasSuspension = Yes.
46982      LeftFrontTireBone = Tire01
46983      RightFrontTireBone = Tire02
46984      LeftRearTireBone = Tire03
46985      RightRearTireBone = Tire04
46986      TireRotationMultiplier = 0.2   ; this * speed = rotation.
46987      PowerslideRotationAddition = 1.25   ; This speed is added to the rotation speed when powersliding.
46988  
46989    End
46990  
46991    ; ***DESIGN parameters ***
46992    DisplayName           = OBJECT:Avenger
46993    Side                  = America
46994    EditorSorting         = VEHICLE
46995    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
46996  
46997    WeaponSet
46998      Conditions = None
46999      Weapon = PRIMARY HumveeMissileWeapon
47000      PreferredAgainst = PRIMARY INFANTRY VEHICLE STRUCTURE
47001      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
47002      ;------------
47003      Weapon = SECONDARY HumveeMissileWeaponAir
47004      PreferredAgainst = SECONDARY AIRCRAFT PROJECTILE
47005      AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI
47006    End
47007  
47008    ArmorSet
47009      Conditions      = None
47010      Armor           = AntiAirVehicle
47011      DamageFX        = TankDamageFX
47012    End
47013    BuildCost       = 500
47014    BuildTime       = 10.0          ;in seconds
47015    VisionRange     = 150
47016    ShroudClearingRange = 320
47017    Prerequisites
47018      Object = AmericaWarFactory
47019    End
47020    ExperienceValue = 50 50 100 150   ;Experience point value at each level
47021    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
47022    IsTrainable = Yes             ;Can gain experience
47023    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
47024    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
47025    CommandSet      = AmericaVehicleHumveeCommandSet
47026  
47027    ; *** AUDIO Parameters ***
47028    VoiceSelect = HumveeVoiceSelect
47029    VoiceMove = HumveeVoiceMove
47030    VoiceGuard = HumveeVoiceMove
47031    VoiceAttack = HumveeVoiceAttack
47032    VoiceAttackAir = HumveeVoiceAttackTOW
47033    SoundMoveStart = HumveeMoveStart
47034    SoundMoveStartDamaged = HumveeMoveStart
47035    SoundEnter = HumveeEnter
47036    SoundExit = HumveeExit
47037  
47038    UnitSpecificSounds
47039      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
47040      ;TurretMoveStart    = NoSound
47041      VoiceCreate         = HumveeVoiceCreate
47042      TurretMoveLoop      = TurretMoveLoop
47043      SoundEject          = PilotSoundEject
47044      VoiceEject          = PilotVoiceEject
47045      VoiceCrush          = HumveeVoiceCrush
47046    ; Required for the W3DTruckDraw module
47047      TruckLandingSound = RocketBuggyLand
47048      TruckPowerslideSound = RocketBuggyPowerslide
47049      VoiceUnload = HumveeVoiceUnload
47050      VoiceEnter = HumveeVoiceMove
47051    End
47052  
47053    Behavior = AIUpdateInterface ModuleTag_20
47054      AutoAcquireEnemiesWhenIdle = Yes
47055      MoodAttackCheckRate        = 250
47056    End
47057  
47058    ; *** ENGINEERING Parameters ***
47059    RadarPriority = UNIT
47060    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT SALVAGER
47061  
47062    Body = ActiveBody ModuleTag_02
47063      MaxHealth       = 200.0
47064      InitialHealth   = 200.0
47065    End
47066    Behavior = TransportAIUpdate ModuleTag_03
47067      Turret
47068        TurretTurnRate = 180
47069        RecenterTime = 5000   ; how long to wait during idle before recentering
47070        ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
47071      End
47072      AutoAcquireEnemiesWhenIdle = Yes
47073    End
47074    Locomotor = SET_NORMAL HumveeLocomotor
47075  
47076    Behavior = PhysicsBehavior ModuleTag_04
47077      Mass = 50.0
47078    End
47079  
47080    Behavior = TransportContain  ModuleTag_05
47081      PassengersAllowedToFire = Yes
47082      Slots             = 2
47083  ;    EnterSound          = GarrisonEnter
47084  ;    ExitSound           = GarrisonExit
47085      DamagePercentToUnits = 100% ;10%
47086      AllowInsideKindOf  = INFANTRY
47087      ExitDelay = 250
47088      NumberOfExitPaths = 2 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
47089      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
47090    End
47091  
47092    Behavior = ObjectCreationUpgrade ModuleTag_06
47093      UpgradeObject = OCL_AmericanBattleDrone
47094      TriggeredBy   = Upgrade_AmericaBattleDrone
47095      ConflictsWith = Upgrade_AmericaScoutDrone
47096    End
47097    Behavior = ObjectCreationUpgrade ModuleTag_07
47098      UpgradeObject = OCL_AmericanScoutDrone
47099      TriggeredBy   = Upgrade_AmericaScoutDrone
47100      ConflictsWith = Upgrade_AmericaBattleDrone
47101    End
47102    Behavior = ProductionUpdate ModuleTag_08
47103      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
47104    End
47105  
47106    Behavior = WeaponSetUpgrade ModuleTag_09
47107      TriggeredBy = Upgrade_AmericaTOWMissile
47108    End
47109    Behavior = ExperienceScalarUpgrade ModuleTag_10
47110      TriggeredBy = Upgrade_AmericaAdvancedTraining
47111      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
47112    End
47113  
47114    Behavior = SlowDeathBehavior ModuleTag_11
47115      DeathTypes = ALL -CRUSHED -SPLATTED
47116      ProbabilityModifier = 25
47117      DestructionDelay = 1
47118      OCL = INITIAL  OCL_InitialHumveeDebris
47119      FX  = FINAL    FX_BattleMasterExplosionOneFinal
47120      OCL = FINAL    OCL_FinalHumveeDebris
47121    End
47122  
47123    Behavior = DestroyDie ModuleTag_12
47124      DeathTypes = NONE +CRUSHED +SPLATTED
47125    End
47126  
47127    Behavior = FXListDie ModuleTag_13
47128      DeathTypes = NONE +CRUSHED +SPLATTED
47129      DeathFX = FX_CarCrush
47130    End
47131  
47132    Behavior = CreateCrateDie ModuleTag_CratesChange
47133      CrateData = SalvageCrateData
47134      ;CrateData = EliteTankCrateData
47135      ;CrateData = HeroicTankCrateData
47136    End
47137  
47138  ; This is commented out per hotlist request 10/9 ML
47139  ;  Behavior = CreateObjectDie ModuleTag_15
47140  ;    DeathTypes = ALL -CRUSHED -SPLATTED
47141  ;    CreationList = OCL_AmericanRangerDebris01
47142  ;    ExemptStatus = HIJACKED
47143  ;  End
47144  
47145    Behavior = EjectPilotDie ModuleTag_16
47146      DeathTypes = ALL -CRUSHED -SPLATTED
47147      ExemptStatus = HIJACKED
47148      ; The following added out per hotlist request 10/9 as above ML
47149      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
47150      GroundCreationList = OCL_EjectPilotOnGround
47151      AirCreationList = OCL_EjectPilotViaParachute
47152    End
47153  
47154    Behavior = TransitionDamageFX ModuleTag_17
47155      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
47156      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
47157    End
47158  
47159    Behavior = FlammableUpdate ModuleTag_21
47160      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
47161      AflameDamageAmount = 3       ; taking this much damage...
47162      AflameDamageDelay = 500       ; this often.
47163    End
47164  
47165    Geometry = BOX
47166    Scale = 1.11
47167    GeometryMajorRadius = 14.0
47168    GeometryMinorRadius = 7.0
47169    GeometryHeight = 11.5
47170    GeometryIsSmall = Yes
47171    Shadow = SHADOW_VOLUME
47172    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
47173  
47174  End
47175  
47176  ;-----------------------------------------------------
47177  ;------------------------------------------------------------------------------
47178  Object GLAVehiclezodiac
47179  
47180    ; *** ART Parameters ***
47181    SelectPortrait         = SUBombTruck_L
47182    ButtonImage            = SUBombTruck
47183    
47184    UpgradeCameo1 = Upgrade_GLABombTruckHighExplosiveBomb
47185    UpgradeCameo2 = Upgrade_GLABombTruckBioBomb
47186    UpgradeCameo3 = Upgrade_GLAJunkRepair
47187    ;UpgradeCameo4 = NONE
47188    ;UpgradeCameo5 = NONE
47189    
47190    
47191    Draw = W3DTruckDraw ModuleTag_01
47192      OkToChangeModelColor = Yes
47193      TrackMarks = EXTireTrack.tga
47194      
47195      ConditionState  = NONE
47196        Model         = zodiac
47197      End
47198  
47199      ConditionState  = MOVING
47200        Model         = zodiac
47201      End
47202  
47203      ConditionState  = OVER_WATER
47204        Model         = zodiac
47205      End
47206  
47207      ConditionState  = MOVING OVER_WATER
47208        Model         = zodiac
47209        ParticleSysBone = TreadFX01 AmphibWave
47210      
47211  
47212        ;Display the default bombload -- and the upgrades will handle the rest!
47213        HideSubObject = Bombload02 Bombload03 Bombload04
47214      End
47215  
47216      ConditionState = REALLYDAMAGED
47217         Model = zodiac
47218        Animation = zodiac.zodiac
47219        AnimationMode = LOOP
47220      End
47221      
47222      ConditionState = RUBBLE
47223        Model = zodiac
47224      End
47225  
47226      LeftFrontTireBone = Tire01
47227      RightFrontTireBone = Tire02
47228      MidLeftFrontTireBone = Tire03
47229      MidRightFrontTireBone = Tire04
47230      LeftRearTireBone = Tire05
47231      RightRearTireBone = Tire06
47232      TireRotationMultiplier = 0.2   ; this * speed = rotation.
47233  
47234      Dust = RocketBuggyDust
47235      DirtSpray = RocketBuggyDirtSpray
47236      PowerslideSpray = RocketBuggyDirtPowerSlide
47237  
47238    End
47239  
47240    ; ***DESIGN parameters ***
47241    DisplayName      = OBJECT:zodiac
47242    Side = GLA
47243    EditorSorting   = VEHICLE
47244    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
47245    WeaponSet
47246      Conditions = None 
47247      Weapon = PRIMARY SuicideWeapon 
47248    End
47249    ArmorSet
47250      Conditions      = None
47251      Armor           = TruckArmor
47252      DamageFX        = TruckDamageFX
47253    End
47254    BuildCost       = 1200
47255    BuildTime       = 15.0          ;in seconds    
47256    VisionRange     = 150 ; Used in attack move targeting
47257    ShroudClearingRange     = 200
47258    Prerequisites
47259      Object = GLAArmsDealer
47260      Object = GLAPalace
47261    End
47262    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
47263    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
47264    CommandSet = GLAVehicleBombTruckCommandSet
47265  
47266    ; *** AUDIO Parameters ***
47267    VoiceSelect = BombTruckVoiceSelect
47268    VoiceMove = BombTruckVoiceMove
47269    VoiceGuard = BombTruckVoiceMove
47270    VoiceAttack = BombTruckVoiceAttack
47271    SoundMoveStart = BombTruckMoveStart
47272    SoundMoveStartDamaged = BombTruckMoveStart
47273    UnitSpecificSounds
47274      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
47275      VoiceCreate                   = BombTruckVoiceCreate
47276      TurretMoveStart               = NoSound
47277      TurretMoveLoop                = NoSound
47278      TruckLandingSound             = RocketBuggyLand
47279      TruckPowerslideSound          = RocketBuggyPowerslide
47280      DisguiseStarted               = BombTruckDisguiseStarted
47281      DisguiseRevealedSuccess       = BombTruckDisguiseRevealedSuccess
47282      DisguiseRevealedFailure       = BombTruckDisguiseRevealedFailure
47283      VoiceEnter = BombTruckVoiceMove
47284    End
47285  
47286    ; *** ENGINEERING Parameters ***
47287    RadarPriority = UNIT
47288    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE DISGUISER
47289  
47290    Body = ActiveBody ModuleTag_02
47291      MaxHealth       = 220.0
47292      InitialHealth   = 220.0
47293    End
47294  
47295    ExperienceValue     = 50 50 50 50  ; Experience point value at each level
47296  
47297    Behavior = VeterancyGainCreate ModuleTag_03
47298      StartingLevel = VETERAN
47299    End
47300  
47301    Behavior = AIUpdateInterface ModuleTag_04
47302      AutoAcquireEnemiesWhenIdle = No ATTACK_BUILDINGS
47303    End
47304    Locomotor = SET_NORMAL BasicBoatLocomotor
47305  
47306    Behavior = PhysicsBehavior ModuleTag_05
47307      Mass = 10.0
47308    End
47309  
47310    Behavior = AutoHealBehavior ModuleTag_06
47311      HealingAmount = 2
47312      HealingDelay = 1000 ; msec
47313      TriggeredBy = Upgrade_GLAJunkRepair
47314    End
47315  
47316    Behavior = ProductionUpdate ModuleTag_07
47317      ; nothing
47318    End
47319  
47320    Behavior = SlowDeathBehavior  ModuleTag_08
47321      DeathTypes = ALL -CRUSHED -SPLATTED
47322      ProbabilityModifier = 5
47323      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
47324      DestructionDelay = 0
47325      DestructionDelayVariance = 200
47326      FX = FINAL FX_BuggyNewDeathExplosion
47327      OCL = FINAL OCL_BombTruckDeathEffect
47328    End
47329  
47330    ;Behavior = DestroyDie
47331      ;nothing
47332    ;End
47333  
47334  
47335    ;************************************************************************************************
47336    ;* WHICH BOMB DO WE USE??? 
47337    ;* We have 2 damage possibilities -- (normal OR high explosive) 
47338    ;* So part 1 is inflicting the damage itself without creating effects
47339    ;* The complicated part is the part where we have 6 possible effect explosions based on 
47340    ;* all the possible upgrade combinations. Note that bio weapons don't inflict damage through
47341    ;* the explosion.
47342    ;*
47343    ;* DAMAGE COMBINATIONS (NO EFFECTS):
47344    ;* 1) Normal (doesn't have high explosive upgrade)
47345    ;* 2) High explosive (has high-explosive upgrade)
47346    ;*
47347    ;* EFFECT COMBINATIONS (NO DAMAGE):
47348    ;* 1) Normal (no upgrades)
47349    ;* 2) Bio (bio-bomb upgrade)
47350    ;* 3) Anthrax (bio-bomb and anthrax upgrade)
47351    ;* 4) High explosive (high explosive upgrade)
47352    ;* 5) High explosive bio (high explosive and bio-bomb upgrade)
47353    ;* 6) High explosive anthrax (high explosive, bio-bomb, and anthrax upgrades)
47354    ;************************************************************************************************
47355  
47356    ;************************************************************************************************
47357    ;* EXCLUSIVE DAMAGE POSSIBILITY 1 -- Normal explosion (can't have high-explosive upgrade)
47358    ;************************************************************************************************
47359    Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
47360      DeathWeapon   = BombTruckDefaultBombDamage
47361      StartsActive  = Yes                      ; turned on by upgrade
47362      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb
47363    End
47364  
47365    ;************************************************************************************************
47366    ;* EXCLUSIVE DAMAGE POSSIBILITY 2 -- High explosion (always plays if it has high-explosive upgrade)
47367    ;************************************************************************************************
47368    Behavior = FireWeaponWhenDeadBehavior ModuleTag_10
47369      DeathWeapon   = BombTruckHighExplosionBombDamage
47370      StartsActive  = No                      ; turned on by upgrade
47371      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
47372    End
47373  
47374    ;************************************************************************************************
47375    ;* EXCLUSIVE EFFECT COMBINATION 1 - Regular explosion (no upgrades)
47376    ;************************************************************************************************
47377    Behavior = FireWeaponWhenDeadBehavior ModuleTag_11
47378      DeathWeapon   = BombTruckDefaultBombEffect
47379      StartsActive  = Yes                      ; turned on by upgrade
47380      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
47381    End
47382  
47383    ;************************************************************************************************
47384    ;* EXCLUSIVE EFFECT COMBINATION 2 - Bio explosion 
47385    ;* Requires:    Bio upgrade
47386    ;* Can't have:  Anthrax upgrade, high explosive upgrade
47387    ;************************************************************************************************
47388    Behavior = FireWeaponWhenDeadBehavior ModuleTag_12
47389      DeathWeapon   = BombTruckBioBombEffect
47390      StartsActive  = No                      ; turned on by upgrade
47391      TriggeredBy   = Upgrade_GLABombTruckBioBomb
47392      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
47393      RequiresAllTriggers = Yes
47394    End
47395  
47396    ;************************************************************************************************
47397    ;* EXCLUSIVE EFFECT COMBINATION 3 - Anthrax explosion 
47398    ;* Requires:    Bio upgrade and anthrax upgrade
47399    ;* Can't have:  High explosive upgrade
47400    ;************************************************************************************************
47401    Behavior = FireWeaponWhenDeadBehavior ModuleTag_13
47402      DeathWeapon   = BombTruckAnthraxBombEffect
47403      StartsActive  = No                      ; turned on by upgrade
47404      TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLAAnthraxBeta
47405      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb 
47406      RequiresAllTriggers = Yes
47407    End
47408  
47409    ;************************************************************************************************
47410    ;* EXCLUSIVE EFFECT COMBINATION 4 - High explosion
47411    ;* Requires:    High explosive upgrade
47412    ;* Can't have:  Bio upgrade and anthrax upgrade
47413    ;************************************************************************************************
47414    Behavior = FireWeaponWhenDeadBehavior ModuleTag_14
47415      DeathWeapon   = BombTruckHighExplosiveBombEffect
47416      StartsActive  = No                      ; turned on by upgrade
47417      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
47418      ConflictsWith = Upgrade_GLABombTruckBioBomb
47419      RequiresAllTriggers = Yes
47420    End
47421  
47422    ;************************************************************************************************
47423    ;* EXCLUSIVE EFFECT COMBINATION 5 - High explosive bio explosion 
47424    ;* Requires:    High explosive upgrade and bio upgrade 
47425    ;* Can't have:  Anthrax upgrade
47426    ;************************************************************************************************
47427    Behavior = FireWeaponWhenDeadBehavior ModuleTag_15
47428      DeathWeapon   = BombTruckHighExplosiveBioBombEffect
47429      StartsActive  = No                      ; turned on by upgrade
47430      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
47431      ConflictsWith = Upgrade_GLAAnthraxBeta
47432      RequiresAllTriggers = Yes
47433    End
47434  
47435    ;************************************************************************************************
47436    ;* EXCLUSIVE EFFECT COMBINATION 6 - High explosive Anthrax explosion 
47437    ;* Requires:    High explosive, Bio, and anthrax upgrade
47438    ;************************************************************************************************
47439    Behavior = FireWeaponWhenDeadBehavior ModuleTag_16
47440      DeathWeapon   = BombTruckHighExplosiveAnthraxBombEffect
47441      StartsActive  = No                      ; turned on by upgrade
47442      TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
47443      RequiresAllTriggers = Yes
47444    End
47445  
47446    ;-------------------------------------------------------------------
47447    ; Wheeeee! Now we get to display the payload based on upgrades!!! 
47448    ;-------------------------------------------------------------------
47449    Behavior = SubObjectsUpgrade ModuleTag_17
47450      ;*** Bio bomb load ***
47451      TriggeredBy    = Upgrade_GLABombTruckBioBomb 
47452      ConflictsWith  = Upgrade_GLABombTruckHighExplosiveBomb
47453      ShowSubObjects = Bombload02 
47454      HideSubObjects = Bombload01 Bombload03 Bombload04
47455    End
47456    Behavior = SubObjectsUpgrade ModuleTag_18
47457      ;*** High-explosive bomb load ***
47458      TriggeredBy    = Upgrade_GLABombTruckHighExplosiveBomb
47459      ConflictsWith  = Upgrade_GLABombTruckBioBomb 
47460      ShowSubObjects = Bombload03 
47461      HideSubObjects = Bombload01 Bombload02 Bombload04
47462    End
47463    Behavior = SubObjectsUpgrade ModuleTag_19
47464      ;*** High-explosive bio bomb load ***
47465      TriggeredBy    = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb
47466      ShowSubObjects = Bombload04 
47467      HideSubObjects = Bombload01 Bombload02 Bombload03
47468      RequiresAllTriggers = Yes
47469    End
47470    ;-------------------------------------------------------------------
47471  
47472  
47473    Behavior = SpecialAbility ModuleTag_20
47474      SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
47475      UpdateModuleStartsAttack = Yes
47476      InitiateSound = BombTruckVoiceDisguise
47477    End
47478    Behavior = SpecialAbilityUpdate ModuleTag_21
47479      SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
47480      StartAbilityRange = 1000000.0
47481      ApproachRequiresLOS = No
47482    End
47483  
47484    Behavior = StealthUpdate ModuleTag_22
47485      StealthDelay                          = 1
47486      DisguisesAsTeam                       = Yes
47487      RevealDistanceFromTarget              = 100.0f
47488      OrderIdleEnemiesToAttackMeUponReveal  = Yes
47489      DisguiseFX                            = FX_BombTruckDisguise
47490      DisguiseRevealFX                      = FX_BombTruckDisguiseReveal
47491      InnateStealth                         = Yes
47492      DisguiseTransitionTime                = 2000
47493      DisguiseRevealTransitionTime          = 1000 
47494    End
47495  
47496    ; A crushing defeat
47497    Behavior = FXListDie ModuleTag_23
47498      DeathTypes = NONE +CRUSHED +SPLATTED
47499      DeathFX = FX_CarCrush
47500    End
47501    Behavior = CreateObjectDie ModuleTag_24
47502      DeathTypes = NONE +CRUSHED +SPLATTED
47503      CreationList = OCL_CrusaderTank_CrushEffect
47504    End
47505    Behavior = CreateCrateDie ModuleTag_25
47506      CrateData = SalvageCrateData
47507      ;CrateData = EliteTankCrateData
47508      ;CrateData = HeroicTankCrateData
47509    End
47510    
47511    Behavior = TransitionDamageFX ModuleTag_26
47512      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
47513      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
47514    End
47515  
47516    Behavior = FlammableUpdate ModuleTag_28
47517      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
47518      AflameDamageAmount = 3       ; taking this much damage...
47519      AflameDamageDelay = 500       ; this often.
47520    End
47521  
47522    Behavior = DestroyDie ModuleTag_29
47523      DeathTypes = NONE +CRUSHED +SPLATTED
47524    End
47525  
47526    Geometry = BOX
47527    GeometryMajorRadius = 19.0
47528    GeometryMinorRadius = 8.0
47529    GeometryHeight = 11.5     
47530    GeometryIsSmall = No    
47531    Shadow = SHADOW_VOLUME
47532    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
47533  
47534  End
47535  ;------------------------------------------------------------------------------
47536  Object AmericaVehicleBattleShip2
47537  
47538    SelectPortrait = T23
47539    ButtonImage    = T23
47540  
47541    UpgradeCameo1 = Upgrade_SeaRepair
47542    UpgradeCameo2 = Upgrade_SeaArmour
47543    ;UpgradeCameo3 = NONE
47544    ;UpgradeCameo4 = NONE
47545    ;UpgradeCameo5 = NONE
47546  
47547    ; *** ART Parameters ***
47548  
47549  
47550    Draw                   = W3DOverlordTankDraw ModuleTag_02
47551      OkToChangeModelColor = Yes
47552      InitialRecoilSpeed   = 120
47553      MaxRecoilDistance    = 8
47554      RecoilSettleSpeed    = 6
47555      ConditionState       = NONE
47556        Model              = avbattlecruiser
47557        Animation          = avbattlecruiser.avbattlecruiser
47558        AnimationMode      = LOOP
47559        Turret             = Turret03
47560        TurretPitch        = TurretEL03
47561  ;     TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward;
47562       AltTurret          = Turret02
47563       AltTurretPitch     = TurretEL02
47564       AltTurretArtAngle  = 180      
47565        WeaponFireFXBone   = PRIMARY Tur3Muzzle
47566        WeaponRecoilBone   = PRIMARY Tur3Barrel
47567        WeaponFireFXBone   = SECONDARY Tur1Muzzle
47568        WeaponRecoilBone   = SECONDARY Tur1Barrel
47569        WeaponFireFXBone   = TERTIARY Tur2Muzzle
47570        WeaponRecoilBone   = TERTIARY Tur2Barrel
47571  
47572        ParticleSysBone   = TreadFX02 BattleShipWaterRipples
47573        ParticleSysBone   = TreadFX03 BattleShipWaterRipples
47574        ParticleSysBone   = TreadFX04 BattleShipWaterRipples
47575      HideSubObject     = Tur2Barrel01
47576      HideSubObject     = Tur2Barrel02
47577      HideSubObject     = Tur2Barrel03
47578      HideSubObject     = Tur1Barrel01
47579      HideSubObject     = Tur1Barrel02
47580      HideSubObject     = Tur1Barrel03
47581      HideSubObject     = Turret02
47582      HideSubObject     = Turret01
47583      HideSubObject     = Housecolor01
47584      End
47585    End
47586  Draw                   = W3DOverlordTankDraw ModuleTag_01
47587      OkToChangeModelColor = Yes
47588      InitialRecoilSpeed   = 120
47589      MaxRecoilDistance    = 8
47590      RecoilSettleSpeed    = 6
47591      ConditionState       = NONE
47592        Model              = avbattlecruiser
47593        Animation          = avbattlecruiser.avbattlecruiser
47594        AnimationMode      = LOOP
47595        Turret             = Turret02
47596        TurretPitch        = TurretEL02
47597  ;      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
47598       AltTurret          = Turret01
47599        AltTurretPitch     = TurretEL01
47600        AltTurretArtAngle     = 180
47601        WeaponFireFXBone   = PRIMARY Tur2Muzzle
47602        WeaponRecoilBone   = PRIMARY Tur2Barrel
47603        WeaponFireFXBone   = SECONDARY Tur3Muzzle
47604        WeaponRecoilBone   = SECONDARY Tur3Barrel
47605        WeaponFireFXBone   = TERTIARY Tur2Muzzle
47606        WeaponRecoilBone   = TERTIARY Tur2Barrel
47607        ParticleSysBone   = TreadFX02 BattleShipWaterRipples
47608        ParticleSysBone   = TreadFX03 BattleShipWaterRipples
47609        ParticleSysBone   = TreadFX04 BattleShipWaterRipples
47610      HideSubObject     = Tur3Barrel01
47611      HideSubObject     = Tur3Barrel02
47612      HideSubObject     = Tur3Barrel03
47613      HideSubObject     = Tur1Barrel01
47614      HideSubObject     = Tur1Barrel02
47615      HideSubObject     = Tur1Barrel03
47616      HideSubObject     = Turret03
47617      HideSubObject     = Turret01
47618      End
47619    End
47620  
47621    Draw                   = W3DOverlordTankDraw ModuleTag_99
47622      OkToChangeModelColor = Yes
47623      InitialRecoilSpeed   = 120
47624      MaxRecoilDistance    = 8
47625      RecoilSettleSpeed    = 6
47626      ConditionState       = NONE
47627        Model              = avbattlecruiser
47628        Animation          = avbattlecruiser.avbattlecruiser
47629        AnimationMode      = LOOP
47630        Turret             = Turret01
47631        TurretPitch        = TurretEL01
47632        WeaponFireFXBone   = SECONDARY Tur3Muzzle
47633        WeaponRecoilBone   = SECONDARY Tur3Barrel
47634        WeaponFireFXBone   = SECONDARY Tur1Muzzle
47635        WeaponRecoilBone   = SECONDARY Tur1Barrel
47636        WeaponFireFXBone   = TERTIARY Tur2Muzzle
47637        WeaponRecoilBone   = TERTIARY Tur2Barrel
47638        ParticleSysBone   = TreadFX02 BattleShipWaterRipples
47639        ParticleSysBone   = TreadFX03 BattleShipWaterRipples
47640        ParticleSysBone   = TreadFX04 BattleShipWaterRipples
47641      HideSubObject     = Tur2Barrel01
47642      HideSubObject     = Tur2Barrel02
47643      HideSubObject     = Tur2Barrel03
47644      HideSubObject     = Tur3Barrel01
47645      HideSubObject     = Tur3Barrel02
47646      HideSubObject     = Tur3Barrel03
47647      HideSubObject     = Turret02
47648      HideSubObject     = Turret03
47649      End
47650    End
47651  
47652  
47653    
47654    VoiceSelect = PaladinTankVoiceSelect
47655  
47656    ; ***DESIGN parameters ***
47657    DisplayName            = OBJECT:Battleship2
47658    Side                   = America
47659    EditorSorting          = VEHICLE
47660    TransportSlotCount     = 9                 ;how many "slots" we take in a transport (0 == not transportable)
47661    WeaponSet
47662      Conditions           = None 
47663      Weapon               = PRIMARY BattleShipGrenades
47664      Weapon               = SECONDARY BattleShipGrenades
47665      Weapon         = TERTIARY BattleShipGrenades
47666      AutoChooseSources   = PRIMARY      None
47667      AutoChooseSources   = SECONDARY    None
47668      AutoChooseSources   = TERTIARY     None
47669      ShareWeaponReloadTime = Yes
47670    End
47671    ArmorSet
47672      Conditions           = None
47673      ;Armor                = InvulnerableArmor
47674      Armor = TankDamage
47675      DamageFX = TankDamageFX
47676    End
47677   
47678    BuildCost = 100
47679    BuildTime = 1.0
47680    VisionRange            = 400
47681    ShroudClearingRange = 450
47682      Prerequisites
47683      ;Object = AmericaNavalyard2
47684      
47685    End
47686  
47687    CommandSet             = BattleShipCommandSetFabius2
47688  
47689    ; *** AUDIO Parameters ***
47690    SoundAmbient           = BattleshipAmbientLoop
47691    VoiceSelect = PaladinTankVoiceSelect
47692    UnitSpecificSounds
47693      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
47694      TurretMoveLoop       = TurretMoveLoop
47695    End
47696  
47697    ; *** ENGINEERING Parameters ***
47698      RadarPriority = UNIT
47699    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
47700  
47701    Body = ActiveBody ModuleTag_02
47702      MaxHealth            = 3000.0
47703      InitialHealth        = 3000.0
47704    End
47705  
47706    Behavior = MaxHealthUpgrade ModuleTag_09
47707      TriggeredBy   = Upgrade_SeaArmour
47708      AddMaxHealth  = 1000.0
47709      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
47710    End
47711  
47712    Behavior = AutoHealBehavior ModuleTag_05
47713      HealingAmount = 7
47714      HealingDelay = 500 ; msec
47715      TriggeredBy = Upgrade_SeaRepair
47716    End
47717  
47718    Behavior = AIUpdateInterface ModuleTag_04
47719      Turret
47720        TurretTurnRate     = 80
47721        TurretPitchRate    = 80
47722        FirePitch          = 12            ; Instead of aiming pitchwise at the target, it will aim here
47723        AllowsPitch        = Yes
47724        RecenterTime       = 5000       ; how long to wait during idle before recentering
47725        ControlledWeaponSlots = PRIMARY SECONDARY
47726  ;      NaturalTurretAngle = 180  ; this turret points backwards normally
47727      End
47728      AltTurret
47729        TurretTurnRate     = 80
47730        TurretPitchRate    = 80
47731        FirePitch          = 15          ; Instead of aiming pitchwise at the target, it will aim here
47732        AllowsPitch        = Yes
47733        RecenterTime       = 5000     ; how long to wait during idle before recentering
47734        ControlledWeaponSlots = TERTIARY
47735      NaturalTurretAngle = 180
47736      End
47737    
47738    End
47739    ;--------------------------permet le deplassement du batiment-------
47740  
47741  
47742  Locomotor = SET_NORMAL BasicBoatLocomotor
47743  
47744    Behavior               = PhysicsBehavior ModuleTag_04
47745      Mass                 = 5000.0
47746    End
47747   Behavior = SlowDeathBehavior ModuleTag_16
47748      ProbabilityModifier = 25
47749      DestructionDelay = 200
47750      DestructionDelayVariance = 100
47751      OCL = FINAL    OCL_FirestormSmall
47752      FX  = FINAL    WeaponFX_NapalmMissileDetonation
47753    End
47754  ;--------------------------permet le deplassement du batiment-------
47755   
47756  
47757   
47758  
47759    Geometry               = BOX
47760    GeometryMajorRadius    = 200.0
47761    GeometryMinorRadius    = 20.0
47762    GeometryHeight         = 40     
47763    GeometryIsSmall        = No 
47764    Shadow                 = SHADOW_VOLUME   
47765  
47766  End
47767  
47768  ;------------------------------------------------------------------------------
47769  Object AmericaVehicleBattlefurtifShip2
47770  
47771    ; *** ART Parameters ***
47772    SelectPortrait         = T34
47773    ButtonImage            = T34
47774    
47775     UpgradeCameo1 = Upgrade_SeaRepair
47776    UpgradeCameo2 = Upgrade_SeaArmour
47777    ;UpgradeCameo3 =Upgrade_SubmarineStealth
47778    ;UpgradeCameo4 = NONE
47779    ;UpgradeCameo5 = NONE
47780  
47781    ; *** ART Parameters ***
47782    Draw                   = W3DModelDraw ModuleTag_01 ;W3DTankDraw ModuleTag_01
47783      OkToChangeModelColor = Yes
47784      InitialRecoilSpeed   = 120
47785      MaxRecoilDistance    = 8
47786      RecoilSettleSpeed    = 6
47787  
47788  
47789      ConditionState       = NONE
47790        Model              = bat_furtif
47791        WeaponLaunchBone   = PRIMARY Muzzle
47792        WeaponFireFXBone   = PRIMARY MuzzleFX
47793  
47794        WeaponLaunchBone   = SECONDARY WEAPONA
47795        WeaponFireFXBone   = SECONDARY WEAPONAFX
47796        
47797      End
47798      ConditionState       = OVER_WATER
47799        Model              = bat_furtif
47800        WeaponLaunchBone   = PRIMARY Muzzle
47801        WeaponFireFXBone   = PRIMARY MuzzleFX
47802  
47803        WeaponLaunchBone   = SECONDARY WEAPONA
47804        WeaponFireFXBone   = SECONDARY WEAPONAFX
47805      End
47806  
47807      ConditionState       = MOVING OVER_WATER
47808        Model              = bat_furtif
47809        WeaponLaunchBone   = PRIMARY Muzzle
47810        WeaponFireFXBone   = PRIMARY MuzzleFX
47811  
47812        WeaponLaunchBone   = SECONDARY WEAPONA
47813        WeaponFireFXBone   = SECONDARY WEAPONAFX
47814  
47815  ;      ParticleSysBone = Mist01 AmphibMist ;
47816  ;      ParticleSysBone = Mist02 AmphibMist ;
47817  ;      ParticleSysBone = Mist03 AmphibMist ;     
47818  ;      ParticleSysBone = Mist04 AmphibMist ;
47819  ;      ParticleSysBone = Mist05 AmphibMist ;
47820  ;      ParticleSysBone = Mist06 AmphibMist ;
47821        ParticleSysBone = Mist07 AmphibMist ;
47822  
47823  ;      ParticleSysBone = TreadFX01 AmphibWave ; 
47824  ;      ParticleSysBone = TreadFX02 AmphibWave ;
47825  ;      ParticleSysBone = TreadFX03 AmphibWave ; 
47826  ;      ParticleSysBone = TreadFX04 AmphibWave ;
47827  ;      ParticleSysBone = TreadFX05 AmphibWave ; 
47828  ;      ParticleSysBone = TreadFX06 AmphibWave ; 
47829        ParticleSysBone = TreadFX07 AmphibWave ;
47830      End
47831    End
47832  
47833  
47834    VoiceSelect = OverlordTankVoiceSelect
47835  
47836    ; ***DESIGN parameters ***
47837    DisplayName            = OBJECT:Bateau_furtif2
47838    Side                   = America
47839    EditorSorting          = VEHICLE
47840    TransportSlotCount     = 8                 ;how many "slots" we take in a transport (0 == not transportable)
47841  
47842    WeaponSet
47843      Conditions           = None
47844      Weapon               = PRIMARY    submarineWeapon2
47845      Weapon              = SECONDARY   PatriotMissileAssistWeapon
47846      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_AI FROM_SCRIPT
47847      AutoChooseSources   = SECONDARY   NONE
47848      PreferredAgainst    = PRIMARY     BALLISTIC_MISSILE AIRCRAFT
47849      PreferredAgainst    = SECONDARY   BALLISTIC_MISSILE AIRCRAFT
47850      ShareWeaponReloadTime = Yes
47851    End
47852  
47853  
47854  
47855    ArmorSet
47856      Conditions           = None
47857      Armor = TankArmor
47858      DamageFX = TankDamageFX
47859    End
47860  
47861    BuildCost = 2000
47862    BuildTime = 30.0
47863    VisionRange            = 400
47864    ShroudClearingRange = 450
47865    Prerequisites
47866      Object = AmericaNavalyard2
47867    End
47868    CommandSet             = AmericaVehicleBattlefurtifShip2
47869  
47870  
47871    ; *** AUDIO Parameters ***
47872    SoundAmbient           = BattleshipAmbientLoop
47873    VoiceSelect = OverlordTankVoiceSelect
47874    UnitSpecificSounds
47875      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
47876      TurretMoveLoop       = TurretMoveLoop
47877    End
47878  
47879    ; *** ENGINEERING Parameters ***
47880     RadarPriority = UNIT
47881    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
47882  
47883    Body = ActiveBody ModuleTag_02
47884      MaxHealth            = 500.0
47885      InitialHealth        = 500.0
47886    End
47887  
47888    Behavior = MaxHealthUpgrade ModuleTag_09
47889      TriggeredBy   = Upgrade_SubmarineArmor
47890      AddMaxHealth  = 1000.0
47891      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
47892    End
47893  
47894    Behavior = AutoHealBehavior ModuleTag_05
47895      HealingAmount = 7
47896      HealingDelay = 500 ; msec
47897      TriggeredBy = Upgrade_SubmarineRepair
47898    End
47899  
47900    Behavior = AIUpdateInterface ModuleTag_03
47901       AutoAcquireEnemiesWhenIdle = No
47902    End
47903  
47904    Locomotor = SET_NORMAL SubmarineLocomotor
47905  
47906    Behavior               = PhysicsBehavior ModuleTag_04
47907      Mass                 = 5000.0
47908    End
47909  
47910    Behavior = SlowDeathBehavior ModuleTag_16
47911      ProbabilityModifier = 25
47912      DestructionDelay = 200
47913      DestructionDelayVariance = 100
47914      OCL = FINAL    OCL_FirestormSmall
47915      FX  = FINAL    WeaponFX_NapalmMissileDetonation
47916    End
47917  
47918    Behavior = StealthUpdate ModuleTag_17
47919      StealthDelay                = 1000 ; msec
47920      StealthForbiddenConditions  = ATTACKING USING_ABILITY
47921      MoveThresholdSpeed          = 20
47922      InnateStealth               = No ;Requires upgrade first
47923      OrderIdleEnemiesToAttackMeUponReveal  = Yes
47924    End
47925  
47926    Behavior = StealthUpgrade ModuleTag_18
47927      TriggeredBy = Upgrade_SubmarineStealth
47928  
47929    End
47930   Behavior = MaxHealthUpgrade ModuleTag_09
47931      TriggeredBy   = Upgrade_SeaArmour
47932      AddMaxHealth  = 1000.0
47933      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
47934    End
47935  
47936    Behavior = AutoHealBehavior ModuleTag_05
47937      HealingAmount = 7
47938      HealingDelay = 500 ; msec
47939      TriggeredBy = Upgrade_SeaRepair
47940    End
47941     Behavior = StealthUpdate ModuleTag_07
47942      StealthDelay                = 2000 ; msec
47943      StealthForbiddenConditions  = FIRING_PRIMARY
47944      HintDetectableConditions    = IS_FIRING_WEAPON
47945      FriendlyOpacityMin          = 50.0%
47946      FriendlyOpacityMax          = 100.0%
47947      InnateStealth               = Yes
47948      OrderIdleEnemiesToAttackMeUponReveal  = Yes
47949    End
47950  
47951    Geometry               = BOX
47952    GeometryMajorRadius    = 200.0
47953    GeometryMinorRadius    = 20.0
47954    GeometryHeight         = 40
47955    GeometryIsSmall        = No
47956    Shadow                 = SHADOW_VOLUME
47957  
47958  End
47959  
47960  ;----------------------------------------------------------------------------------
47961  Object AmericaAircraftCarrier2
47962  
47963  
47964  
47965  
47966    SelectPortrait         = SACarrier_L
47967    ButtonImage            = SACarrier_L
47968  
47969    UpgradeCameo1 = Upgrade_SeaRepair
47970    UpgradeCameo2 = Upgrade_SeaArmour
47971    ;UpgradeCameo3 = NONE
47972    ;UpgradeCameo4 = NONE
47973    ;UpgradeCameo5 = NONE
47974  
47975  
47976  
47977    ; *** ART Parameters ***
47978    Draw                   = W3DTankDraw ModuleTag_01
47979      OkToChangeModelColor = Yes
47980      InitialRecoilSpeed   = 120
47981      MaxRecoilDistance    = 8
47982      RecoilSettleSpeed    = 6
47983  
47984      ConditionState       = NONE
47985         Model               = PSAirCarrier
47986      Animation           = PSAirCarrier.PSAirCarrier
47987        AnimationMode      = LOOP
47988        Turret            = TURRET01
47989        TurretPitch       = TURRETEL
47990        WeaponLaunchBone  = PRIMARY   WeaponA
47991        WeaponLaunchBone  = SECONDARY WeaponA
47992        WeaponFireFXBone  = PRIMARY   WeaponA
47993        WeaponFireFXBone  = SECONDARY WeaponA
47994      End
47995  
47996      ConditionState       = MOVING
47997         Model               = PSAirCarrier
47998      Animation           = PSAirCarrier.PSAirCarrier
47999        AnimationMode      = LOOP
48000  
48001      End
48002  
48003      ConditionState       = OVER_WATER
48004         Model               = PSAirCarrier
48005      Animation           = PSAirCarrier.PSAirCarrier
48006        AnimationMode      = LOOP
48007  
48008      End
48009  
48010      ConditionState       = MOVING OVER_WATER
48011     Model               = PSAirCarrier
48012      Animation           = PSAirCarrier.PSAirCarrier
48013        AnimationMode      = LOOP
48014  
48015        ParticleSysBone = Mist01 AmphibMistSide
48016        ParticleSysBone = Mist02 AmphibMistSide
48017        ParticleSysBone = Mist03 AmphibMist
48018        ParticleSysBone = Mist04 AmphibMistSide
48019        ParticleSysBone = Mist05 AmphibMistSide
48020        ParticleSysBone = Mist06 AmphibMist
48021        ParticleSysBone = Mist07 AmphibMistSide
48022        ParticleSysBone = Mist08 AmphibMistSide
48023        ParticleSysBone = Mist09 AmphibMistSide
48024        ParticleSysBone = Mist10 AmphibMist
48025        ParticleSysBone = Mist11 AmphibMistSide
48026        ParticleSysBone = Mist12 AmphibMistSide
48027        ParticleSysBone = TreadFX01 AmphibWave
48028        ParticleSysBone = TreadFX02 AmphibWave
48029        ParticleSysBone = TreadFX03 AmphibWave
48030        ParticleSysBone = TreadFX04 AmphibWave
48031        ParticleSysBone = TreadFX05 AmphibWave
48032      End
48033    End
48034  
48035    VoiceSelect = OverlordTankVoiceSelect
48036  
48037    ; ***DESIGN parameters ***
48038    DisplayName            = OBJECT:Carrier2
48039    Side                   = America
48040    EditorSorting          = VEHICLE
48041    TransportSlotCount     = 9                 ;how many "slots" we take in a transport (0 == not transportable)
48042   WeaponSet
48043      Conditions          = None 
48044      Weapon              = PRIMARY     PatriotMissileWeapon
48045      Weapon              = SECONDARY   PatriotMissileAssistWeapon
48046      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_AI FROM_SCRIPT
48047      AutoChooseSources   = SECONDARY   NONE
48048      PreferredAgainst    = PRIMARY     BALLISTIC_MISSILE AIRCRAFT
48049      PreferredAgainst    = SECONDARY   BALLISTIC_MISSILE AIRCRAFT
48050      ShareWeaponReloadTime = Yes
48051    End
48052  
48053  
48054    ArmorSet
48055      Conditions           = None
48056      ;Armor                = InvulnerableArmor
48057      Armor = TankDamage
48058      DamageFX = TankDamageFX
48059    End
48060    BuildCost = 1500
48061    BuildTime = 25 
48062    VisionRange            = 400
48063    ShroudClearingRange = 450
48064    Prerequisites
48065      Object = AmericaNavalyard2
48066    End
48067    CommandSet             = AmericaAircraftCarrierCommandSet2
48068  
48069    ; *** AUDIO Parameters ***
48070    SoundAmbient           = BattleshipAmbientLoop
48071    VoiceSelect = OverlordTankVoiceSelect
48072    UnitSpecificSounds
48073      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
48074      TurretMoveLoop       = TurretMoveLoop
48075    End
48076  
48077    ; *** ENGINEERING Parameters ***
48078    RadarPriority = UNIT
48079    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
48080  
48081    Body = ActiveBody ModuleTag_02
48082      MaxHealth            = 3000.0
48083      InitialHealth        = 3000.0
48084    End
48085  
48086    Behavior = MaxHealthUpgrade ModuleTag_09
48087      TriggeredBy   = Upgrade_SubmarineArmor
48088      AddMaxHealth  = 1000.0
48089      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
48090    End
48091  
48092    Behavior = AutoHealBehavior ModuleTag_05
48093      HealingAmount = 7
48094      HealingDelay = 500 ; msec
48095      TriggeredBy = Upgrade_SubmarineRepair
48096    End
48097  
48098    Behavior = AIUpdateInterface ModuleTag_03
48099      Turret
48100        TurretTurnRate = 100   ; turn rate, in degrees per sec
48101        ControlledWeaponSlots = PRIMARY
48102      End
48103      AutoAcquireEnemiesWhenIdle = Yes
48104  
48105    End
48106  
48107    Behavior            = SpawnBehavior ModuleTag_04
48108      SpawnNumber       =5
48109      SpawnReplaceDelay = 3000 ; 3 seconds
48110  
48111          SpawnTemplateName = AmericaAircraftCarrierJet
48112  
48113      ExitByBudding = Yes ;
48114  
48115      InitialBurst = 1 ; the first set of 5 will not delay
48116      OneShot     = No
48117      AggregateHealth = No
48118    End
48119  
48120    Behavior = QueueProductionExitUpdate ModuleTag_05
48121      UnitCreatePoint   = X:  -70.0  Y:  0.0   Z:30.0
48122      NaturalRallyPoint = X: 0.0  Y:  0.0   Z:60.0
48123      ExitDelay     = 5000 ; 5 sec
48124      InitialBurst = 1 ; the first set of 5 will not delay
48125    End
48126  
48127    Locomotor = SET_NORMAL BasicBoatLocomotor 
48128  
48129    Behavior               = PhysicsBehavior ModuleTag_06
48130      Mass                 = 5000.0
48131    End
48132  
48133    Behavior = SlowDeathBehavior ModuleTag_07
48134      ProbabilityModifier = 25
48135      DestructionDelay = 200
48136      DestructionDelayVariance = 100
48137      OCL = FINAL    OCL_FirestormSmall
48138      FX  = FINAL    WeaponFX_NapalmMissileDetonation
48139    End
48140     Behavior = MaxHealthUpgrade ModuleTag_09
48141      TriggeredBy   = Upgrade_SeaArmour
48142      AddMaxHealth  = 1000.0
48143      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
48144    End
48145  
48146    Behavior = AutoHealBehavior ModuleTag_05
48147      HealingAmount = 7
48148      HealingDelay = 500 ; msec
48149      TriggeredBy = Upgrade_SeaRepair
48150    End
48151    Geometry               = BOX
48152    Scale                  = 0.85
48153    GeometryMajorRadius    = 164.0
48154    GeometryMinorRadius    = 18.0
48155    GeometryHeight         = 54.8
48156    GeometryIsSmall        = No
48157    Shadow                 = SHADOW_VOLUME
48158  
48159  End
48160  ;---------------------------------------------------------------------------------------
48161  Object Americachipower
48162  
48163    ; *** ART Parameters ***
48164    SelectPortrait         = T37
48165    ButtonImage            = T37
48166    
48167  UpgradeCameo1 = Upgrade_SeaRepair
48168    UpgradeCameo2 = Upgrade_SeaArmour
48169    ;UpgradeCameo3 = NONE
48170    ;UpgradeCameo4 = NONE
48171    ;UpgradeCameo5 = NONE
48172    
48173    Draw = W3DTruckDraw ModuleTag_01
48174      
48175      OkToChangeModelColor = Yes
48176  
48177      ConditionState       = NONE
48178        Model               = centralelec
48179        Animation           = centralelec.centralelec
48180        AnimationMode      = LOOP
48181        ParticleSysBone = Smoke01 SteamVent
48182        ParticleSysBone = Smoke02 SteamVent
48183        ParticleSysBone = Smoke03 SteamVent
48184      End
48185  
48186      ConditionState       = OVER_WATER
48187          Model               = centralelec
48188          Animation           = centralelec.centralelec
48189          AnimationMode      = LOOP
48190   ParticleSysBone = Smoke01 SteamVent
48191        ParticleSysBone = Smoke02 SteamVent
48192        ParticleSysBone = Smoke03 SteamVent
48193      End
48194  
48195         ConditionState       = MOVING OVER_WATER
48196          Model               = centralelec
48197          Animation           = centralelec.centralelec
48198          AnimationMode       = LOOP
48199  
48200         ParticleSysBone = Smoke01 SteamVent
48201        ParticleSysBone = Smoke02 SteamVent
48202        ParticleSysBone = Smoke03 SteamVent
48203      End
48204    End
48205  
48206  
48207    ; ***DESIGN parameters ***
48208    DisplayName         = OBJECT:Americachipower
48209    Side             = America
48210    EditorSorting    =  VEHICLE
48211    Prerequisites
48212  ;    Object = AmericaCommandCenter
48213    End
48214    BuildCost        = 800
48215    BuildTime        = 1          ; in seconds
48216    EnergyProduction = 5
48217    EnergyBonus      = 5
48218    VisionRange      = 200.0           ; Shroud clearing distance
48219    ShroudClearingRange = 200
48220    ArmorSet
48221      Conditions     = None
48222      Armor          = StructureArmor
48223      DamageFX       = StructureDamageFXNoShake
48224    End
48225    MaxSimultaneousOfType  = 1
48226    CommandSet       = AmericaPowerPlantCommandSet
48227    ExperienceValue     = 100 100 100 100  ; Experience point value at each level
48228  
48229    ; *** AUDIO Parameters ***
48230    VoiceSelect = ColdFusionReactorSelect
48231    SoundDie              = BuildingDie
48232    SoundOnDamaged        = BuildingDamagedStateLight
48233    SoundOnReallyDamaged  = BuildingDestroy
48234  
48235    UnitSpecificSounds
48236      UnderConstruction     = UnderConstructionLoop
48237    End
48238  
48239    ; *** ENGINEERING Parameters ***
48240    RadarPriority   = UNIT
48241    KindOf          = PRELOAD STRUCTURE SELECTABLE FS_FACTORY VEHICLE IMMUNE_TO_CAPTURE COMMANDCENTER SCORE MP_COUNT_FOR_VICTORY
48242    Body            = StructureBody ModuleTag_06
48243      MaxHealth       = 800.0
48244      InitialHealth   = 800.0
48245    End
48246     
48247   Behavior = MaxHealthUpgrade ModuleTag_09
48248      TriggeredBy   = Upgrade_SeaArmour
48249      AddMaxHealth  = 1000.0
48250      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
48251    End
48252  ;--------------------------permet le deplassement du batiment-------
48253   Behavior = AIUpdateInterface ModuleTag_05
48254      AutoAcquireEnemiesWhenIdle = Yes
48255    End
48256  
48257  Locomotor = SET_NORMAL BasicNONELocomotor
48258  
48259    Behavior               = PhysicsBehavior ModuleTag_04
48260      Mass                 = 5000.0
48261    End
48262   Behavior = SlowDeathBehavior ModuleTag_16
48263      ProbabilityModifier = 25
48264      DestructionDelay = 200
48265      DestructionDelayVariance = 100
48266      OCL = FINAL    OCL_FirestormSmall
48267      FX  = FINAL    WeaponFX_NapalmMissileDetonation
48268    End
48269  ;--------------------------permet le deplassement du batiment-------
48270  
48271  
48272    Behavior = AutoHealBehavior ModuleTag_05
48273      HealingAmount = 7
48274      HealingDelay = 500 ; msec
48275      TriggeredBy = Upgrade_SeaRepair
48276    End
48277    Behavior = PowerPlantUpgrade ModuleTag_07
48278      TriggeredBy = Upgrade_AmericaAdvancedControlRods
48279    End
48280  
48281    
48282    Behavior = PowerPlantUpdate ModuleTag_09
48283      RodsExtendTime = 600
48284    End
48285  
48286  
48287    Behavior = DestroyDie ModuleTag_10
48288      ;nothing
48289    End
48290    Behavior             = CreateObjectDie ModuleTag_11
48291      CreationList  = OCL_ABPowerPlantExplode
48292    End
48293  
48294    Behavior        = FXListDie ModuleTag_13
48295      DeathFX       = FX_StructureSmallDeath
48296    End
48297  
48298    Behavior = ProductionUpdate ModuleTag_14
48299      ; nothing
48300    End
48301  
48302    Behavior = FlammableUpdate ModuleTag_16
48303      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
48304      AflameDamageAmount = 5       ; taking this much damage...
48305      AflameDamageDelay = 500       ; this often.
48306    End
48307  
48308    Behavior = TransitionDamageFX ModuleTag_17
48309      ;-------------DESIGNED FOR SMALL SIZED FACTION BUILDING TRANSITIONS-------------------
48310      DamagedParticleSystem1       = Bone:None RandomBone:No PSys:StructureTransitionSmallSmoke
48311      ;---------------------------------------------------------------------------------------
48312      ReallyDamagedParticleSystem1 = Bone:None RandomBone:No PSys:StructureTransitionSmallSmoke
48313      ReallyDamagedParticleSystem2 = Bone:None RandomBone:No PSys:StructureTransitionSmallExplosion
48314      ReallyDamagedParticleSystem3 = Bone:None RandomBone:No PSys:StructureTransitionSmallShockwave
48315    End
48316  
48317    
48318  
48319   Geometry               = BOX
48320    GeometryMajorRadius    = 200.0
48321    GeometryMinorRadius    = 20.0
48322    GeometryHeight         = 40     
48323    GeometryIsSmall        = No 
48324    Shadow                 = SHADOW_VOLUME   
48325  
48326  
48327  End
48328  ;---------------------------------------------------------------------------------------
48329  Object Americachipower2
48330  
48331    ; *** ART Parameters ***
48332    SelectPortrait         = T39
48333    ButtonImage            = T39
48334    
48335    UpgradeCameo1 = Upgrade_SeaRepair
48336    UpgradeCameo2 = Upgrade_SeaArmour
48337    ;UpgradeCameo3 = NONE
48338    ;UpgradeCameo4 = NONE
48339    ;UpgradeCameo5 = NONE
48340    
48341    Draw = W3DTruckDraw ModuleTag_01
48342        
48343      OkToChangeModelColor = Yes
48344  
48345      ConditionState       = NONE
48346        Model              = centralelec2
48347        Animation          = centralelec2.centralelec2
48348        AnimationMode      = LOOP
48349        ParticleSysBone = Smoke01 SteamVent
48350        ParticleSysBone = Smoke02 SteamVent
48351        ParticleSysBone = Smoke03 SteamVent
48352        ParticleSysBone = Smoke04 SteamVent
48353      End
48354  
48355      ConditionState       = OVER_WATER
48356        Model              = centralelec2
48357      Animation            = centralelec2.centralelec2
48358        AnimationMode      = LOOP
48359  ParticleSysBone = Smoke01 SteamVent
48360        ParticleSysBone = Smoke02 SteamVent
48361        ParticleSysBone = Smoke03 SteamVent
48362        ParticleSysBone = Smoke04 SteamVent
48363        
48364      End
48365  
48366      ConditionState       = MOVING OVER_WATER
48367        Model               = centralelec2
48368        Animation           = centralelec2.centralelec2
48369        AnimationMode      = LOOP
48370  ParticleSysBone = Smoke01 SteamVent
48371        ParticleSysBone = Smoke02 SteamVent
48372        ParticleSysBone = Smoke03 SteamVent
48373        ParticleSysBone = Smoke04 SteamVent
48374       
48375      End
48376    End
48377  
48378  
48379    ; ***DESIGN parameters ***
48380    DisplayName         = OBJECT:Americachipower2
48381    Side             = America
48382    EditorSorting    =  STRUCTURE
48383    Prerequisites
48384      Object = Americachipower
48385    End
48386    BuildCost        = 800
48387    BuildTime        = 10.0           ; in seconds
48388    EnergyProduction = 15
48389    EnergyBonus      = 15
48390    VisionRange      = 200.0           ; Shroud clearing distance
48391    ShroudClearingRange = 200
48392    ArmorSet
48393      Conditions     = None
48394      Armor          = StructureArmor
48395      DamageFX       = StructureDamageFXNoShake
48396    End
48397    MaxSimultaneousOfType  = 1
48398    CommandSet       = AmericaPowerPlantCommandSet
48399    ExperienceValue     = 100 100 100 100  ; Experience point value at each level
48400  
48401    ; *** AUDIO Parameters ***
48402    VoiceSelect = ColdFusionReactorSelect
48403    SoundDie              = BuildingDie
48404    SoundOnDamaged        = BuildingDamagedStateLight
48405    SoundOnReallyDamaged  = BuildingDestroy
48406  
48407    UnitSpecificSounds
48408      UnderConstruction     = UnderConstructionLoop
48409    End
48410  
48411    ; *** ENGINEERING Parameters ***
48412    RadarPriority   = UNIT
48413    KindOf          = PRELOAD STRUCTURE SELECTABLE FS_FACTORY AUTO_RALLYPOINT VEHICLE IMMUNE_TO_CAPTURE COMMANDCENTER SCORE MP_COUNT_FOR_VICTORY
48414    Body            = StructureBody ModuleTag_06
48415      MaxHealth       = 800.0
48416      InitialHealth   = 800.0
48417    End
48418  
48419    Behavior = PowerPlantUpgrade ModuleTag_07
48420      TriggeredBy = Upgrade_AmericaAdvancedControlRods
48421    End
48422  
48423    Behavior = BaseRegenerateUpdate ModuleTag_08
48424      ;No data
48425    End
48426    Behavior = PowerPlantUpdate ModuleTag_09
48427      RodsExtendTime = 600
48428    End
48429  
48430  
48431    Behavior = DestroyDie ModuleTag_10
48432      ;nothing
48433    End
48434    Behavior             = CreateObjectDie ModuleTag_11
48435      CreationList  = OCL_ABPowerPlantExplode
48436    End
48437    Behavior             = CreateObjectDie ModuleTag_12
48438      CreationList  = OCL_AmericanRangerDebris02
48439      ExemptStatus  = UNDER_CONSTRUCTION
48440    End
48441    Behavior        = FXListDie ModuleTag_13
48442      DeathFX       = FX_StructureSmallDeath
48443    End
48444  
48445    Behavior = ProductionUpdate ModuleTag_14
48446      ; nothing
48447    End
48448  
48449    Behavior = FlammableUpdate ModuleTag_16
48450      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
48451      AflameDamageAmount = 5       ; taking this much damage...
48452      AflameDamageDelay = 500       ; this often.
48453    End
48454  
48455    Behavior = TransitionDamageFX ModuleTag_17
48456      ;-------------DESIGNED FOR SMALL SIZED FACTION BUILDING TRANSITIONS-------------------
48457      DamagedParticleSystem1       = Bone:None RandomBone:No PSys:StructureTransitionSmallSmoke
48458      ;---------------------------------------------------------------------------------------
48459      ReallyDamagedParticleSystem1 = Bone:None RandomBone:No PSys:StructureTransitionSmallSmoke
48460      ReallyDamagedParticleSystem2 = Bone:None RandomBone:No PSys:StructureTransitionSmallExplosion
48461      ReallyDamagedParticleSystem3 = Bone:None RandomBone:No PSys:StructureTransitionSmallShockwave
48462    End
48463  ;--------------------------permet le deplassement du batiment-------
48464   Behavior = AIUpdateInterface ModuleTag_05
48465      AutoAcquireEnemiesWhenIdle = Yes
48466    End
48467  
48468  Locomotor = SET_NORMAL BasicNONELocomotor
48469  
48470    Behavior               = PhysicsBehavior ModuleTag_04
48471      Mass                 = 5000.0
48472    End
48473   Behavior = SlowDeathBehavior ModuleTag_16
48474      ProbabilityModifier = 25
48475      DestructionDelay = 200
48476      DestructionDelayVariance = 100
48477      OCL = FINAL    OCL_FirestormSmall
48478      FX  = FINAL    WeaponFX_NapalmMissileDetonation
48479    End
48480  ;--------------------------permet le deplassement du batiment-------
48481    Geometry            = BOX
48482    GeometryMajorRadius = 22.0
48483    GeometryMinorRadius = 30.0
48484    GeometryHeight      = 46.0
48485    GeometryIsSmall     = No
48486    Shadow          = SHADOW_VOLUME
48487    BuildCompletion = PLACED_BY_PLAYER
48488  
48489  End
48490  ;----------------------------------------------------------------
48491  ;------------------------------------------------------------------------------------------------
48492  Object Americachipheliport
48493  
48494    ; *** ART Parameters ***
48495    SelectPortrait         = T38
48496    ButtonImage            = T38
48497    
48498    UpgradeCameo1 = Upgrade_SeaRepair
48499    UpgradeCameo2 = Upgrade_SeaArmour
48500    ;UpgradeCameo3 = NONE
48501    ;UpgradeCameo4 = NONE
48502    ;UpgradeCameo5 = NONE
48503    
48504    Draw = W3DTruckDraw ModuleTag_01
48505      ExtraPublicBone = HeliPark01
48506      OkToChangeModelColor = Yes
48507  
48508      ConditionState       = NONE
48509        Model              = heliport
48510        Animation          = heliport.heliport
48511        AnimationMode      = LOOP
48512        
48513      
48514      End
48515  
48516      ConditionState       = OVER_WATER
48517        Model              = heliport
48518        Animation          = heliport.heliport
48519        AnimationMode      = LOOP
48520  
48521      End
48522  
48523      ConditionState       = MOVING OVER_WATER
48524     Model              = heliport
48525        Animation          = heliport.heliport
48526        AnimationMode      = LOOP
48527  
48528      
48529      End
48530    End
48531  
48532  
48533    ; ***DESIGN parameters ***
48534    DisplayName         = OBJECT:Americachipheliport
48535   Side             = America
48536    EditorSorting    =  VEHICLE
48537    Prerequisites
48538      Object = Americachipower
48539    End
48540    BuildCost           = 1000
48541    BuildTime           = 30.0           ; in seconds
48542    EnergyProduction    = -1
48543    MaxSimultaneousOfType  = 1
48544    CommandSet          = AmericachipheliportCommandSet
48545    VisionRange         = 200.0           ; Shroud clearing distance
48546    ShroudClearingRange = 200
48547    ArmorSet
48548      Conditions        = None
48549      Armor             = StructureArmor
48550      DamageFX          = StructureDamageFXNoShake
48551    End
48552    ExperienceValue     = 150 150 150 150  ; Experience point value at each level
48553  
48554    ; *** AUDIO Parameters ***
48555    VoiceSelect         = AirfieldUSASelect
48556    SoundDie              = BuildingDie
48557    SoundOnDamaged        = BuildingDamagedStateLight
48558    SoundOnReallyDamaged  = BuildingDestroy
48559  
48560    UnitSpecificSounds
48561      UnderConstruction     = UnderConstructionLoop
48562    End
48563  
48564    ; *** ENGINEERING Parameters ***
48565    RadarPriority   = UNIT
48566   KindOf          = PRELOAD STRUCTURE SELECTABLE FS_FACTORY AUTO_RALLYPOINT VEHICLE IMMUNE_TO_CAPTURE COMMANDCENTER SCORE MP_COUNT_FOR_VICTORY
48567  
48568  Body                = StructureBody ModuleTag_10
48569      MaxHealth         = 1500.0
48570      InitialHealth     = 1500.0
48571    End
48572    
48573    Behavior = ParkingPlaceBehavior ModuleTag_11
48574      HealAmountPerSecond   = 10
48575      NumRows               = 2
48576  
48577      NumCols               = 2
48578      HasRunways            = Yes
48579      ApproachHeight        = 50
48580    End
48581  ;--------------------------permet le deplassement du batiment-------
48582   Behavior = AIUpdateInterface ModuleTag_05
48583      AutoAcquireEnemiesWhenIdle = Yes
48584    End
48585  
48586  Locomotor = SET_NORMAL BasicNONELocomotor
48587  
48588    Behavior               = PhysicsBehavior ModuleTag_04
48589      Mass                 = 5000.0
48590    End
48591   Behavior = SlowDeathBehavior ModuleTag_16
48592      ProbabilityModifier = 25
48593      DestructionDelay = 200
48594      DestructionDelayVariance = 100
48595      OCL = FINAL    OCL_FirestormSmall
48596      FX  = FINAL    WeaponFX_NapalmMissileDetonation
48597    End
48598  ;--------------------------permet le deplassement du batiment-------
48599    Behavior = ProductionUpdate ModuleTag_12
48600      NumDoorAnimations            = 4
48601      DoorOpeningTime              = 2000  ;in mSeconds
48602      DoorWaitOpenTime             = 3000  ;in mSeconds
48603      DoorCloseTime                = 2000  ;in mSeconds
48604      ConstructionCompleteDuration = 1000  ;in mSeconds
48605    End
48606    Behavior = BaseRegenerateUpdate ModuleTag_13
48607      ;No data
48608    End 
48609  
48610    Behavior = DestroyDie ModuleTag_14
48611      ;nothing
48612    End
48613    Behavior             = CreateObjectDie ModuleTag_15
48614      CreationList  = OCL_ABPowerPlantExplode
48615    End
48616    Behavior             = CreateObjectDie ModuleTag_16
48617      CreationList  = OCL_AmericanRangerDebris02
48618      ExemptStatus  = UNDER_CONSTRUCTION
48619    End
48620    Behavior             = FXListDie ModuleTag_17
48621      DeathFX       = FX_StructureMediumDeath
48622    End
48623  
48624    Behavior = FlammableUpdate ModuleTag_19
48625      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
48626      AflameDamageAmount = 5       ; taking this much damage...
48627      AflameDamageDelay = 500       ; this often.
48628    End
48629  
48630    Behavior = TransitionDamageFX ModuleTag_31
48631      ;-------------DESIGNED FOR MEDIUM SIZED FACTION BUILDING TRANSITIONS-------------------
48632      DamagedParticleSystem1       = Bone:None RandomBone:No PSys:StructureTransitionMediumSmoke
48633      ;---------------------------------------------------------------------------------------
48634      ReallyDamagedParticleSystem1 = Bone:None RandomBone:No PSys:StructureTransitionMediumSmoke
48635      ReallyDamagedParticleSystem2 = Bone:None RandomBone:No PSys:StructureTransitionMediumExplosion
48636      ReallyDamagedParticleSystem3 = Bone:None RandomBone:No PSys:StructureTransitionMediumShockwave
48637    End
48638  
48639    Geometry               = BOX
48640    GeometryMajorRadius    = 200.0
48641    GeometryMinorRadius    = 20.0
48642    GeometryHeight         = 40     
48643    GeometryIsSmall        = No 
48644    Shadow                 = SHADOW_VOLUME   
48645  End
48646  ;------------------------------------------------------------------------------
48647  Object Americachipwarfactory
48648  
48649  
48650  
48651  
48652    SelectPortrait         = T41
48653    ButtonImage            = T41
48654  
48655    UpgradeCameo1 = Upgrade_SeaRepair
48656    UpgradeCameo2 = Upgrade_SeaArmour
48657    ;UpgradeCameo3 = NONE
48658    ;UpgradeCameo4 = NONE
48659    ;UpgradeCameo5 = NONE
48660  
48661  
48662  
48663    ; *** ART Parameters ***
48664    Draw                   = W3DTankDraw ModuleTag_01
48665  
48666       ExtraPublicBone = EXIT01
48667      OkToChangeModelColor = Yes
48668  
48669  
48670      ConditionState       = NONE
48671         Model               = chipwarfactory
48672      Animation           = chipwarfactory.chipwarfactory
48673        AnimationMode      = LOOP
48674        
48675      End
48676  
48677      ConditionState       = MOVING
48678         Model               = chipwarfactory
48679      Animation           = chipwarfactory.chipwarfactory
48680        AnimationMode      = LOOP
48681  
48682      End
48683  
48684      ConditionState       = OVER_WATER
48685         Model               = chipwarfactory
48686      Animation           = chipwarfactory.chipwarfactory
48687        AnimationMode      = LOOP
48688  
48689      End
48690  
48691      ConditionState       = MOVING OVER_WATER
48692     Model               = chipwarfactory
48693      Animation           = chipwarfactory.chipwarfactory
48694        AnimationMode      = LOOP
48695  
48696   
48697      End
48698    End
48699  
48700    VoiceSelect = OverlordTankVoiceSelect
48701  
48702    ; ***DESIGN parameters ***
48703    DisplayName            = OBJECT:chipwarfactory
48704   Side             = America
48705    EditorSorting    =  VEHICLE
48706    Prerequisites
48707    Object = Americachipower
48708    End
48709    BuildCost        = 2000
48710    BuildTime        = 15.0           ; in seconds
48711  
48712    EnergyProduction = -4
48713   MaxSimultaneousOfType  = 1
48714    CommandSet       = AmericachipwarfactoryCommandSet
48715    VisionRange     = 200.0           ; Shroud clearing distance
48716    ShroudClearingRange = 200
48717    ArmorSet
48718      Conditions      = None
48719      Armor           = StructureArmor
48720      DamageFX        = StructureDamageFXNoShake
48721    End
48722    ExperienceValue     = 200 200 200 200  ; Experience point value at each level
48723  
48724    ; *** AUDIO Parameters ***
48725    VoiceSelect = WarFactoryUSASelect
48726    SoundDie              = BuildingDie
48727    SoundOnDamaged        = BuildingDamagedStateLight
48728    SoundOnReallyDamaged  = BuildingDestroy
48729  
48730    UnitSpecificSounds
48731      UnderConstruction     = UnderConstructionLoop
48732    End
48733  
48734    ; *** ENGINEERING Parameters ***
48735    RadarPriority   = UNIT
48736    KindOf          = PRELOAD STRUCTURE SELECTABLE FS_FACTORY AUTO_RALLYPOINT VEHICLE IMMUNE_TO_CAPTURE COMMANDCENTER SCORE MP_COUNT_FOR_VICTORY
48737  
48738  ;--------------------------permet le deplassement du batiment-------
48739   Behavior = AIUpdateInterface ModuleTag_05
48740      AutoAcquireEnemiesWhenIdle = Yes
48741    End
48742  
48743  Locomotor = SET_NORMAL BasicNONELocomotor
48744  
48745    Behavior               = PhysicsBehavior ModuleTag_04
48746      Mass                 = 5000.0
48747    End
48748   Behavior = SlowDeathBehavior ModuleTag_16
48749      ProbabilityModifier = 25
48750      DestructionDelay = 200
48751      DestructionDelayVariance = 100
48752      OCL = FINAL    OCL_FirestormSmall
48753      FX  = FINAL    WeaponFX_NapalmMissileDetonation
48754    End
48755  ;--------------------------permet le deplassement du batiment-------
48756    Body            = StructureBody ModuleTag_09
48757      MaxHealth       = 2000.0
48758      InitialHealth   = 2000.0
48759    End
48760    Behavior = ProductionUpdate ModuleTag_10
48761      NumDoorAnimations            = 1
48762      DoorOpeningTime              = 3250  ;in mSeconds
48763      DoorWaitOpenTime             = 3000  ;in mSeconds
48764      DoorCloseTime                = 4000  ;in mSeconds
48765      ConstructionCompleteDuration = 1500  ;in mSeconds
48766    End
48767    Behavior = DefaultProductionExitUpdate ModuleTag_13
48768      UnitCreatePoint   = X:100.0  Y:  35.0   Z:0.0
48769      NaturalRallyPoint = X:350.0  Y:  35.0   Z:0.0;NaturalRallyPointX must always match GeometryMajorRadius! -ML
48770    End
48771    Behavior = RepairDockUpdate ModuleTag_12
48772      TimeForFullHeal   = 5000   ;(in milliseconds)     
48773      NumberApproachPositions = 5
48774    End
48775    Behavior = BaseRegenerateUpdate ModuleTag_13
48776      ;No data
48777    End 
48778    
48779  ;---- Lazy cheezy modules make the buildings cry.  
48780  ;  Behavior = SlowDeathBehavior ModuleTag_14
48781  ;    DestructionDelay = 500
48782  ;    FX             = FINAL   FX_StructureMediumDeath
48783  ;    OCL            = FINAL   OCL_AmericaWarFactoryDebris
48784  ;  End
48785  
48786    Behavior = TransitionDamageFX ModuleTag_15
48787      ;-------------DESIGNED FOR MEDIUM SIZED FACTION BUILDING TRANSITIONS-------------------
48788      DamagedParticleSystem1       = Bone:None RandomBone:No PSys:StructureTransitionMediumSmoke
48789      ;---------------------------------------------------------------------------------------
48790      ReallyDamagedParticleSystem1 = Bone:None RandomBone:No PSys:StructureTransitionMediumSmoke
48791      ReallyDamagedParticleSystem2 = Bone:None RandomBone:No PSys:StructureTransitionMediumExplosion
48792      ReallyDamagedParticleSystem3 = Bone:None RandomBone:No PSys:StructureTransitionMediumShockwave
48793    End
48794  
48795    Behavior             = CreateObjectDie ModuleTag_16
48796      CreationList  = OCL_AmericanRangerDebris05
48797      ExemptStatus  = UNDER_CONSTRUCTION
48798    End
48799  
48800    Behavior = FlammableUpdate ModuleTag_18
48801      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
48802      AflameDamageAmount = 5       ; taking this much damage...
48803      AflameDamageDelay = 500       ; this often.
48804    End
48805    
48806    Behavior             = CreateObjectDie ModuleTag_20
48807      CreationList  = OCL_LargeStructureDebris
48808    End
48809    
48810    Behavior             = FXListDie ModuleTag_21
48811      DeathFX       = FX_StructureMediumDeath
48812    End
48813    
48814    Behavior             = DestroyDie ModuleTag_22
48815      ;nothing
48816    End
48817  
48818     Geometry            = BOX
48819    Scale = 0.95                            ;Scaling
48820    GeometryMajorRadius = 3.0
48821    GeometryHeight = 12.0    
48822    GeometryIsSmall = Yes
48823    Shadow = SHADOW_VOLUME
48824  
48825  End
48826  ;------------------------------------------------------------------------------
48827  Object Americachipdozer
48828  
48829  
48830  
48831  
48832    SelectPortrait         = T42
48833    ButtonImage            = T42
48834  
48835    UpgradeCameo1 = Upgrade_SeaRepair
48836    UpgradeCameo2 = Upgrade_SeaArmour
48837    ;UpgradeCameo3 = NONE
48838    ;UpgradeCameo4 = NONE
48839    ;UpgradeCameo5 = NONE
48840  
48841  
48842  
48843    ; *** ART Parameters ***
48844    Draw                   = W3DTankDraw ModuleTag_01
48845  
48846       ExtraPublicBone = EXIT01
48847      OkToChangeModelColor = Yes
48848  
48849  
48850      ConditionState       = NONE
48851         Model               = chipdozer
48852      Animation           = chipdozer.chipdozer
48853        AnimationMode      = LOOP
48854        
48855      End
48856  
48857      ConditionState       = MOVING
48858        Model               = chipdozer
48859      Animation           = chipdozer.chipdozer
48860        AnimationMode      = LOOP
48861  
48862      End
48863  
48864      ConditionState       = OVER_WATER
48865         Model               = chipdozer
48866      Animation           = chipdozer.chipdozer
48867        AnimationMode      = LOOP
48868  
48869      End
48870  
48871      ConditionState       = MOVING OVER_WATER
48872     Model               = chipdozer
48873      Animation           = chipdozer.chipdozer
48874        AnimationMode      = LOOP
48875  
48876        ParticleSysBone = Mist01 AmphibMistSide
48877        ParticleSysBone = Mist02 AmphibMistSide
48878        ParticleSysBone = Mist03 AmphibMist
48879        ParticleSysBone = Mist04 AmphibMistSide
48880        ParticleSysBone = Mist05 AmphibMistSide
48881        ParticleSysBone = Mist06 AmphibMist
48882        ParticleSysBone = Mist07 AmphibMistSide
48883        ParticleSysBone = Mist08 AmphibMistSide
48884        ParticleSysBone = Mist09 AmphibMistSide
48885        ParticleSysBone = Mist10 AmphibMist
48886        ParticleSysBone = Mist11 AmphibMistSide
48887        ParticleSysBone = Mist12 AmphibMistSide
48888        ParticleSysBone = TreadFX01 AmphibWave
48889        ParticleSysBone = TreadFX02 AmphibWave
48890        ParticleSysBone = TreadFX03 AmphibWave
48891        ParticleSysBone = TreadFX04 AmphibWave
48892        ParticleSysBone = TreadFX05 AmphibWave
48893      End
48894    End
48895    
48896  ; ***DESIGN parameters ***
48897    DisplayName            = OBJECT:chipdozer
48898   Side             = America
48899    EditorSorting    =  VEHICLE
48900    Prerequisites
48901    ;Object = Americachipower
48902    End
48903    BuildCost        = 2000
48904    BuildTime        = 15.0           ; in seconds
48905  
48906    EnergyProduction = -4
48907   MaxSimultaneousOfType  = 1
48908    CommandSet       = AmericachipdozerCommandSet
48909    VisionRange     = 200.0           ; Shroud clearing distance
48910    ShroudClearingRange = 200
48911    ArmorSet
48912      Conditions      = None
48913      Armor           = StructureArmor
48914      DamageFX        = StructureDamageFXNoShake
48915    End
48916    ExperienceValue     = 200 200 200 200  ; Experience point value at each level
48917  
48918    ; *** AUDIO Parameters ***
48919    VoiceSelect = WarFactoryUSASelect
48920    SoundDie              = BuildingDie
48921    SoundOnDamaged        = BuildingDamagedStateLight
48922    SoundOnReallyDamaged  = BuildingDestroy
48923  
48924    UnitSpecificSounds
48925      UnderConstruction     = UnderConstructionLoop
48926    End
48927  
48928    ; *** ENGINEERING Parameters ***
48929    RadarPriority   = UNIT
48930    KindOf          = PRELOAD  SELECTABLE FS_FACTORY  VEHICLE IMMUNE_TO_CAPTURE COMMANDCENTER SCORE MP_COUNT_FOR_VICTORY
48931  
48932  ;--------------------------permet le deplassement du batiment-------
48933   Behavior = AIUpdateInterface ModuleTag_05
48934      AutoAcquireEnemiesWhenIdle = Yes
48935    End
48936  
48937  Locomotor = SET_NORMAL BasicBoatLocomotor
48938  
48939    Behavior               = PhysicsBehavior ModuleTag_04
48940      Mass                 = 5000.0
48941    End
48942   Behavior = SlowDeathBehavior ModuleTag_16
48943      ProbabilityModifier = 25
48944      DestructionDelay = 200
48945      DestructionDelayVariance = 100
48946      OCL = FINAL    OCL_FirestormSmall
48947      FX  = FINAL    WeaponFX_NapalmMissileDetonation
48948    End
48949  ;--------------------------permet le deplassement du batiment-------
48950    Body            = StructureBody ModuleTag_09
48951      MaxHealth       = 2000.0
48952      InitialHealth   = 2000.0
48953    End
48954    Behavior = ProductionUpdate ModuleTag_10
48955      NumDoorAnimations            = 1
48956      DoorOpeningTime              = 3250  ;in mSeconds
48957      DoorWaitOpenTime             = 3000  ;in mSeconds
48958      DoorCloseTime                = 4000  ;in mSeconds
48959      ConstructionCompleteDuration = 1500  ;in mSeconds
48960    End
48961    Behavior = DefaultProductionExitUpdate ModuleTag_13
48962      UnitCreatePoint   = X:100.0  Y:  35.0   Z:0.0
48963      NaturalRallyPoint = X:350.0  Y:  35.0   Z:0.0;NaturalRallyPointX must always match GeometryMajorRadius! -ML
48964    End
48965    Behavior = RepairDockUpdate ModuleTag_12
48966      TimeForFullHeal   = 5000   ;(in milliseconds)     
48967      NumberApproachPositions = 5
48968    End
48969    Behavior = BaseRegenerateUpdate ModuleTag_13
48970      ;No data
48971    End 
48972    
48973  ;---- Lazy cheezy modules make the buildings cry.  
48974  ;  Behavior = SlowDeathBehavior ModuleTag_14
48975  ;    DestructionDelay = 500
48976  ;    FX             = FINAL   FX_StructureMediumDeath
48977  ;    OCL            = FINAL   OCL_AmericaWarFactoryDebris
48978  ;  End
48979  
48980    Behavior = TransitionDamageFX ModuleTag_15
48981      ;-------------DESIGNED FOR MEDIUM SIZED FACTION BUILDING TRANSITIONS-------------------
48982      DamagedParticleSystem1       = Bone:None RandomBone:No PSys:StructureTransitionMediumSmoke
48983      ;---------------------------------------------------------------------------------------
48984      ReallyDamagedParticleSystem1 = Bone:None RandomBone:No PSys:StructureTransitionMediumSmoke
48985      ReallyDamagedParticleSystem2 = Bone:None RandomBone:No PSys:StructureTransitionMediumExplosion
48986      ReallyDamagedParticleSystem3 = Bone:None RandomBone:No PSys:StructureTransitionMediumShockwave
48987    End
48988  
48989    Behavior             = CreateObjectDie ModuleTag_16
48990      CreationList  = OCL_AmericanRangerDebris05
48991      ExemptStatus  = UNDER_CONSTRUCTION
48992    End
48993  
48994    Behavior = FlammableUpdate ModuleTag_18
48995      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
48996      AflameDamageAmount = 5       ; taking this much damage...
48997      AflameDamageDelay = 500       ; this often.
48998    End
48999    
49000    Behavior             = CreateObjectDie ModuleTag_20
49001      CreationList  = OCL_LargeStructureDebris
49002    End
49003    
49004    Behavior             = FXListDie ModuleTag_21
49005      DeathFX       = FX_StructureMediumDeath
49006    End
49007    
49008    Behavior             = DestroyDie ModuleTag_22
49009      ;nothing
49010    End
49011  
49012     Geometry            = BOX
49013    Scale = 0.95                            ;Scaling
49014    GeometryMajorRadius = 3.0
49015    GeometryHeight = 12.0    
49016    GeometryIsSmall = Yes
49017    Shadow = SHADOW_VOLUME
49018  
49019  End
49020   ;------------------------------------------------------------------
49021  
49022  Object AmericaNavalyard2
49023  
49024    ; *** ART Parameters ***
49025    SelectPortrait = T40
49026    ButtonImage            = T40
49027    
49028    ; ------------ the main factory itself -----------------
49029    Draw = W3DModelDraw ModuleTag_01
49030      OkToChangeModelColor = Yes  
49031      ; day **************************************************
49032      DefaultConditionState
49033       Model           = Navalyard2
49034        Animation       = Navalyard2.Navalyard2
49035        AnimationMode   = LOOP
49036        ParticleSysBone = Smoke01 SteamVent
49037        ParticleSysBone = Smoke02 SteamVent     
49038      End 
49039  
49040       ConditionState = OVER_WATER
49041        Model           = Navalyard2
49042        Animation       = Navalyard2.Navalyard2
49043        AnimationMode   = LOOP
49044        ParticleSysBone = Smoke01 SteamVent
49045        ParticleSysBone = Smoke02 SteamVent     
49046      End 
49047  
49048     
49049      ConditionState = DAMAGED
49050        Model           = Navalyard2
49051        Animation       = Navalyard2.Navalyard2
49052        AnimationMode   = LOOP
49053      End
49054      ConditionState = REALLYDAMAGED RUBBLE
49055        Model           = Navalyard2
49056        Animation       = Navalyard2.Navalyard2
49057        AnimationMode   = LOOP 
49058      End
49059  
49060  
49061      
49062    End
49063  
49064  
49065  
49066    PlacementViewAngle = -135
49067  
49068    ; ***DESIGN parameters ***
49069    DisplayName      = OBJECT:Navalyard2
49070    Side             = America
49071    Side                  = America
49072    EditorSorting         = VEHICLE
49073    BuildCost             = 2000
49074    BuildTime             = 45.0           ; in seconds
49075    EnergyProduction      = 0   ;Command Center should be free
49076    CommandSet            = AmericaNavalyard2CommandSet
49077    VisionRange           = 300.0           ; Shroud clearing distance
49078    ShroudClearingRange = 300
49079    ArmorSet
49080      Conditions          = None
49081      Armor               = StructureArmorTough
49082      DamageFX            = StructureDamageFXNoShake
49083    End
49084    ExperienceValue     = 200 200 200 200  ; Experience point value at each level
49085  
49086    ; *** AUDIO Parameters ***
49087    VoiceSelect           = CommandCenterUSASelect
49088    SoundDie              = BuildingDie
49089    SoundOnDamaged        = BuildingDamagedStateLight
49090    SoundOnReallyDamaged  = BuildingDestroy
49091  
49092    UnitSpecificSounds
49093      UnderConstruction     = UnderConstructionLoop
49094    End
49095  
49096    ; *** ENGINEERING Parameters ***
49097     RadarPriority   = UNIT
49098    KindOf          = PRELOAD STRUCTURE SELECTABLE FS_FACTORY AUTO_RALLYPOINT VEHICLE IMMUNE_TO_CAPTURE COMMANDCENTER SCORE MP_COUNT_FOR_VICTORY
49099    Body            = StructureBody ModuleTag_06
49100      MaxHealth       = 5000.0
49101      InitialHealth   = 5000.0
49102    End
49103   Behavior              = AutoDepositUpdate ModuleTag_04
49104      DepositTiming       = 12000  ; in milliseconds
49105      DepositAmount       = 100    ; cash amount to deposit every Deposit Timings
49106    End
49107  ;--------------------------permet le deplassement du batiment-------
49108   Behavior = AIUpdateInterface ModuleTag_05
49109      AutoAcquireEnemiesWhenIdle = Yes
49110    End
49111  
49112  Locomotor = SET_NORMAL BasicNONELocomotor
49113  
49114    Behavior               = PhysicsBehavior ModuleTag_04
49115      Mass                 = 5000.0
49116    End
49117   Behavior = SlowDeathBehavior ModuleTag_16
49118      ProbabilityModifier = 25
49119      DestructionDelay = 200
49120      DestructionDelayVariance = 100
49121      OCL = FINAL    OCL_FirestormSmall
49122      FX  = FINAL    WeaponFX_NapalmMissileDetonation
49123    End
49124  ;--------------------------permet le deplassement du batiment-------
49125    Behavior = PreorderCreate ModuleTag_PreorderCreate
49126    End
49127  
49128    Behavior = GrantUpgradeCreate ModuleTag_09
49129      UpgradeToGrant           = Upgrade_AmericaRadar
49130      ExemptStatus      = UNDER_CONSTRUCTION
49131    End
49132    Behavior = ProductionUpdate ModuleTag_11
49133      NumDoorAnimations            = 1
49134      DoorOpeningTime              = 1500  ;in mSeconds
49135      DoorWaitOpenTime             = 3000  ;in mSeconds
49136      DoorCloseTime                = 1500  ;in mSeconds
49137      ConstructionCompleteDuration = 1500  ;in mSeconds
49138    End
49139    Behavior = RadarUpdate ModuleTag_12
49140      RadarExtendTime   = 4000     ;in mSeconds
49141    End
49142    Behavior = DefaultProductionExitUpdate ModuleTag_13
49143      UnitCreatePoint   = X:-18.0  Y:  35.0   Z:0.0
49144      NaturalRallyPoint = X: 60.0  Y:  35.0   Z:0.0;NaturalRallyPointX must always match GeometryMajorRadius! -ML
49145    End
49146    Behavior = BaseRegenerateUpdate ModuleTag_14
49147      ;No data
49148    End
49149    Behavior             = DestroyDie ModuleTag_15
49150      ;nothing
49151    End
49152    Behavior             = CreateObjectDie ModuleTag_16
49153      CreationList  = OCL_LargeStructureDebris
49154    End
49155    Behavior             = CreateObjectDie ModuleTag_17
49156      CreationList  = OCL_AmericanRangerDebris10
49157      ExemptStatus  = UNDER_CONSTRUCTION
49158    End
49159    Behavior             = FXListDie ModuleTag_18
49160      DeathFX       = FX_StructureMediumDeath
49161    End
49162    Behavior         = RadarUpgrade ModuleTag_19
49163      TriggeredBy   = Upgrade_AmericaRadar
49164    End
49165    Behavior           = OCLSpecialPower ModuleTag_20
49166      SpecialPowerTemplate = SuperweaponDaisyCutter
49167      OCL                  = SUPERWEAPON_DaisyCutter
49168      CreateLocation       = CREATE_AT_EDGE_NEAR_SOURCE
49169    End
49170    Behavior           = OCLSpecialPower ModuleTag_21
49171      SpecialPowerTemplate = SpecialPowerSpyDrone
49172      OCL                  = SUPERWEAPON_SpyDrone
49173      CreateLocation       = CREATE_ABOVE_LOCATION
49174    End
49175    Behavior           = OCLSpecialPower ModuleTag_22
49176      SpecialPowerTemplate = SuperweaponParadropAmerica
49177      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
49178      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
49179      OCL                  = SUPERWEAPON_Paradrop1
49180      CreateLocation       = CREATE_AT_EDGE_NEAR_SOURCE
49181    End 
49182  ;  Behavior           = OCLSpecialPower ModuleTag_23;this has been removed from everywhere but the AmericaAirfield in CHI05
49183  ;    SpecialPowerTemplate = SuperweaponCarpetBomb
49184  ;    OCL                  = SUPERWEAPON_CarpetBomb
49185  ;    CreateLocation       = CREATE_AT_EDGE_NEAR_SOURCE
49186  ;  End 
49187    Behavior           = OCLSpecialPower ModuleTag_24
49188      SpecialPowerTemplate = SpecialPowerSpySatellite
49189      OCL                  = SUPERWEAPON_SpySatellite
49190      CreateLocation       = CREATE_AT_LOCATION
49191    End
49192    Behavior    = OCLSpecialPower ModuleTag_25
49193      SpecialPowerTemplate = SuperweaponCrateDrop
49194      OCL                  = SUPERWEAPON_CrateDrop
49195      CreateLocation       = CREATE_AT_EDGE_NEAR_SOURCE
49196    End
49197    Behavior           = OCLSpecialPower ModuleTag_26
49198      SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike
49199      UpgradeOCL           = SCIENCE_A10ThunderboltMissileStrike3 SUPERWEAPON_A10ThunderboltMissileStrike3
49200      UpgradeOCL           = SCIENCE_A10ThunderboltMissileStrike2 SUPERWEAPON_A10ThunderboltMissileStrike2
49201      OCL                  = SUPERWEAPON_A10ThunderboltMissileStrike1
49202      CreateLocation       = CREATE_AT_EDGE_NEAR_SOURCE
49203    End
49204    Behavior           = OCLSpecialPower ModuleTag_27
49205      SpecialPowerTemplate = SuperweaponEmergencyRepair
49206      UpgradeOCL           = SCIENCE_EmergencyRepair3 SUPERWEAPON_RepairVehicles3
49207      UpgradeOCL           = SCIENCE_EmergencyRepair2 SUPERWEAPON_RepairVehicles2
49208      OCL                  = SUPERWEAPON_RepairVehicles1
49209      CreateLocation       = CREATE_AT_LOCATION
49210    End
49211  
49212    ; note that this power isn't normally available to human players, only to AI ones
49213    Behavior           = DefectorSpecialPower ModuleTag_28
49214      SpecialPowerTemplate = SpecialPowerDefector ; @todo lorenzen add fatcursor params
49215    End
49216  
49217    Behavior = FlammableUpdate ModuleTag_30
49218      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
49219      AflameDamageAmount = 5       ; taking this much damage...
49220      AflameDamageDelay = 500       ; this often.
49221    End
49222  
49223    Behavior = TransitionDamageFX ModuleTag_31
49224      ;-------------DESIGNED FOR MEDIUM SIZED FACTION BUILDING TRANSITIONS-------------------
49225      DamagedParticleSystem1       = Bone:None RandomBone:No PSys:StructureTransitionMediumSmoke
49226      ;---------------------------------------------------------------------------------------
49227      ReallyDamagedParticleSystem1 = Bone:None RandomBone:No PSys:StructureTransitionMediumSmoke
49228      ReallyDamagedParticleSystem2 = Bone:None RandomBone:No PSys:StructureTransitionMediumExplosion
49229      ReallyDamagedParticleSystem3 = Bone:None RandomBone:No PSys:StructureTransitionMediumShockwave
49230    End
49231  
49232    Geometry            = BOX
49233    GeometryMajorRadius = 40.0
49234    GeometryMinorRadius = 40.0
49235    GeometryHeight      = 70.0
49236    GeometryIsSmall     = No
49237    FactoryExitWidth    = 25     ; How much space to leave for units exiting.
49238    Shadow              = SHADOW_VOLUME
49239    BuildCompletion     = PLACED_BY_PLAYER
49240  
49241  End
49242  ;--------------------------------------------------------------------------------------
49243  
49244  Object Americaboue
49245  
49246  
49247  
49248  
49249    SelectPortrait         = T43
49250    ButtonImage            = T43
49251  
49252    UpgradeCameo1 = Upgrade_SeaRepair
49253    UpgradeCameo2 = Upgrade_SeaArmour
49254    ;UpgradeCameo3 = NONE
49255    ;UpgradeCameo4 = NONE
49256    ;UpgradeCameo5 = NONE
49257  
49258  
49259  
49260    ; *** ART Parameters ***
49261    Draw                   = W3DTankDraw ModuleTag_01
49262  
49263       ExtraPublicBone = EXIT01
49264      OkToChangeModelColor = Yes
49265  
49266  
49267      ConditionState       = NONE
49268         Model               = boue
49269      Animation           = boue.boue
49270        AnimationMode      = LOOP
49271        
49272      End
49273  
49274      ConditionState       = MOVING
49275        Model               = boue
49276      Animation           = boue.boue
49277        AnimationMode      = LOOP
49278  
49279      End
49280  
49281      ConditionState       = OVER_WATER
49282         Model               = boue
49283      Animation           = boue.boue
49284        AnimationMode      = LOOP
49285  
49286      End
49287  
49288      ConditionState       = MOVING OVER_WATER
49289     Model               = boue
49290      Animation           = boue.boue
49291        AnimationMode      = LOOP
49292  
49293        ParticleSysBone = Mist01 AmphibMistSide
49294        
49295        ParticleSysBone = TreadFX01 AmphibWave
49296        
49297      End
49298    End
49299    
49300  ; ***DESIGN parameters ***
49301    DisplayName            = OBJECT:boue
49302   Side             = America
49303    EditorSorting    =  VEHICLE
49304    Prerequisites
49305    Object = Americachipower
49306    End
49307    BuildCost        = 100
49308    BuildTime        = 1.0           ; in seconds
49309  
49310    EnergyProduction = -1
49311  
49312    CommandSet       = AmericaboueCommandSet
49313    VisionRange     = 200.0           ; Shroud clearing distance
49314    ShroudClearingRange = 200
49315    ArmorSet
49316      Conditions      = None
49317      Armor           = StructureArmor
49318      DamageFX        = StructureDamageFXNoShake
49319    End
49320    ExperienceValue     = 200 200 200 200  ; Experience point value at each level
49321  
49322    ; *** AUDIO Parameters ***
49323    VoiceSelect = WarFactoryUSASelect
49324    SoundDie              = BuildingDie
49325    SoundOnDamaged        = BuildingDamagedStateLight
49326    SoundOnReallyDamaged  = BuildingDestroy
49327  
49328    UnitSpecificSounds
49329      UnderConstruction     = UnderConstructionLoop
49330    End
49331  
49332    ; *** ENGINEERING Parameters ***
49333    RadarPriority   = UNIT
49334    KindOf          = PRELOAD  SELECTABLE FS_FACTORY  VEHICLE IMMUNE_TO_CAPTURE COMMANDCENTER SCORE MP_COUNT_FOR_VICTORY
49335  
49336  ;--------------------------permet le deplassement du batiment-------
49337   Behavior = AIUpdateInterface ModuleTag_05
49338      AutoAcquireEnemiesWhenIdle = Yes
49339    End
49340  
49341  Locomotor = SET_NORMAL BasicNONELocomotor
49342  
49343    Behavior               = PhysicsBehavior ModuleTag_04
49344      Mass                 = 5000.0
49345    End
49346   Behavior = SlowDeathBehavior ModuleTag_16
49347      ProbabilityModifier = 25
49348      DestructionDelay = 200
49349      DestructionDelayVariance = 100
49350      OCL = FINAL    OCL_FirestormSmall
49351      FX  = FINAL    WeaponFX_NapalmMissileDetonation
49352    End
49353  ;--------------------------permet le deplassement du batiment-------
49354    Body            = StructureBody ModuleTag_09
49355      MaxHealth       = 2000.0
49356      InitialHealth   = 2000.0
49357    End
49358    Behavior = ProductionUpdate ModuleTag_10
49359      NumDoorAnimations            = 1
49360      DoorOpeningTime              = 3250  ;in mSeconds
49361      DoorWaitOpenTime             = 3000  ;in mSeconds
49362      DoorCloseTime                = 4000  ;in mSeconds
49363      ConstructionCompleteDuration = 1500  ;in mSeconds
49364    End
49365    Behavior = DefaultProductionExitUpdate ModuleTag_13
49366      UnitCreatePoint   = X:100.0  Y:  35.0   Z:0.0
49367      NaturalRallyPoint = X:350.0  Y:  35.0   Z:0.0;NaturalRallyPointX must always match GeometryMajorRadius! -ML
49368    End
49369    Behavior = RepairDockUpdate ModuleTag_12
49370      TimeForFullHeal   = 5000   ;(in milliseconds)     
49371      NumberApproachPositions = 5
49372    End
49373    Behavior = BaseRegenerateUpdate ModuleTag_13
49374      ;No data
49375    End 
49376    
49377  ;---- Lazy cheezy modules make the buildings cry.  
49378  ;  Behavior = SlowDeathBehavior ModuleTag_14
49379  ;    DestructionDelay = 500
49380  ;    FX             = FINAL   FX_StructureMediumDeath
49381  ;    OCL            = FINAL   OCL_AmericaWarFactoryDebris
49382  ;  End
49383  
49384    Behavior = TransitionDamageFX ModuleTag_15
49385      ;-------------DESIGNED FOR MEDIUM SIZED FACTION BUILDING TRANSITIONS-------------------
49386      DamagedParticleSystem1       = Bone:None RandomBone:No PSys:StructureTransitionMediumSmoke
49387      ;---------------------------------------------------------------------------------------
49388      ReallyDamagedParticleSystem1 = Bone:None RandomBone:No PSys:StructureTransitionMediumSmoke
49389      ReallyDamagedParticleSystem2 = Bone:None RandomBone:No PSys:StructureTransitionMediumExplosion
49390      ReallyDamagedParticleSystem3 = Bone:None RandomBone:No PSys:StructureTransitionMediumShockwave
49391    End
49392  
49393    Behavior             = CreateObjectDie ModuleTag_16
49394      CreationList  = OCL_AmericanRangerDebris05
49395      ExemptStatus  = UNDER_CONSTRUCTION
49396    End
49397  
49398    Behavior = FlammableUpdate ModuleTag_18
49399      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
49400      AflameDamageAmount = 5       ; taking this much damage...
49401      AflameDamageDelay = 500       ; this often.
49402    End
49403    
49404    Behavior             = CreateObjectDie ModuleTag_20
49405      CreationList  = OCL_LargeStructureDebris
49406    End
49407    
49408    Behavior             = FXListDie ModuleTag_21
49409      DeathFX       = FX_StructureMediumDeath
49410    End
49411    
49412    Behavior             = DestroyDie ModuleTag_22
49413      ;nothing
49414    End
49415  
49416     Geometry            = BOX
49417    Scale = 0.95                            ;Scaling
49418    GeometryMajorRadius = 3.0
49419    GeometryHeight = 12.0    
49420    GeometryIsSmall = Yes
49421    Shadow = SHADOW_VOLUME
49422  
49423  End
49424  
49425  ;------------------------------------------------------------------------------------------------
49426  
49427  
49428  Object GLAmine
49429  
49430  
49431  
49432  
49433    SelectPortrait         = T44
49434    ButtonImage            = T44
49435  
49436    ;UpgradeCameo1 = Upgrade_SeaRepair
49437    ;UpgradeCameo2 = Upgrade_SeaArmour
49438    ;UpgradeCameo3 = NONE
49439    ;UpgradeCameo4 = NONE
49440    ;UpgradeCameo5 = NONE
49441  
49442  
49443  
49444    ; *** ART Parameters ***
49445    Draw                   = W3DTankDraw ModuleTag_01
49446  
49447       
49448      OkToChangeModelColor = Yes
49449  
49450  
49451      ConditionState       = NONE
49452         Model               = mine
49453      Animation           = mine.mine
49454        AnimationMode      = LOOP
49455        
49456      End
49457  
49458      ConditionState       = MOVING
49459       Model               = mine
49460      Animation           = mine.mine
49461        AnimationMode      = LOOP
49462  
49463      End
49464  
49465      ConditionState       = OVER_WATER
49466        Model               = mine
49467      Animation           = mine.mine
49468        AnimationMode      = LOOP
49469  
49470      End
49471  
49472      ConditionState       = MOVING OVER_WATER
49473    Model               = mine
49474      Animation           = mine.mine
49475        AnimationMode      = LOOP
49476  
49477        ParticleSysBone = Mist01 AmphibMistSide
49478        
49479        ParticleSysBone = TreadFX01 AmphibWave
49480        
49481      End
49482  
49483  End
49484  
49485  
49486  ; ***DESIGN parameters ***
49487    DisplayName      = OBJECT:GLAmine
49488    Side             = GLA
49489    EditorSorting    = VEHICLE
49490    Prerequisites
49491  
49492    End
49493    BuildCost        = 200
49494    BuildTime        = 2.0           ; in seconds
49495    EnergyProduction = 0
49496    MaxSimultaneousOfType  = 10
49497   CommandSet = = GLAmineCommandSet
49498    VisionRange     = 150.0           ; Shroud clearing distance
49499    ShroudClearingRange     = 150.0           ; Shroud clearing distance
49500    ExperienceValue     = 50 50 50 50  ; Experience point value at each level
49501  
49502    WeaponSet
49503      ;The weapon set is used to determine detonation mode
49504      Conditions = None 
49505      Weapon = PRIMARY    DummyWeapon ;Used for mode matching only (when to detonate)
49506      Weapon = SECONDARY  DummyWeapon ;Used for mode matching only (when to detonate)
49507      Weapon = TERTIARY   DummyWeapon ;Used for mode matching only (when to detonate)
49508      AutoChooseSources = PRIMARY   NONE
49509      AutoChooseSources = SECONDARY NONE
49510      AutoChooseSources = TERTIARY  NONE
49511    End
49512    ArmorSet
49513      Conditions      = None
49514      Armor           = StructureArmor
49515      DamageFX        = DefaultDamageFX ; Too small for normal building FX, but if we do make dedicated one it should be silent
49516    End
49517   ExperienceValue     = 200 200 200 200  ; Experience point value at each level
49518  
49519    
49520  
49521    ; *** AUDIO Parameters ***
49522    VoiceSelect = UndergroundGeneratorSelect
49523  ;  SoundDie              = BuildingDie              ; Turned off because death is start of detonation
49524    SoundOnDamaged        = BuildingDamagedStateLight
49525    SoundOnReallyDamaged  = BuildingDestroy
49526  
49527    UnitSpecificSounds
49528      UnderConstruction     = UnderConstructionLoop
49529    End
49530  
49531    ; *** ENGINEERING Parameters ***
49532    RadarPriority   = UNIT
49533    KindOf          = PRELOAD  SELECTABLE FS_FACTORY  VEHICLE IMMUNE_TO_CAPTURE COMMANDCENTER SCORE MP_COUNT_FOR_VICTORY
49534  
49535  ;--------------------------permet le deplassement du batiment-------
49536   Behavior = AIUpdateInterface ModuleTag_05
49537      AutoAcquireEnemiesWhenIdle = Yes
49538    End
49539  
49540  Locomotor = SET_NORMAL BasicNONELocomotor
49541  
49542    Behavior               = PhysicsBehavior ModuleTag_04
49543      Mass                 = 5000.0
49544    End
49545   Behavior = SlowDeathBehavior ModuleTag_16
49546      ProbabilityModifier = 25
49547      DestructionDelay = 200
49548      DestructionDelayVariance = 100
49549      OCL = FINAL    OCL_FirestormSmall
49550      FX  = FINAL    WeaponFX_NapalmMissileDetonation
49551    End
49552  ;--------------------------permet le deplassement du batiment-------
49553  
49554  
49555    Body            = StructureBody ModuleTag_02
49556      MaxHealth       = 100.0   
49557      InitialHealth   = 100.0
49558    End
49559  
49560    Behavior = StealthUpdate ModuleTag_03
49561      StealthDelay = 0 ; msec
49562      StealthForbiddenConditions = NONE
49563      FriendlyOpacityMin = 100.0%
49564      OrderIdleEnemiesToAttackMeUponReveal  = Yes
49565    End
49566  
49567    Behavior = DemoTrapUpdate ModuleTag_04
49568      DefaultProximityMode      = Yes       ;If yes, defaults to proximity mode, otherwise defaults to manual.
49569      DetonationWeaponSlot      = PRIMARY   ;The slot the weapon is in when it detonates.
49570      ProximityModeWeaponSlot   = SECONDARY ;The slot proximity mode is determined by (bogus weapon)
49571      ManualModeWeaponSlot      = TERTIARY  ;The slot manual mode is determined by (bogus weapon)
49572      TriggerDetonationRange    = 40.0      ;Detonation range when in proximity mode (and must be on ground)
49573      IgnoreTargetTypes         = PROJECTILE UNATTACKABLE
49574      AutoDetonationWithFriendsInvolved = Yes ;GLA are low tech 
49575  ;    DetonationWeapon          = DemoTrapDetonationWeapon
49576      DetonateWhenKilled        = Yes
49577    End
49578  
49579  
49580    Behavior = FlammableUpdate ModuleTag_07
49581      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
49582      AflameDamageAmount = 5       ; taking this much damage...
49583      AflameDamageDelay = 500       ; this often.
49584    End
49585  
49586    
49587    
49588    Shadow          = SHADOW_VOLUME
49589    Geometry = CYLINDER
49590    GeometryMajorRadius = 4.0
49591    GeometryHeight = 9    
49592    GeometryIsSmall = Yes 
49593  
49594  End
49595  
49596  ;---------------------------------------------------------
49597  Object techoil
49598  
49599   SelectPortrait         = T45
49600   ButtonImage            = T45
49601  
49602    ; *** ART Parameters ***
49603    ; day
49604    Draw                = W3DModelDraw ModuleTag_01 ; Handles the building but not the pile of stuff 
49605      ConditionState    = NONE
49606        Model           = techoil
49607      End
49608    
49609    ; damaged 
49610      ConditionState    = DAMAGED
49611        Model           = techoil
49612      End
49613    
49614    ; reallydamaged 
49615      ConditionState    = REALLYDAMAGED
49616        Model           = techoil
49617      End
49618  
49619    ; night
49620      ConditionState    = NIGHT
49621        Model           = techoil
49622      End
49623     
49624    ; damaged 
49625      ConditionState    = DAMAGED NIGHT
49626        Model           = techoil
49627      End
49628    
49629    ; reallydamaged 
49630      ConditionState    = REALLYDAMAGED NIGHT
49631        Model           = techoil
49632      End
49633    End
49634  
49635    Draw = W3DSupplyDraw ModuleTag_02 ; Dedicated draw module that talks with SupplyWarehouseDockUpdate to show/hide % of bones 
49636      ExtraPublicBone = SUP
49637      ConditionState = NONE
49638        Model =techoil
49639      End
49640  
49641      SupplyBonePrefix = SUP ; Show n of these based on SupplyWarehouseDockUpdate
49642    End
49643    
49644    ; ------------ New Animations fence -----------------
49645    Draw = W3DModelDraw ModuleTag_NewAnimations
49646    AnimationsRequirePower = No
49647    
49648      DefaultConditionState
49649        Model           = techoil
49650        Animation       = techoil.techoil
49651        AnimationMode   = LOOP
49652      End
49653    End   
49654  
49655    ; ***DESIGN parameters ***
49656    DisplayName         = OBJECT:techoil
49657    EditorSorting       = VEHICLE
49658  
49659  Prerequisites
49660  
49661    End
49662    BuildCost        = 200
49663    BuildTime        = 5.0           ; in seconds
49664    EnergyProduction = 0
49665    MaxSimultaneousOfType  = 10
49666    CommandSet = = GLAmineCommandSet
49667    VisionRange     = 150.0           ; Shroud clearing distance
49668    ShroudClearingRange     = 150.0           ; Shroud clearing distance
49669    ExperienceValue     = 50 50 50 50  ; Experience point value at each level
49670    WeaponSet
49671      ;The weapon set is used to determine detonation mode
49672      Conditions = None 
49673      Weapon = PRIMARY    DummyWeapon ;Used for mode matching only (when to detonate)
49674      Weapon = SECONDARY  DummyWeapon ;Used for mode matching only (when to detonate)
49675      Weapon = TERTIARY   DummyWeapon ;Used for mode matching only (when to detonate)
49676      AutoChooseSources = PRIMARY   NONE
49677      AutoChooseSources = SECONDARY NONE
49678      AutoChooseSources = TERTIARY  NONE
49679    End
49680    ArmorSet
49681      Conditions           = None
49682      Armor                = StructureArmor
49683      DamageFX             = StructureDamageFXNoShake
49684    End
49685  
49686     
49687    ; *** ENGINEERING Parameters ***
49688    RadarPriority   = UNIT
49689    KindOf          = PRELOAD  SELECTABLE FS_FACTORY  VEHICLE IMMUNE_TO_CAPTURE COMMANDCENTER SCORE MP_COUNT_FOR_VICTORY
49690  
49691    Body            = StructureBody ModuleTag_02
49692      MaxHealth       = 500.0   
49693      InitialHealth   = 500.0
49694    End
49695  
49696    Behavior = SupplyWarehouseCreate ModuleTag_05
49697      ;nothing
49698    End
49699  ;--------------------------permet le deplassement du batiment-------
49700   Behavior = AIUpdateInterface ModuleTag_05
49701      AutoAcquireEnemiesWhenIdle = Yes
49702    End
49703  
49704  Locomotor = SET_NORMAL BasicNONELocomotor
49705  
49706    Behavior               = PhysicsBehavior ModuleTag_04
49707      Mass                 = 5000.0
49708    End
49709   Behavior = SlowDeathBehavior ModuleTag_16
49710      ProbabilityModifier = 25
49711      DestructionDelay = 200
49712      DestructionDelayVariance = 100
49713      OCL = FINAL    OCL_FirestormSmall
49714      FX  = FINAL    WeaponFX_NapalmMissileDetonation
49715    End
49716  ;--------------------------permet le deplassement du batiment-------
49717  
49718  
49719    Behavior = SupplyWarehouseDockUpdate ModuleTag_06
49720      AllowsPassthrough = No ;You can't drive through this guy while docking.  Use this when the dock points are all outside
49721      NumberApproachPositions = -1 ; This is a Boneless dock, so this means infinite can approach
49722      StartingBoxes     = 400 ; Even if you use a script to set the cash value, this will determine graphically what "full" is.
49723    End
49724  
49725   Behavior = FlammableUpdate ModuleTag_07
49726      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
49727      AflameDamageAmount = 5       ; taking this much damage...
49728      AflameDamageDelay = 500       ; this often.
49729    End
49730  
49731    Geometry            = BOX
49732    GeometryMajorRadius = 50.0
49733    GeometryMinorRadius = 61.0
49734    GeometryHeight      = 13.0
49735    GeometryIsSmall     = No
49736    Shadow              = SHADOW_VOLUME
49737  
49738  End
49739  ;------------------------------------------------------------------------------------------------
49740  
49741  
49742  Object supplytechoil
49743  
49744  
49745  
49746  
49747    SelectPortrait         = T46
49748    ButtonImage            = T46
49749  
49750    ;UpgradeCameo1 = Upgrade_SeaRepair
49751    ;UpgradeCameo2 = Upgrade_SeaArmour
49752    ;UpgradeCameo3 = NONE
49753    ;UpgradeCameo4 = NONE
49754    ;UpgradeCameo5 = NONE
49755  
49756  
49757  
49758    ; *** ART Parameters ***
49759    Draw                   = W3DTankDraw ModuleTag_01
49760  
49761       
49762      OkToChangeModelColor = Yes
49763  
49764  
49765      ConditionState       = NONE
49766         Model               = supplydock
49767      Animation           = supplydock.supplydock
49768        AnimationMode      = LOOP
49769        ParticleSysBone        = Fire01 SmolderingFire
49770        ParticleSysBone        = Fire01 SmolderingFlameCore
49771  
49772        ParticleSysBone    = Smoke01 SteamVent
49773        ParticleSysBone    = Smoke02 SteamVent
49774      End
49775  
49776      ConditionState       = MOVING
49777       Model               = supplydock
49778        Animation           = supplydock.supplydock
49779        AnimationMode      = LOOP
49780        ParticleSysBone        = Fire01 SmolderingFire
49781        ParticleSysBone        = Fire01 SmolderingFlameCore
49782  
49783        ParticleSysBone    = Smoke01 SteamVent
49784        ParticleSysBone    = Smoke02 SteamVent
49785      End
49786      ConditionState       = OVER_WATER
49787        Model               = supplydock
49788      Animation           = supplydock.supplydock
49789        AnimationMode      = LOOP
49790  ParticleSysBone        = Fire01 SmolderingFire
49791        ParticleSysBone        = Fire01 SmolderingFlameCore
49792  
49793        ParticleSysBone    = Smoke01 SteamVent
49794        ParticleSysBone    = Smoke02 SteamVent
49795      End
49796  
49797      ConditionState       = MOVING OVER_WATER
49798    Model               = supplydock
49799      Animation           = supplydock.supplydock
49800        AnimationMode      = LOOP
49801        ParticleSysBone        = Fire01 SmolderingFire
49802        ParticleSysBone        = Fire01 SmolderingFlameCore
49803  
49804        ParticleSysBone    = Smoke01 SteamVent
49805        ParticleSysBone    = Smoke02 SteamVent
49806      End
49807  
49808  End
49809   PlacementViewAngle = -45
49810  
49811    ; ***DESIGN parameters ***
49812    DisplayName      = OBJECT:supplytechoil
49813      Side             = America
49814    Side                  = America
49815    Prerequisites
49816      Object = Americachipower
49817    End
49818  
49819  
49820    BuildCost        = 2000
49821    RefundValue      = 400 ; With nothing (or zero) listed, we sell for half price. 
49822    BuildTime        = 10.0           ; in seconds
49823    EnergyProduction = -1
49824    CommandSet       = supplytechoilCommandSet
49825    VisionRange      = 200.0           ; Shroud clearing distance
49826    ShroudClearingRange = 200
49827   MaxSimultaneousOfType  = 1
49828    ArmorSet
49829      Conditions      = None
49830      Armor           = StructureArmor
49831      DamageFX        = StructureDamageFXNoShake
49832    End
49833    ExperienceValue     = 200 200 200 200  ; Experience point value at each level
49834  
49835    ; *** AUDIO Parameters ***
49836    VoiceSelect = SupplyCenterUSASelect
49837    SoundDie              = BuildingDie
49838    SoundOnDamaged        = BuildingDamagedStateLight
49839    SoundOnReallyDamaged  = BuildingDestroy
49840  
49841    UnitSpecificSounds
49842      UnderConstruction     = UnderConstructionLoop
49843    End
49844  
49845  
49846   ; *** ENGINEERING Parameters ***
49847    RadarPriority   = UNIT
49848    KindOf          = PRELOAD  SELECTABLE FS_FACTORY  VEHICLE IMMUNE_TO_CAPTURE COMMANDCENTER SCORE MP_COUNT_FOR_VICTORY
49849  
49850    Body            = StructureBody ModuleTag_02
49851      MaxHealth       = 2000.0   
49852      InitialHealth   = 2000.0
49853    End
49854  ;--------------------------permet le deplassement du batiment-------
49855   Behavior = AIUpdateInterface ModuleTag_05
49856      AutoAcquireEnemiesWhenIdle = Yes
49857    End
49858  
49859  Locomotor = SET_NORMAL BasicNONELocomotor
49860  
49861    Behavior               = PhysicsBehavior ModuleTag_04
49862      Mass                 = 5000.0
49863    End
49864   Behavior = SlowDeathBehavior ModuleTag_16
49865      ProbabilityModifier = 25
49866      DestructionDelay = 200
49867      DestructionDelayVariance = 100
49868      OCL = FINAL    OCL_FirestormSmall
49869      FX  = FINAL    WeaponFX_NapalmMissileDetonation
49870    End
49871  ;--------------------------permet le deplassement du batiment-------
49872  
49873    Behavior = SupplyCenterCreate ModuleTag_06
49874      ;nothing
49875    End
49876    Behavior = DestroyDie ModuleTag_07
49877      ;nothing
49878    End
49879    Behavior             = CreateObjectDie ModuleTag_08
49880      CreationList  = OCL_AmericanRangerDebris03
49881      ExemptStatus  = UNDER_CONSTRUCTION
49882    End
49883    Behavior = ProductionUpdate ModuleTag_09
49884      ; nothing
49885    End
49886    Behavior = SupplyCenterProductionExitUpdate ModuleTag_10
49887      UnitCreatePoint   = X:  -50.0  Y:  0.0   Z:0.0
49888      NaturalRallyPoint = X: 44.0  Y:  0.0   Z:0.0;NaturalRallyPointX must always match GeometryMajorRadius! -ML
49889    End
49890    Behavior = BaseRegenerateUpdate ModuleTag_11
49891      ;No data
49892    End 
49893    Behavior            = SpawnBehavior ModuleTag_12
49894      SpawnNumber       = 1
49895      SpawnReplaceDelay = 9999
49896      SpawnTemplateName = AmericaVehicletanker
49897      OneShot           = Yes
49898      CanReclaimOrphans = No
49899    End
49900  
49901    Behavior = SupplyCenterDockUpdate ModuleTag_13
49902      NumberApproachPositions = 9 ; There are 9 approach bones in the art
49903    End
49904  
49905    Behavior = FlammableUpdate ModuleTag_15
49906      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
49907      AflameDamageAmount = 5       ; taking this much damage...
49908      AflameDamageDelay = 500       ; this often.
49909    End
49910    
49911    Behavior             = CreateObjectDie ModuleTag_16
49912      CreationList  = OCL_LargeStructureDebris
49913    End
49914    Behavior             = FXListDie ModuleTag_17
49915      DeathFX       = FX_StructureSmallDeath
49916    End
49917  
49918    Behavior = TransitionDamageFX ModuleTag_18
49919      ;-------------DESIGNED FOR SMALL SIZED FACTION BUILDING TRANSITIONS-------------------
49920      DamagedParticleSystem1       = Bone:None RandomBone:No PSys:StructureTransitionSmallSmoke
49921      ;---------------------------------------------------------------------------------------
49922      ReallyDamagedParticleSystem1 = Bone:None RandomBone:No PSys:StructureTransitionSmallSmoke
49923      ReallyDamagedParticleSystem2 = Bone:None RandomBone:No PSys:StructureTransitionSmallExplosion
49924      ReallyDamagedParticleSystem3 = Bone:None RandomBone:No PSys:StructureTransitionSmallShockwave
49925    End
49926    
49927    Geometry            = BOX
49928    GeometryMajorRadius = 44.0
49929    GeometryMinorRadius = 45.0
49930    GeometryHeight      = 24.0
49931    GeometryIsSmall     = No
49932    Shadow          = SHADOW_VOLUME
49933  
49934  
49935  End
49936  
49937  ;------------------------------------------------------------------------------------------------
49938  
49939  
49940  Object AmericaVehicletanker
49941  
49942  
49943  
49944  
49945    SelectPortrait         = T47
49946    ButtonImage            = T47
49947  
49948    ;UpgradeCameo1 = Upgrade_SeaRepair
49949    ;UpgradeCameo2 = Upgrade_SeaArmour
49950    ;UpgradeCameo3 = NONE
49951    ;UpgradeCameo4 = NONE
49952    ;UpgradeCameo5 = NONE
49953  
49954  
49955  
49956    ; *** ART Parameters ***
49957    Draw                   = W3DTankDraw ModuleTag_01
49958  
49959       
49960      OkToChangeModelColor = Yes
49961  
49962  
49963      ConditionState       = NONE
49964         Model               = tanker
49965         Animation           = tanker.tanker
49966         AnimationMode      = LOOP
49967        
49968      End
49969  
49970      ConditionState       = MOVING
49971        Model               = tanker
49972        Animation           = tanker.tanker
49973        AnimationMode      = LOOP
49974  
49975      End
49976  
49977      ConditionState       = OVER_WATER
49978        Model               = tanker
49979        Animation           = tanker.tanker
49980        AnimationMode      = LOOP
49981  
49982      End
49983  
49984      ConditionState       = MOVING OVER_WATER
49985         Model               = tanker
49986         Animation           = tanker.tanker
49987         AnimationMode      = LOOP
49988  
49989   
49990      End
49991  
49992  End
49993  
49994   ; ***DESIGN parameters ***
49995   DisplayName         = OBJECT:tanker
49996    EditorSorting       = VEHICLE
49997    Side                = America
49998    TransportSlotCount  = 2                 ;how many "slots" we take in a transport (0 == not transportable)
49999    BuildCost           = 1000
50000    BuildTime           = 10.0      ;in seconds
50001    VisionRange         = 150
50002    ShroudClearingRange = 300
50003    Prerequisites
50004      ;Object = ChinaSupplyCenter
50005    End
50006  
50007    ArmorSet
50008      Conditions      = None
50009      Armor           = TruckArmor
50010      DamageFX        = TankDamageFX
50011    End
50012    CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
50013    CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
50014    CommandSet              = ChinaSupplyTruckCommandSet
50015    ; *** AUDIO Parameters ***
50016    VoiceSelect             = SupplyTruckVoiceSelect
50017    VoiceMove               = SupplyTruckVoiceMove
50018    VoiceAttack             = SupplyTruckVoiceAttack
50019    SoundMoveStart          = SupplyTruckMoveStart
50020    SoundMoveStartDamaged = SupplyTruckMoveStart
50021    UnitSpecificSounds
50022      VoiceCreate           = SupplyTruckVoiceCreate
50023      TruckLandingSound     = NoSound
50024      TruckPowerslideSound  = NoSound
50025      VoiceSupply           = SupplyTruckVoiceSupply
50026      VoiceCrush            = SupplyTruckVoiceCrush
50027      VoiceEnter            = SupplyTruckVoiceMove
50028  
50029    End
50030  
50031    ; *** ENGINEERING Parameters ***
50032    RadarPriority = UNIT
50033    ;@todo lorenzen removed the CAN_ATTACK from the chinasupplytruck... ok?
50034    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT 
50035    
50036    Body = ActiveBody ModuleTag_02
50037      MaxHealth       = 300.0
50038      InitialHealth   = 300.0
50039    End
50040    Behavior = SupplyTruckAIUpdate ModuleTag_03
50041      MaxBoxes = 4
50042      SupplyCenterActionDelay = 400     ; ms for whole thing (one transaction)
50043      SupplyWarehouseActionDelay = 1000 ; ms per box (many small transactions)
50044      SupplyWarehouseScanDistance = 1000 ;350 ; Max distance to look for a warehouse, or we go home.  (Direct dock command on warehouse overrides, and no max on Center Scan)
50045      SuppliesDepletedVoice = SupplyTruckVoiceSuppliesDepleted
50046    End
50047    ;--------------------------permet le deplassement du batiment-------
50048  
50049  
50050  Locomotor = SET_NORMAL BasicBoatLocomotor
50051  
50052    Behavior               = PhysicsBehavior ModuleTag_04
50053      Mass                 = 5000.0
50054    End
50055   Behavior = SlowDeathBehavior ModuleTag_16
50056      ProbabilityModifier = 25
50057      DestructionDelay = 200
50058      DestructionDelayVariance = 100
50059      OCL = FINAL    OCL_FirestormSmall
50060      FX  = FINAL    WeaponFX_NapalmMissileDetonation
50061    End
50062  ;--------------------------permet le deplassement du batiment-------
50063  
50064  
50065  
50066    ExperienceValue    = 50 50 50 50 ;Experience point value at each level
50067  
50068    Behavior = SlowDeathBehavior ModuleTag_05
50069      DeathTypes = ALL -CRUSHED -SPLATTED
50070      DestructionDelay = 200
50071      DestructionDelayVariance = 100
50072      FX  = FINAL    FX_SupplyTruckExplosionOneFinal
50073      OCL = FINAL    OCL_ChinaSupplyTruckDeathEffect
50074    End
50075      
50076    Behavior = FXListDie ModuleTag_06
50077      DeathTypes = NONE +CRUSHED +SPLATTED
50078      DeathFX = FX_CarCrush
50079    End
50080    
50081    Behavior = CreateObjectDie ModuleTag_07
50082      DeathTypes = NONE +CRUSHED +SPLATTED
50083      CreationList = OCL_ChinaSupplyTruck_CrushEffect
50084    End
50085  
50086    Behavior                       = TransitionDamageFX ModuleTag_08
50087      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
50088      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
50089    End
50090  
50091    Behavior = FlammableUpdate ModuleTag_10
50092      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
50093      AflameDamageAmount = 3       ; taking this much damage...
50094      AflameDamageDelay = 500       ; this often.
50095    End
50096  
50097    ; A crushing defeat
50098    Behavior = DestroyDie ModuleTag_11
50099      DeathTypes = NONE +CRUSHED +SPLATTED
50100    End
50101  
50102    Behavior        = CreateCrateDie ModuleTag_12
50103      CrateData     = SalvageCrateData
50104    End
50105  
50106    Geometry = BOX
50107    GeometryMajorRadius = 17.0
50108    GeometryMinorRadius = 7.0
50109    GeometryHeight = 14.0     
50110    GeometryIsSmall = No
50111    Shadow = SHADOW_VOLUME
50112    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
50113  
50114  End
50115  ;-----------------------------------------------------------------------------------------------
50116  ;--------------------------------------chine----------------------------------------------------
50117  ;-----------------------------------------------------------------------------------------------
50118  
50119  Object chineVehicleBattleShip2
50120  
50121    SelectPortrait = T48
50122    ButtonImage    = T48
50123  
50124    UpgradeCameo1 = Upgrade_SeaRepair
50125    UpgradeCameo2 = Upgrade_SeaArmour
50126    ;UpgradeCameo3 = NONE
50127    ;UpgradeCameo4 = NONE
50128    ;UpgradeCameo5 = NONE
50129  
50130    ; *** ART Parameters ***
50131  
50132  
50133    Draw                   = W3DOverlordTankDraw ModuleTag_02
50134      OkToChangeModelColor = Yes
50135      InitialRecoilSpeed   = 120
50136      MaxRecoilDistance    = 8
50137      RecoilSettleSpeed    = 6
50138      ConditionState       = NONE
50139        Model              = croiseurch
50140        Animation          = croiseurch.croiseurch
50141        AnimationMode      = LOOP
50142        Turret             = Turret03
50143        TurretPitch        = TurretEL03
50144  ;     TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward;
50145       AltTurret          = Turret02
50146       AltTurretPitch     = TurretEL02
50147       AltTurretArtAngle  = 180      
50148        WeaponFireFXBone   = PRIMARY Tur3Muzzle
50149        WeaponRecoilBone   = PRIMARY Tur3Barrel
50150        WeaponFireFXBone   = SECONDARY Tur1Muzzle
50151        WeaponRecoilBone   = SECONDARY Tur1Barrel
50152        WeaponFireFXBone   = TERTIARY Tur2Muzzle
50153        WeaponRecoilBone   = TERTIARY Tur2Barrel
50154  
50155        ParticleSysBone   = TreadFX02 BattleShipWaterRipples
50156        ParticleSysBone   = TreadFX03 BattleShipWaterRipples
50157        ParticleSysBone   = TreadFX04 BattleShipWaterRipples
50158      HideSubObject     = Tur2Barrel01
50159      HideSubObject     = Tur2Barrel02
50160      HideSubObject     = Tur2Barrel03
50161      HideSubObject     = Tur1Barrel01
50162      HideSubObject     = Tur1Barrel02
50163      HideSubObject     = Tur1Barrel03
50164      HideSubObject     = Turret02
50165      HideSubObject     = Turret01
50166      HideSubObject     = Housecolor01
50167      End
50168    End
50169  Draw                   = W3DOverlordTankDraw ModuleTag_01
50170      OkToChangeModelColor = Yes
50171      InitialRecoilSpeed   = 120
50172      MaxRecoilDistance    = 8
50173      RecoilSettleSpeed    = 6
50174      ConditionState       = NONE
50175        Model              = croiseurch
50176        Animation          = croiseurch.croiseurch
50177        AnimationMode      = LOOP
50178        Turret             = Turret02
50179        TurretPitch        = TurretEL02
50180  ;      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
50181       AltTurret          = Turret01
50182        AltTurretPitch     = TurretEL01
50183        AltTurretArtAngle     = 180
50184        WeaponFireFXBone   = PRIMARY Tur2Muzzle
50185        WeaponRecoilBone   = PRIMARY Tur2Barrel
50186        WeaponFireFXBone   = SECONDARY Tur3Muzzle
50187        WeaponRecoilBone   = SECONDARY Tur3Barrel
50188        WeaponFireFXBone   = TERTIARY Tur2Muzzle
50189        WeaponRecoilBone   = TERTIARY Tur2Barrel
50190        ParticleSysBone   = TreadFX02 BattleShipWaterRipples
50191        ParticleSysBone   = TreadFX03 BattleShipWaterRipples
50192        ParticleSysBone   = TreadFX04 BattleShipWaterRipples
50193      HideSubObject     = Tur3Barrel01
50194      HideSubObject     = Tur3Barrel02
50195      HideSubObject     = Tur3Barrel03
50196      HideSubObject     = Tur1Barrel01
50197      HideSubObject     = Tur1Barrel02
50198      HideSubObject     = Tur1Barrel03
50199      HideSubObject     = Turret03
50200      HideSubObject     = Turret01
50201      End
50202    End
50203  
50204    Draw                   = W3DOverlordTankDraw ModuleTag_99
50205      OkToChangeModelColor = Yes
50206      InitialRecoilSpeed   = 120
50207      MaxRecoilDistance    = 8
50208      RecoilSettleSpeed    = 6
50209      ConditionState       = NONE
50210        Model              = croiseurch
50211        Animation          = croiseurch.croiseurch
50212        AnimationMode      = LOOP
50213        Turret             = Turret01
50214        TurretPitch        = TurreteL01
50215        WeaponFireFXBone   = SECONDARY Tur3Muzzle
50216        WeaponRecoilBone   = SECONDARY Tur3Barrel
50217        WeaponFireFXBone   = SECONDARY Tur1Muzzle
50218        WeaponRecoilBone   = SECONDARY Tur1Barrel
50219        WeaponFireFXBone   = TERTIARY Tur2Muzzle
50220        WeaponRecoilBone   = TERTIARY Tur2Barrel
50221        ParticleSysBone   = TreadFX02 BattleShipWaterRipples
50222        ParticleSysBone   = TreadFX03 BattleShipWaterRipples
50223        ParticleSysBone   = TreadFX04 BattleShipWaterRipples
50224      HideSubObject     = Tur2Barrel01
50225      HideSubObject     = Tur2Barrel02
50226      HideSubObject     = Tur2Barrel03
50227      HideSubObject     = Tur3Barrel01
50228      HideSubObject     = Tur3Barrel02
50229      HideSubObject     = Tur3Barrel03
50230      HideSubObject     = Turret02
50231      HideSubObject     = Turret03
50232      End
50233    End
50234  
50235  
50236    
50237    VoiceSelect = PaladinTankVoiceSelect
50238  
50239    ; ***DESIGN parameters ***
50240    DisplayName            = OBJECT:croiseurch
50241    Side                   = China
50242    EditorSorting          = VEHICLE
50243    TransportSlotCount     = 9                 ;how many "slots" we take in a transport (0 == not transportable)
50244    WeaponSet
50245      Conditions           = None 
50246      Weapon               = PRIMARY BattleShipGrenades
50247      Weapon               = SECONDARY BattleShipGrenades
50248      Weapon         = TERTIARY BattleShipGrenades
50249      AutoChooseSources   = PRIMARY      None
50250      AutoChooseSources   = SECONDARY    None
50251      AutoChooseSources   = TERTIARY     None
50252      ShareWeaponReloadTime = Yes
50253    End
50254    ArmorSet
50255      Conditions           = None
50256      ;Armor                = InvulnerableArmor
50257      Armor = TankDamage
50258      DamageFX = TankDamageFX
50259    End
50260   
50261    BuildCost = 100
50262    BuildTime = 1.0
50263    VisionRange            = 400
50264    ShroudClearingRange = 450
50265      Prerequisites
50266      ;Object = AmericaNavalyard2
50267      
50268    End
50269  
50270    CommandSet             = BattleShipCommandSetFabius2
50271  
50272    ; *** AUDIO Parameters ***
50273    SoundAmbient           = BattleshipAmbientLoop
50274    VoiceSelect = PaladinTankVoiceSelect
50275    UnitSpecificSounds
50276      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
50277      TurretMoveLoop       = TurretMoveLoop
50278    End
50279  
50280    ; *** ENGINEERING Parameters ***
50281      RadarPriority = UNIT
50282    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
50283  
50284    Body = ActiveBody ModuleTag_02
50285      MaxHealth            = 3000.0
50286      InitialHealth        = 3000.0
50287    End
50288  
50289    Behavior = MaxHealthUpgrade ModuleTag_09
50290      TriggeredBy   = Upgrade_SeaArmour
50291      AddMaxHealth  = 1000.0
50292      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
50293    End
50294  
50295    Behavior = AutoHealBehavior ModuleTag_05
50296      HealingAmount = 7
50297      HealingDelay = 500 ; msec
50298      TriggeredBy = Upgrade_SeaRepair
50299    End
50300  
50301    Behavior = AIUpdateInterface ModuleTag_04
50302      Turret
50303        TurretTurnRate     = 80
50304        TurretPitchRate    = 80
50305        FirePitch          = 12            ; Instead of aiming pitchwise at the target, it will aim here
50306        AllowsPitch        = Yes
50307        RecenterTime       = 5000       ; how long to wait during idle before recentering
50308        ControlledWeaponSlots = PRIMARY SECONDARY
50309  ;      NaturalTurretAngle = 180  ; this turret points backwards normally
50310      End
50311      AltTurret
50312        TurretTurnRate     = 80
50313        TurretPitchRate    = 80
50314        FirePitch          = 15          ; Instead of aiming pitchwise at the target, it will aim here
50315        AllowsPitch        = Yes
50316        RecenterTime       = 5000     ; how long to wait during idle before recentering
50317        ControlledWeaponSlots = TERTIARY
50318      NaturalTurretAngle = 0
50319      End
50320    
50321    End
50322    ;--------------------------permet le deplassement du batiment-------
50323  
50324  
50325  Locomotor = SET_NORMAL BasicBoatLocomotor
50326  
50327    Behavior               = PhysicsBehavior ModuleTag_04
50328      Mass                 = 5000.0
50329    End
50330   Behavior = SlowDeathBehavior ModuleTag_16
50331      ProbabilityModifier = 25
50332      DestructionDelay = 200
50333      DestructionDelayVariance = 100
50334      OCL = FINAL    OCL_FirestormSmall
50335      FX  = FINAL    WeaponFX_NapalmMissileDetonation
50336    End
50337  ;--------------------------permet le deplassement du batiment-------
50338   
50339  
50340   
50341  
50342    Geometry               = BOX
50343    GeometryMajorRadius    = 200.0
50344    GeometryMinorRadius    = 20.0
50345    GeometryHeight         = 40     
50346    GeometryIsSmall        = No 
50347    Shadow                 = SHADOW_VOLUME   
50348  
50349  End
50350  ;-------------------------------------------------------------------------------------------;------------------------------------------------------------------------------
50351  Object AmericaVehicleBattleCruiser
50352  
50353    SelectPortrait         = SABattleship_L
50354    ButtonImage            = SABattleship_L
50355  
50356    ; *** ART Parameters ***
50357    Draw                   = W3DOverlordTankDraw ModuleTag_01
50358      OkToChangeModelColor = Yes
50359      InitialRecoilSpeed   = 120
50360      MaxRecoilDistance    = 8
50361      RecoilSettleSpeed    = 6
50362      ConditionState       = NONE
50363        Model              = avbattlecruiser
50364        Animation          = avbattlecruiser.avbattlecruiser
50365        AnimationMode      = LOOP
50366        Turret             = Turret02
50367        TurretPitch        = TurretEL02
50368  ;      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
50369  ;      AltTurret          = Turret03
50370  ;      AltTurretPitch     = TurretEL03
50371  ;      AltTurretArtAngle     = 180
50372        WeaponFireFXBone   = PRIMARY Tur2Muzzle
50373        WeaponRecoilBone   = PRIMARY Tur2Barrel
50374  ;      WeaponFireFXBone   = SECONDARY Tur3Muzzle
50375  ;      WeaponRecoilBone   = SECONDARY Tur3Barrel
50376  ;      WeaponFireFXBone   = TERTIARY Tur2Muzzle
50377  ;      WeaponRecoilBone   = TERTIARY Tur2Barrel
50378        ParticleSysBone   = TreadFX02 BattleShipWaterRipples
50379        ParticleSysBone   = TreadFX03 BattleShipWaterRipples
50380        ParticleSysBone   = TreadFX04 BattleShipWaterRipples
50381      HideSubObject     = Tur1Barrel01
50382      HideSubObject     = Tur1Barrel02
50383      HideSubObject     = Tur1Barrel03
50384      HideSubObject     = Turret01
50385        HideSubObject     = Turret03
50386      End
50387    End
50388  
50389    Draw                   = W3DOverlordTankDraw ModuleTag_02
50390      OkToChangeModelColor = Yes
50391      InitialRecoilSpeed   = 120
50392      MaxRecoilDistance    = 8
50393      RecoilSettleSpeed    = 6
50394      ConditionState       = NONE
50395        Model              = avbattlecruiser
50396        Animation          = avbattlecruiser.avbattlecruiser
50397        AnimationMode      = LOOP
50398        AltTurret             = Turret01
50399        AltTurretPitch        = TurretEL01
50400  ;      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
50401        WeaponFireFXBone   = TERTIARY Tur1Muzzle
50402        WeaponRecoilBone   = TERTIARY Tur1Barrel
50403      HideSubObject     = CHASSIS01
50404      HideSubObject     = Radar01
50405      HideSubObject     = Radar02
50406      HideSubObject     = Radar03
50407      HideSubObject     = Tower
50408      HideSubObject     = Tur2Barrel01
50409      HideSubObject     = Tur2Barrel02
50410      HideSubObject     = Tur2Barrel03
50411      HideSubObject     = Tur3Barrel01
50412      HideSubObject     = Tur3Barrel02
50413      HideSubObject     = Tur3Barrel03
50414      HideSubObject     = Turret02
50415      HideSubObject     = Turret03
50416      HideSubObject     = Housecolor01
50417      End
50418  ;    AttachToBoneInContainer = TREADFX03
50419    End
50420  
50421    Draw                   = W3DOverlordTankDraw ModuleTag_99
50422      OkToChangeModelColor = Yes
50423      InitialRecoilSpeed   = 120
50424      MaxRecoilDistance    = 8
50425      RecoilSettleSpeed    = 6
50426      ConditionState       = NONE
50427        Model              = avbattlecruiser
50428        Animation          = avbattlecruiser.avbattlecruiser
50429        AnimationMode      = LOOP
50430        Turret             = Turret03
50431        TurretPitch        = TurretEL03
50432        WeaponFireFXBone   = SECONDARY Tur3Muzzle
50433        WeaponRecoilBone   = SECONDARY Tur3Barrel
50434        ParticleSysBone   = TreadFX02 BattleShipWaterRipples
50435        ParticleSysBone   = TreadFX03 BattleShipWaterRipples
50436        ParticleSysBone   = TreadFX04 BattleShipWaterRipples
50437      HideSubObject     = Tur1Barrel01
50438      HideSubObject     = Tur1Barrel02
50439      HideSubObject     = Tur1Barrel03
50440      HideSubObject     = Turret01
50441      HideSubObject     = Turret02
50442      End
50443    End
50444  
50445  
50446    ; ***DESIGN parameters ***
50447    DisplayName            = OBJECT:Battleship
50448    Side                   = America
50449    EditorSorting          = VEHICLE
50450  
50451    TransportSlotCount     = 0                 ;how many "slots" we take in a transport (0 == not transportable)
50452  
50453    BuildCost        = 5000
50454    BuildTime        = 60.0
50455  
50456    Prerequisites
50457   ;   Object = AmericaNavalyard2
50458    End
50459  
50460    CommandSet             = GenericCommandSet
50461  
50462    WeaponSet
50463      Conditions           = None 
50464      Weapon               = PRIMARY BattleshipBogusGun
50465      Weapon               = SECONDARY BattleshipBogusGun
50466      Weapon         = TERTIARY BattleshipBogusGun
50467    End
50468  
50469    ArmorSet
50470      Armor = TankDamage
50471      DamageFX = TankDamageFX
50472    End
50473    VisionRange            = 500
50474    ShroudClearingRange      = 800
50475  
50476    ; *** AUDIO Parameters ***
50477    VoiceSelect     = BattleshipVoiceSelect
50478    VoiceMove     = BattleshipVoiceMove
50479    VoiceGuard     = BattleshipVoiceMove
50480    VoiceAttack     = BattleshipVoiceAttack
50481    SoundAmbient     = BattleshipAmbientLoop
50482  
50483    UnitSpecificSounds
50484      TurretMoveLoop       = OverlordTankTurretMoveLoop
50485      VoiceCreate          = BattleshipVoiceSelect
50486    End
50487  
50488    ; *** ENGINEERING Parameters ***
50489    RadarPriority          = UNIT
50490    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE
50491  
50492    Body = ActiveBody ModuleTag_03
50493      MaxHealth            = 4000.0
50494      InitialHealth        = 4000.0
50495    End
50496  
50497    Behavior = AIUpdateInterface ModuleTag_04
50498      Turret
50499        TurretTurnRate     = 80
50500        TurretPitchRate    = 80
50501        FirePitch          = 12            ; Instead of aiming pitchwise at the target, it will aim here
50502        AllowsPitch        = Yes
50503        RecenterTime       = 5000       ; how long to wait during idle before recentering
50504        ControlledWeaponSlots = PRIMARY SECONDARY
50505  ;      NaturalTurretAngle = 180  ; this turret points backwards normally
50506      End
50507      AltTurret
50508        TurretTurnRate     = 80
50509        TurretPitchRate    = 80
50510        FirePitch          = 15          ; Instead of aiming pitchwise at the target, it will aim here
50511        AllowsPitch        = Yes
50512        RecenterTime       = 5000     ; how long to wait during idle before recentering
50513        ControlledWeaponSlots = TERTIARY
50514      NaturalTurretAngle = 180
50515      End
50516      
50517    End
50518  
50519    Behavior = ObjectCreationUpgrade ModuleTag_06
50520      UpgradeObject = OCL_AmericanBattleDrone
50521      TriggeredBy   = Upgrade_AmericaBattleDrone
50522      ConflictsWith = Upgrade_AmericaScoutDrone
50523    End
50524    Behavior = ObjectCreationUpgrade ModuleTag_07
50525      UpgradeObject = OCL_AmericanScoutDrone
50526      TriggeredBy   = Upgrade_AmericaScoutDrone
50527      ConflictsWith = Upgrade_AmericaBattleDrone
50528    End
50529    Behavior = ProductionUpdate ModuleTag_08
50530      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
50531    End
50532  
50533  
50534    Behavior = ExperienceScalarUpgrade ModuleTag_09
50535      TriggeredBy   = Upgrade_AmericaAdvancedTraining
50536      AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
50537    End
50538    Behavior = MaxHealthUpgrade ModuleTag_10
50539      TriggeredBy   = Upgrade_AmericaCompositeArmor
50540      AddMaxHealth  = 300.0
50541      ChangeType    = ADD_CURRENT_HEALTH_TOO
50542    End
50543  
50544    Locomotor = SET_NORMAL LargeShipLocomotor2
50545  
50546    Behavior               = PhysicsBehavior ModuleTag_11
50547      Mass                 = 5000.0
50548    End
50549  
50550    ; Turret fly off death
50551    Behavior = SlowDeathBehavior ModuleTag_12
50552      DeathTypes = ALL -CRUSHED -SPLATTED
50553      SinkRate = 10
50554      SinkDelay = 1000
50555      ProbabilityModifier  = 90
50556      DestructionDelay  = 5000
50557      DestructionDelayVariance  = 100
50558      FX  = INITIAL  WeaponFX_BombTruckDefaultBombDetonation
50559      OCL = MIDPOINT OCL_GenericTankDeathEffect
50560      FX  = MIDPOINT WeaponFX_BombTruckHighExplosiveBombDetonation
50561    End
50562  
50563    Behavior                 = TransitionDamageFX ModuleTag_13
50564      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
50565      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:WeaponFX_BombTruckDefaultBombDetonation
50566    End
50567  
50568    Behavior = DestroyDie ModuleTag_14
50569      DeathTypes = NONE +CRUSHED +SPLATTED
50570    End
50571  
50572    ; A crushing defeat
50573    Behavior = FXListDie ModuleTag_15
50574      DeathTypes = NONE +CRUSHED +SPLATTED
50575      DeathFX = WeaponFX_BombTruckDefaultBombDetonation
50576    End
50577  
50578    Behavior = CreateObjectDie ModuleTag_16
50579      DeathTypes = NONE +CRUSHED +SPLATTED
50580      CreationList = OCL_CrusaderTank_CrushEffect
50581    End
50582  
50583    Scale             = 1
50584    Geometry               = BOX
50585    GeometryMajorRadius    = 240.0
50586    GeometryMinorRadius    = 24.0
50587    GeometryHeight         = 48     
50588    GeometryIsSmall        = No 
50589    Shadow                 = SHADOW_VOLUME   
50590  
50591  End
50592  


Generated: Sat Mar 28 08:18:23 2009 Cross-referenced by PHPXref 0.7