[ Index ] WAROFGENERALS

PHP Cross Reference of WAROFGENERALS MODS SOURCES

title

Body

[close]

/Command and conquer Generals/Call to arms/Data/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  ;------------------------------------------------------------------------------
   9  Object AmericaParachute
  10  
  11    ; *** ART Parameters ***
  12    Draw = W3DModelDraw ModuleTag_01
  13      OkToChangeModelColor = Yes
  14      DefaultConditionState
  15        Model = PMparacht_SKNc
  16        Animation = PMparacht_SKL.PMparacht_FAL
  17        AnimationMode = LOOP
  18      End
  19      ConditionState = PARACHUTING
  20        Model = PMparacht_SKNc
  21        Animation = PMparacht_SKL.PMparacht_OPN
  22        AnimationMode = ONCE
  23      End
  24      ConditionState = RUBBLE
  25        Model = PMparacht_SKNc
  26        Animation = PMparacht_SKL.PMparacht_DRP
  27        AnimationMode = ONCE
  28      End
  29      ; this is a weird state to resolve an ambiguity: sometimes
  30      ; we can have a "rubble" parachute momentarily, that doesn't
  31      ; know that it has finished parachuting yet...
  32      ConditionState = RUBBLE PARACHUTING
  33        Model = PMparacht_SKNc
  34        Animation = PMparacht_SKL.PMparacht_DRP
  35        AnimationMode = ONCE
  36      End
  37    End 
  38  
  39    ; ***DESIGN parameters ***
  40    Side                = America
  41    EditorSorting       = SYSTEM
  42    TransportSlotCount  = 0                 
  43    VisionRange         = 300.0 
  44    ShroudClearingRange = 300
  45    IsTrainable         = No  ;Can gain experience
  46    ; in theory, it would be nice to allow chutes to be attackable; however, bugs in the code
  47    ; can cause the rider to be left in a bad state (eg, no-collision bit set) if the chute dies
  48    ; prematurely. so disable this for now, and give it a ton of health to prevent splash damage
  49    ; from killing it. (srj)
  50    KindOf              = PRELOAD PARACHUTE UNATTACKABLE
  51  
  52    ; *** AUDIO Parameters ***
  53  
  54    ; *** ENGINEERING Parameters ***
  55    Behavior = AIUpdateInterface ModuleTag_02
  56      ; nothing
  57    End
  58    Locomotor = SET_NORMAL ParachuteLocomotor
  59    Locomotor = SET_FREEFALL FreeFallLocomotor
  60  
  61    Body = ActiveBody ModuleTag_03
  62      MaxHealth       = 100000.0
  63      InitialHealth   = 100000.0
  64    End
  65  
  66    Behavior = PhysicsBehavior ModuleTag_04
  67      Mass = 5.0
  68    End
  69  
  70    Behavior = ParachuteContain ModuleTag_05
  71      PitchRateMax = 60           ; deg/sec
  72      RollRateMax = 60            ; deg/sec
  73      LowAltitudeDamping  = 0.2   ; how much to damp swaying when we get "close" to the ground
  74      ParachuteOpenDist   = 25.0  ; how far we have to fall 'till we open our 'chute
  75      AllowInsideKindOf   = INFANTRY PARACHUTABLE
  76      ParachuteOpenSound  = ParachuteOpen
  77    End
  78  
  79    Behavior = SlowDeathBehavior ModuleTag_06
  80      SinkDelay = 1000
  81      SinkRate = 1     ; in Dist/Sec
  82      DestructionDelay = 4000
  83    End
  84  
  85    RadarPriority = NOT_ON_RADAR
  86    Geometry = CYLINDER
  87    GeometryMajorRadius = 15.0
  88    GeometryHeight = 10.0    
  89    GeometryIsSmall = Yes
  90    Shadow = SHADOW_VOLUME
  91  
  92  End
  93  
  94  ;------------------------------------------------------------------------------
  95  Object AmericaCrateParachute
  96  
  97    ; *** ART Parameters ***
  98    Draw = W3DModelDraw ModuleTag_01
  99      OkToChangeModelColor = Yes
 100      DefaultConditionState
 101        Model = PMparacht_SKNc
 102        Animation = PMparacht_SKL.PMparacht_FAL
 103        AnimationMode = LOOP
 104      End
 105      ConditionState = PARACHUTING
 106        Model = PMparacht_SKNc
 107        Animation = PMparacht_SKL.PMparacht_OPN
 108        AnimationMode = ONCE
 109      End
 110      ConditionState = RUBBLE
 111        Model = PMparacht_SKNc
 112        Animation = PMparacht_SKL.PMparacht_DRP
 113        AnimationMode = ONCE
 114      End
 115      ; this is a weird state to resolve an ambiguity: sometimes
 116      ; we can have a "rubble" parachute momentarily, that doesn't
 117      ; know that it has finished parachuting yet...
 118      ConditionState = RUBBLE PARACHUTING
 119        Model = PMparacht_SKNc
 120        Animation = PMparacht_SKL.PMparacht_DRP
 121        AnimationMode = ONCE
 122      End
 123    End
 124  
 125    ; ***DESIGN parameters ***
 126    Side                = America
 127    EditorSorting       = SYSTEM
 128    TransportSlotCount  = 0                 
 129    VisionRange         = 300.0 
 130    ShroudClearingRange = 300
 131    IsTrainable         = No  ;Can gain experience
 132    ; in theory, it would be nice to allow chutes to be attackable; however, bugs in the code
 133    ; can cause the rider to be left in a bad state (eg, no-collision bit set) if the chute dies
 134    ; prematurely. so disable this for now, and give it a ton of health to prevent splash damage
 135    ; from killing it. (srj)
 136    KindOf              = PRELOAD PARACHUTE UNATTACKABLE
 137  
 138    ; *** AUDIO Parameters ***
 139  
 140    ; *** ENGINEERING Parameters ***
 141    Behavior = AIUpdateInterface ModuleTag_02
 142      ; nothing
 143    End
 144    Locomotor = SET_NORMAL CrateParachuteLocomotor
 145    Locomotor = SET_FREEFALL CrateFreeFallLocomotor
 146  
 147    Body = ActiveBody ModuleTag_03
 148      MaxHealth       = 100000.0
 149      InitialHealth   = 100000.0
 150    End
 151  
 152    Behavior = PhysicsBehavior ModuleTag_04
 153      Mass = 5.0
 154    End
 155  
 156    Behavior = ParachuteContain ModuleTag_05
 157      PitchRateMax        = 60    ; deg/sec
 158      RollRateMax         = 60    ; deg/sec
 159      LowAltitudeDamping  = 0.2   ; how much to damp swaying when we get "close" to the ground
 160      ParachuteOpenDist   = 12.5  ; how far we have to fall 'till we open our 'chute
 161      AllowInsideKindOf   = PARACHUTABLE
 162      ParachuteOpenSound  = ParachuteOpen
 163    End
 164  
 165    Behavior = SlowDeathBehavior ModuleTag_06
 166      SinkDelay = 1000
 167      SinkRate = 1     ; in Dist/Sec
 168      DestructionDelay = 4000
 169    End
 170  
 171    RadarPriority = NOT_ON_RADAR
 172    Geometry = CYLINDER
 173    GeometryMajorRadius = 15.0
 174    GeometryHeight = 10.0    
 175    GeometryIsSmall = Yes
 176    Shadow = SHADOW_VOLUME
 177  
 178  End
 179  
 180  ;------------------------------------------------------------------------------
 181  Object AmericaInfantryColonelBurton
 182  
 183    ; *** ART Parameters ***
 184    SelectPortrait         = SABurton_L
 185    ButtonImage            = SABurton
 186    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
 187  
 188  
 189    Draw = W3DModelDraw ModuleTag_01
 190    OkToChangeModelColor = Yes
 191  
 192      ; idle
 193      DefaultConditionState
 194        Model               = AIHERO_SKN
 195        IdleAnimation       = AIHERO_SKL.AIHERO_STA 0 25
 196        IdleAnimation       = AIHERO_SKL.AIHERO_IDA
 197        IdleAnimation       = AIHERO_SKL.AIHERO_IDB
 198        AnimationMode       = ONCE
 199        TransitionKey       = TRANS_Stand
 200        WeaponFireFXBone    = PRIMARY Muzzle
 201        WeaponMuzzleFlash   = PRIMARY MuzzleFX
 202        WeaponMuzzleFlash   = SECONDARY NONE
 203        HideSubObject     = MUZZLEFX01
 204      End
 205   
 206      
 207      ; injured idle
 208      ConditionState        = REALLYDAMAGED
 209        IdleAnimation       = AIHERO_SKL.AIHERO_ISTA 0 30
 210        IdleAnimation       = AIHERO_SKL.AIHERO_IIDA
 211        IdleAnimation       = AIHERO_SKL.AIHERO_IIDB
 212        AnimationMode       = ONCE
 213        TransitionKey       = TRANS_StandInjured
 214      End
 215  
 216  
 217      TransitionState     = TRANS_Stand TRANS_StandInjured
 218        Animation         = AIHERO_SKL.AIHERO_ISTAHIT
 219        AnimationMode     = ONCE
 220      End
 221      
 222      ; moving
 223      ConditionState        = MOVING
 224        Animation           = AIHERO_SKL.AIHERO_RNA 26
 225        AnimationMode       = LOOP
 226        Flags               = RANDOMSTART
 227        TransitionKey       = TRANS_Walking
 228        ParticleSysBone     = None InfantryDustTrails
 229        HideSubObject     = MUZZLEFX01
 230      End
 231      AliasConditionState = MOVING FIRING_A
 232      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
 233      AliasConditionState = MOVING RELOADING_A
 234      AliasConditionState = MOVING FIRING_B
 235      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
 236      AliasConditionState = MOVING RELOADING_B
 237  
 238      ; injured moving
 239      ConditionState     = MOVING REALLYDAMAGED
 240        Animation        = AIHERO_SKL.AIHERO_IRNA 26
 241        AnimationMode    = LOOP
 242        Flags            = RANDOMSTART
 243        TransitionKey    = TRANS_WalkingInjured
 244        ParticleSysBone  = None InfantryDustTrails
 245        HideSubObject     = MUZZLEFX01
 246      End
 247      AliasConditionState = MOVING FIRING_A REALLYDAMAGED
 248      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
 249      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
 250      AliasConditionState = MOVING FIRING_B REALLYDAMAGED
 251      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
 252      AliasConditionState = MOVING RELOADING_B REALLYDAMAGED
 253  
 254      ; Firing animation
 255      ConditionState      = FIRING_A
 256        Animation         = AIHERO_SKL.AIHERO_ATA
 257        AnimationMode     = ONCE
 258        AnimationSpeedFactorRange = 1.5 1.5
 259        TransitionKey     = TRANS_FiringA
 260      End
 261  
 262      ConditionState      = BETWEEN_FIRING_SHOTS_A
 263        Animation         = AIHERO_SKL.AIHERO_ATA
 264        AnimationMode     = MANUAL
 265        Flags             = START_FRAME_LAST
 266        WaitForStateToFinishIfPossible = TRANS_FiringA
 267      End
 268      AliasConditionState = RELOADING_A
 269  
 270      ; Injured Firing animation
 271      ConditionState      = FIRING_A REALLYDAMAGED
 272        Animation         = AIHERO_SKL.AIHERO_IATA
 273        AnimationMode     = ONCE
 274        AnimationSpeedFactorRange = 1.5 1.5
 275        TransitionKey     = TRANS_FiringAInjured
 276      End
 277  
 278      ConditionState      = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
 279        Animation         = AIHERO_SKL.AIHERO_IATA
 280        AnimationMode     = MANUAL
 281        Flags             = START_FRAME_LAST
 282        WaitForStateToFinishIfPossible = TRANS_FiringAInjured
 283      End
 284      AliasConditionState = RELOADING_A REALLYDAMAGED
 285  
 286      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
 287        Animation         = AIHERO_SKL.AIHERO_IATAHIT
 288        AnimationMode     = ONCE
 289      End
 290  
 291      ; Placing charge animation
 292      ConditionState      = UNPACKING
 293        Animation         = AIHERO_SKL.AIHERO_ATB1
 294        AnimationMode     = ONCE
 295      End
 296      AliasConditionState = MOVING UNPACKING
 297  
 298      ; Injured Placing charge animation
 299      ConditionState      = UNPACKING REALLYDAMAGED
 300        Animation         = AIHERO_SKL.AIHERO_IATB1
 301        AnimationMode     = ONCE
 302      End
 303      AliasConditionState = MOVING UNPACKING REALLYDAMAGED
 304  
 305      ; Stab animations
 306      ConditionState      = PREATTACK_B 
 307        Animation         = AIHERO_SKL.AIHERO_ATC
 308        AnimationMode     = ONCE
 309        TransitionKey     = TRANS_Stabbing
 310        HideSubObject     = MUZZLEFX01
 311      End
 312      AliasConditionState = PREATTACK_B MOVING
 313      AliasConditionState = PREATTACK_B FIRING_B
 314      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
 315  
 316      ConditionState      = FIRING_B
 317        Animation         = AIHERO_SKL.AIHERO_ATC
 318        AnimationMode     = MANUAL
 319        Flags             = START_FRAME_LAST
 320        TransitionKey     = TRANS_Stabbing
 321        HideSubObject     = MUZZLEFX01
 322      End
 323      AliasConditionState = BETWEEN_FIRING_SHOTS_B
 324      AliasConditionState = RELOADING_B
 325  
 326      TransitionState     = TRANS_Stabbing TRANS_Stand
 327        Animation         = AIHERO_SKL.AIHERO_ATC2
 328        AnimationMode     = ONCE
 329      End
 330  
 331      ; Injured Stab animations
 332      ConditionState      = PREATTACK_B REALLYDAMAGED 
 333        Animation         = AIHERO_SKL.AIHERO_IATC1
 334        AnimationMode     = ONCE
 335        TransitionKey     = TRANS_StabbingInjured
 336        HideSubObject     = MUZZLEFX01
 337      End
 338      AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
 339      AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
 340      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
 341  
 342      ConditionState      = FIRING_B REALLYDAMAGED
 343        Animation         = AIHERO_SKL.AIHERO_IATC2
 344        AnimationMode     = MANUAL
 345        Flags             = START_FRAME_LAST
 346        TransitionKey     = TRANS_StabbingInjured
 347        HideSubObject     = MUZZLEFX01
 348      End
 349      AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
 350      AliasConditionState = RELOADING_B REALLYDAMAGED
 351  
 352      TransitionState     = TRANS_StabbingInjured TRANS_StandInjured
 353        Animation         = AIHERO_SKL.AIHERO_IATC2
 354        AnimationMode     = ONCE
 355      End
 356  
 357      ; cheering
 358      ConditionState      = SPECIAL_CHEERING
 359        Animation         = AIHERO_SKL.AIHERO_CHA
 360        AnimationMode     = ONCE
 361      End
 362      
 363      ; injured cheering
 364      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
 365        Animation         = AIHERO_SKL.AIHERO_ICHA
 366        AnimationMode     = ONCE
 367      End
 368      
 369      ; climbing
 370      ConditionState      = CLIMBING
 371        Animation         = AIHERO_SKL.AIHERO_CLMID
 372        AnimationMode     = LOOP
 373        TransitionKey     = TRANS_Climbing
 374      End
 375      AliasConditionState = RAPPELLING
 376      AliasConditionState = CLIMBING REALLYDAMAGED
 377      AliasConditionState = RAPPELLING REALLYDAMAGED
 378  
 379      ConditionState      = CLIMBING MOVING
 380        Animation         = AIHERO_SKL.AIHERO_CLMUP
 381        AnimationMode     = LOOP
 382        TransitionKey     = TRANS_Climbing
 383      End
 384      AliasConditionState = CLIMBING MOVING REALLYDAMAGED
 385  
 386      ConditionState      = RAPPELLING MOVING
 387        Animation         = AIHERO_SKL.AIHERO_CLMUP
 388        AnimationMode     = LOOP_BACKWARDS
 389        TransitionKey     = TRANS_Climbing
 390      End
 391      AliasConditionState = RAPPELLING MOVING REALLYDAMAGED
 392  
 393  ; these transitions don't really work well with our code. leave 'em out.
 394  ;    TransitionState     = TRANS_Climbing TRANS_Stand
 395  ;      Animation         = AIHERO_SKL.AIHERO_CLMST
 396  ;      AnimationMode     = ONCE
 397  ;    End
 398  ;
 399  ;    TransitionState     = TRANS_Stand TRANS_Climbing
 400  ;      Animation         = AIHERO_SKL.AIHERO_CLMST
 401  ;      AnimationMode     = ONCE_BACKWARDS
 402  ;    End
 403  
 404      ; dying anims
 405      ConditionState      = DYING
 406        Animation         = AIHERO_SKL.AIHERO_DTA
 407        Animation         = AIHERO_SKL.AIHERO_DTB
 408        Animation         = AIHero_SKL.AIHero_IDTA
 409        Animation         = AIHero_SKL.AIHero_IDTB
 410        AnimationMode     = ONCE
 411        TransitionKey     = TRANS_Dying
 412      End
 413      AliasConditionState = RAPPELLING DYING
 414      AliasConditionState = CLIMBING DYING
 415  
 416      TransitionState     = TRANS_Dying TRANS_Flailing
 417        Animation         = AIHERO_SKL.AIHERO_ADTG21
 418        AnimationMode     = ONCE
 419      End
 420  
 421      ConditionState      = DYING EXPLODED_FLAILING
 422        Animation         = AIHERO_SKL.AIHERO_ADTG22
 423        AnimationMode     = LOOP
 424        TransitionKey     = TRANS_Flailing
 425      End
 426  
 427      ConditionState      = DYING EXPLODED_BOUNCING
 428        Animation         = AIHERO_SKL.AIHERO_ADTG23
 429        AnimationMode     = ONCE
 430        TransitionKey     = None
 431      End
 432  
 433      ; misc anims
 434      ConditionState      = FREEFALL
 435        Animation         = AIHERO_SKL.AIHERO_PFL
 436        AnimationMode     = LOOP
 437        TransitionKey     = TRANS_Falling
 438      End
 439      AliasConditionState = FREEFALL REALLYDAMAGED
 440      AliasConditionState = FREEFALL DYING
 441  
 442      ConditionState      = PARACHUTING
 443        Animation         = AIHERO_SKL.AIHERO_PHG
 444        AnimationMode     = LOOP
 445        TransitionKey     = TRANS_Chute
 446      End
 447      AliasConditionState = PARACHUTING REALLYDAMAGED
 448      AliasConditionState = PARACHUTING DYING
 449  
 450      TransitionState     = TRANS_Falling TRANS_Chute
 451        Animation         = AIHERO_SKL.AIHERO_POP
 452        AnimationMode     = ONCE
 453        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
 454      End
 455  
 456      TransitionState     = TRANS_Chute TRANS_Stand
 457        Animation         = AIHERO_SKL.AIHERO_PTD
 458        AnimationMode     = ONCE
 459      End
 460  
 461      TransitionState     = TRANS_Chute TRANS_StandInjured
 462        Animation         = AIHERO_SKL.AIHERO_PTD
 463        AnimationMode     = ONCE
 464      End
 465  
 466      ; note: there are no surrender states because Col. Burton does not surrender.
 467      ; Death before dishonor!
 468  
 469    End
 470  
 471    ; ***DESIGN parameters ***
 472    DisplayName         = OBJECT:ColonelBurton
 473    Side                = America
 474    EditorSorting       = INFANTRY
 475    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
 476    WeaponSet
 477      Conditions          = None 
 478      Weapon              = PRIMARY     ColonelBurtonSniperRifleWeapon
 479      Weapon              = SECONDARY   ColonelBurtonKnifeWeapon
 480      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
 481      AutoChooseSources   = SECONDARY   NONE
 482    End
 483    ArmorSet
 484      Conditions      = None
 485      Armor           = HumanArmor
 486      DamageFX        = InfantryDamageFX
 487    End
 488    VisionRange         = 150
 489    ShroudClearingRange = 500
 490    Prerequisites
 491      Object = AmericaBarracks
 492      Object = AmericaStrategyCenter
 493    End
 494    BuildCost = 1500
 495    BuildTime = 20.0          ;in seconds  
 496  
 497    ExperienceValue     = 50 100 100 150  ; Experience point value at each level
 498    ExperienceRequired  = 0 200 300 600   ; Experience points needed to gain each level
 499    IsTrainable         = Yes             ; Can gain experience
 500    CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
 501    CommandSet          = AmericaInfantryColonelBurtonCommandSet
 502  
 503    MaxSimultaneousOfType = 1
 504  
 505    ; *** AUDIO Parameters ***
 506    VoiceSelect = ColonelBurtonVoiceSelect
 507    VoiceMove = ColonelBurtonVoiceMove
 508    VoiceAttack = ColonelBurtonVoiceAttack
 509    VoiceFear = ColonelBurtonVoiceFear
 510    VoiceGuard = ColonelBurtonVoiceMove
 511    SoundDie = ColonelBurtonVoiceDie
 512    SoundDieFire = DieByFireUSA
 513    SoundDieToxin = DieByToxinUSA
 514    SoundStealthOn = StealthOn
 515    SoundStealthOff = StealthOff
 516    ;SoundAmbient = ColonelBurtonSoundAmbient
 517  
 518    UnitSpecificSounds
 519      VoiceMelee = ColonelBurtonVoiceAttackKnife
 520      VoiceCreate           = ColonelBurtonVoiceCreate
 521      VoiceGarrison         = ColonelBurtonVoiceGarrison
 522      VoiceEnter            = ColonelBurtonVoiceMove
 523      VoiceEnterHostile     = ColonelBurtonVoiceMove
 524      VoiceGetHealed        = ColonelBurtonVoiceMove
 525    End
 526  
 527    ; *** ENGINEERING Parameters ***
 528    RadarPriority = UNIT
 529    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE HERO
 530  
 531    Body = ActiveBody ModuleTag_02
 532      MaxHealth       = 200.0
 533      InitialHealth   = 200.0
 534    End
 535  
 536    Behavior = AIUpdateInterface ModuleTag_03
 537      AutoAcquireEnemiesWhenIdle = Yes
 538    End
 539  
 540    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
 541    End
 542  
 543    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
 544      ScanRate = 1000 ; once a second.
 545      ScanRange = 300 ;
 546      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
 547      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
 548    End
 549  
 550    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor ColonelBurtonCliffLocomotor
 551  
 552    Behavior = PhysicsBehavior ModuleTag_06
 553      Mass = 5.0
 554    End
 555  
 556    Behavior = StealthUpdate ModuleTag_07
 557      StealthDelay                = 2000 ; msec
 558      StealthForbiddenConditions  = FIRING_PRIMARY
 559      HintDetectableConditions    = IS_FIRING_WEAPON 
 560      FriendlyOpacityMin          = 50.0%
 561      FriendlyOpacityMax          = 100.0%
 562      InnateStealth               = Yes
 563      OrderIdleEnemiesToAttackMeUponReveal  = Yes
 564    End
 565  
 566    Behavior = SpecialAbility ModuleTag_08
 567      SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
 568      UpdateModuleStartsAttack = Yes
 569      InitiateSound             = ColonelBurtonVoicePlantRemoteCharge
 570    End
 571    Behavior = SpecialAbilityUpdate ModuleTag_09
 572      SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
 573      StartAbilityRange = 0.0
 574      PreparationTime = 0
 575      SpecialObject = RemoteC4Charge
 576      MaxSpecialObjects = 8
 577      SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
 578      AlwaysValidateSpecialObjects = Yes      ;Coupled with the above setting, this one is necessary for code optimization.
 579      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
 580      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
 581      UnpackTime              = 5500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
 582      PackTime                = 0
 583      SkipPackingWithNoTarget = Yes           ;When yes, the packing/unpacking will be ignored when detonating charges.
 584      FlipOwnerAfterUnpacking = Yes
 585      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
 586      UnpackSound               = ColonelBurtonPlantCharge
 587      LoseStealthOnTrigger      = Yes
 588      PreTriggerUnstealthTime   = 5000 ; in milliseconds
 589    End
 590  
 591    Behavior = SpecialAbility ModuleTag_10
 592      SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
 593      UpdateModuleStartsAttack = Yes
 594      InitiateSound             = ColonelBurtonVoicePlantTimedCharge
 595    End
 596    Behavior = SpecialAbilityUpdate ModuleTag_11
 597      SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
 598      StartAbilityRange = 0.0
 599      PreparationTime = 0
 600      SpecialObject = TimedC4Charge
 601      MaxSpecialObjects = 10
 602      SpecialObjectsPersistWhenOwnerDies = Yes 
 603      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
 604      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
 605      UnpackTime              = 5500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
 606      FlipOwnerAfterUnpacking = Yes
 607      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
 608      UnpackSound               = ColonelBurtonPlantCharge
 609      LoseStealthOnTrigger      = Yes
 610      PreTriggerUnstealthTime   = 5000 ; in milliseconds
 611  
 612    End
 613   
 614    Behavior = ExperienceScalarUpgrade ModuleTag_12
 615      TriggeredBy   = Upgrade_AmericaAdvancedTraining
 616      AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
 617    End
 618   
 619    ;Hero units can't be squished!
 620    ;Behavior = SquishCollide ModuleTag_13
 621    ;  ;nothing
 622    ;End
 623  
 624  
 625  ; --- begin Death modules ---
 626    Behavior = SlowDeathBehavior ModuleTag_Death01
 627      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
 628      SinkDelay           = 3000
 629      SinkRate            = 0.5     ; in Dist/Sec
 630      DestructionDelay    = 8000
 631      FX                  = INITIAL FX_GIDie
 632    End
 633    Behavior = SlowDeathBehavior ModuleTag_Death02
 634      DeathTypes          = NONE +CRUSHED +SPLATTED
 635      SinkDelay           = 3000
 636      SinkRate            = 0.5     ; in Dist/Sec
 637      DestructionDelay    = 8000
 638      FX                  = INITIAL FX_GIDieCrushed
 639    End
 640    Behavior = SlowDeathBehavior ModuleTag_Death03
 641      DeathTypes          = NONE +EXPLODED
 642      SinkDelay           = 3000
 643      SinkRate            = 0.5     ; in Dist/Sec
 644      DestructionDelay    = 8000
 645      FX                  = INITIAL FX_GIDie
 646      FlingForce          = 8
 647      FlingForceVariance  = 3
 648      FlingPitch          = 60
 649      FlingPitchVariance  = 10
 650    End
 651    Behavior = SlowDeathBehavior ModuleTag_Death04
 652      DeathTypes          = NONE +BURNED
 653      DestructionDelay    = 0
 654      FX                  = INITIAL FX_GIDie
 655      OCL                 = INITIAL OCL_FlamingInfantry
 656    End
 657    Behavior = SlowDeathBehavior ModuleTag_Death05
 658      DeathTypes          = NONE +POISONED
 659      DestructionDelay    = 0
 660      FX                  = INITIAL FX_GIDie
 661      OCL                 = INITIAL OCL_ToxicInfantry
 662    End
 663      Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
 664      DeathTypes          = NONE +POISONED_BETA
 665      DestructionDelay    = 0
 666      FX                  = INITIAL FX_GIDie
 667      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
 668    End
 669  ; --- end Death modules ---
 670  
 671    Behavior = PoisonedBehavior ModuleTag_18
 672      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
 673      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
 674    End
 675   
 676    Geometry = CYLINDER
 677    GeometryMajorRadius = 10.0
 678    GeometryMinorRadius = 10.0
 679    GeometryHeight = 12.0
 680    GeometryIsSmall = Yes
 681    Shadow = SHADOW_DECAL
 682    ShadowSizeX = 14
 683    ShadowSizeY = 14
 684    ShadowTexture = ShadowI
 685    BuildCompletion = APPEARS_AT_RALLY_POINT
 686  
 687  End
 688  
 689  ;------------------------------------------------------------------------------
 690  Object AmericaVehicleHumvee
 691  
 692    ; *** ART Parameters ***
 693    SelectPortrait         = SAHummer_L
 694    ButtonImage            = SAHummer
 695    
 696    UpgradeCameo1 = Upgrade_AmericaBattleDrone
 697    UpgradeCameo2 = Upgrade_AmericaScoutDrone
 698    UpgradeCameo3 = Upgrade_AmericaTOWMissile
 699    UpgradeCameo4 = Upgrade_AmericaAdvancedTraining
 700    ;UpgradeCameo5 = XXX
 701    
 702    Draw = W3DTruckDraw ModuleTag_01
 703      OkToChangeModelColor = Yes
 704  
 705      ConditionState = NONE
 706        Model = AVHUMMER
 707        Turret = Turret
 708        ShowSubObject = Turret
 709        HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01
 710        WeaponFireFXBone = PRIMARY Muzzle
 711        WeaponMuzzleFlash = PRIMARY MuzzleFX
 712      End
 713  
 714      ConditionState = REALLYDAMAGED
 715        Model = AVHUMMER_d
 716        Turret = Turret
 717        ShowSubObject = Turret
 718        HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01
 719        WeaponFireFXBone = PRIMARY Muzzle
 720        WeaponMuzzleFlash = PRIMARY MuzzleFX
 721      End
 722  
 723      ConditionState = WEAPONSET_PLAYER_UPGRADE
 724        Model = AVHUMMER
 725        Turret = TurretUp01
 726        HideSubObject = Turret MuzzleFX01
 727        ShowSubObject = TurretUp01 Housecolor03
 728        WeaponFireFXBone = PRIMARY MuzzleUp
 729        WeaponMuzzleFlash = PRIMARY MuzzleFXUp
 730        WeaponFireFXBone = SECONDARY WeaponB
 731        WeaponLaunchBone = SECONDARY WeaponB
 732        WeaponFireFXBone = TERTIARY WeaponB
 733        WeaponLaunchBone = TERTIARY WeaponB
 734      End
 735  
 736      ConditionState = REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE
 737        Model = AVHUMMER_d
 738        Turret = TurretUp01
 739        HideSubObject = Turret MuzzleFX01
 740        ShowSubObject = TurretUp01 Housecolor03
 741        WeaponFireFXBone = PRIMARY MuzzleUp
 742        WeaponMuzzleFlash = PRIMARY MuzzleFXUp
 743        WeaponFireFXBone = SECONDARY WeaponB
 744        WeaponLaunchBone = SECONDARY WeaponB
 745        WeaponFireFXBone = TERTIARY WeaponB
 746        WeaponLaunchBone = TERTIARY WeaponB
 747      End
 748  
 749      TrackMarks = EXTireTrack.tga
 750  
 751      Dust = RocketBuggyDust
 752      DirtSpray = RocketBuggyDirtSpray
 753      PowerslideSpray = RocketBuggyDirtPowerSlide
 754  
 755      ; These parameters are only used if the model has a separate suspension, 
 756      ; and the locomotor has HasSuspension = Yes.
 757      LeftFrontTireBone = Tire01
 758      RightFrontTireBone = Tire02
 759      LeftRearTireBone = Tire03
 760      RightRearTireBone = Tire04
 761      TireRotationMultiplier = 0.2   ; this * speed = rotation.
 762      PowerslideRotationAddition = 1.25   ; This speed is added to the rotation speed when powersliding.
 763  
 764    End
 765  
 766    ; ***DESIGN parameters ***
 767    DisplayName           = OBJECT:Humvee
 768    Side                  = America
 769    EditorSorting         = VEHICLE
 770    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
 771    WeaponSet
 772      Conditions = None 
 773      Weapon = PRIMARY HumveeGun
 774    End
 775    WeaponSet
 776      Conditions = PLAYER_UPGRADE 
 777      Weapon = PRIMARY HumveeGun
 778      Weapon = SECONDARY HumveeMissileWeapon
 779      Weapon = TERTIARY HumveeMissileWeaponAir
 780      PreferredAgainst = TERTIARY     AIRCRAFT
 781    End
 782    ArmorSet
 783      Conditions      = None
 784      Armor           = HumveeArmor
 785      DamageFX        = TruckDamageFX
 786    End
 787    BuildCost       = 700
 788    BuildTime       = 10.0          ;in seconds    
 789    VisionRange     = 150
 790    ShroudClearingRange = 320
 791    Prerequisites
 792      Object = AmericaWarFactory
 793    End
 794    ExperienceValue = 50 50 100 150   ;Experience point value at each level
 795    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
 796    IsTrainable = Yes             ;Can gain experience
 797    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
 798    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
 799    CommandSet      = AmericaVehicleHumveeCommandSet
 800  
 801    ; *** AUDIO Parameters ***
 802    VoiceSelect = HumveeVoiceSelect
 803    VoiceMove = HumveeVoiceMove
 804    VoiceGuard = HumveeVoiceMove
 805    VoiceAttack = HumveeVoiceAttack
 806    VoiceAttackAir = HumveeVoiceAttackTOW
 807    SoundMoveStart = HumveeMoveStart
 808    SoundMoveStartDamaged = HumveeMoveStart
 809    SoundEnter = HumveeEnter
 810    SoundExit = HumveeExit
 811  
 812    UnitSpecificSounds
 813      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
 814      ;TurretMoveStart    = NoSound
 815      VoiceCreate         = HumveeVoiceCreate
 816      TurretMoveLoop      = TurretMoveLoop
 817      SoundEject          = PilotSoundEject
 818      VoiceEject          = PilotVoiceEject
 819      VoiceCrush          = HumveeVoiceCrush
 820    ; Required for the W3DTruckDraw module
 821      TruckLandingSound = RocketBuggyLand
 822      TruckPowerslideSound = RocketBuggyPowerslide
 823      VoiceUnload = HumveeVoiceUnload
 824      VoiceEnter = HumveeVoiceMove
 825    End
 826  
 827    Behavior = AIUpdateInterface ModuleTag_20
 828      AutoAcquireEnemiesWhenIdle = Yes
 829      MoodAttackCheckRate        = 250
 830    End
 831  
 832    ; *** ENGINEERING Parameters ***
 833    RadarPriority = UNIT
 834    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
 835  
 836    Body = ActiveBody ModuleTag_02
 837      MaxHealth       = 240.0
 838      InitialHealth   = 240.0
 839    End
 840    Behavior = TransportAIUpdate ModuleTag_03
 841      Turret
 842        TurretTurnRate = 180
 843        RecenterTime = 5000   ; how long to wait during idle before recentering
 844        ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
 845      End
 846      AutoAcquireEnemiesWhenIdle = Yes
 847    End
 848    Locomotor = SET_NORMAL HumveeLocomotor
 849  
 850    Behavior = PhysicsBehavior ModuleTag_04
 851      Mass = 50.0
 852    End
 853  
 854    Behavior = TransportContain  ModuleTag_05
 855      PassengersAllowedToFire = Yes
 856      Slots                  = 5
 857      ;EnterSound          = GarrisonEnter
 858      ;ExitSound           = GarrisonExit
 859      DamagePercentToUnits = 100% ;10%
 860      AllowInsideKindOf    = INFANTRY
 861      AllowAlliesInside    = Yes
 862      AllowNeutralInside   = No
 863      AllowEnemiesInside   = No
 864      ExitDelay          = 250
 865      NumberOfExitPaths      = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
 866      GoAggressiveOnExit      = Yes ; AI Will tell people to set their mood to Aggressive on exiting
 867    End
 868  
 869    Behavior = ObjectCreationUpgrade ModuleTag_06
 870      UpgradeObject = OCL_AmericanBattleDrone
 871      TriggeredBy   = Upgrade_AmericaBattleDrone
 872      ConflictsWith = Upgrade_AmericaScoutDrone
 873    End
 874    Behavior = ObjectCreationUpgrade ModuleTag_07
 875      UpgradeObject = OCL_AmericanScoutDrone
 876      TriggeredBy   = Upgrade_AmericaScoutDrone
 877      ConflictsWith = Upgrade_AmericaBattleDrone
 878    End
 879    Behavior = ProductionUpdate ModuleTag_08
 880      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
 881    End
 882  
 883    Behavior = WeaponSetUpgrade ModuleTag_09
 884      TriggeredBy = Upgrade_AmericaTOWMissile
 885    End
 886    Behavior = ExperienceScalarUpgrade ModuleTag_10
 887      TriggeredBy = Upgrade_AmericaAdvancedTraining
 888      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
 889    End
 890  
 891    Behavior = SlowDeathBehavior ModuleTag_11
 892      DeathTypes = ALL -CRUSHED -SPLATTED
 893      ProbabilityModifier = 25
 894      DestructionDelay = 1
 895      OCL = INITIAL  OCL_InitialHumveeDebris
 896      FX  = FINAL    FX_BattleMasterExplosionOneFinal
 897      OCL = FINAL    OCL_FinalHumveeDebris
 898    End
 899  
 900    Behavior = SlowDeathBehavior ModuleTag_14
 901      DeathTypes = ALL -CRUSHED -SPLATTED
 902      ProbabilityModifier = 25
 903      DestructionDelay = 500
 904      FX  = INITIAL  FX_OverlordSmoke
 905      OCL = INITIAL  OCL_InitialHumveeDebris
 906      FX  = FINAL    FX_HumveeExplosionOneFinal
 907      OCL = FINAL    OCL_FinalHumveeDebris
 908    End
 909  
 910    Behavior = DestroyDie ModuleTag_12
 911      DeathTypes = NONE +CRUSHED +SPLATTED
 912    End
 913  
 914    Behavior = FXListDie ModuleTag_13
 915      DeathTypes = NONE +CRUSHED +SPLATTED
 916      DeathFX = FX_CarCrush
 917    End
 918  
 919    Behavior = CreateCrateDie ModuleTag_CratesChange
 920      CrateData = SalvageCrateData
 921      ;CrateData = EliteTankCrateData
 922      ;CrateData = HeroicTankCrateData
 923    End
 924  
 925  ; This is commented out per hotlist request 10/9 ML
 926  ;  Behavior = CreateObjectDie ModuleTag_15
 927  ;    DeathTypes = ALL -CRUSHED -SPLATTED
 928  ;    CreationList = OCL_AmericanRangerDebris01
 929  ;    ExemptStatus = HIJACKED
 930  ;  End
 931  
 932    Behavior = EjectPilotDie ModuleTag_16
 933      DeathTypes = ALL -CRUSHED -SPLATTED
 934      ExemptStatus = HIJACKED
 935      ; The following added out per hotlist request 10/9 as above ML
 936      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
 937      GroundCreationList = OCL_EjectPilotOnGround
 938      AirCreationList = OCL_EjectPilotViaParachute
 939    End
 940  
 941    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
 942      DetectionRate             = 500
 943      DetectionRange           = 75
 944      CanDetectWhileGarrisoned  = No
 945      CanDetectWhileContained   = No
 946      ExtraRequiredKindOf       = BOAT
 947    End
 948  
 949    Behavior = TransitionDamageFX ModuleTag_17
 950      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
 951      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_HumveeDamageTransition ;FX_BattleMasterDamageTransition
 952    End
 953  
 954    Behavior = FlammableUpdate ModuleTag_21
 955      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
 956      AflameDamageAmount = 3       ; taking this much damage...
 957      AflameDamageDelay = 500       ; this often.
 958    End
 959  
 960    Geometry = BOX
 961    GeometryMajorRadius = 14.0
 962    GeometryMinorRadius = 7.0
 963    GeometryHeight = 11.5     
 964    GeometryIsSmall = Yes 
 965    Shadow = SHADOW_VOLUME
 966    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
 967  
 968  End
 969  
 970  ;------------------------------------------------------------------------------
 971  Object HumveeMissile
 972  
 973    ; *** ART Parameters ***
 974    Draw = W3DModelDraw ModuleTag_01
 975      OkToChangeModelColor = Yes
 976      DefaultConditionState
 977        Model = UVRockBug_m
 978      End
 979    End
 980  
 981    ; ***DESIGN parameters ***
 982  
 983    EditorSorting   = SYSTEM
 984    VisionRange = 0.0  
 985    ArmorSet
 986      Conditions      = None
 987      Armor           = ProjectileArmor
 988      DamageFX        = None
 989    End
 990  
 991    ; *** ENGINEERING Parameters ***
 992    KindOf = PROJECTILE SMALL_MISSILE
 993    Body = ActiveBody ModuleTag_02
 994      MaxHealth       = 100.0
 995      InitialHealth   = 100.0
 996    End
 997  
 998  ; ---- begin Projectile death behaviors
 999    Behavior = InstantDeathBehavior DeathModuleTag_01
1000      DeathTypes = NONE +DETONATED
1001      ; we detonated normally.
1002      ; no FX, just quiet destroy ourselves
1003    End
1004    Behavior = InstantDeathBehavior DeathModuleTag_02
1005      DeathTypes = NONE +LASERED
1006      ; shot down by laser.
1007      FX         = FX_GenericMissileDisintegrate
1008      OCL        = OCL_GenericMissileDisintegrate
1009    End
1010    Behavior = InstantDeathBehavior DeathModuleTag_03
1011      DeathTypes = ALL -LASERED -DETONATED
1012      ; shot down by nonlaser.
1013      FX         = FX_GenericMissileDeath
1014    End
1015  ; ---- end Projectile death behaviors
1016     
1017    Behavior = PhysicsBehavior ModuleTag_06
1018      Mass = 1
1019    End
1020    Behavior = MissileAIUpdate ModuleTag_07
1021      TryToFollowTarget = No 
1022      FuelLifetime = 1000
1023      InitialVelocity = 150                ; in dist/sec
1024      IgnitionDelay = 0
1025      DistanceToTravelBeforeTurning = 3
1026      IgnitionFX = FX_HumveeMissileIgnition
1027    End
1028    Locomotor = SET_NORMAL RocketBuggyMissileLocomotor
1029  
1030    Geometry = Sphere
1031    GeometryIsSmall = Yes
1032    GeometryMajorRadius = 2.0
1033  
1034  End
1035  
1036  ;------------------------------------------------------------------------------
1037  Object AmericaVehicleHumveeDeadHull
1038  
1039    ; *** ART Parameters ***
1040    Draw = W3DModelDraw ModuleTag_01
1041      OkToChangeModelColor = Yes
1042  
1043      DefaultConditionState
1044        Model = AVHUMMER_D1
1045      End
1046    End
1047  
1048    ; ***DESIGN parameters ***
1049    Side = America
1050    EditorSorting   = SYSTEM
1051    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
1052  
1053    ; *** AUDIO Parameters ***
1054    ; *** ENGINEERING Parameters ***
1055    RadarPriority = UNIT
1056    KindOf = CAN_CAST_REFLECTIONS IMMOBILE NO_COLLIDE HULK
1057  
1058    Body = ActiveBody ModuleTag_02
1059      MaxHealth       = 1.0
1060      InitialHealth   = 1.0
1061    End
1062  
1063  
1064    Behavior = PhysicsBehavior ModuleTag_03
1065      Mass = 50
1066      AllowBouncing = Yes
1067    End
1068  
1069    Behavior = LifetimeUpdate ModuleTag_04
1070      MinLifetime = 0   ; min lifetime in msec
1071      MaxLifetime = 0   ; max lifetime in msec
1072    End
1073  
1074    Behavior = SlowDeathBehavior ModuleTag_05
1075      SinkDelay = 14000
1076      SinkRate = 2     ; in Dist/Sec
1077      DestructionDelay = 20000
1078    End
1079  
1080    Behavior = TransitionDamageFX ModuleTag_06
1081      RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
1082    End
1083  
1084    Geometry = BOX
1085    GeometryMajorRadius = 9.0
1086    GeometryMinorRadius = 6.0
1087    GeometryHeight = 7.5     
1088    GeometryIsSmall = Yes    
1089  
1090  End
1091  
1092  ;----------------------------------------------------------
1093  Object AmericaVehicleTomahawk
1094  
1095    ; *** ART Parameters ***
1096    SelectPortrait         = SACTomahawk_L
1097    ButtonImage            = SACTomahawk
1098    
1099    UpgradeCameo1 = Upgrade_AmericaScoutDrone
1100    UpgradeCameo2 = Upgrade_AmericaBattleDrone
1101    UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
1102    UpgradeCameo4 = Upgrade_AmericaTomahawkRemoteControl
1103    ;UpgradeCameo5 = XXX
1104    
1105    Draw = W3DTankDraw ModuleTag_01
1106      OkToChangeModelColor = Yes
1107        
1108      ProjectileBoneFeedbackEnabledSlots = PRIMARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
1109  
1110      DefaultConditionState
1111        Model = AVTomahawk
1112        Turret = TURRET
1113        TurretPitch = TURRETEL
1114        WeaponLaunchBone = PRIMARY WeaponA
1115        WeaponHideShowBone = PRIMARY MISSILE
1116      End
1117  
1118      ConditionState = REALLYDAMAGED
1119        Model = AVTomahawk_D
1120      End
1121      AliasConditionState = RUBBLE
1122  
1123      TrackMarks           = EXTnkTrack.tga
1124  
1125    End
1126  
1127    ; ***DESIGN parameters ***
1128    DisplayName      = OBJECT:Tomahawk
1129    Side = America
1130    EditorSorting   = VEHICLE
1131    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
1132    BuildCost       = 1200
1133    BuildTime       = 20.0          ;in seconds    
1134    VisionRange     = 180
1135    ShroudClearingRange = 200
1136    Prerequisites
1137      Object = AmericaWarFactory
1138      Object = AmericaStrategyCenter
1139    End
1140    ExperienceValue = 50 50 100 150    ;Experience point value at each level
1141    ExperienceRequired = 0 200 400 800  ;Experience points needed to gain each level
1142    IsTrainable = Yes             ;Can gain experience
1143    WeaponSet
1144      Conditions = None 
1145      Weapon = PRIMARY TomahawkMissileWeapon
1146    End
1147    ArmorSet
1148      Conditions      = None
1149      Armor           = TruckArmor
1150      DamageFX        = TankDamageFX
1151    End
1152    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
1153    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
1154    CommandSet      = AmericaVehicleTomahawkCommandSet
1155  
1156    ; *** AUDIO Parameters ***
1157    VoiceSelect = TomahawkVoiceSelect
1158    VoiceMove = TomahawkVoiceMove
1159    VoiceGuard = TomahawkVoiceMove
1160    VoiceAttack = TomahawkVoiceAttack
1161    SoundMoveStart = TomahawkMoveStart
1162    SoundMoveStartDamaged = TomahawkMoveStart
1163    VoiceFear = TomahawkVoiceCrush
1164  
1165    UnitSpecificSounds
1166      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
1167      VoiceCreate = TomahawkVoiceCreate
1168      TurretMoveStart = NoSound
1169      TurretMoveLoop = TurretMoveLoopLoud
1170      SoundEject = PilotSoundEject
1171      VoiceEject = PilotVoiceEject
1172      VoiceCrush = TomahawkVoiceCrush
1173      VoiceEnter = TomahawkVoiceMove
1174      VoiceBombard = TomahawkVoiceAttack
1175    End
1176  
1177    ; *** ENGINEERING Parameters ***
1178    RadarPriority = UNIT
1179    KindOf = PRELOAD SELECTABLE DONT_AUTO_CRUSH_INFANTRY CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
1180  
1181    Body = ActiveBody ModuleTag_02
1182      MaxHealth       = 180.0
1183      InitialHealth   = 180.0
1184    End
1185  
1186    Behavior = AIUpdateInterface ModuleTag_03
1187      Turret
1188        TurretTurnRate = 60   ; turn rate, in degrees per sec
1189        TurretPitchRate = 60
1190        FirePitch = 70  ; Instead of aiming pitchwise at the target, it will aim here
1191        AllowsPitch = Yes
1192        ControlledWeaponSlots = PRIMARY
1193      End
1194      AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
1195    End
1196    Locomotor = SET_NORMAL TomahawkLocomotor
1197  
1198    Behavior = PhysicsBehavior ModuleTag_04
1199      Mass = 50.0
1200    End
1201    Behavior = SlowDeathBehavior ModuleTag_05
1202      DeathTypes = ALL -CRUSHED -SPLATTED
1203      DestructionDelay  = 500
1204      DestructionDelayVariance  = 100
1205      FX  = INITIAL  FX_GenericTankDeathEffect
1206      OCL = MIDPOINT OCL_AmericaVehicleTomahawkDie
1207      FX =  FINAL FX_AmericaVehicleTomahawkDeathExplosion
1208    End
1209  
1210    Behavior = ObjectCreationUpgrade ModuleTag_06
1211      UpgradeObject = OCL_AmericanBattleDrone
1212      TriggeredBy   = Upgrade_AmericaBattleDrone
1213      ConflictsWith = Upgrade_AmericaScoutDrone
1214    End
1215    Behavior = ObjectCreationUpgrade ModuleTag_07
1216      UpgradeObject = OCL_AmericanScoutDrone
1217      TriggeredBy   = Upgrade_AmericaScoutDrone
1218      ConflictsWith = Upgrade_AmericaBattleDrone
1219    End
1220    Behavior = ProductionUpdate ModuleTag_08
1221      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
1222    End
1223  
1224    Behavior = ExperienceScalarUpgrade ModuleTag_09
1225      TriggeredBy = Upgrade_AmericaAdvancedTraining
1226      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
1227    End
1228  
1229    Behavior = DestroyDie ModuleTag_10
1230      DeathTypes = NONE +CRUSHED +SPLATTED
1231    End
1232  
1233    Behavior = FXListDie ModuleTag_11
1234      DeathTypes = NONE +CRUSHED +SPLATTED
1235      DeathFX = FX_CarCrush
1236    End
1237  
1238    Behavior = CreateObjectDie ModuleTag_12
1239      DeathTypes = NONE +CRUSHED +SPLATTED
1240      CreationList = OCL_CrusaderTank_CrushEffect
1241    End
1242  
1243  ;  Behavior = FXListDie
1244  ;    DeathTypes = ALL -CRUSHED -SPLATTED
1245  ;    DeathFX = FX_GenericTankDeathEffect
1246  ;  End
1247  ; Behavior = CreateObjectDie
1248  ;    DeathTypes = ALL -CRUSHED -SPLATTED
1249  ;    CreationList = OCL_GenericTankDeathEffect
1250  ;  End
1251    Behavior = EjectPilotDie ModuleTag_13
1252      DeathTypes = ALL -CRUSHED -SPLATTED
1253      ExemptStatus = HIJACKED
1254      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
1255      GroundCreationList = OCL_EjectPilotOnGround
1256      AirCreationList = OCL_EjectPilotViaParachute
1257    End
1258    
1259    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
1260      DetectionRate             = 500
1261      DetectionRange           = 75
1262      CanDetectWhileGarrisoned  = No
1263      CanDetectWhileContained   = No
1264      ExtraRequiredKindOf       = BOAT
1265    End
1266  
1267    Behavior = TransitionDamageFX ModuleTag_14
1268      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
1269      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
1270    End
1271    
1272    Behavior = FlammableUpdate ModuleTag_21
1273      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
1274      AflameDamageAmount = 3       ; taking this much damage...
1275      AflameDamageDelay = 500       ; this often.
1276    End
1277  
1278    Geometry = BOX
1279    GeometryMajorRadius = 15.0
1280    GeometryMinorRadius = 10.0
1281    GeometryHeight = 10.0     
1282    GeometryIsSmall = Yes
1283    Shadow = SHADOW_VOLUME 
1284    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length   
1285  
1286  End
1287  
1288  ;----------------------------------------------------------
1289  Object AmericaVehicleTomahawkHulk
1290    ; *** ART Parameters ***
1291    Draw                = W3DModelDraw ModuleTag_01
1292      ConditionState    = NONE
1293        Model           = AVTomahawk_D1
1294      End
1295    End
1296  
1297    ; ***DESIGN parameters ***
1298    EditorSorting       = DEBRIS
1299  
1300    ; *** ENGINEERING Parameters ***
1301    KindOf              = NO_COLLIDE HULK
1302  
1303    Behavior                  = PhysicsBehavior ModuleTag_03
1304      Mass                    = 10.0
1305      AllowBouncing           = Yes
1306      KillWhenRestingOnGround = Yes
1307    End
1308    Behavior = LifetimeUpdate ModuleTag_04
1309      MinLifetime = 1500   ; min lifetime in msec
1310      MaxLifetime = 1600   ; max lifetime in msec
1311    End
1312  
1313    Behavior = SlowDeathBehavior ModuleTag_05
1314      SinkDelay        = 1500
1315      SinkRate            = 2     ; in Dist/Sec
1316      DestructionDelay = 8000
1317    End
1318  End
1319  
1320  ;----------------------------------------------------------
1321  Object ChinaVehicleNukeCannonHulk
1322    ; *** ART Parameters ***
1323    Draw                = W3DModelDraw ModuleTag_01
1324      ConditionState    = NONE
1325        Model           = NVNukeCn_D1
1326      End
1327    End
1328  
1329    ; ***DESIGN parameters ***
1330    EditorSorting       = DEBRIS
1331  
1332    ; *** ENGINEERING Parameters ***
1333    KindOf              = NO_COLLIDE HULK
1334  
1335    Behavior                  = PhysicsBehavior ModuleTag_03
1336      Mass                    = 10.0
1337      AllowBouncing           = Yes
1338      KillWhenRestingOnGround = Yes
1339    End
1340    Behavior = LifetimeUpdate ModuleTag_04
1341      MinLifetime = 1500   ; min lifetime in msec
1342      MaxLifetime = 1600   ; max lifetime in msec
1343    End
1344  
1345    Behavior = SlowDeathBehavior ModuleTag_05
1346      SinkDelay        = 1500
1347      SinkRate            = 2     ; in Dist/Sec
1348      DestructionDelay = 8000
1349    End
1350  End
1351  
1352  ;------------------------------------------------------------------------------
1353  Object AmericaJetRaptor
1354  
1355    ; *** ART Parameters ***
1356    SelectPortrait         = SACRaptor_L
1357    ButtonImage            = SACRaptor
1358    
1359    UpgradeCameo1 = Upgrade_AmericaLaserMissiles
1360    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
1361    ;UpgradeCameo3 = NONE
1362    ;UpgradeCameo4 = NONE
1363    ;UpgradeCameo5 = NONE
1364    
1365    Draw                   = W3DModelDraw ModuleTag_01
1366   
1367      DefaultConditionState
1368        Model               = AVRaptor
1369        HideSubObject       = BurnerFX01 BurnerFX02
1370        WeaponLaunchBone = PRIMARY WeaponA
1371      End
1372  
1373      ConditionState        = JETEXHAUST
1374        ; exhaust
1375        ParticleSysBone     = Wingtip01 JetContrail
1376        ParticleSysBone     = Wingtip02 JetContrail
1377      End
1378  
1379      ConditionState        = JETEXHAUST JETAFTERBURNER
1380        ; exhaust
1381        ParticleSysBone     = Wingtip01 JetContrail
1382        ParticleSysBone     = Wingtip02 JetContrail
1383        ; afterburner
1384        ShowSubObject       = BurnerFX01 BurnerFX02
1385        ParticleSysBone     = Engine01 JetLenzflare
1386        ParticleSysBone     = Engine02 JetLenzflare
1387      End
1388  
1389      ConditionState        = REALLYDAMAGED
1390        Model               = AVRaptor_D
1391        ; damage
1392        ParticleSysBone     = Smoke01 JetSmoke
1393        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
1394      End
1395      
1396      ConditionState        = REALLYDAMAGED JETEXHAUST
1397        Model               = AVRaptor_D
1398        ; damage
1399        ParticleSysBone     = Smoke01 JetSmoke
1400        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
1401        ; exhaust
1402        ParticleSysBone     = Wingtip01 JetContrail
1403        ParticleSysBone     = Wingtip02 JetContrail
1404      End
1405  
1406      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
1407        Model               = AVRaptor_D
1408        ; damage
1409        ParticleSysBone     = Smoke01 JetSmoke
1410        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
1411        ; afterburner
1412        ShowSubObject       = BurnerFX01 BurnerFX02
1413        ParticleSysBone     = Engine01 JetLenzflare
1414        ParticleSysBone     = Engine02 JetLenzflare
1415        ; exhaust
1416        ParticleSysBone     = Wingtip01 JetContrail
1417        ParticleSysBone     = Wingtip02 JetContrail
1418      End
1419  
1420      ConditionState        = RUBBLE
1421        Model               = AVRaptor_D1B
1422        HideSubObject       = None 
1423        ShowSubObject       = None
1424      End
1425  
1426      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
1427        Model               = AVRaptor_D1B
1428        ;HideSubObject is needed cause there're inherited from default condition state      
1429        HideSubObject       = None 
1430        ShowSubObject       = None
1431        ParticleSysBone     = Engine01 JetExhaust
1432        ParticleSysBone     = Engine02 JetExhaust
1433        ; exhaust
1434        ParticleSysBone     = Wingtip01 JetContrail
1435        ParticleSysBone     = Wingtip02 JetContrail
1436      End
1437  
1438      OkToChangeModelColor = Yes
1439  
1440    End
1441  
1442    ; ***DESIGN parameters ***
1443    DisplayName             = OBJECT:Raptor
1444    EditorSorting           = VEHICLE
1445    Side                    = America
1446    TransportSlotCount      = 0 ;how many "slots" we take in a transport (0 == not transportable)
1447    VisionRange             = 180.0 
1448    ShroudClearingRange     = 400
1449    Prerequisites
1450      Object                = AmericaAirfield
1451    End
1452  
1453    WeaponSet
1454      Conditions            = None 
1455      Weapon                = PRIMARY RaptorJetMissileWeapon
1456    End
1457    WeaponSet
1458      Conditions            = PLAYER_UPGRADE 
1459      Weapon                = PRIMARY RaptorJetLaserGuidedMissileWeapon
1460    End
1461    ArmorSet
1462      Conditions            = None
1463      Armor                 = AirplaneArmor
1464      DamageFX              = None
1465    End
1466  
1467    BuildCost               = 1400
1468    BuildTime               = 20   
1469    ExperienceValue         = 50 50 100 150  ;Experience point value at each level
1470    ExperienceRequired      = 0 100 200 400   ;Experience points needed to gain each level
1471    IsTrainable             = Yes             ;Can gain experience
1472    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
1473    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
1474    CommandSet              = AmericaJetRaptorCommandSet
1475  
1476    ; *** AUDIO Parameters ***
1477    VoiceSelect            = RaptorVoiceSelect
1478    VoiceMove              = RaptorVoiceMove
1479    VoiceAttack            = RaptorVoiceAttack
1480    VoiceAttackAir         = RaptorVoiceAttackAir
1481    VoiceGuard             = RaptorVoiceAirPatrol
1482    SoundDie               = RaptorVoiceFalling
1483    SoundAmbient           = RaptorAmbientLoop
1484    SoundAmbientRubble     = NoSound
1485    ; For now, it is better to have some sound than no sound cause there is a bug in
1486    ; what triggers the sound move loop sound, and the multiplayer test is only days away
1487    ; SoundMoveLoop          = RaptorAmbientLoop  ; don't want sound while sitting at airfield
1488    ; SoundAmbient           = NoSound
1489    UnitSpecificSounds
1490      VoiceCreate          = RaptorVoiceCreate
1491      SoundEject           = PilotSoundEject
1492      VoiceEject           = PilotVoiceEject
1493      Afterburner          = RaptorAfterburner
1494      VoiceLowFuel         = RaptorVoiceLowFuel
1495      VoiceGarrison        = RaptorVoiceMove
1496    End
1497  
1498    ; *** ENGINEERING Parameters ***
1499    RadarPriority          = UNIT
1500    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
1501    Body                   = ActiveBody ModuleTag_02
1502      MaxHealth            = 160.0
1503      InitialHealth        = 160.0
1504    End
1505  
1506    Behavior                = WeaponSetUpgrade ModuleTag_03
1507      TriggeredBy          = Upgrade_AmericaLaserMissiles
1508    End
1509    Behavior = ExperienceScalarUpgrade ModuleTag_04
1510      TriggeredBy = Upgrade_AmericaAdvancedTraining
1511      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
1512    End
1513  
1514    Behavior                          = JetSlowDeathBehavior ModuleTag_05
1515      FXOnGroundDeath                 = FX_JetOnGroundDeath
1516      OCLOnGroundDeath                = OCL_RaptorDeathFinalBlowUp
1517      DestructionDelay                = 99999999; destruction will happen when we
1518      RollRate                        = 0.2
1519      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
1520      PitchRate                       = 0.0
1521      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
1522      FXInitialDeath                  = FX_JetDeathInitial
1523      OCLInitialDeath                 = OCL_RaptorDeathInitial
1524      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
1525      FXSecondary                     = FX_JetDeathSecondary
1526      OCLSecondary                    = OCL_RaptorDeathSecondary
1527      FXHitGround                     = FX_JetDeathHitGround
1528      OCLHitGround                    = OCL_RaptorDeathHitGround
1529      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
1530      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
1531      OCLFinalBlowUp                  = OCL_RaptorDeathFinalBlowUp
1532  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
1533    End
1534    Behavior                    = EjectPilotDie ModuleTag_06
1535      ExemptStatus         = HIJACKED
1536      GroundCreationList = OCL_EjectPilotOnGround
1537      AirCreationList = OCL_EjectPilotViaParachute
1538      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
1539    End
1540    
1541    Behavior               = PhysicsBehavior ModuleTag_07
1542      Mass                 = 500.0
1543    End
1544  
1545    Behavior                 = TransitionDamageFX ModuleTag_08
1546      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
1547      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
1548    End
1549  
1550    Behavior = JetAIUpdate ModuleTag_09
1551      OutOfAmmoDamagePerSecond  = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
1552                                      ; note that it's expressed as a percent of max health, not an absolute
1553      TakeoffSpeedForMaxLift    = 100%   ; smaller numbers give more lift sooner when taking off
1554      TakeoffPause              = 500
1555      MinHeight                 = 5
1556      ParkingOffset             = 3             ; scooch it a little forward so the tail doesn't hit the doors
1557      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
1558    End
1559    Locomotor = SET_NORMAL RaptorJetLocomotor
1560    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
1561  
1562    Behavior = FlammableUpdate ModuleTag_21
1563      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
1564      AflameDamageAmount = 3       ; taking this much damage...
1565      AflameDamageDelay = 500       ; this often.
1566    End
1567  
1568  
1569    Geometry                 = Box
1570    GeometryIsSmall          = Yes
1571    GeometryMajorRadius      = 14.0
1572    GeometryMinorRadius      = 7.0
1573    GeometryHeight           = 5.0
1574    Shadow                   = SHADOW_VOLUME
1575    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length.
1576  
1577  End
1578  
1579  ;------------------------------------------------------------------------------
1580  ;This is the raptor as it's crashing
1581  ;------------------------------------------------------------------------------
1582  Object AmericaJetRaptorHulk
1583    ; *** ART Parameters ***
1584    Draw                = W3DModelDraw ModuleTag_01
1585      DefaultConditionState
1586        Model           = AVRaptor_D1
1587      End
1588    End
1589  
1590    ; ***DESIGN parameters ***
1591    EditorSorting       = DEBRIS
1592  
1593    ; *** ENGINEERING Parameters ***
1594    KindOf              =  NO_COLLIDE HULK
1595  
1596    Behavior                  = PhysicsBehavior ModuleTag_03
1597      Mass                    = 2.0
1598      AllowBouncing           = No
1599      KillWhenRestingOnGround = Yes
1600    End
1601  
1602    Behavior = LifetimeUpdate ModuleTag_04
1603      MinLifetime = 1500   ; min lifetime in msec
1604      MaxLifetime = 1600   ; max lifetime in msec
1605    End
1606  
1607    Behavior = SlowDeathBehavior ModuleTag_05
1608      SinkDelay        = 1500
1609      SinkRate            = 2     ; in Dist/Sec
1610      DestructionDelay = 8000
1611    End
1612  
1613  End
1614  
1615  ;------------------------------------------------------------------------------
1616  ;This is the A10 as it's crashing
1617  ;------------------------------------------------------------------------------
1618  Object AmericaJetA10Hulk
1619    ; *** ART Parameters ***
1620    Draw                = W3DModelDraw ModuleTag_01
1621      DefaultConditionState
1622        Model           = AVWarthog_D1
1623      End
1624    End
1625  
1626    ; ***DESIGN parameters ***
1627    EditorSorting       = DEBRIS
1628  
1629    ; *** ENGINEERING Parameters ***
1630    KindOf              =  NO_COLLIDE HULK
1631  
1632    Behavior                  = PhysicsBehavior ModuleTag_03
1633      Mass                    = 2.0
1634      AllowBouncing           = No
1635      KillWhenRestingOnGround = Yes
1636    End
1637  
1638    Behavior = LifetimeUpdate ModuleTag_04
1639      MinLifetime = 1500   ; min lifetime in msec
1640      MaxLifetime = 1600   ; max lifetime in msec
1641    End
1642  
1643  
1644  
1645    Behavior = SlowDeathBehavior ModuleTag_05
1646      SinkDelay        = 1500
1647      SinkRate         = 2     ; in Dist/Sec
1648      DestructionDelay = 8000
1649    End
1650  
1651  End
1652  
1653  ;------------------------------------------------------------------------------
1654  ;This is the stealth as it's crashing
1655  ;------------------------------------------------------------------------------
1656  Object AmericaJetStealthHulk
1657  
1658    ; *** ART Parameters ***
1659    Draw                = W3DModelDraw ModuleTag_01
1660      DefaultConditionState
1661        Model           = AVStealth_D1
1662      End
1663    End
1664  
1665    ; ***DESIGN parameters ***
1666    EditorSorting       = DEBRIS
1667  
1668    ; *** ENGINEERING Parameters ***
1669    KindOf              =  NO_COLLIDE HULK
1670  
1671    Behavior                  = PhysicsBehavior ModuleTag_03
1672      Mass                    = 2.0
1673      AllowBouncing           = No
1674      KillWhenRestingOnGround = Yes
1675    End
1676  
1677    Behavior = LifetimeUpdate ModuleTag_04
1678      MinLifetime = 1500   ; min lifetime in msec
1679      MaxLifetime = 1600   ; max lifetime in msec
1680    End
1681  
1682    Behavior = SlowDeathBehavior ModuleTag_05
1683      SinkDelay        = 1500
1684      SinkRate            = 2     ; in Dist/Sec
1685      DestructionDelay = 8000
1686    End
1687  
1688  End
1689  
1690  ;------------------------------------------------------------------------------
1691  ;This is the stealth as it's crashing
1692  ;------------------------------------------------------------------------------
1693  Object AmericaJetAuroraHulk
1694  
1695    ; *** ART Parameters ***
1696    Draw                = W3DModelDraw ModuleTag_01
1697      DefaultConditionState
1698        Model           = AVAurora_D1
1699      End
1700    End
1701  
1702    ; ***DESIGN parameters ***
1703    EditorSorting       = DEBRIS
1704  
1705    ; *** ENGINEERING Parameters ***
1706    KindOf              =  NO_COLLIDE HULK
1707  
1708    Behavior                  = PhysicsBehavior ModuleTag_03
1709      Mass                    = 2.0
1710      AllowBouncing           = No
1711      KillWhenRestingOnGround = Yes
1712    End
1713  
1714    Behavior = LifetimeUpdate ModuleTag_04
1715      MinLifetime = 1500   ; min lifetime in msec
1716      MaxLifetime = 1600   ; max lifetime in msec
1717    End
1718  
1719    Behavior = SlowDeathBehavior ModuleTag_05
1720      SinkDelay        = 1500
1721      SinkRate            = 2     ; in Dist/Sec
1722      DestructionDelay = 8000
1723    End
1724  
1725  End
1726  
1727  ;------------------------------------------------------------------------------
1728  Object A10ThunderboltMissile
1729  
1730    ; *** ART Parameters ***
1731    Draw = W3DModelDraw ModuleTag_01
1732      OkToChangeModelColor = Yes
1733      DefaultConditionState
1734        Model = AVWarthog_M
1735        ParticleSysBone = NONE MissileExhaust
1736      End
1737    End
1738  
1739    ; ***DESIGN parameters ***
1740    DisplayName      = OBJECT:Missile
1741    Side = America
1742    EditorSorting   = SYSTEM
1743    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
1744    VisionRange = 0.0  
1745    ArmorSet
1746      Conditions      = None
1747      Armor           = ProjectileArmor
1748      DamageFX        = None
1749    End
1750  
1751    ; *** AUDIO Parameters ***
1752  
1753    ; *** ENGINEERING Parameters ***
1754    KindOf            = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
1755    Body = ActiveBody ModuleTag_02
1756      MaxHealth       = 100.0
1757      InitialHealth   = 100.0
1758    End
1759  
1760  ; ---- begin Projectile death behaviors
1761    Behavior = InstantDeathBehavior DeathModuleTag_01
1762      DeathTypes = NONE +DETONATED
1763      ; we detonated normally.
1764      ; no FX, just quiet destroy ourselves
1765    End
1766    Behavior = InstantDeathBehavior DeathModuleTag_02
1767      DeathTypes = NONE +LASERED
1768      ; shot down by laser.
1769      FX         = FX_GenericMissileDisintegrate
1770      OCL        = OCL_GenericMissileDisintegrate
1771    End
1772    Behavior = InstantDeathBehavior DeathModuleTag_03
1773      DeathTypes = ALL -LASERED -DETONATED
1774      ; shot down by nonlaser.
1775      FX         = FX_GenericMissileDeath
1776    End
1777  ; ---- end Projectile death behaviors
1778   
1779  ; The weapon is in OCL.ini.  This makes it do double damage secretly.   
1780  ;  Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
1781  ;    DeathWeapon   = A10ThunderboltMissileWeapon
1782  ;    StartsActive  = Yes
1783  ;  End
1784  
1785    Behavior = PhysicsBehavior ModuleTag_08
1786      Mass = 1
1787    End
1788    Behavior = MissileAIUpdate ModuleTag_09
1789      TryToFollowTarget = Yes 
1790      FuelLifetime = 10000
1791      InitialVelocity = 30                ; in dist/sec
1792      IgnitionDelay = 0
1793      IgnitionFX = FX_A10ThunderboltMissileIgnition
1794    End
1795    ; It's a missile, it needs to hit so it can +DETONATED
1796  ;  Behavior = HeightDieUpdate ModuleTag_10
1797  ;    TargetHeight = 1.0
1798  ;    TargetHeightIncludesStructures = No
1799  ;  End
1800    Locomotor = SET_NORMAL A10ThunderboltMissileLocomotor
1801  
1802    Geometry = Sphere
1803    GeometryIsSmall = Yes
1804    GeometryMajorRadius = 1.0
1805  
1806    Behavior = SpecialPowerCompletionDie ModuleTag_11
1807      SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike
1808    End
1809  
1810  ;  Geometry = Sphere
1811   ; GeometryIsSmall = Yes
1812    ;GeometryMajorRadius = 12.0
1813  
1814  End
1815  
1816  ;------------------------------------------------------------------------------
1817  Object RaptorJetMissile
1818  
1819    ; *** ART Parameters ***
1820    Draw = W3DModelDraw ModuleTag_01
1821      OkToChangeModelColor = Yes
1822      DefaultConditionState
1823        Model = AVRaptor_M
1824      End
1825    End
1826  
1827    ; ***DESIGN parameters ***
1828    DisplayName       = OBJECT:Missile
1829    EditorSorting     = SYSTEM
1830    VisionRange = 0.0  
1831  
1832    ; *** ENGINEERING Parameters ***
1833    KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
1834    Body = ActiveBody ModuleTag_02
1835      MaxHealth       = 100.0
1836      InitialHealth   = 100.0
1837    End
1838  
1839  ; ---- begin Projectile death behaviors
1840    Behavior = InstantDeathBehavior DeathModuleTag_01
1841      DeathTypes = NONE +DETONATED
1842      ; we detonated normally.
1843      ; no FX, just quiet destroy ourselves
1844    End
1845    Behavior = InstantDeathBehavior DeathModuleTag_02
1846      DeathTypes = NONE +LASERED
1847      ; shot down by laser.
1848      FX         = FX_GenericMissileDisintegrate
1849      OCL        = OCL_GenericMissileDisintegrate
1850    End
1851    Behavior = InstantDeathBehavior DeathModuleTag_03
1852      DeathTypes = ALL -LASERED -DETONATED
1853      ; shot down by nonlaser.
1854      FX         = FX_GenericMissileDeath
1855    End
1856  ; ---- end Projectile death behaviors
1857  
1858    Behavior = PhysicsBehavior ModuleTag_07
1859      Mass = 1
1860    End
1861    Behavior = MissileAIUpdate ModuleTag_08
1862      TryToFollowTarget     = Yes 
1863      FuelLifetime          = 10000
1864      InitialVelocity       = 75                ; in dist/sec
1865      IgnitionDelay         = 30
1866      IgnitionFX            = FX_JetMissileIgnition
1867    End
1868    Locomotor = SET_NORMAL RaptorJetMissileLocomotor
1869  
1870    Geometry = Sphere
1871    GeometryIsSmall = Yes
1872    GeometryMajorRadius = 1.0
1873  
1874  End
1875  
1876  ;------------------------------------------------------------------------------
1877  Object StealthJetMissile
1878  
1879    ; *** ART Parameters ***
1880    Draw = W3DModelDraw ModuleTag_01
1881      OkToChangeModelColor = Yes
1882      DefaultConditionState
1883        Model = AVStealth_M
1884      End
1885    End
1886  
1887    ; ***DESIGN parameters ***
1888    DisplayName       = OBJECT:Missile
1889    EditorSorting     = SYSTEM
1890    VisionRange       = 0.0  
1891  
1892    ; *** ENGINEERING Parameters ***
1893    KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
1894    Body = ActiveBody ModuleTag_02
1895      MaxHealth       = 100.0
1896      InitialHealth   = 100.0
1897    End
1898  
1899  ; ---- begin Projectile death behaviors
1900    Behavior = InstantDeathBehavior DeathModuleTag_01
1901      DeathTypes = NONE +DETONATED
1902      ; we detonated normally.
1903      ; no FX, just quiet destroy ourselves
1904    End
1905    Behavior = InstantDeathBehavior DeathModuleTag_02
1906      DeathTypes = NONE +LASERED
1907      ; shot down by laser.
1908      FX         = FX_GenericMissileDisintegrate
1909      OCL        = OCL_GenericMissileDisintegrate
1910    End
1911    Behavior = InstantDeathBehavior DeathModuleTag_03
1912      DeathTypes = ALL -LASERED -DETONATED
1913      ; shot down by nonlaser.
1914      FX         = FX_GenericMissileDeath
1915    End
1916  ; ---- end Projectile death behaviors
1917  
1918    Behavior = PhysicsBehavior ModuleTag_07
1919      Mass = 1
1920    End
1921    Behavior = MissileAIUpdate ModuleTag_08
1922      TryToFollowTarget     = Yes 
1923      FuelLifetime          = 10000
1924      InitialVelocity       = 75                ; in dist/sec
1925      IgnitionDelay         = 30
1926      IgnitionFX            = FX_JetMissileIgnition
1927    End
1928    Locomotor = SET_NORMAL StealthJetMissileLocomotor
1929  
1930    Geometry = Sphere
1931    GeometryIsSmall = Yes
1932    GeometryMajorRadius = 1.0
1933  
1934  End
1935  
1936  ;------------------------------------------------------------------------------
1937  Object AmericaJetB52
1938  
1939    ; *** ART Parameters ***
1940    Draw = W3DModelDraw ModuleTag_01
1941      DefaultConditionState
1942        Model = AVBomber
1943        ParticleSysBone = Engine01 JetBlackTrailThin
1944        ParticleSysBone = Engine02 JetBlackTrailThin
1945        ParticleSysBone = Engine03 JetBlackTrailThin
1946        ParticleSysBone = Engine04 JetBlackTrailThin
1947        ParticleSysBone = WingTip01 JetContrailThin
1948        ParticleSysBone = WingTip02 JetContrailThin
1949      End
1950      ConditionState = DAMAGED
1951        Model = AVBomber_D
1952        ParticleSysBone = Smoke01 JetFireLarge
1953        ParticleSysBone = Smoke02 JetFireLarge
1954        ParticleSysBone = Engine01 JetBlackTrailThin
1955        ParticleSysBone = Engine02 JetBlackTrailThin
1956        ParticleSysBone = Engine03 JetBlackTrailThin
1957        ParticleSysBone = Engine04 JetBlackTrailThin
1958        ParticleSysBone = Smoke01 JetSmokeLarge
1959        ParticleSysBone = Smoke02 JetSmokeLarge
1960      End
1961      ConditionState = REALLYDAMAGED
1962        Model = AVBomber_D
1963        ParticleSysBone = Smoke01 JetFireLarge
1964        ParticleSysBone = Smoke02 JetFireLarge
1965        ParticleSysBone = Engine01 JetBlackTrailThin
1966        ParticleSysBone = Engine02 JetBlackTrailThin
1967        ParticleSysBone = Engine03 JetBlackTrailThin
1968        ParticleSysBone = Engine04 JetBlackTrailThin
1969        ParticleSysBone = Smoke01 JetSmokeLarge
1970        ParticleSysBone = Smoke02 JetSmokeLarge
1971      End
1972      ConditionState = RUBBLE
1973        Model = AVBomber_D1
1974        ParticleSysBone = Smoke01 JetFireLarge
1975        ParticleSysBone = Smoke02 JetFireLarge
1976        ParticleSysBone = Smoke01 JetSmokeLarge
1977        ParticleSysBone = Smoke02 JetSmokeLarge
1978      End
1979      OkToChangeModelColor = Yes
1980    End
1981    
1982    Draw = W3DModelDraw ModuleTag_02
1983      DefaultConditionState
1984        Model           = AVBomber_A2U
1985        Animation       = AVBomber_A2K.AVBomber_A2
1986        AnimationMode   = MANUAL
1987        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
1988      End
1989      ConditionState = DOOR_1_OPENING
1990        Animation       = AVBomber_A2K.AVBomber_A2
1991        AnimationMode   = ONCE
1992        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
1993      End
1994      ConditionState = DOOR_1_CLOSING
1995        Animation       = AVBomber_A2K.AVBomber_A2
1996        AnimationMode   = ONCE_BACKWARDS
1997        Flags           = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES
1998      End
1999  
2000      ConditionState = REALLYDAMAGED
2001        Model           = AVBomber_A2DU
2002        Animation       = AVBomber_A2K.AVBomber_A2
2003        AnimationMode   = MANUAL
2004        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
2005      End
2006      ConditionState = DOOR_1_OPENING REALLYDAMAGED
2007        Model           = AVBomber_A2DU
2008        Animation       = AVBomber_A2K.AVBomber_A2
2009        AnimationMode   = ONCE
2010        Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
2011      End
2012      ConditionState = DOOR_1_CLOSING REALLYDAMAGED
2013        Model           = AVBomber_A2DU
2014        Animation       = AVBomber_A2K.AVBomber_A2
2015        AnimationMode   = ONCE_BACKWARDS
2016        Flags           = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES
2017      End
2018    End
2019  
2020    ; ***DESIGN parameters ***
2021    DisplayName         = OBJECT:B52
2022    EditorSorting       = VEHICLE
2023    Side                = America
2024    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
2025    VisionRange         = 150.0 ;0.0
2026  
2027    WeaponSet
2028      Conditions = None 
2029      Weapon = PRIMARY TomahawkMissileWeaponB52
2030    End
2031    ArmorSet
2032      Conditions      = None
2033      Armor           = AirplaneArmor
2034      DamageFX        = TankDamageFX
2035    End
2036    CommandSet        = Command_ScriptedTransportDrops
2037  
2038    ; *** AUDIO Parameters ***
2039    SoundAmbient = B52AmbientLoop
2040    SoundAmbientRubble    = NoSound
2041  
2042    ; *** ENGINEERING Parameters ***
2043    RadarPriority = UNIT
2044    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT IGNORED_IN_GUI
2045    Body = ActiveBody ModuleTag_03
2046      MaxHealth       = 1000.0
2047      InitialHealth   = 1000.0
2048    End
2049  
2050    ExperienceValue     = 50 50 50 50  ; Experience point value at each level
2051  
2052    ;SCRIPTED SUPPORT: These special powers are triggered directly 
2053    ;from the transport without creating a transport. This is done 
2054    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
2055    ;which also prevents creating the payload transport.
2056    Behavior    = OCLSpecialPower ModuleTag_04
2057      SpecialPowerTemplate = SuperweaponDaisyCutter  ;@@KRIS@@
2058      OCL                  = SUPERWEAPON_DaisyCutter
2059      CreateLocation       = USE_OWNER_OBJECT
2060    End
2061    Behavior    = OCLSpecialPower ModuleTag_05
2062      SpecialPowerTemplate = SuperweaponParadropAmerica
2063      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
2064      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
2065      OCL                  = SUPERWEAPON_Paradrop1
2066      CreateLocation       = USE_OWNER_OBJECT
2067    End 
2068    Behavior    = OCLSpecialPower ModuleTag_06
2069      SpecialPowerTemplate = SuperweaponCarpetBomb
2070      OCL                  = SUPERWEAPON_CarpetBomb
2071      UpgradeOCL           = SCIENCE_B52TomahawkStrike SUPERWEAPON_B52TomahawkStrike
2072      CreateLocation       = USE_OWNER_OBJECT
2073    End 
2074     
2075    Behavior = PhysicsBehavior ModuleTag_07
2076      Mass = 500.0
2077    End
2078  
2079    Behavior = DeliverPayloadAIUpdate ModuleTag_08
2080      DoorDelay         = 500
2081      MaxAttempts       = 4
2082      DropOffset        = X:0 Y:0 Z:-10
2083      DropDelay         = 300     ; time in between each item dropped (if more than one)
2084      PutInContainer    = AmericaParachute
2085      DeliveryDistance  = 150
2086    End
2087    Locomotor = SET_NORMAL B52Locomotor
2088  
2089    Behavior = TransportContain ModuleTag_09
2090      Slots                       = 100                     ; hey, it's a BIG transport
2091      ScatterNearbyOnExit         = No
2092      OrientLikeContainerOnExit   = Yes
2093      KeepContainerVelocityOnExit = Yes
2094      ExitPitchRate               = 30
2095      ExitBone                    = WeaponA01
2096      AllowInsideKindOf           = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE
2097      DoorOpenTime                = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
2098      NumberOfExitPaths           = 0
2099      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
2100    End
2101      
2102    Behavior                          = JetSlowDeathBehavior ModuleTag_10
2103      DestructionDelay                = 2000 
2104      RollRate                        = 0.0
2105      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
2106      PitchRate                       = 0
2107      FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
2108      FXInitialDeath                  = FX_JetBigDeathInitial
2109      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
2110      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
2111      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
2112      FXSecondary                     = FX_BigPlaneDeath
2113  ;   FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
2114  ;   OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
2115  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
2116    End
2117  
2118    Behavior = TransitionDamageFX ModuleTag_11
2119      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
2120      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
2121    End
2122  
2123    Geometry = Box
2124    GeometryIsSmall = No
2125    GeometryMajorRadius = 60.0
2126    GeometryMinorRadius = 10.0
2127    GeometryHeight = 10.0
2128    Shadow = SHADOW_VOLUME
2129    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
2130  
2131  End
2132  
2133  ;------------------------------------------------------------------------------
2134  Object CarpetBomb
2135  
2136    ; *** ART Parameters ***
2137    Draw = W3DModelDraw ModuleTag_01
2138      DefaultConditionState
2139        Model = EXCarptBmb
2140      End
2141    End
2142  
2143    ; ***DESIGN parameters ***
2144    DisplayName      = OBJECT:CarpetBomb
2145    Side = America
2146    EditorSorting   = SYSTEM
2147    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
2148    VisionRange = 300.0  
2149    ArmorSet
2150      Conditions      = None
2151      Armor           = ProjectileArmor
2152      DamageFX        = None
2153    End
2154  
2155    ; *** AUDIO Parameters ***
2156    SoundFallingFromPlane = DaisyCutterWeapon
2157  
2158    ; *** ENGINEERING Parameters ***
2159    KindOf            = PROJECTILE
2160    Body = ActiveBody ModuleTag_02
2161      MaxHealth       = 100.0
2162      InitialHealth   = 100.0
2163    End
2164  
2165    Behavior = AIUpdateInterface ModuleTag_03
2166    End
2167    Locomotor = SET_NORMAL None
2168  
2169    Behavior = PhysicsBehavior ModuleTag_04
2170  
2171      Mass                  = 75.0
2172      AerodynamicFriction   = 1     ; this is now friction-per-sec
2173      ForwardFriction       = 33    ; this is now friction-per-sec
2174      CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
2175    End
2176  
2177    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
2178      DeathWeapon   = CarpetBombWeapon
2179      StartsActive  = Yes
2180    End
2181  
2182    Behavior = HeightDieUpdate ModuleTag_06
2183      TargetHeight = 1.0
2184      TargetHeightIncludesStructures = No
2185    End
2186  
2187    Behavior = SpecialPowerCompletionDie ModuleTag_07
2188      SpecialPowerTemplate = SuperweaponCarpetBomb
2189    End
2190  
2191    Behavior = FXListDie ModuleTag_08
2192      DeathFX = FX_CarpetBomb
2193    End
2194    Behavior = DestroyDie ModuleTag_09
2195      ;nothing
2196    End
2197  
2198  End
2199  
2200  ;------------------------------------------------------------------------------
2201  Object AuroraBomb
2202  
2203    ; *** ART Parameters ***
2204    Draw = W3DModelDraw ModuleTag_01
2205      DefaultConditionState
2206        Model = EXCarptBmb
2207      End
2208    End
2209  
2210    ; ***DESIGN parameters ***
2211    Side = America
2212    EditorSorting     = SYSTEM
2213    ArmorSet
2214      Conditions      = None
2215      Armor           = ProjectileArmor
2216      DamageFX        = None
2217    End
2218    VisionRange       = 0.0  
2219  
2220    ; *** AUDIO Parameters ***
2221  
2222    ; *** ENGINEERING Parameters ***
2223    KindOf            = PROJECTILE
2224    Body              = ActiveBody ModuleTag_02
2225      MaxHealth       = 100.0
2226      InitialHealth   = 100.0
2227    End
2228  
2229    Behavior              = PhysicsBehavior ModuleTag_03
2230      Mass                = 75.0
2231      AerodynamicFriction = 2     ; this is now friction-per-sec
2232      ForwardFriction     = 2     ; this is now friction-per-sec
2233      CenterOfMassOffset  = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
2234    End
2235  
2236    ; it may seem odd to have a "bomb" with a Locomotor, especially a Thrust locomotor,
2237    ; but there's a good reason: the Aurora moves so freakin' fast that it's really
2238    ; hard to (1) find a reliable drop location, and (2) actually get it close enough to
2239    ; that location. So we cheat: just get fairly close, then let the "bomb" do a little (subtle)
2240    ; navigation on the way down. This works pretty well and actually looks much better
2241    ; than you might think. (srj)
2242    Behavior = MissileAIUpdate ModuleTag_04
2243      TryToFollowTarget   = No 
2244      FuelLifetime        = 0
2245      IgnitionDelay       = 0
2246      InitialVelocity     = 0                ; in dist/sec
2247      DistanceToTravelBeforeTurning = 0
2248      DistanceToTargetBeforeDiving  = 0
2249    End
2250    Locomotor = SET_NORMAL AuroraBombLocomotor   ; yes, that's right.
2251  
2252    Geometry = Sphere
2253    GeometryIsSmall = Yes
2254    GeometryMajorRadius = 2.0
2255  
2256  End
2257  
2258  ;------------------------------------------------------------------------------
2259  ; this is the "standard" mine used for building upgrades
2260  Object ChinaStandardMine
2261  
2262    ; *** ART Parameters ***
2263    Draw = W3DModelDraw ModuleTag_01
2264      OkToChangeModelColor = Yes
2265      ; NOTE: ParticleSysBone doesn't work correctly with DefaultConditionState!
2266      ; fix someday! (srj)
2267      ConditionState = NONE
2268        Model           = EXAMineGroup
2269        ParticleSysBone = Mine01 MineFX
2270        ParticleSysBone = Mine02 MineFX
2271        ParticleSysBone = Mine03 MineFX
2272        ParticleSysBone = Mine04 MineFX
2273        ParticleSysBone = Mine05 MineFX
2274        ParticleSysBone = Mine06 MineFX
2275        ParticleSysBone = Mine07 MineFX
2276        ParticleSysBone = Mine08 MineFX
2277      End
2278      ConditionState = RUBBLE
2279        Model = None
2280      End
2281    End
2282  
2283    ; ***DESIGN parameters ***
2284    DisplayName       = OBJECT:StructureMine
2285    EditorSorting     = MISC_MAN_MADE
2286    KindOf            = STICK_TO_TERRAIN_SLOPE IMMOBILE MINE NO_HEAL_ICON
2287    ArmorSet
2288      Conditions      = None
2289      Armor           = MineArmor
2290      DamageFX        = None
2291    End
2292  
2293    ; *** ENGINEERING Parameters ***  
2294    Body = ActiveBody ModuleTag_02
2295      MaxHealth       = 100.0
2296      InitialHealth   = 100.0
2297    End
2298    
2299    Behavior = StealthUpdate ModuleTag_03
2300      StealthDelay                = 0 ; msec
2301      StealthForbiddenConditions  = NONE
2302      FriendlyOpacityMin          = 0.0%
2303      FriendlyOpacityMax          = 0.0%
2304      InnateStealth               = Yes
2305      OrderIdleEnemiesToAttackMeUponReveal  = No
2306    End
2307  
2308    ; this is a misleading name, since it's really single-Mine Behavior...
2309    Behavior = MinefieldBehavior     ModuleTag_04
2310      DetonationWeapon            = StructureMineWeapon        ; what happens when we detonate
2311      DetonatedBy                 = ENEMIES NEUTRAL
2312      ; we no longer want the "scoot" behavior. it looks funky with current art. (srj)
2313      ;ScootFromStartingPointTime  = 500
2314      RepeatDetonateMoveThresh    = 5.0
2315      NumVirtualMines             = 8
2316      Regenerates                 = Yes            ; Standard mines DO regenerate.
2317      StopsRegenAfterCreatorDies  = Yes
2318      DegenPercentPerSecondAfterCreatorDies = 3.33%  ; take about 30 seconds to die.
2319    End
2320  
2321    ; Standard mines DO heal.
2322    Behavior = AutoHealBehavior ModuleTag_05
2323      StartsActive      = Yes
2324      HealingAmount     = 2
2325      HealingDelay      = 5000 ; msec
2326      StartHealingDelay = 15000 ; wait this long after we are damaged to start healing
2327    End
2328  
2329    Geometry            = CYLINDER
2330    GeometryMajorRadius = 30.0
2331    GeometryHeight      = 1.0
2332    GeometryIsSmall     = No
2333    
2334  End
2335  
2336  ;------------------------------------------------------------------------------
2337  Object ChinaClusterMine
2338  
2339    ; *** ART Parameters ***
2340    Draw = W3DModelDraw ModuleTag_01
2341      OkToChangeModelColor = Yes
2342      ; NOTE: ParticleSysBone doesn't work correctly with DefaultConditionState!
2343      ; fix someday! (srj)
2344      ConditionState = NONE
2345        Model = EXAMineGroup
2346        ParticleSysBone = Mine01 MineFX
2347        ParticleSysBone = Mine02 MineFX
2348        ParticleSysBone = Mine03 MineFX
2349        ParticleSysBone = Mine04 MineFX
2350        ParticleSysBone = Mine05 MineFX
2351        ParticleSysBone = Mine06 MineFX
2352        ParticleSysBone = Mine07 MineFX
2353        ParticleSysBone = Mine08 MineFX
2354      End
2355      ConditionState = RUBBLE
2356        Model = None
2357      End
2358    End
2359  
2360    ; ***DESIGN parameters ***
2361    DisplayName       = OBJECT:ClusterMine
2362    EditorSorting     = MISC_MAN_MADE
2363    KindOf            = STICK_TO_TERRAIN_SLOPE IMMOBILE MINE NO_HEAL_ICON
2364    ArmorSet
2365      Conditions      = None
2366      Armor           = MineArmor
2367      DamageFX        = None
2368    End
2369  
2370    ; *** ENGINEERING Parameters ***  
2371    Body = ActiveBody ModuleTag_02
2372      MaxHealth       = 100.0
2373      InitialHealth   = 100.0
2374    End
2375    
2376    Behavior = StealthUpdate ModuleTag_03
2377      StealthDelay                = 0                  ; msec
2378      StealthForbiddenConditions  = NONE
2379      FriendlyOpacityMin          = 0.0%
2380      FriendlyOpacityMax          = 0.0%
2381      InnateStealth               = Yes
2382      OrderIdleEnemiesToAttackMeUponReveal  = No
2383    End
2384  
2385    ; this is a misleading name, since it's really single-Mine Behavior...
2386    Behavior = MinefieldBehavior     ModuleTag_04
2387      DetonationWeapon            = ClusterMineWeapon        ; what happens when we detonate
2388      DetonatedBy                 = ENEMIES NEUTRAL
2389      ScootFromStartingPointTime  = 1000
2390      RepeatDetonateMoveThresh    = 5.0
2391      NumVirtualMines             = 8
2392      Regenerates                 = No            ; Cluster mines do not regenerate.
2393    End
2394  
2395  ; Cluster mines do not heal.
2396  ;  Behavior = AutoHealBehavior ModuleTag_05
2397  ;    StartsActive      = Yes
2398  ;    HealingAmount     = 2
2399  ;    HealingDelay      = 1000 ; msec
2400  ;    StartHealingDelay = 15000 ; wait this long after we are damaged to start healing
2401  ;  End
2402  
2403    Geometry            = CYLINDER
2404    GeometryMajorRadius = 30.0
2405    GeometryHeight      = 1.0
2406    GeometryIsSmall     = No
2407    
2408  End
2409  
2410  ;------------------------------------------------------------------------------
2411  Object ClusterMinesBomb
2412  
2413    ; *** ART Parameters ***
2414    Draw = W3DModelDraw ModuleTag_01
2415      OkToChangeModelColor = Yes
2416      DefaultConditionState
2417        Model         = EXAMine_A
2418      End
2419    End
2420  
2421    ; ***DESIGN parameters ***
2422    DisplayName           = OBJECT:ClusterMinesBomb
2423    Side                  = China
2424    EditorSorting         = SYSTEM
2425    TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
2426    VisionRange           = 0
2427    ArmorSet
2428      Conditions      = None
2429      Armor           = ProjectileArmor
2430      DamageFX        = None
2431    End
2432  
2433    ; *** AUDIO Parameters ***
2434    
2435    ; *** ENGINEERING Parameters ***
2436    KindOf            = PROJECTILE  
2437    Body = ActiveBody ModuleTag_02
2438      MaxHealth       = 100.0
2439      InitialHealth   = 100.0
2440    End
2441  
2442    ; alas, this DOES need ai...
2443    Behavior = AIUpdateInterface ModuleTag_03
2444    End
2445  
2446    Locomotor = SET_NORMAL None
2447  
2448    Behavior = PhysicsBehavior ModuleTag_04
2449      Mass                  = 75.0
2450      AerodynamicFriction   = 1     ; this is now friction-per-sec
2451      ForwardFriction       = 33    ; this is now friction-per-sec
2452      CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
2453    End
2454  
2455    Behavior = GenerateMinefieldBehavior ModuleTag_05
2456      MineName                = ChinaClusterMine
2457      DistanceAroundObject    = 80
2458      GenerateOnlyOnDeath     = Yes
2459      SmartBorder             = Yes
2460      SmartBorderSkipInterior = No
2461      AlwaysCircular          = Yes
2462      GenerationFX            = WeaponFX_ClusterMineImpact
2463    End
2464  
2465  
2466    Behavior = HeightDieUpdate ModuleTag_06
2467      TargetHeight = 60.0
2468      TargetHeightIncludesStructures = No
2469    End
2470  
2471    Behavior = DestroyDie ModuleTag_07
2472      ;nothing
2473    End
2474  
2475    Geometry = SPHERE                      ;Collision geometry
2476    GeometryMajorRadius = 1.0              ;Collision major radius
2477    GeometryMinorRadius = 1.0              ;Collision minor radius
2478    GeometryHeight = 1.0                   ;Height for geometry
2479    GeometryIsSmall = Yes                  ;Is small geometry
2480  
2481  End
2482  
2483  
2484  ;------------------------------------------------------------------------------
2485  Object EMPPulseBomb
2486  
2487    ; *** ART Parameters ***
2488    Draw = W3DModelDraw ModuleTag_01
2489      OkToChangeModelColor = Yes
2490      DefaultConditionState
2491        Model         = EXAMine_A
2492      End
2493    End
2494  
2495    ; ***DESIGN parameters ***
2496    DisplayName           = OBJECT:EMPPulseBomb
2497    Side                  = China
2498    EditorSorting         = SYSTEM
2499    TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
2500    VisionRange           = 0
2501    ArmorSet
2502      Conditions      = None
2503      Armor           = ProjectileArmor
2504      DamageFX        = None
2505    End
2506  
2507    ; *** AUDIO Parameters ***
2508    
2509    ; *** ENGINEERING Parameters ***
2510    KindOf            = PROJECTILE  
2511    Body = ActiveBody ModuleTag_02
2512      MaxHealth       = 100.0
2513      InitialHealth   = 100.0
2514    End
2515  
2516    ; alas, this DOES need ai...
2517    Behavior = AIUpdateInterface ModuleTag_03
2518    End
2519  
2520    Locomotor = SET_NORMAL None
2521  
2522    Behavior = PhysicsBehavior ModuleTag_04
2523      Mass                  = 75.0
2524      AerodynamicFriction   = 1     ; this is now friction-per-sec
2525      ForwardFriction       = 33    ; this is now friction-per-sec
2526      CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
2527    End
2528  
2529  
2530    Behavior = HeightDieUpdate ModuleTag_05
2531      TargetHeight = 15.0
2532      TargetHeightIncludesStructures = No
2533    End
2534  
2535    Behavior = CreateObjectDie ModuleTag_06
2536      CreationList = OCL_EMPPulseEffectSpheroids
2537    End
2538  
2539    Behavior = FXListDie ModuleTag_07
2540      DeathFX = WeaponFX_EMPPulseImpact
2541      OrientToObject = No
2542    End
2543  
2544    Behavior = DestroyDie ModuleTag_08
2545      ;nothing
2546    End
2547  
2548    Geometry = SPHERE                      ;Collision geometry
2549    GeometryMajorRadius = 1.0              ;Collision major radius
2550    GeometryMinorRadius = 1.0              ;Collision minor radius
2551    GeometryHeight = 1.0                   ;Height for geometry
2552    GeometryIsSmall = Yes                  ;Is small geometry
2553  
2554  End
2555  
2556  
2557  
2558  ;------------------------------------------------------------------------------
2559  Object BlackMarketNuke
2560  
2561    ; *** ART Parameters ***
2562    Draw = W3DModelDraw ModuleTag_01
2563      OkToChangeModelColor = Yes
2564      DefaultConditionState
2565        Model = AVBomber_B
2566      End
2567    End
2568  
2569    ; ***DESIGN parameters ***
2570    DisplayName         = OBJECT:BlackMarketNuke
2571    Side                = GLA
2572    EditorSorting       = SYSTEM
2573    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
2574    ArmorSet
2575      Conditions        = None
2576      Armor             = ProjectileArmor
2577      DamageFX          = None
2578    End
2579  
2580    ; *** AUDIO Parameters ***
2581    
2582    ; *** ENGINEERING Parameters ***
2583    KindOf            = PROJECTILE
2584    Body = ActiveBody ModuleTag_02
2585      MaxHealth       = 100.0
2586      InitialHealth   = 100.0
2587    End
2588    
2589    Behavior = AIUpdateInterface ModuleTag_03
2590    End
2591  
2592    Locomotor = SET_NORMAL None
2593  
2594    Behavior = PhysicsBehavior ModuleTag_04
2595      Mass                  = 75.0
2596      AerodynamicFriction   = 1     ; this is now friction-per-sec
2597      ForwardFriction       = 33    ; this is now friction-per-sec
2598      CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
2599    End
2600  
2601    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
2602      DeathWeapon   = BlackMarketNukeWeapon
2603      StartsActive  = Yes
2604    End
2605  
2606    Behavior = HeightDieUpdate ModuleTag_06
2607      TargetHeight = 1.0
2608      TargetHeightIncludesStructures = No
2609    End
2610  
2611    Behavior = SpecialPowerCompletionDie ModuleTag_07
2612      SpecialPowerTemplate = SuperweaponBlackMarketNuke
2613    End
2614  
2615    Behavior = DestroyDie ModuleTag_08
2616      ;nothing
2617    End
2618  
2619    Behavior = FXListDie ModuleTag_09
2620      DeathFX = FX_NukeGLA
2621      OrientToObject = No
2622    End
2623  
2624    Geometry = Sphere
2625    GeometryIsSmall = Yes
2626    GeometryMajorRadius = 12.0
2627  
2628  End
2629  
2630  ;------------------------------------------------------------------------------
2631  Object AnthraxBomb
2632  
2633    ; *** ART Parameters ***
2634    Draw = W3DModelDraw ModuleTag_01
2635      OkToChangeModelColor = Yes
2636      DefaultConditionState
2637        Model = AVBomber_B
2638      End
2639    End
2640  
2641    ; ***DESIGN parameters ***
2642    DisplayName         = OBJECT:AnthraxBomb
2643    Side                = GLA
2644    EditorSorting       = SYSTEM
2645    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
2646    VisionRange         = 300.0  
2647    ShroudClearingRange = 0
2648    ArmorSet
2649      Conditions      = None
2650      Armor           = ProjectileArmor
2651      DamageFX        = None
2652    End
2653  
2654    ; *** AUDIO Parameters ***
2655    SoundFallingFromPlane = DaisyCutterWeapon
2656      
2657    ; *** ENGINEERING Parameters ***
2658    KindOf            = PROJECTILE
2659    Body = ActiveBody ModuleTag_02
2660      MaxHealth       = 100.0
2661      InitialHealth   = 100.0
2662    End
2663    
2664    Behavior = AIUpdateInterface ModuleTag_03
2665    End
2666    Locomotor = SET_NORMAL None
2667  
2668    Behavior = PhysicsBehavior ModuleTag_04
2669      Mass                  = 75.0
2670      AerodynamicFriction   = 1  ; this is now friction-per-sec
2671      ForwardFriction       = 33     ; this is now friction-per-sec
2672      CenterOfMassOffset    = 2  ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
2673    End
2674  
2675    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
2676      DeathWeapon   = AnthraxBombWeapon
2677      StartsActive  = Yes
2678    End
2679  
2680    Behavior = HeightDieUpdate ModuleTag_06
2681      TargetHeight = 40.0
2682      TargetHeightIncludesStructures = No
2683    End
2684  
2685    Behavior = SpecialPowerCompletionDie ModuleTag_07
2686      SpecialPowerTemplate = SuperweaponAnthraxBomb
2687    End
2688    Behavior = DestroyDie ModuleTag_08
2689      ;nothing
2690    End
2691  
2692     Behavior = FXListDie ModuleTag_09
2693      DeathFX = FX_AnthraxBomb
2694    End
2695  
2696  ;  Geometry = Sphere
2697   ; GeometryIsSmall = Yes
2698    ;GeometryMajorRadius = 12.0
2699  
2700  End
2701  
2702  ;------------------------------------------------------------------------------
2703  Object DaisyCutterBomb
2704  
2705    ; *** ART Parameters ***
2706    Draw = W3DModelDraw ModuleTag_01
2707      OkToChangeModelColor = Yes
2708      DefaultConditionState
2709        Model = AVBomber_B
2710      End
2711    End
2712  
2713    ; ***DESIGN parameters ***
2714    DisplayName         = OBJECT:DaisyCutterBomb
2715    EditorSorting       = SYSTEM
2716    TransportSlotCount  = 10                 ;how many "slots" we take in a transport (0 == not transportable)
2717    VisionRange         = 300.0  
2718    ShroudClearingRange = 0
2719    ArmorSet
2720      Conditions      = None
2721      Armor           = ProjectileArmor
2722      DamageFX        = None
2723    End
2724  
2725    ; *** AUDIO Parameters ***
2726    SoundFallingFromPlane = DaisyCutterWeapon
2727    
2728    ; *** ENGINEERING Parameters ***
2729    KindOf            = PROJECTILE
2730    Body = ActiveBody ModuleTag_02
2731      MaxHealth       = 100.0
2732      InitialHealth   = 100.0
2733    End
2734  
2735    Behavior = CreateObjectDie ModuleTag_03
2736      CreationList = OCL_DaisyCutterExplode
2737    End
2738    Behavior = FXListDie ModuleTag_04
2739      DeathFX = FX_DaisyCutterExplode
2740    End
2741    Behavior = DestroyDie ModuleTag_05
2742      ;nothing
2743    End
2744       
2745    Behavior = AIUpdateInterface ModuleTag_06
2746    End
2747    Locomotor = SET_NORMAL None
2748    Behavior = PhysicsBehavior ModuleTag_07
2749      Mass                = 75.0
2750      AerodynamicFriction = 1  ; this is now friction-per-sec
2751      ForwardFriction     = 33     ; this is now friction-per-sec
2752      CenterOfMassOffset  = 2  ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
2753    End
2754    Behavior = HeightDieUpdate ModuleTag_08
2755      TargetHeight = 50.0
2756      TargetHeightIncludesStructures = Yes
2757    End
2758  
2759    Behavior = SpecialPowerCompletionDie ModuleTag_09
2760      SpecialPowerTemplate = SuperweaponDaisyCutter
2761    End
2762  
2763    Geometry = Sphere
2764    GeometryIsSmall = Yes
2765    GeometryMajorRadius = 12.0
2766  
2767  End
2768  
2769  ;------------------------------------------------------------------------------
2770  Object DaisyCutterGas
2771  
2772    ; *** ART Parameters ***
2773  ;  Draw = W3DModelDraw
2774  ;;    ConditionState      = NONE
2775  ;      Model             = PMDumpst04
2776  ;    End
2777  ;  End
2778  
2779    ; *** DESIGN Parameters ***
2780  
2781    ; *** ENGINEERING Parameters ***
2782    KindOf = IMMOBILE
2783    Body                  = ActiveBody ModuleTag_01
2784      MaxHealth           = 1.0
2785      InitialHealth       = 1.0
2786    End
2787  
2788    Behavior = PhysicsBehavior ModuleTag_02
2789      Mass                = 150.0
2790      AerodynamicFriction = 7  ; this is now friction-per-sec
2791      ForwardFriction     = 200   ; this is now friction-per-sec
2792    End
2793    Behavior = HeightDieUpdate ModuleTag_03
2794      TargetHeight                     = 40.0
2795      TargetHeightIncludesStructures   = Yes
2796      DestroyAttachedParticlesAtHeight = 41.0   ; Hack, todo remove this
2797    End
2798    Behavior = SlowDeathBehavior ModuleTag_04
2799      DestructionDelay        = 1000
2800      DestructionDelayVariance = 100
2801      FX                  = INITIAL FX_DaisyCutterIgnite
2802      FX                  = FINAL   FX_DaisyCutterFinalExplosion
2803      Weapon              = MIDPOINT   DaisyCutterFlameWeapon    ; Just a spot of flame to light trees on fire
2804      Weapon              = FINAL   DaisyCutterDetonationWeapon
2805    End
2806  
2807  End
2808  
2809  ;------------------------------------------------------------------------------
2810  Object NeutronMissile
2811  
2812    ; *** ART Parameters ***
2813    Draw               = W3DModelDraw ModuleTag_01
2814      OkToChangeModelColor = Yes
2815      ConditionState   = NONE
2816        Model          = NBNRocket
2817      End
2818      ConditionState   = DAMAGED REALLYDAMAGED RUBBLE
2819        Model          = NONE
2820      End
2821      
2822    End
2823  
2824    ; ***DESIGN parameters ***
2825    DisplayName        = OBJECT:NeutronMissile
2826    KindOf             = UNATTACKABLE
2827    EditorSorting      = SYSTEM
2828    VisionRange = 300.0  
2829    ShroudClearingRange = 0
2830    TransportSlotCount = 10
2831    ArmorSet
2832      Conditions       = None
2833      Armor            = ProjectileArmor
2834      DamageFX         = None
2835    End
2836  
2837    ; *** AUDIO Parameters ***
2838    ; SoundFallingFromPlane = DaisyCutterWeapon
2839      
2840    ; *** ENGINEERING Parameters ***
2841    Body = ActiveBody ModuleTag_02
2842      MaxHealth        = 99999999.0
2843      InitialHealth    = 99999999.0
2844    End
2845  
2846    Behavior = NeutronMissileUpdate ModuleTag_03
2847      DistanceToTravelBeforeTurning = 300       ; goes straight up a long ways first
2848      MaxTurnRate = 7200                        ; huge, since it turns off-camera
2849      ForwardDamping = 0.1
2850      RelativeSpeed = 2.0
2851      LaunchFX = FX_NeutronMissileLaunch
2852      IgnitionFX = FX_NeutronMissileIgnition
2853      TargetFromDirectlyAbove = 500      ; aim for an intermed spot directly above the target, so we come straight down onto it
2854      SpecialAccelFactor = 1
2855      SpecialSpeedTime = 1500
2856      SpecialSpeedHeight = 160
2857      SpecialJitterDistance = 0.4
2858      DeliveryDecalRadius = 210
2859      DeliveryDecal
2860        Texture           = SCCNuclearMissile_China
2861        Style             = SHADOW_ALPHA_DECAL
2862        OpacityMin        = 25%
2863        OpacityMax        = 50%
2864        OpacityThrobTime  = 500
2865        Color             = R:255 G:0 B:0 A:255 
2866        OnlyVisibleToOwningPlayer = Yes
2867      End
2868    End
2869  
2870    Behavior = HeightDieUpdate ModuleTag_04
2871      TargetHeight        = 100.0
2872      TargetHeightIncludesStructures = No
2873      OnlyWhenMovingDown  = Yes
2874      SnapToGroundOnDeath = Yes
2875      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
2876    End
2877  
2878    Behavior = SpecialPowerCompletionDie ModuleTag_05
2879      SpecialPowerTemplate = SuperweaponNeutronMissile
2880    End
2881  
2882    Behavior = NeutronMissileSlowDeathBehavior ModuleTag_07
2883      DestructionDelay    = 3501
2884      ScorchMarkSize      = 320
2885      FXList              = FX_Nuke
2886      
2887      Blast1Enabled       = Yes
2888      Blast1Delay         = 580     ;in milliseconds
2889      Blast1ScorchDelay   = 100     ;in milliseconds
2890      Blast1InnerRadius   = 60.0    ;objects inside this get the full damage
2891      Blast1OuterRadius   = 60.0    ;objects inside this get some of the full damage
2892      Blast1MaxDamage     = 0.0     ;damage within inner radius of blast
2893      Blast1MinDamage     = 0.0     ;always do at least this much damage to objects
2894      Blast1ToppleSpeed   = 0.5     ;higher #'s topple faster
2895      Blast1PushForce     = 10.0    ;higher #'s push more
2896      
2897      Blast2Enabled       = Yes
2898      Blast2Delay         = 660    ;in milliseconds
2899      Blast2ScorchDelay   = 180     ;in milliseconds
2900      Blast2InnerRadius   = 90.0    ;objects inside this get the full damage
2901      Blast2OuterRadius   = 90.0    ;objects inside this get some of the full damage
2902      Blast2MaxDamage     = 0.0     ;damage within inner radius of blast
2903      Blast2MinDamage     = 0.0     ;always do at least this much damage to objects
2904      Blast2ToppleSpeed   = 0.45    ;higher #'s topple faster
2905      Blast2PushForce     = 8.0     ;higher #'s push more
2906      
2907      Blast3Enabled       = Yes
2908      Blast3Delay         = 720    ;in milliseconds
2909      Blast3ScorchDelay   = 260     ;in milliseconds
2910      Blast3InnerRadius   = 120.0   ;objects inside this get the full damage
2911      Blast3OuterRadius   = 120.0   ;objects inside this get some of the full damage
2912      Blast3MaxDamage     = 0.0     ;damage within inner radius of blast
2913      Blast3MinDamage     = 0.0     ;always do at least this much damage to objects
2914      Blast3ToppleSpeed   = 0.42    ;higher #'s topple faster
2915      Blast3PushForce     = 6.0     ;higher #'s push more
2916  
2917      Blast4Enabled       = Yes
2918      Blast4Delay         = 850    ;in milliseconds
2919      Blast4ScorchDelay   = 340     ;in milliseconds
2920      Blast4InnerRadius   = 150.0   ;objects inside this get the full damage
2921      Blast4OuterRadius   = 150.0   ;objects inside this get some of the full damage
2922      Blast4MaxDamage     = 0.0     ;damage within inner radius of blast
2923      Blast4MinDamage     = 0.0     ;always do at least this much damage to objects
2924      Blast4ToppleSpeed   = 0.40    ;higher #'s topple faster
2925      Blast4PushForce     = 6.0     ;higher #'s push more
2926  
2927      Blast5Enabled       = Yes
2928      Blast5Delay         = 1000    ;in milliseconds
2929      Blast5ScorchDelay   = 420     ;in milliseconds
2930      Blast5InnerRadius   = 180.0   ;objects inside this get the full damage
2931      Blast5OuterRadius   = 180.0   ;objects inside this get some of the full damage
2932      Blast5MaxDamage     = 0.0     ;damage within inner radius of blast
2933      Blast5MinDamage     = 0.0     ;always do at least this much damage to objects
2934      Blast5ToppleSpeed   = 0.38    ;higher #'s topple faster
2935      Blast5PushForce     = 6.0     ;higher #'s push more
2936      
2937      Blast6Enabled       = Yes
2938      Blast6Delay         = 1180    ;in milliseconds
2939      Blast6ScorchDelay   = 500     ;in milliseconds
2940      Blast6InnerRadius   = 60.0    ;objects inside this get the full damage
2941      Blast6OuterRadius   = 210.0   ;objects inside this get some of the full damage
2942      Blast6MaxDamage     = 3500.0  ;damage within inner radius of blast
2943      Blast6MinDamage     = 300.0   ;always do at least this much damage to objects
2944      Blast6ToppleSpeed   = 0.35    ;higher #'s topple faster
2945      Blast6PushForce     = 4.0     ;higher #'s push more
2946  
2947      Blast7Enabled       = Yes
2948      Blast7Delay         = 999999  ;in milliseconds, don't do the damage wave
2949      Blast7ScorchDelay   = 620     ;in milliseconds
2950      Blast7OuterRadius   = 210.0   ;objects inside this get some of the full damage
2951  
2952      Blast8Enabled       = Yes
2953      Blast8Delay         = 999999  ;in milliseconds, don't do the damage wave    
2954      Blast8ScorchDelay   = 700     ;in milliseconds
2955      Blast8OuterRadius   = 210.0   ;objects inside this get some of the full damage
2956  
2957      Blast9Enabled       = Yes
2958      Blast9Delay         = 999999  ;in milliseconds, don't do the damage wave    
2959      Blast9ScorchDelay   = 800     ;in milliseconds
2960      Blast9OuterRadius   = 210.0   ;objects inside this get some of the full damage
2961      
2962      OCL            = MIDPOINT   OCL_NukeRadiationField
2963  
2964    End
2965  
2966    Geometry = CYLINDER
2967    GeometryIsSmall = Yes
2968    GeometryMajorRadius = 7.0
2969    GeometryHeight = 60.0
2970  
2971  End
2972  
2973  ;------------------------------------------------------------------------------
2974  Object CargoTruckNuke
2975  
2976    ; ***DESIGN parameters ***
2977    DisplayName        = OBJECT:NeutronMissile
2978    EditorSorting      = SYSTEM
2979    VisionRange = 300.0  
2980    ShroudClearingRange = 0
2981    ArmorSet
2982      Conditions       = None
2983      Armor            = ProjectileArmor
2984      DamageFX         = None
2985    End
2986  
2987    ; *** AUDIO Parameters ***
2988    ; SoundFallingFromPlane = DaisyCutterWeapon
2989      
2990    ; *** ENGINEERING Parameters ***
2991    Body = ActiveBody ModuleTag_01
2992      MaxHealth        = 99999999.0
2993      InitialHealth    = 99999999.0
2994    End
2995  
2996  
2997    ;The lifetime delays the explosion with enough time to play an audio cue.
2998    ;NOTE: The lifetime update is set in the ObjectCreationList that creates
2999    ;      this object!!!
3000    Behavior = LifetimeUpdate ModuleTag_02
3001      MinLifetime = 3000   ; min lifetime in msec
3002      MaxLifetime = 3000   ; max lifetime in msec
3003    End
3004  
3005    Behavior = NeutronMissileSlowDeathBehavior ModuleTag_03
3006      DestructionDelay = 3501
3007      ScorchMarkSize      = 320
3008      FXList              = FX_Nuke
3009      
3010      Blast1Enabled       = Yes
3011      Blast1Delay         = 580     ;in milliseconds
3012      Blast1ScorchDelay   = 100     ;in milliseconds
3013      Blast1InnerRadius   = 60.0    ;objects inside this get the full damage
3014      Blast1OuterRadius   = 60.0    ;objects inside this get some of the full damage
3015      Blast1MaxDamage     = 0.0     ;damage within inner radius of blast
3016      Blast1MinDamage     = 0.0     ;always do at least this much damage to objects
3017      Blast1ToppleSpeed   = 0.5     ;higher #'s topple faster
3018      Blast1PushForce     = 10.0    ;higher #'s push more
3019      
3020      Blast2Enabled       = Yes
3021      Blast2Delay         = 660    ;in milliseconds
3022      Blast2ScorchDelay   = 180     ;in milliseconds
3023      Blast2InnerRadius   = 90.0    ;objects inside this get the full damage
3024      Blast2OuterRadius   = 90.0    ;objects inside this get some of the full damage
3025      Blast2MaxDamage     = 0.0     ;damage within inner radius of blast
3026      Blast2MinDamage     = 0.0     ;always do at least this much damage to objects
3027      Blast2ToppleSpeed   = 0.45    ;higher #'s topple faster
3028      Blast2PushForce     = 8.0     ;higher #'s push more
3029      
3030      Blast3Enabled       = Yes
3031      Blast3Delay         = 720    ;in milliseconds
3032      Blast3ScorchDelay   = 260     ;in milliseconds
3033      Blast3InnerRadius   = 120.0   ;objects inside this get the full damage
3034      Blast3OuterRadius   = 120.0   ;objects inside this get some of the full damage
3035      Blast3MaxDamage     = 0.0     ;damage within inner radius of blast
3036      Blast3MinDamage     = 0.0     ;always do at least this much damage to objects
3037      Blast3ToppleSpeed   = 0.42    ;higher #'s topple faster
3038      Blast3PushForce     = 6.0     ;higher #'s push more
3039  
3040      Blast4Enabled       = Yes
3041      Blast4Delay         = 850    ;in milliseconds
3042      Blast4ScorchDelay   = 340     ;in milliseconds
3043      Blast4InnerRadius   = 150.0   ;objects inside this get the full damage
3044      Blast4OuterRadius   = 150.0   ;objects inside this get some of the full damage
3045      Blast4MaxDamage     = 0.0     ;damage within inner radius of blast
3046      Blast4MinDamage     = 0.0     ;always do at least this much damage to objects
3047      Blast4ToppleSpeed   = 0.40    ;higher #'s topple faster
3048      Blast4PushForce     = 6.0     ;higher #'s push more
3049  
3050      Blast5Enabled       = Yes
3051      Blast5Delay         = 1000    ;in milliseconds
3052      Blast5ScorchDelay   = 420     ;in milliseconds
3053      Blast5InnerRadius   = 180.0   ;objects inside this get the full damage
3054      Blast5OuterRadius   = 180.0   ;objects inside this get some of the full damage
3055      Blast5MaxDamage     = 0.0     ;damage within inner radius of blast
3056      Blast5MinDamage     = 0.0     ;always do at least this much damage to objects
3057      Blast5ToppleSpeed   = 0.38    ;higher #'s topple faster
3058      Blast5PushForce     = 6.0     ;higher #'s push more
3059      
3060      Blast6Enabled       = Yes
3061      Blast6Delay         = 1180    ;in milliseconds
3062      Blast6ScorchDelay   = 500     ;in milliseconds
3063      Blast6InnerRadius   = 60.0    ;objects inside this get the full damage
3064      Blast6OuterRadius   = 210.0   ;objects inside this get some of the full damage
3065      Blast6MaxDamage     = 3500.0  ;damage within inner radius of blast
3066      Blast6MinDamage     = 200.0   ;always do at least this much damage to objects
3067      Blast6ToppleSpeed   = 0.35    ;higher #'s topple faster
3068      Blast6PushForce     = 4.0     ;higher #'s push more
3069  
3070      Blast7Enabled       = Yes
3071      Blast7Delay         = 999999  ;in milliseconds, don't do the damage wave
3072      Blast7ScorchDelay   = 620     ;in milliseconds
3073      Blast7OuterRadius   = 210.0   ;objects inside this get some of the full damage
3074  
3075      Blast8Enabled       = Yes
3076      Blast8Delay         = 999999  ;in milliseconds, don't do the damage wave    
3077      Blast8ScorchDelay   = 700     ;in milliseconds
3078      Blast8OuterRadius   = 210.0   ;objects inside this get some of the full damage
3079  
3080      Blast9Enabled       = Yes
3081      Blast9Delay         = 999999  ;in milliseconds, don't do the damage wave    
3082      Blast9ScorchDelay   = 800     ;in milliseconds
3083      Blast9OuterRadius   = 210.0   ;objects inside this get some of the full damage
3084      
3085    End
3086  
3087    Geometry = Cylinder
3088    GeometryIsSmall = Yes
3089    GeometryMajorRadius = 7.0
3090    GeometryHeight = 60.0
3091  End
3092  
3093  ;------------------------------------------------------------------------------
3094  Object ScudStormMissile
3095  
3096    ; *** ART Parameters ***
3097    Draw               = W3DModelDraw ModuleTag_01
3098      OkToChangeModelColor = Yes
3099      DefaultConditionState
3100        Model          = UBScudStrm_M
3101      End
3102      ConditionState   = DAMAGED REALLYDAMAGED RUBBLE
3103        Model          = NONE
3104      End
3105      
3106    End
3107  
3108    ; ***DESIGN parameters ***
3109    KindOf = PROJECTILE ;BALLISTIC_MISSILE
3110    EditorSorting       = SYSTEM
3111    VisionRange         = 300.0  
3112    ShroudClearingRange = 0
3113    TransportSlotCount  = 10
3114    ArmorSet
3115      Conditions       = None
3116      Armor            = ProjectileArmor
3117      DamageFX         = None
3118    End
3119  
3120    ; *** AUDIO Parameters ***
3121    ; SoundFallingFromPlane = DaisyCutterWeapon
3122      
3123    ; *** ENGINEERING Parameters ***
3124    Body = ActiveBody ModuleTag_02
3125      MaxHealth        = 10000.0
3126      InitialHealth    = 10000.0
3127    End
3128  
3129    Behavior = PhysicsBehavior ModuleTag_03
3130      Mass = 500.0
3131    End
3132  
3133    Behavior = MissileAIUpdate ModuleTag_04
3134      TryToFollowTarget             = No 
3135      FuelLifetime                  = 0 ; zero is infinite
3136      InitialVelocity               = 0                ; in dist/sec
3137      IgnitionFX                    = FX_ScudStormIgnition
3138      DistanceToTravelBeforeTurning = 500
3139      DistanceToTargetBeforeDiving  = 200 ; When I hit this close to target, I ignore PreferredHeight.
3140    End
3141    Locomotor = SET_NORMAL SCUDStormMissileLocomotor
3142  
3143    Behavior = HeightDieUpdate ModuleTag_05
3144      TargetHeight                    = 15.0
3145      TargetHeightIncludesStructures  = No
3146      OnlyWhenMovingDown              = Yes
3147      SnapToGroundOnDeath             = Yes
3148      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
3149    End
3150  
3151    Behavior = DestroyDie ModuleTag_06
3152      ;nothing
3153    End
3154  
3155    Behavior = SpecialPowerCompletionDie ModuleTag_07
3156      SpecialPowerTemplate = SuperweaponScudStorm
3157    End
3158  
3159    Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
3160      DeathWeapon   = ScudStormDamageWeapon
3161      StartsActive  = Yes
3162      ConflictsWith = Upgrade_GLAAnthraxBeta      
3163    End
3164  
3165    Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
3166      DeathWeapon   = ScudStormDamageWeaponUpgraded
3167      StartsActive  = No                      ; turned on by upgrade
3168      TriggeredBy   = Upgrade_GLAAnthraxBeta         
3169    End
3170  
3171  
3172    Geometry = Cylinder
3173    GeometryIsSmall = Yes
3174    GeometryMajorRadius = 7.0
3175    GeometryHeight = 30.0
3176  
3177  End
3178  
3179  ;------------------------------------------------------------------------------
3180  Object AmericaJetAurora
3181  
3182    ; *** ART Parameters ***
3183    SelectPortrait         = SAAurora_L
3184    ButtonImage            = SAAurora
3185    
3186    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
3187    ;UpgradeCameo2 = NONE
3188    ;UpgradeCameo3 = NONE
3189    ;UpgradeCameo4 = NONE
3190    ;UpgradeCameo5 = NONE
3191    
3192    Draw = W3DModelDraw ModuleTag_01
3193  
3194      DefaultConditionState
3195        Model               = AVAurora
3196        HideSubObject       = BurnerFX03 BurnerFX04
3197        WeaponLaunchBone = PRIMARY WeaponA
3198      End
3199  
3200      ConditionState        = JETEXHAUST
3201        ; exhaust
3202        ParticleSysBone     = Wingtip01 JetContrail
3203        ParticleSysBone     = Wingtip02 JetContrail
3204      End
3205  
3206      ConditionState        = JETEXHAUST JETAFTERBURNER
3207        ; exhaust
3208        ParticleSysBone     = Wingtip01 JetContrail
3209        ParticleSysBone     = Wingtip02 JetContrail
3210        ; afterburner
3211        ShowSubObject       = BurnerFX03 BurnerFX04
3212        ParticleSysBone     = Engine01 JetLenzflare
3213        ParticleSysBone     = Engine02 JetLenzflare
3214      End
3215  
3216      ConditionState        = REALLYDAMAGED
3217        Model               = AVAurora_D
3218        ; damage
3219        ParticleSysBone     = Smoke01 JetSmoke
3220        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
3221      End
3222      
3223      ConditionState        = REALLYDAMAGED JETEXHAUST
3224        Model               = AVAurora_D
3225        ; damage
3226        ParticleSysBone     = Smoke01 JetSmoke
3227        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
3228        ; exhaust
3229        ParticleSysBone     = Wingtip01 JetContrail
3230        ParticleSysBone     = Wingtip02 JetContrail
3231      End
3232  
3233      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
3234        Model               = AVAurora_D
3235        ; damage
3236        ParticleSysBone     = Smoke01 JetSmoke
3237        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
3238        ; afterburner
3239        ShowSubObject       = BurnerFX03 BurnerFX04
3240        ParticleSysBone     = Engine01 JetLenzflare
3241        ParticleSysBone     = Engine02 JetLenzflare
3242        ; exhaust
3243        ParticleSysBone     = Wingtip01 JetContrail
3244        ParticleSysBone     = Wingtip02 JetContrail
3245      End
3246  
3247      ConditionState        = RUBBLE
3248        Model               = AVAurora_D1
3249        HideSubObject       = None 
3250        ShowSubObject       = None
3251      End
3252  
3253      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
3254        Model               = AVAurora_D1
3255        ;HideSubObject is needed cause there're inherited from default condition state      
3256        HideSubObject       = None 
3257        ShowSubObject       = None
3258        ParticleSysBone     = Engine01 JetExhaust
3259        ParticleSysBone     = Engine02 JetExhaust
3260        ; exhaust
3261        ParticleSysBone     = Wingtip01 JetContrail
3262        ParticleSysBone     = Wingtip02 JetContrail
3263      End
3264  
3265      OkToChangeModelColor = Yes
3266    End
3267  
3268    ; ***DESIGN parameters ***
3269    DisplayName         = OBJECT:Aurora
3270    EditorSorting       = VEHICLE
3271    Side                = America
3272    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
3273    VisionRange         = 180.0 
3274    ShroudClearingRange = 600
3275    Prerequisites
3276      Object = AmericaAirfield
3277      Object = AmericaStrategyCenter
3278    End
3279    BuildCost           = 2500
3280    BuildTime           = 30.0          ;in seconds     
3281    WeaponSet
3282      Conditions = None 
3283      Weapon = PRIMARY AuroraBombWeapon
3284    End
3285    ArmorSet
3286      Conditions      = None
3287      Armor           = AirplaneArmor
3288      DamageFX        = None
3289    End
3290  
3291    ExperienceValue = 200 200 400 400   ;Experience point value at each level
3292    ExperienceRequired = 0 200 400 800  ;Experience points needed to gain each level
3293    IsTrainable = Yes                   ;Can gain experience
3294    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
3295    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
3296    CommandSet        = AmericaJetAuroraCommandSet
3297  
3298    ; *** AUDIO Parameters ***
3299    VoiceSelect = AuroraBomberVoiceSelect
3300    VoiceMove = AuroraBomberVoiceMove
3301    VoiceGuard = AuroraBomberVoiceMove
3302    VoiceAttack = AuroraBomberVoiceAttack
3303    SoundAmbient = AuroraBomberAmbientLoop
3304    SoundAmbientRubble = NoSound
3305    SoundDie = AuroraBomberVoiceFalling
3306    UnitSpecificSounds
3307      VoiceCreate          = AuroraBomberVoiceCreate
3308      SoundEject           = PilotSoundEject
3309      VoiceEject           = PilotVoiceEject
3310      Afterburner          = AuroraSonicBoom
3311      VoiceLowFuel         = AuroraBomberVoiceLowFuel
3312      VoiceGarrison        = AuroraBomberVoiceMove
3313    End
3314  
3315    ; *** ENGINEERING Parameters ***
3316    RadarPriority = UNIT
3317    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
3318    Body = ActiveBody ModuleTag_02
3319      MaxHealth       = 80.0
3320      InitialHealth   = 80.0
3321    End
3322  
3323    Behavior                          = JetSlowDeathBehavior ModuleTag_03
3324      FXOnGroundDeath                 = FX_JetOnGroundDeath
3325      OCLOnGroundDeath                = OCL_AuroraDeathFinalBlowUp
3326      DestructionDelay                = 99999999; destruction will happen when we
3327      RollRate                        = 0.2
3328      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
3329      PitchRate                       = 0.0
3330      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
3331      FXInitialDeath                  = FX_JetDeathInitial
3332      ;OCLInitialDeath                = None
3333      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
3334      FXSecondary                     = FX_JetDeathSecondary
3335      ;OCLSecondary                   = None
3336      FXHitGround                     = FX_JetDeathHitGround
3337      ;OCLHitGround                   = None
3338      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
3339      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
3340      OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
3341  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
3342    End
3343    Behavior = EjectPilotDie ModuleTag_04
3344      GroundCreationList = OCL_EjectPilotOnGround
3345      AirCreationList = OCL_EjectPilotViaParachute
3346      ExemptStatus = HIJACKED
3347      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
3348    End
3349  
3350    Behavior = PhysicsBehavior ModuleTag_05
3351      Mass = 500.0
3352    End
3353  
3354    Behavior = ExperienceScalarUpgrade ModuleTag_06
3355      TriggeredBy = Upgrade_AmericaAdvancedTraining
3356      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
3357    End
3358  
3359    Behavior = JetAIUpdate ModuleTag_07
3360      OutOfAmmoDamagePerSecond    = 10%    ; amount of damage to take per SEC (not per frame) when out of ammo
3361                                           ; note that it's expressed as a percent of max health, not an absolute
3362      TakeoffSpeedForMaxLift      = 100%   ; smaller numbers give more lift sooner when taking off
3363      TakeoffPause                = 500
3364      MinHeight                   = 5
3365      SneakyOffsetWhenAttacking   = -20.0  ; this is how far behind us people aim when we are in attack mode
3366      AttackLocomotorType         = SET_SUPERSONIC
3367      AttackLocomotorPersistTime  = 100    ; we start slowing down almost immediately
3368      AttackersMissPersistTime    = 2000   ; but remain untargetable fer a bit longer
3369      ReturnForAmmoLocomotorType  = SET_SLUGGISH
3370      ReturnToBaseIdleTime        = 10000         ; if idle for this long, return to base, even if not out of ammo
3371    End
3372    Locomotor = SET_NORMAL      AuroraJetLocomotor
3373    Locomotor = SET_SUPERSONIC  AuroraJetSupersonicLocomotor
3374    Locomotor = SET_SLUGGISH    AuroraJetSluggishLocomotor
3375    Locomotor = SET_TAXIING     BasicJetTaxiLocomotor
3376  
3377    Behavior = FlammableUpdate ModuleTag_21
3378      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
3379      AflameDamageAmount = 3       ; taking this much damage...
3380      AflameDamageDelay = 500       ; this often.
3381    End
3382  
3383    Behavior                 = TransitionDamageFX ModuleTag_22
3384      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
3385      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
3386    End
3387  
3388  
3389    Geometry                 = Box
3390    GeometryIsSmall          = Yes
3391    GeometryMajorRadius      = 14.0
3392    GeometryMinorRadius      = 7.0
3393    GeometryHeight           = 5.0
3394    Shadow                   = SHADOW_VOLUME
3395    ShadowSizeX              = 89  ; minimum elevation angle above horizon. Used to limit shadow length
3396  
3397  End
3398  
3399  ;------------------------------------------------------------------------------
3400  Object AmericaJetStealthFighter
3401  
3402    ; *** ART Parameters ***
3403    SelectPortrait         = SAStealth_L
3404    ButtonImage            = SAStealth
3405    
3406    UpgradeCameo1 = Upgrade_AmericaLaserMissiles
3407    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
3408    ;UpgradeCameo3 = NONE
3409    ;UpgradeCameo4 = NONE
3410    ;UpgradeCameo5 = NONE
3411    
3412    Draw = W3DModelDraw ModuleTag_01
3413  
3414      DefaultConditionState
3415        Model                           = AVStealth
3416        HideSubObject                   = BurnerFX03 BurnerFX04
3417        WeaponLaunchBone  = PRIMARY WeaponA
3418      End
3419      
3420      ConditionState        = JETEXHAUST
3421        ParticleSysBone     = Wingtip01 JetContrail
3422        ParticleSysBone     = Wingtip02 JetContrail
3423      End
3424  
3425      ConditionState        = JETEXHAUST JETAFTERBURNER
3426        ; exhaust
3427        ParticleSysBone     = Wingtip01 JetContrail
3428        ParticleSysBone     = Wingtip02 JetContrail
3429        ; afterburners
3430        ShowSubObject       = BurnerFX03 BurnerFX04
3431        ParticleSysBone     = Engine01 JetLenzflare
3432        ParticleSysBone     = Engine02 JetLenzflare
3433      End
3434  
3435      ConditionState        = REALLYDAMAGED
3436        Model               = AVStealth_D
3437        ; damage
3438        ParticleSysBone     = Smoke01 JetSmoke
3439        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
3440      End
3441  
3442      ConditionState        = REALLYDAMAGED JETEXHAUST
3443        Model               = AVStealth_D
3444        ; damage
3445        ParticleSysBone     = Smoke01 JetSmoke
3446        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
3447        ; exhaust
3448        ParticleSysBone     = Wingtip01 JetContrail
3449        ParticleSysBone     = Wingtip02 JetContrail
3450      End
3451  
3452      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
3453        Model               = AVStealth_D
3454        ; damage
3455        ParticleSysBone     = Smoke01 JetSmoke
3456        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
3457        ; exhaust
3458        ParticleSysBone     = Wingtip01 JetContrail
3459        ParticleSysBone     = Wingtip02 JetContrail
3460        ; afterburners
3461        ShowSubObject       = BurnerFX03 BurnerFX04
3462        ParticleSysBone     = Engine01 JetLenzflare
3463        ParticleSysBone     = Engine02 JetLenzflare
3464      End
3465  
3466      ConditionState        = RUBBLE
3467        Model               = AVStealth_D1
3468        HideSubObject       = None 
3469        ShowSubObject       = None
3470      End
3471  
3472      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
3473        Model               = AVStealth_D1
3474        ;HideSubObject is needed cause there're inherited from default condition state      
3475        HideSubObject       = None 
3476        ShowSubObject       = None
3477        ParticleSysBone     = Engine01 JetExhaust
3478        ParticleSysBone     = Engine02 JetExhaust
3479        ParticleSysBone     = Wingtip01 JetContrail
3480        ParticleSysBone     = Wingtip02 JetContrail
3481      End
3482      
3483      OkToChangeModelColor = Yes
3484  
3485    End
3486  
3487    ; ***DESIGN parameters ***
3488    DisplayName           = OBJECT:StealthFighter
3489    EditorSorting         = VEHICLE
3490    Side                  = America
3491    TransportSlotCount    = 0                 ;how many "slots" we take in a transport (0 == not transportable)
3492    VisionRange           = 180.0 
3493    ShroudClearingRange   = 300.0
3494    Prerequisites
3495      Object = AmericaAirfield
3496      Science = SCIENCE_StealthFighter
3497    End
3498    WeaponSet
3499      Conditions = None 
3500      Weapon = PRIMARY StealthJetMissileWeapon
3501    End
3502    WeaponSet
3503      Conditions = PLAYER_UPGRADE
3504      Weapon = PRIMARY StealthJetLaserGuidedMissileWeapon
3505    End
3506    ArmorSet
3507      Conditions      = None
3508      Armor           = AirplaneArmor
3509      DamageFX        = None
3510    End
3511  
3512    BuildCost           = 1600
3513    BuildTime           = 25.0            ;in seconds  
3514    ExperienceValue     = 100 100 200 300 ;Experience point value at each level
3515    ExperienceRequired  = 0 200 300 600   ; Experience points needed to gain each level
3516    IsTrainable         = Yes             ;Can gain experience
3517    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
3518    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
3519    CommandSet = AmericaJetStealthFighterCommandSet
3520  
3521    ; *** AUDIO Parameters ***
3522    VoiceSelect     = StealthFighterVoiceSelect
3523    VoiceMove       = StealthFighterVoiceMove
3524    VoiceAttack     = StealthFighterVoiceAttack
3525    VoiceAttackAir  = StealthFighterVoiceAttackAir
3526    VoiceGuard      = StealthFighterVoiceAirPatrol
3527    SoundAmbient    = StealthFighterAmbientLoop
3528    SoundAmbientRubble    = NoSound
3529    SoundDie        = StealthFighterVoiceFalling
3530    SoundStealthOn  = StealthOn
3531    SoundStealthOff = StealthOff
3532    UnitSpecificSounds
3533      VoiceCreate   = StealthFighterVoiceCreate
3534      SoundEject    = PilotSoundEject
3535      VoiceEject    = PilotVoiceEject
3536      Afterburner   = RaptorAfterburner
3537      VoiceLowFuel  = AuroraBomberVoiceLowFuel
3538      VoiceGarrison = StealthFighterVoiceMove
3539    End
3540  
3541    ; *** ENGINEERING Parameters ***
3542    RadarPriority   = LOCAL_UNIT_ONLY
3543    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
3544    Body = ActiveBody ModuleTag_02
3545      MaxHealth       = 140.0  ;was 120.0
3546      InitialHealth   = 140.0
3547    End
3548  
3549    Behavior                          = JetSlowDeathBehavior ModuleTag_03
3550      FXOnGroundDeath                 = FX_JetOnGroundDeath
3551      OCLOnGroundDeath                = OCL_StealthDeathFinalBlowUp
3552      DestructionDelay                = 99999999; destruction will happen when we
3553      RollRate                        = 0.2
3554      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
3555      PitchRate                       = 0.0
3556      FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
3557      FXInitialDeath                  = FX_JetDeathInitial
3558      ;OCLInitialDeath                = None
3559      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
3560      FXSecondary                     = FX_JetDeathSecondary
3561      ;OCLSecondary                   = None
3562      FXHitGround                     = FX_JetDeathHitGround
3563      ;OCLHitGround                   = None
3564      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
3565      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
3566      OCLFinalBlowUp                  = OCL_StealthDeathFinalBlowUp
3567  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
3568    End
3569    Behavior = EjectPilotDie ModuleTag_04
3570      GroundCreationList = OCL_EjectPilotOnGround
3571      AirCreationList = OCL_EjectPilotViaParachute
3572      ExemptStatus = HIJACKED
3573      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
3574    End
3575   
3576    Behavior = PhysicsBehavior ModuleTag_05
3577      Mass = 500.0
3578    End
3579  
3580    Behavior = JetAIUpdate ModuleTag_06
3581      OutOfAmmoDamagePerSecond = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
3582                                      ; note that it's expressed as a percent of max health, not an absolute
3583      TakeoffSpeedForMaxLift = 100%   ; smaller numbers give more lift sooner when taking off
3584      TakeoffPause           = 500
3585      MinHeight              = 5
3586      ReturnToBaseIdleTime   = 10000         ; if idle for this long, return to base, even if not out of ammo
3587    End
3588  
3589    Behavior = WeaponSetUpgrade ModuleTag_07
3590      TriggeredBy = Upgrade_AmericaLaserMissiles
3591    End
3592  
3593    Behavior = ExperienceScalarUpgrade ModuleTag_08
3594      TriggeredBy = Upgrade_AmericaAdvancedTraining
3595      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
3596    End
3597  
3598    Behavior = StealthUpdate ModuleTag_09
3599      StealthDelay                          = 1500 ; msec
3600      StealthForbiddenConditions            = FIRING_PRIMARY
3601      ; not currently used... but maybe someday? (srj)
3602      ;RevealDistanceFromTarget             = 0.0f
3603      FriendlyOpacityMin                    = 50.0%
3604      FriendlyOpacityMax                    = 100.0%
3605      InnateStealth                         = Yes
3606      OrderIdleEnemiesToAttackMeUponReveal  = Yes
3607    End
3608  
3609    Locomotor = SET_NORMAL StealthJetLocomotor
3610    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
3611  
3612    Behavior = FlammableUpdate ModuleTag_21
3613      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
3614      AflameDamageAmount = 3       ; taking this much damage...
3615      AflameDamageDelay = 500       ; this often.
3616    End
3617  
3618    Behavior                 = TransitionDamageFX ModuleTag_22
3619      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
3620      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
3621    End
3622  
3623  
3624    Geometry = Cylinder
3625    GeometryIsSmall = Yes
3626    GeometryMajorRadius = 7.0
3627    GeometryMinorRadius = 7.0
3628    GeometryHeight = 7.0
3629    Shadow = SHADOW_VOLUME
3630    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
3631  
3632  End
3633  
3634  ;------------------------------------------------------------------------------
3635  Object AmericaVehicleComanche
3636  
3637    ; *** ART Parameters ***
3638    SelectPortrait         = SACCommanche_L
3639    ButtonImage            = SACCommanche
3640    
3641    UpgradeCameo1 = Upgrade_ComancheRocketPods
3642    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
3643    ;UpgradeCameo3 = NONE
3644    ;UpgradeCameo4 = NONE
3645    ;UpgradeCameo5 = NONE
3646    
3647    Draw = W3DModelDraw ModuleTag_01
3648  
3649      DefaultConditionState
3650        Model                           = AVComanche
3651        HideSubObject                   = MissileUpgrade
3652        Animation                       = AVComanche.AVComanche
3653        AnimationMode                   = LOOP
3654        WeaponMuzzleFlash               = PRIMARY TurretFX
3655        WeaponFireFXBone                = PRIMARY Muzzle
3656        WeaponFireFXBone                = SECONDARY Muzzle
3657        WeaponLaunchBone  = SECONDARY Muzzle
3658      End
3659  
3660      ConditionState = REALLYDAMAGED
3661        Model                           = AVComanche_d
3662        Animation                       = AVComanche_d.AVComanche_d
3663        AnimationMode                   = LOOP
3664      End
3665  
3666      ConditionState = WEAPONSET_PLAYER_UPGRADE
3667        ShowSubObject                   = MissileUpgrade
3668        Animation                       = AVComanche.AVComanche
3669        AnimationMode                   = LOOP
3670        WeaponFireFXBone                = TERTIARY WeaponB
3671        WeaponLaunchBone  = TERTIARY WeaponB
3672      End
3673  
3674      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
3675        Model                           = AVComanche_d
3676        ShowSubObject                   = MissileUpgrade
3677        Animation                       = AVComanche_d.AVComanche_d
3678        AnimationMode                   = LOOP
3679        WeaponFireFXBone                = TERTIARY WeaponB
3680        WeaponLaunchBone  = TERTIARY WeaponB
3681      End
3682  
3683      ConditionState = RUBBLE
3684        Model                           = AVComanche_d
3685        Animation                       = AVComanche_d.AVComanche_d
3686        AnimationMode                   = LOOP
3687      End
3688  
3689      ConditionState = RUBBLE SPECIAL_DAMAGED
3690        Model                           = AVComanche_d
3691        HideSubObject                   = AVComanche_Prop
3692      End
3693  
3694      OkToChangeModelColor = Yes
3695    End
3696  
3697    ; ***DESIGN parameters ***
3698    DisplayName         = OBJECT:Comanche
3699    EditorSorting       = VEHICLE
3700    Side                = America
3701    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
3702    VisionRange         = 180.0 
3703    ShroudClearingRange = 600
3704    Prerequisites
3705      Object            = AmericaAirfield
3706    End
3707  
3708    WeaponSet
3709      Conditions          = None 
3710      ; -----
3711      Weapon              = PRIMARY     Comanche20mmCannonWeapon
3712      PreferredAgainst    = PRIMARY     INFANTRY
3713      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
3714      ; -----
3715      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
3716      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
3717      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
3718      ; -----
3719      Weapon              = TERTIARY    NONE
3720    End
3721    WeaponSet
3722      Conditions          = PLAYER_UPGRADE 
3723      ; -----
3724      Weapon              = PRIMARY     Comanche20mmCannonWeapon
3725      PreferredAgainst    = PRIMARY     INFANTRY
3726      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
3727      ; -----
3728      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
3729      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
3730      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
3731      ; -----
3732      Weapon              = TERTIARY    ComancheRocketPodWeapon
3733      AutoChooseSources   = TERTIARY    NONE
3734    End
3735    ArmorSet
3736      Conditions      = None
3737      Armor           = ComancheArmor
3738      DamageFX        = None
3739    End
3740    BuildCost           = 1500
3741    BuildTime           = 20              ; in seconds  
3742    ExperienceValue     = 50 50 100 200   ; Experience point value at each level
3743    ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
3744    IsTrainable         = Yes             ; Can gain experience
3745    CommandSet          = AmericaVehicleComancheCommandSet
3746  
3747    ; *** AUDIO Parameters ***
3748    VoiceSelect           = ComancheVoiceSelect
3749    VoiceMove             = ComancheVoiceMove
3750    VoiceGuard            = ComancheVoiceMove
3751    VoiceAttack           = ComancheVoiceAttack
3752    SoundAmbient          = ComancheAmbientLoop
3753    SoundAmbientRubble    = NoSound
3754    SoundDie              = ComancheVoiceFalling
3755    UnitSpecificSounds
3756      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
3757      VoiceCreate         = ComancheVoiceCreate
3758      SoundEject          = PilotSoundEject
3759      VoiceEject          = PilotVoiceEject
3760      Afterburner         = RaptorAfterburner
3761      VoiceGarrison       = ComancheVoiceMove
3762      TurretMoveStart     = NoSound
3763      TurretMoveLoop      = NoSound
3764      VoiceFireRocketPods = ComancheVoiceAttackRocket
3765    End
3766  
3767  
3768    ; *** ENGINEERING Parameters ***
3769    RadarPriority   = UNIT
3770    KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
3771  
3772    Behavior = WeaponSetUpgrade ModuleTag_02
3773      TriggeredBy = Upgrade_ComancheRocketPods
3774    End
3775    Behavior = ExperienceScalarUpgrade ModuleTag_03
3776      TriggeredBy = Upgrade_AmericaAdvancedTraining
3777      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
3778    End
3779  
3780    Body = ActiveBody ModuleTag_04
3781      MaxHealth       = 220.0
3782      InitialHealth   = 220.0
3783    End
3784  
3785    Behavior = FXListDie ModuleTag_05
3786      DeathFX = FX_HelicopterStartDeath
3787    End
3788  
3789    Behavior = JetAIUpdate ModuleTag_06
3790      MinHeight                     = 5
3791      NeedsRunway                   = No
3792      KeepsParkingSpaceWhenAirborne = No
3793      AutoAcquireEnemiesWhenIdle    = Yes
3794      ; note that comanches do not return to base when idle
3795      
3796      ; this is a bit of a trick... normally, units cannot move-and-fire at
3797      ; the same time. we need the comanche to be able to. so we give it
3798      ; a "turret" (invisible) and put the two main weapons on it, but with
3799      ; no turn rate. voila!
3800      Turret
3801        TurretTurnRate = 0      ; this "turret" does not turn
3802        TurretPitchRate = 0     ; nor does it pitch
3803        ControlledWeaponSlots = PRIMARY SECONDARY
3804      End
3805  
3806    End
3807    Locomotor = SET_NORMAL  ComancheLocomotor
3808    Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
3809  
3810    Behavior = PhysicsBehavior ModuleTag_07
3811      Mass = 50.0
3812    End
3813    Behavior = HelicopterSlowDeathBehavior ModuleTag_08
3814      DestructionDelay                = 99999999        ; the destruction delay
3815      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
3816      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
3817      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
3818      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
3819      SoundDeathLoop                  = ComancheDamagedLoop
3820      MinSelfSpin                     = 100                     ; in degrees per second
3821      MaxSelfSpin                     = 300                     ; in degrees per second
3822      SelfSpinUpdateDelay             = 100             ; in milliseconds
3823      SelfSpinUpdateAmount            = 10             ; in degrees   
3824      FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
3825      MinBladeFlyOffDelay             = 1500            ; in milliseconds
3826      MaxBladeFlyOffDelay             = 1500            ; in milliseconds
3827      AttachParticle                  = SootySmokeTrail
3828      AttachParticleBone              = Propeller02
3829      BladeObjectName                 = ComancheBlades
3830      BladeBoneName                   = Propeller01    
3831      ; Most things that eject pilots do so immediately upon death,
3832      ; via use of EjectPilotDie, but Helicopters are a special case...
3833      ; they need to do so after their blades are ejected. 
3834      OCLEjectPilot                   = OCL_EjectPilotViaParachute
3835      FXBlade                         = FX_HelicopterBladeExplosion
3836      OCLBlade                        = OCL_HelicopterBladeExplosion
3837      FXHitGround                     = FX_HelicopterHitGround
3838      OCLHitGround                    = OCL_HelicopterHitGround
3839      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
3840      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
3841      DelayFromGroundToFinalDeath     = 1500
3842      FinalRubbleObject               = ComancheRubbleHull
3843    End
3844  
3845    Behavior = TransitionDamageFX ModuleTag_09
3846      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
3847      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
3848    End
3849  
3850    Behavior = FlammableUpdate ModuleTag_21
3851      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
3852      AflameDamageAmount = 3       ; taking this much damage...
3853      AflameDamageDelay = 500       ; this often.
3854    End
3855  
3856    Geometry = BOX
3857    GeometryMajorRadius = 20.0
3858    GeometryMinorRadius = 3.0
3859    GeometryHeight = 25.0     
3860    GeometryIsSmall = No
3861    Shadow = SHADOW_VOLUME    
3862    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
3863  
3864  End
3865  
3866  ;------------------------------------------------------------------------------
3867  Object ComancheBlades
3868  
3869    ; *** ART Parameters ***
3870    Draw = W3DModelDraw ModuleTag_01
3871      DefaultConditionState
3872        Model = AVComanche_D2
3873        Animation = AVComanche_D2.AVComanche_D2
3874        AnimationMode = LOOP
3875      End
3876    End
3877  
3878    ; ***DESIGN parameters ***
3879    DisplayName      = OBJECT:Comanche
3880    Side = America
3881  
3882    ; *** ENGINEERING Parameters ***
3883    KindOf = PRELOAD IMMOBILE
3884  
3885    Behavior = PhysicsBehavior ModuleTag_02
3886      AllowBouncing = Yes
3887    End
3888    Behavior = LifetimeUpdate ModuleTag_03
3889      MinLifetime = 1000   ; min lifetime in msec
3890      MaxLifetime = 1000   ; max lifetime in msec
3891    End
3892  
3893  End
3894  
3895  ;------------------------------------------------------------------------------
3896  Object ComancheRubbleHull
3897  
3898    ; *** ART Parameters ***
3899    Draw = W3DModelDraw ModuleTag_01
3900      DefaultConditionState
3901        Model        = AVComanche_D1
3902      End
3903    End
3904  
3905    ; ***DESIGN parameters ***
3906    DisplayName      = OBJECT:ComancheHull
3907    Side = America
3908  
3909    ; *** ENGINEERING Parameters ***
3910    KindOf = IMMOBILE NO_COLLIDE HULK
3911  
3912    Behavior = PhysicsBehavior ModuleTag_02
3913      Mass           = 25.0
3914      AllowBouncing  = Yes
3915    End
3916  
3917    Behavior = LifetimeUpdate ModuleTag_03
3918      MinLifetime    = 3000   ; min lifetime in msec
3919      MaxLifetime    = 3000   ; max lifetime in msec
3920    End
3921  
3922    Behavior = SlowDeathBehavior ModuleTag_05
3923      SinkDelay        = 3000
3924      SinkRate         = 4     ; in Dist/Sec
3925      DestructionDelay = 10000
3926    End
3927  
3928  
3929  End
3930  
3931  ;------------------------------------------------------------------------------
3932  Object CINE_ComancheRubbleHull
3933  
3934    ; *** ART Parameters ***
3935    Draw = W3DModelDraw ModuleTag_01
3936      DefaultConditionState
3937        Model        = AVComanche_D1
3938      End
3939    End
3940  
3941    ; ***DESIGN parameters ***
3942    DisplayName      = OBJECT:ComancheHull
3943    Side = America
3944  
3945    ; *** ENGINEERING Parameters ***
3946    KindOf = IMMOBILE
3947  
3948    Behavior = PhysicsBehavior ModuleTag_02
3949      Mass           = 25.0
3950      AllowBouncing  = Yes
3951    End
3952  
3953  End
3954  
3955  
3956  ;------------------------------------------------------------------------------
3957  Object ChinookRubbleHull
3958  
3959    ; *** ART Parameters ***
3960    Draw = W3DModelDraw ModuleTag_01
3961      DefaultConditionState
3962        Model        = AVChinook_D1
3963      End
3964    End
3965  
3966    ; ***DESIGN parameters ***
3967    DisplayName      = OBJECT:ComancheHull
3968    Side = America
3969  
3970    ; *** ENGINEERING Parameters ***
3971    KindOf = IMMOBILE NO_COLLIDE HULK
3972  
3973    Behavior = PhysicsBehavior ModuleTag_02
3974      Mass           = 25.0
3975      AllowBouncing  = Yes
3976    End
3977    Behavior = LifetimeUpdate ModuleTag_03
3978      MinLifetime    = 100000   ; min lifetime in msec
3979      MaxLifetime    = 100000   ; max lifetime in msec
3980    End
3981  
3982  End
3983  
3984  ;------------------------------------------------------------------------------
3985  Object AmericaVehicleApache
3986  
3987    ; *** ART Parameters ***
3988    SelectPortrait         = SACApache_L
3989    ButtonImage            = SACApache
3990    
3991    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
3992    
3993    Draw = W3DModelDraw ModuleTag_01
3994  
3995      DefaultConditionState
3996        Model                           = AVApache
3997        Animation                       = AVApache.AVApache
3998        AnimationMode                   = LOOP
3999        WeaponMuzzleFlash               = PRIMARY TurretFX
4000        WeaponFireFXBone                = PRIMARY Muzzle
4001        WeaponFireFXBone                = SECONDARY WeaponB
4002        WeaponLaunchBone                = SECONDARY WeaponB
4003        WeaponFireFXBone                = TERTIARY WeaponB
4004        WeaponLaunchBone                = TERTIARY WeaponB
4005      End
4006  
4007      ConditionState = REALLYDAMAGED
4008        Model                           = AVApache_d
4009        Animation                       = AVApache_d.AVApache_d
4010        AnimationMode                   = LOOP
4011      End
4012  
4013      ConditionState = RUBBLE
4014        Model                           = AVApache_d
4015        Animation                       = AVApache_d.AVApache_d
4016        AnimationMode                   = LOOP
4017      End
4018  
4019      ConditionState = RUBBLE SPECIAL_DAMAGED
4020        Model                           = AVApache_d
4021        HideSubObject                   = AVApache_Prop
4022      End
4023  
4024      OkToChangeModelColor = Yes
4025    End
4026  
4027    ; ***DESIGN parameters ***
4028    DisplayName         = OBJECT:Apache
4029    EditorSorting       = VEHICLE
4030    Side                = America
4031    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
4032    VisionRange         = 180.0 
4033    ShroudClearingRange = 600
4034    Prerequisites
4035      Object            = AmericaAirfield
4036      Object            = AmericaStrategyCenter
4037    End
4038  
4039    WeaponSet
4040      Conditions          = None 
4041      ; -----
4042      Weapon              = PRIMARY     Comanche20mmCannonWeapon
4043      PreferredAgainst    = PRIMARY     INFANTRY
4044      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
4045      ; -----
4046      Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
4047      PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
4048      AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
4049      ; -----
4050      Weapon              = TERTIARY    ComancheRocketPodWeapon
4051      AutoChooseSources   = TERTIARY    NONE
4052    End
4053  
4054    ArmorSet
4055      Conditions      = None
4056      Armor           = ComancheArmor
4057      DamageFX        = None
4058    End
4059    BuildCost           = 2500
4060    BuildTime           = 30              ; in seconds  
4061    ExperienceValue     = 65 65 150 300   ; Experience point value at each level
4062    ExperienceRequired  = 0 125 250 500   ; Experience points needed to gain each level
4063    IsTrainable         = Yes             ; Can gain experience
4064    CommandSet          = AmericaVehicleComancheCommandSet
4065  
4066    ; *** AUDIO Parameters ***
4067    VoiceSelect           = ComancheVoiceSelect
4068    VoiceMove             = ComancheVoiceMove
4069    VoiceGuard            = ComancheVoiceMove
4070    VoiceAttack           = ComancheVoiceAttack
4071    SoundAmbient          = ComancheAmbientLoop
4072    SoundAmbientRubble    = NoSound
4073    SoundDie              = ComancheVoiceFalling
4074    UnitSpecificSounds
4075      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
4076      VoiceCreate         = ComancheVoiceCreate
4077      SoundEject          = PilotSoundEject
4078      VoiceEject          = PilotVoiceEject
4079      Afterburner         = RaptorAfterburner
4080      VoiceGarrison       = ComancheVoiceMove
4081      TurretMoveStart     = NoSound
4082      TurretMoveLoop      = NoSound
4083      VoiceFireRocketPods = ComancheVoiceAttackRocket
4084    End
4085  
4086  
4087    ; *** ENGINEERING Parameters ***
4088    RadarPriority   = UNIT
4089    KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
4090  
4091    Behavior = ExperienceScalarUpgrade ModuleTag_03
4092      TriggeredBy = Upgrade_AmericaAdvancedTraining
4093      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
4094    End
4095  
4096    Body = ActiveBody ModuleTag_04
4097      MaxHealth       = 280.0
4098      InitialHealth   = 280.0
4099    End
4100  
4101    Behavior = FXListDie ModuleTag_05
4102      DeathFX = FX_HelicopterStartDeath
4103    End
4104  
4105    Behavior = JetAIUpdate ModuleTag_06
4106      MinHeight                     = 5
4107      NeedsRunway                   = No
4108      KeepsParkingSpaceWhenAirborne = No
4109      AutoAcquireEnemiesWhenIdle    = Yes
4110      Turret
4111        TurretTurnRate = 0      ; this "turret" does not turn
4112        TurretPitchRate = 0     ; nor does it pitch
4113        ControlledWeaponSlots = PRIMARY SECONDARY
4114      End
4115  
4116    End
4117    Locomotor = SET_NORMAL  ComancheLocomotor
4118    Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
4119  
4120    Behavior = PhysicsBehavior ModuleTag_07
4121      Mass = 50.0
4122    End
4123    Behavior = HelicopterSlowDeathBehavior ModuleTag_08
4124      DestructionDelay                = 99999999        ; the destruction delay
4125      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
4126      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
4127      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
4128      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
4129      SoundDeathLoop                  = ComancheDamagedLoop
4130      MinSelfSpin                     = 100                     ; in degrees per second
4131      MaxSelfSpin                     = 300                     ; in degrees per second
4132      SelfSpinUpdateDelay             = 100             ; in milliseconds
4133      SelfSpinUpdateAmount            = 10             ; in degrees   
4134      FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
4135      MinBladeFlyOffDelay             = 1500            ; in milliseconds
4136      MaxBladeFlyOffDelay             = 1500            ; in milliseconds
4137      AttachParticle                  = SootySmokeTrail
4138      AttachParticleBone              = Propeller02
4139      BladeObjectName                 = ComancheBlades
4140      BladeBoneName                   = Propeller01    
4141      ; Most things that eject pilots do so immediately upon death,
4142      ; via use of EjectPilotDie, but Helicopters are a special case...
4143      ; they need to do so after their blades are ejected. 
4144      OCLEjectPilot                   = OCL_EjectPilotViaParachute
4145      FXBlade                         = FX_HelicopterBladeExplosion
4146      OCLBlade                        = OCL_HelicopterBladeExplosion
4147      FXHitGround                     = FX_HelicopterHitGround
4148      OCLHitGround                    = OCL_HelicopterHitGround
4149      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
4150      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
4151      DelayFromGroundToFinalDeath     = 1500
4152      FinalRubbleObject               = ComancheRubbleHull
4153    End
4154  
4155    Behavior = TransitionDamageFX ModuleTag_09
4156      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
4157      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
4158    End
4159  
4160    Behavior = FlammableUpdate ModuleTag_21
4161      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
4162      AflameDamageAmount = 3       ; taking this much damage...
4163      AflameDamageDelay = 500       ; this often.
4164    End
4165  
4166    Geometry = BOX
4167    GeometryMajorRadius = 20.0
4168    GeometryMinorRadius = 3.0
4169    GeometryHeight = 25.0     
4170    GeometryIsSmall = No
4171    Shadow = SHADOW_VOLUME    
4172    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
4173  
4174  End
4175  
4176  ;------------------------------------------------------------------------------
4177  Object ChinaJetMIG
4178  
4179    ; *** ART Parameters ***
4180    SelectPortrait         = SNMig_L
4181    ButtonImage            = SNMig
4182    
4183    UpgradeCameo1 = Upgrade_ChinaAircraftArmor
4184    UpgradeCameo2 = Upgrade_ChinaBlackNapalm
4185    ;UpgradeCameo3 = NONE
4186    ;UpgradeCameo4 = NONE
4187    ;UpgradeCameo5 = NONE
4188    
4189    Draw = W3DModelDraw ModuleTag_01
4190  
4191      OkToChangeModelColor = Yes
4192  
4193      DefaultConditionState
4194        Model               = NVMIG
4195        HideSubObject       = BurnerFX01 BurnerFX02
4196        WeaponLaunchBone    = PRIMARY WeaponA
4197      End
4198  
4199      ConditionState        = JETEXHAUST
4200        ParticleSysBone     = Wingtip01 JetContrail
4201        ParticleSysBone     = Wingtip02 JetContrail
4202      End
4203  
4204      ConditionState       = JETEXHAUST JETAFTERBURNER
4205        ShowSubObject      = BurnerFX01 BurnerFX02
4206        ParticleSysBone     = Exhaust01 JetExhaust
4207        ParticleSysBone     = Exhaust02 JetExhaust
4208        ParticleSysBone     = Wingtip01 JetContrail
4209        ParticleSysBone     = Wingtip02 JetContrail
4210      End
4211  
4212      ConditionState        = REALLYDAMAGED
4213        Model               = NVMIG_D
4214        ParticleSysBone     = Wingtip01 JetContrail
4215        ParticleSysBone     = Wingtip02 JetContrail
4216      End
4217  
4218      ConditionState        = RUBBLE
4219        Model               = NVMIG_D
4220      End
4221  
4222      ConditionState        = REALLYDAMAGED JETEXHAUST
4223        Model               = NVMIG_D
4224        ParticleSysBone     = Wingtip01 JetContrail
4225        ParticleSysBone     = Wingtip02 JetContrail
4226      End
4227  
4228      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
4229        Model               = NVMIG_D
4230        ShowSubObject       = BurnerFX01 BurnerFX02
4231        ParticleSysBone     = Engine01 JetExhaust
4232        ParticleSysBone     = Engine02 JetExhaust
4233        ParticleSysBone     = Wingtip01 JetContrail
4234        ParticleSysBone     = Wingtip02 JetContrail
4235      End
4236  
4237      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
4238        ; @todo srj -- model missing
4239        ;Model              = NVMIG_D1B
4240        Model               = NVMIG_D
4241        ;HideSubObject is needed cause there're inherited from default condition state      
4242        HideSubObject       = None 
4243        ShowSubObject       = None
4244        ParticleSysBone     = Engine01 JetExhaust
4245        ParticleSysBone     = Engine02 JetExhaust
4246        ParticleSysBone     = Wingtip01 JetContrail
4247        ParticleSysBone     = Wingtip02 JetContrail
4248      End
4249  
4250    End
4251  
4252    ; ***DESIGN parameters ***
4253    DisplayName             = OBJECT:MIG
4254    EditorSorting           = VEHICLE
4255    Side                    = China
4256    TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
4257    VisionRange             = 200.0 
4258    ShroudClearingRange     = 300.0
4259  
4260    Prerequisites
4261      Object                = ChinaAirfield
4262    End
4263  
4264    WeaponSet
4265      Conditions        = None 
4266      Weapon            = PRIMARY     NapalmMissileWeapon
4267      AutoChooseSources = PRIMARY     NONE
4268    End
4269    WeaponSet
4270      Conditions = PLAYER_UPGRADE 
4271      Weapon            = PRIMARY     BlackNapalmMissileWeapon
4272      AutoChooseSources = PRIMARY     NONE
4273    End
4274  
4275    ArmorSet
4276      Conditions           = None
4277      Armor                = AirplaneArmor
4278      DamageFX             = None
4279    End
4280  
4281    BuildCost               = 1200
4282    BuildTime               = 13 ;10
4283    ExperienceValue         = 50 50 100 150   ;Experience point value at each level
4284    ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
4285    IsTrainable = Yes             ;Can gain experience
4286    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
4287    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
4288    CommandSet             = ChinaJetMIGCommandSet
4289  
4290    ; *** AUDIO Parameters ***
4291    VoiceSelect             = MigVoiceSelect
4292    VoiceMove               = MigVoiceMove
4293    VoiceAttack             = MigVoiceAttack
4294    VoiceAttackAir          = MigVoiceAttackAir
4295    VoiceGuard              = MigVoiceAirPatrol
4296    SoundAmbient            = MigAmbientLoop
4297    SoundDie                = MigVoiceFalling
4298    UnitSpecificSounds
4299      VoiceCreate           = MigVoiceCreate
4300      Afterburner           = RaptorAfterburner
4301      VoiceGarrison         = MigVoiceMove
4302    End
4303  
4304    ; *** ENGINEERING Parameters ***
4305    RadarPriority          = UNIT
4306    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
4307    Body                   = ActiveBody ModuleTag_02
4308      MaxHealth            = 160.0
4309      InitialHealth        = 160.0
4310    End
4311  
4312    Behavior                          = JetSlowDeathBehavior ModuleTag_03
4313      FXOnGroundDeath                 = FX_JetOnGroundDeath
4314      OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp
4315      DestructionDelay                = 99999999  ; destruction will happen when we
4316      RollRate                        = 0.2
4317      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
4318      PitchRate                       = 0.0
4319      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
4320      FXInitialDeath                  = FX_JetDeathInitial
4321      OCLInitialDeath                 = OCL_MIGDeathInitial
4322      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
4323      FXSecondary                     = FX_JetDeathSecondary
4324      OCLSecondary                    = OCL_MIGDeathSecondary
4325      FXHitGround                     = FX_JetDeathHitGround
4326      OCLHitGround                    = OCL_MIGDeathHitGround
4327      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
4328      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
4329      OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp
4330    End
4331  
4332    Behavior = WeaponSetUpgrade ModuleTag_04
4333      TriggeredBy = Upgrade_ChinaBlackNapalm
4334    End
4335  
4336    Behavior = PhysicsBehavior ModuleTag_05
4337      Mass = 500.0
4338    End
4339  
4340    Behavior = JetAIUpdate ModuleTag_06
4341      OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
4342                                          ; note that it's expressed as a percent of max health, not an absolute
4343      TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
4344      TakeoffPause              = 500
4345      MinHeight                 = 5
4346      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
4347    End
4348  
4349    Locomotor = SET_NORMAL MIGLocomotor
4350    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
4351  
4352  
4353    Behavior = FlammableUpdate ModuleTag_08
4354      AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
4355      AflameDamageAmount = 3       ; taking this much damage...
4356      AflameDamageDelay = 500      ; this often.
4357    End
4358  
4359    Behavior                       = TransitionDamageFX ModuleTag_09
4360      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
4361      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
4362    End
4363  
4364    Behavior        = MaxHealthUpgrade ModuleTag_10
4365      TriggeredBy   = Upgrade_ChinaAircraftArmor
4366      AddMaxHealth  = 40.0
4367      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
4368    End
4369  
4370  
4371  
4372    Geometry                 = Box
4373    GeometryIsSmall          = Yes
4374    GeometryMajorRadius      = 14.0
4375    GeometryMinorRadius      = 7.0
4376    GeometryHeight           = 5.0
4377    Shadow                   = SHADOW_VOLUME
4378    
4379    Shadow = SHADOW_VOLUME
4380    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
4381  
4382  End
4383  
4384  
4385  ;------------------------------------------------------------------------------
4386  ;This is the MIG as it's crashing
4387  ;------------------------------------------------------------------------------
4388  Object ChinaJetMIGHulk
4389    ; *** ART Parameters ***
4390    Draw                = W3DModelDraw ModuleTag_01
4391      DefaultConditionState
4392        Model           = NVMIG_D1
4393      End
4394    End
4395  
4396    ; ***DESIGN parameters ***
4397    EditorSorting       = DEBRIS
4398  
4399    ; *** ENGINEERING Parameters ***
4400    KindOf              =  NO_COLLIDE HULK
4401  
4402    Behavior                  = PhysicsBehavior ModuleTag_03
4403      Mass                    = 2.0
4404      AllowBouncing           = No
4405      KillWhenRestingOnGround = Yes
4406    End
4407  
4408    Behavior = LifetimeUpdate ModuleTag_04
4409      MinLifetime = 1500   ; min lifetime in msec
4410      MaxLifetime = 1600   ; max lifetime in msec
4411    End
4412  
4413    Behavior = SlowDeathBehavior ModuleTag_05
4414      SinkDelay        = 1500
4415      SinkRate            = 2     ; in Dist/Sec
4416      DestructionDelay = 8000
4417    End
4418  
4419  End
4420  
4421  
4422  ;------------------------------------------------------------------------------
4423  Object NapalmMissile
4424  
4425    ; *** ART Parameters ***
4426    Draw = W3DModelDraw ModuleTag_01
4427      OkToChangeModelColor = Yes
4428      DefaultConditionState
4429        Model = AVRaptor_M
4430      End
4431    End
4432  
4433    ; ***DESIGN parameters ***
4434    DisplayName         = OBJECT:Missile
4435    EditorSorting       = SYSTEM
4436    VisionRange         = 0.0  ; Projectiles can't see, but superweapons *may need to*
4437    TransportSlotCount  = 1    ; since Napalm Strike carries us as payload, not weapon
4438    ArmorSet
4439      Conditions      = None
4440      Armor           = ProjectileArmor
4441      DamageFX        = None
4442    End
4443  
4444    ; *** ENGINEERING Parameters ***
4445    KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
4446    Body = ActiveBody ModuleTag_02
4447      MaxHealth       = 100.0
4448      InitialHealth   = 100.0
4449    End
4450  
4451  ; ---- begin Projectile death behaviors
4452    Behavior = InstantDeathBehavior DeathModuleTag_01
4453      DeathTypes = NONE +DETONATED
4454      ; we detonated normally.
4455      ; no FX, just quiet destroy ourselves
4456    End
4457    Behavior = InstantDeathBehavior DeathModuleTag_02
4458      DeathTypes = NONE +LASERED
4459      ; shot down by laser.
4460      FX         = FX_GenericMissileDisintegrate
4461      OCL        = OCL_GenericMissileDisintegrate
4462    End
4463    Behavior = InstantDeathBehavior DeathModuleTag_03
4464      DeathTypes = ALL -LASERED -DETONATED
4465      ; shot down by nonlaser.
4466      FX         = FX_GenericMissileDeath
4467    End
4468  ; ---- end Projectile death behaviors
4469  
4470    Behavior = PhysicsBehavior ModuleTag_06
4471      Mass = 1
4472    End
4473    Behavior = MissileAIUpdate ModuleTag_07
4474      TryToFollowTarget   = Yes 
4475      FuelLifetime        = 10000
4476      InitialVelocity     = 75                ; in dist/sec
4477      IgnitionDelay       = 30
4478      IgnitionFX          = FX_NapalmMissileIgnition
4479    End
4480    Locomotor = SET_NORMAL NapalmMissileLocomotor
4481  
4482    Geometry = Sphere
4483    GeometryIsSmall = Yes
4484    GeometryMajorRadius = 1.0
4485  
4486  End
4487  
4488  ;------------------------------------------------------------------------------
4489  Object ChinaJetMIGNapalmStriker
4490  
4491    ; *** ART Parameters ***
4492    Draw = W3DModelDraw ModuleTag_01
4493  
4494      DefaultConditionState
4495        Model = NVMig
4496        WeaponLaunchBone    = PRIMARY WeaponA
4497        ;ParticleSysBone     = Engine01 JetExhaust
4498        ParticleSysBone     = Wingtip01 JetContrail
4499        ParticleSysBone     = Wingtip02 JetContrail
4500        HideSubObject       = BurnerFX01 BurnerFX02
4501      End
4502  
4503      ConditionState = REALLYDAMAGED
4504        Model = NVMig_d
4505        ;ParticleSysBone     = Engine01 JetExhaust
4506        ParticleSysBone     = Wingtip01 JetContrail
4507        ParticleSysBone     = Wingtip02 JetContrail
4508      End
4509  
4510      AliasConditionState = RUBBLE
4511  
4512      OkToChangeModelColor = Yes
4513  
4514    End
4515  
4516    ; ***DESIGN parameters ***
4517    DisplayName         = OBJECT:MIG
4518    EditorSorting       = SYSTEM
4519    Side                = China
4520    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
4521    VisionRange         = 300.0 
4522    ShroudClearingRange = 300
4523    Prerequisites
4524      Object = ChinaAirfield
4525    End
4526    WeaponSet
4527      Conditions        = None 
4528      Weapon            = PRIMARY     NapalmStrikeWeapon
4529    End
4530    ;WeaponSet
4531    ;  Conditions        = PLAYER_UPGRADE
4532    ;  Weapon            = PRIMARY     BlackNapalmMissileWeapon
4533    ;End
4534    ArmorSet
4535      Conditions      = None
4536      Armor           = AirplaneArmor
4537      DamageFX        = None
4538    End
4539    CommandSet        = ChinaJetMIGCommandSet
4540  
4541    ; *** AUDIO Parameters ***
4542    SoundAmbient = F15MoveLoop
4543    SoundAmbientRubble    = NoSound
4544  
4545    ; *** ENGINEERING Parameters ***
4546    RadarPriority = UNIT 
4547    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE AIRCRAFT IGNORED_IN_GUI
4548  
4549    Body = ActiveBody ModuleTag_02
4550      MaxHealth       = 200.0
4551      InitialHealth   = 200.0
4552    End
4553  
4554    Behavior = SpecialPowerCompletionDie ModuleTag_03
4555      SpecialPowerTemplate = SuperweaponNapalmStrike
4556    End
4557  
4558    Behavior                          = JetSlowDeathBehavior ModuleTag_04
4559      DestructionDelay                = 99999999; destruction will happen when we
4560      RollRate                        = 0.2
4561      RollRateDelta                   = 100%     ;each frame, rollrate = rollrate * rollrateDelta
4562      PitchRate                       = 0.0
4563      FallHowFast                     = 110.0%   ;Bigger is faster (can be over 100%,it's a fraction of gravity)
4564      FXInitialDeath                  = FX_JetDeathInitial
4565      OCLInitialDeath                 = OCL_MIGDeathInitial
4566      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
4567      FXSecondary                     = FX_JetDeathSecondary
4568      OCLSecondary                    = OCL_MIGDeathSecondary
4569      FXHitGround                     = FX_JetDeathHitGround
4570      OCLHitGround                    = OCL_MIGDeathHitGround
4571      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
4572      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
4573      OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp
4574    End
4575  
4576    Behavior = DeliverPayloadAIUpdate ModuleTag_06
4577      DoorDelay = 0
4578    End
4579    Locomotor = SET_NORMAL MIGLocomotor
4580  
4581    ;Behavior = WeaponSetUpgrade ModuleTag_07
4582    ;  TriggeredBy = Upgrade_ChinaBlackNapalm
4583    ;End
4584  
4585    Behavior = TransportContain ModuleTag_08
4586      Slots = 100                     ; hey, it's a BIG transport
4587      ScatterNearbyOnExit = No
4588      OrientLikeContainerOnExit = Yes
4589      KeepContainerVelocityOnExit = Yes
4590      ExitPitchRate = 30
4591      ExitBone = WeaponA
4592      AllowInsideKindOf  = PROJECTILE
4593      DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
4594      NumberOfExitPaths = 0
4595      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
4596    End
4597  
4598    Behavior = PhysicsBehavior ModuleTag_09
4599      Mass = 50.0
4600    End
4601  
4602    Behavior = FlammableUpdate ModuleTag_21
4603      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
4604      AflameDamageAmount = 3       ; taking this much damage...
4605      AflameDamageDelay = 500       ; this often.
4606    End
4607  
4608  
4609    Geometry = Cylinder
4610    GeometryIsSmall = Yes
4611    GeometryMajorRadius = 7.0
4612    GeometryMinorRadius = 7.0
4613    GeometryHeight = 7.0
4614    
4615    Shadow = SHADOW_VOLUME
4616    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
4617  
4618  End
4619  
4620  ;------------------------------------------------------------------------------
4621  Object ChinaJetMIG_CinematicVersion
4622  
4623    ; *** ART Parameters ***
4624    SelectPortrait         = SNMig_L
4625    ButtonImage            = SNMig
4626    
4627    UpgradeCameo1 = Upgrade_ChinaAircraftArmor
4628    UpgradeCameo2 = Upgrade_ChinaBlackNapalm
4629    ;UpgradeCameo3 = NONE
4630    ;UpgradeCameo4 = NONE
4631    ;UpgradeCameo5 = NONE
4632    
4633    Draw = W3DModelDraw ModuleTag_01
4634  
4635      OkToChangeModelColor = Yes
4636  
4637      DefaultConditionState
4638        Model               = NVMIG
4639        HideSubObject       = BurnerFX01 BurnerFX02
4640        WeaponLaunchBone    = PRIMARY WeaponA
4641      End
4642  
4643      ConditionState        = JETEXHAUST
4644        ParticleSysBone     = Wingtip01 JetContrail
4645        ParticleSysBone     = Wingtip02 JetContrail
4646      End
4647  
4648      ConditionState       = JETEXHAUST JETAFTERBURNER
4649        ShowSubObject      = BurnerFX01 BurnerFX02
4650        ParticleSysBone     = Exhaust01 JetExhaust
4651        ParticleSysBone     = Exhaust02 JetExhaust
4652        ParticleSysBone     = Wingtip01 JetContrail
4653        ParticleSysBone     = Wingtip02 JetContrail
4654      End
4655  
4656      ConditionState        = REALLYDAMAGED
4657        Model               = NVMIG_D
4658        ParticleSysBone     = Wingtip01 JetContrail
4659        ParticleSysBone     = Wingtip02 JetContrail
4660      End
4661  
4662      ConditionState        = RUBBLE
4663        Model               = NVMIG_D
4664      End
4665  
4666      ConditionState        = REALLYDAMAGED JETEXHAUST
4667        Model               = NVMIG_D
4668        ParticleSysBone     = Wingtip01 JetContrail
4669        ParticleSysBone     = Wingtip02 JetContrail
4670      End
4671  
4672      ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
4673        Model               = NVMIG_D
4674        ShowSubObject       = BurnerFX01 BurnerFX02
4675        ParticleSysBone     = Engine01 JetExhaust
4676        ParticleSysBone     = Engine02 JetExhaust
4677        ParticleSysBone     = Wingtip01 JetContrail
4678        ParticleSysBone     = Wingtip02 JetContrail
4679      End
4680  
4681      ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
4682        ; @todo srj -- model missing
4683        ;Model              = NVMIG_D1B
4684        Model               = NVMIG_D
4685        ;HideSubObject is needed cause there're inherited from default condition state      
4686        HideSubObject       = None 
4687        ShowSubObject       = None
4688        ParticleSysBone     = Engine01 JetExhaust
4689        ParticleSysBone     = Engine02 JetExhaust
4690        ParticleSysBone     = Wingtip01 JetContrail
4691        ParticleSysBone     = Wingtip02 JetContrail
4692      End
4693  
4694    End
4695  
4696    ; ***DESIGN parameters ***
4697    DisplayName             = OBJECT:MIG
4698    EditorSorting           = VEHICLE
4699    Side                    = China
4700    TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
4701    VisionRange             = 300.0 
4702    ShroudClearingRange     = 300.0
4703  
4704    Prerequisites
4705      Object                = ChinaAirfield
4706    End
4707  
4708    WeaponSet
4709      Conditions        = None 
4710      Weapon            = PRIMARY     NapalmMissileWeapon
4711      AutoChooseSources = PRIMARY     NONE
4712    End
4713    WeaponSet
4714      Conditions = PLAYER_UPGRADE 
4715      Weapon            = PRIMARY     BlackNapalmMissileWeapon
4716      AutoChooseSources = PRIMARY     NONE
4717    End
4718  
4719    ArmorSet
4720      Conditions           = None
4721      Armor                = AirplaneArmor
4722      DamageFX             = None
4723    End
4724  
4725    BuildCost               = 1200
4726    BuildTime               = 15   
4727    ExperienceValue         = 50 50 100 150   ;Experience point value at each level
4728    ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
4729    IsTrainable = Yes             ;Can gain experience
4730    CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
4731    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
4732    CommandSet             = ChinaJetMIGCommandSet
4733  
4734    ; *** AUDIO Parameters ***
4735    VoiceSelect             = MigVoiceSelect
4736    VoiceMove               = MigVoiceMove
4737    VoiceAttack             = MigVoiceAttack
4738    VoiceAttackAir          = MigVoiceAttackAir
4739    VoiceGuard              = MigVoiceAirPatrol
4740    SoundMoveLoop           = MigAmbientLoop  ; don't want sound while sitting at airfield
4741    SoundAmbient            = NoSound
4742    SoundAmbientRubble      = NoSound
4743    SoundDie                = MigVoiceFalling
4744    UnitSpecificSounds
4745      VoiceCreate           = MigVoiceCreate
4746      Afterburner           = RaptorAfterburner
4747      VoiceGarrison         = MigVoiceMove
4748    End
4749  
4750    ; *** ENGINEERING Parameters ***
4751    RadarPriority          = UNIT
4752    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
4753    Body                   = ActiveBody ModuleTag_02
4754      MaxHealth            = 160.0
4755      InitialHealth        = 160.0
4756    End
4757  
4758    Behavior                          = JetSlowDeathBehavior ModuleTag_03
4759      FXOnGroundDeath                 = FX_JetOnGroundDeath
4760      OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp_CinematicVersion
4761      DestructionDelay                = 99999999  ; destruction will happen when we
4762      RollRate                        = 0.2
4763      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
4764      PitchRate                       = 0.0
4765      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
4766      FXInitialDeath                  = FX_JetDeathInitial
4767      OCLInitialDeath                 = OCL_MIGDeathInitial
4768      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
4769      FXSecondary                     = FX_JetDeathSecondary
4770      OCLSecondary                    = OCL_MIGDeathSecondary
4771      FXHitGround                     = FX_JetDeathHitGround
4772      OCLHitGround                    = OCL_MIGDeathHitGround
4773      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
4774      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp_CinematicVersion
4775      OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp_CinematicVersion
4776    End
4777  
4778    Behavior = WeaponSetUpgrade ModuleTag_04
4779      TriggeredBy = Upgrade_ChinaBlackNapalm
4780    End
4781  
4782    Behavior = PhysicsBehavior ModuleTag_05
4783      Mass = 500.0
4784    End
4785  
4786    Behavior = JetAIUpdate ModuleTag_06
4787      OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
4788                                          ; note that it's expressed as a percent of max health, not an absolute
4789      TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
4790      TakeoffPause              = 500
4791      MinHeight                 = 5
4792      ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
4793    End
4794  
4795    Locomotor = SET_NORMAL MIGLocomotor
4796    Locomotor = SET_TAXIING BasicJetTaxiLocomotor
4797  
4798  
4799    Behavior = FlammableUpdate ModuleTag_08
4800      AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
4801      AflameDamageAmount = 3       ; taking this much damage...
4802      AflameDamageDelay = 500      ; this often.
4803    End
4804  
4805    Behavior                       = TransitionDamageFX ModuleTag_09
4806      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
4807      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
4808    End
4809  
4810    Behavior        = MaxHealthUpgrade ModuleTag_10
4811      TriggeredBy   = Upgrade_ChinaAircraftArmor
4812      AddMaxHealth  = 40.0
4813      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
4814    End
4815  
4816  
4817  
4818    Geometry                 = Box
4819    GeometryIsSmall          = Yes
4820    GeometryMajorRadius      = 14.0
4821    GeometryMinorRadius      = 7.0
4822    GeometryHeight           = 5.0
4823    Shadow                   = SHADOW_VOLUME
4824    
4825    Shadow = SHADOW_VOLUME
4826    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
4827  
4828  End
4829  
4830  ;------------------------------------------------------------------------------
4831  Object AmericaInfantryRanger
4832  
4833    ; *** ART Parameters ***
4834    SelectPortrait          = SARanger_L
4835    ButtonImage            = SARanger
4836    
4837    UpgradeCameo1 = Upgrade_AmericaRangerFlashBangGrenade
4838    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
4839    UpgradeCameo3 = Upgrade_InfantryCaptureBuilding
4840    ;UpgradeCameo4 = NONE
4841    ;UpgradeCameo5 = NONE
4842    
4843    Draw = W3DModelDraw ModuleTag_01
4844  
4845      OkToChangeModelColor = Yes
4846  
4847      ; this says "we don't use these condition states at all, so completely
4848      ; ignore them for purposes of matchmaking"... this is useful to help
4849      ; reduce the number of AliasConditionState clauses you must add in
4850      ; order to avoid ambiguity in some cases.
4851      IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
4852  
4853      ; --- Idle
4854      DefaultConditionState
4855        Model             = AIRngr_SKN
4856        IdleAnimation     = AIRngr_SKL.AIRngr_STA 0 35
4857        IdleAnimation     = AIRngr_SKL.AIRngr_IDA
4858        IdleAnimation     = AIRngr_SKL.AIRngr_IDB
4859        AnimationMode     = ONCE
4860        WeaponFireFXBone  = PRIMARY Muzzle
4861        WeaponMuzzleFlash = PRIMARY MuzzleFX
4862        WeaponFireFXBone  = SECONDARY Muzzle
4863        WeaponLaunchBone  = SECONDARY Muzzle
4864        TransitionKey     = TRANS_Stand
4865  
4866      End
4867  
4868      ConditionState      = REALLYDAMAGED
4869        IdleAnimation     = AIRngr_SKL.AIRngr_STB 0 35
4870        IdleAnimation     = AIRngr_SKL.AIRngr_IDC
4871        IdleAnimation     = AIRngr_SKL.AIRngr_IDD
4872        AnimationMode     = ONCE
4873        TransitionKey     = TRANS_StandInjured
4874      End
4875  
4876      TransitionState     = TRANS_Stand TRANS_StandInjured
4877        Animation         = AIRngr_SKL.AIRngr_SA2SB
4878        AnimationMode     = ONCE
4879      End
4880  
4881      ; --- attacking (Machine Gun)
4882      ConditionState      = USING_WEAPON_A
4883        Animation         = AIRngr_SKL.AIRngr_ATA
4884        AnimationMode     = LOOP
4885        TransitionKey     = TRANS_FiringA
4886      End
4887  
4888      ConditionState      = USING_WEAPON_A REALLYDAMAGED
4889        Animation         = AIRngr_SKL.AIRngr_ATA2
4890        AnimationMode     = LOOP
4891        TransitionKey     = TRANS_FiringAInjured
4892      End
4893  
4894      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
4895        Animation         = AIRngr_SKL.AIRngr_A2WAA
4896        AnimationMode     = ONCE
4897      End
4898  
4899      TransitionState     = TRANS_Stand TRANS_FiringA
4900        Animation         = AIRngr_SKL.AIRngr_ATAST
4901        AnimationMode     = ONCE
4902        AnimationSpeedFactorRange = 4 4
4903      End
4904  
4905      TransitionState     = TRANS_FiringA TRANS_Stand
4906        Animation         = AIRngr_SKL.AIRngr_ATAED
4907        AnimationMode     = ONCE
4908        AnimationSpeedFactorRange = 4 4
4909      End
4910  
4911      TransitionState     = TRANS_StandInjured TRANS_FiringAInjured
4912        Animation         = AIRngr_SKL.AIRngr_S2WAA
4913        AnimationMode     = ONCE
4914        AnimationSpeedFactorRange = 4 4
4915      End
4916  
4917      TransitionState     = TRANS_FiringAInjured TRANS_StandInjured
4918        Animation         = AIRngr_SKL.AIRngr_WAA2S
4919        AnimationMode     = ONCE
4920        AnimationSpeedFactorRange = 4 4
4921      End
4922      
4923      TransitionState     = TRANS_Stand TRANS_Move
4924        Animation         = AIRngr_SKL.AIRngr_STA2RNA
4925        AnimationMode     = ONCE
4926      End
4927  
4928      ; --- attacking (Grenade Launcher)
4929      ConditionState      = PREATTACK_B 
4930        Animation         = AIRngr_SKL.AIRngr_ATBA
4931        AnimationMode     = ONCE
4932        TransitionKey     = TRANS_FiringB
4933      End
4934      AliasConditionState = PREATTACK_B MOVING
4935      AliasConditionState = PREATTACK_B FIRING_B
4936      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
4937  
4938      ConditionState      = FIRING_B
4939        Animation         = AIRngr_SKL.AIRngr_ATBB
4940        AnimationMode     = ONCE
4941        TransitionKey     = TRANS_FiringB
4942      End
4943  
4944      ConditionState      = BETWEEN_FIRING_SHOTS_B
4945        Animation         = AIRngr_SKL.AIRngr_ATBB
4946        AnimationMode     = MANUAL
4947        Flags             = START_FRAME_LAST
4948        TransitionKey     = TRANS_FiringB
4949        WaitForStateToFinishIfPossible = TRANS_FiringB
4950      End
4951      AliasConditionState = RELOADING_B
4952  
4953      TransitionState     = TRANS_Stand TRANS_FiringB
4954        Animation         = AIRngr_SKL.AIRngr_ATBST1
4955        AnimationMode     = ONCE
4956      End
4957  
4958      TransitionState     = TRANS_FiringB TRANS_Stand
4959        Animation         = AIRngr_SKL.AIRngr_ATBST2
4960        AnimationMode     = ONCE
4961      End
4962  
4963      ConditionState      = PREATTACK_B REALLYDAMAGED
4964        Animation         = AIRngr_SKL.AIRngr_ATB2A
4965        AnimationMode     = ONCE
4966        TransitionKey     = TRANS_FiringBInjured
4967      End
4968      AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
4969      AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
4970      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
4971  
4972      ConditionState      = FIRING_B REALLYDAMAGED
4973        Animation         = AIRngr_SKL.AIRngr_ATB2B
4974        AnimationMode     = ONCE
4975        TransitionKey     = TRANS_FiringBInjured
4976      End
4977  
4978      ConditionState      = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
4979        Animation         = AIRngr_SKL.AIRngr_ATB2B
4980        AnimationMode     = MANUAL
4981        Flags             = START_FRAME_LAST
4982        TransitionKey     = TRANS_FiringBInjured
4983        WaitForStateToFinishIfPossible = TRANS_FiringBInjured
4984      End
4985      AliasConditionState = RELOADING_B REALLYDAMAGED
4986  
4987      TransitionState     = TRANS_StandInjured TRANS_FiringBInjured
4988        Animation         = AIRngr_SKL.AIRngr_ATB2ST1
4989        AnimationMode     = ONCE
4990      End
4991  
4992      TransitionState     = TRANS_FiringBInjured TRANS_StandInjured
4993        Animation         = AIRngr_SKL.AIRngr_ATB2ST2
4994        AnimationMode     = ONCE
4995      End
4996  
4997      ; -- cross-attack transitions
4998  
4999      TransitionState     = TRANS_FiringA TRANS_FiringB
5000        Animation         = AIRngr_SKL.AIRngr_ATA2AB
5001        AnimationMode     = ONCE
5002        AnimationSpeedFactorRange = 4 4
5003      End
5004  
5005      TransitionState     = TRANS_FiringB TRANS_FiringA
5006        Animation         = AIRngr_SKL.AIRngr_ATA2AB
5007        AnimationMode     = ONCE_BACKWARDS
5008        AnimationSpeedFactorRange = 4 4
5009      End
5010  
5011  
5012      ; --- moving
5013      ConditionState      = MOVING
5014        Animation         = AIRngr_SKL.AIRngr_RNA 30
5015        AnimationMode     = LOOP
5016        Flags             = RANDOMSTART
5017        TransitionKey     = TRANS_Move
5018        ParticleSysBone   = None InfantryDustTrails
5019      End
5020      AliasConditionState = MOVING ATTACKING
5021  
5022      ConditionState      = MOVING REALLYDAMAGED
5023        Animation         = AIRngr_SKL.AIRngr_RNB 30
5024        AnimationMode     = LOOP
5025        Flags             = RANDOMSTART
5026        TransitionKey     = TRANS_Move
5027      End
5028      AliasConditionState = MOVING REALLYDAMAGED ATTACKING
5029      
5030      ; --- dying anims
5031      ConditionState      = DYING
5032        Animation         = AIRngr_SKL.AIRngr_DTA
5033        Animation         = AIRngr_SKL.AIRngr_DTB
5034        AnimationMode     = ONCE
5035        TransitionKey     = None
5036      End
5037  
5038      TransitionState     = TRANS_Dying TRANS_Flailing
5039        Animation         = AIRngr_SKL.AIRngr_ADTF1
5040        AnimationMode     = ONCE
5041      End
5042  
5043      ConditionState      = DYING EXPLODED_FLAILING
5044        Animation         = AIRngr_SKL.AIRngr_ADTF2
5045        AnimationMode     = LOOP
5046        TransitionKey     = TRANS_Flailing
5047      End
5048  
5049      ConditionState      = DYING EXPLODED_BOUNCING
5050        Animation         = AIRngr_SKL.AIRngr_ADTF3
5051        AnimationMode     = ONCE
5052        TransitionKey     = None
5053      End
5054      AliasConditionState = DYING SPLATTED
5055  
5056      ; --- cheering
5057      ConditionState      = SPECIAL_CHEERING
5058        Animation         = AIRngr_SKL.AIRngr_CHA
5059        AnimationMode     = LOOP
5060      End
5061  
5062      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
5063        Animation         = AIRngr_SKL.AIRngr_CHB
5064        AnimationMode     = LOOP
5065      End
5066  
5067      ; ----- PARACHUTING ANIMATIONS
5068      ConditionState      = FREEFALL
5069        Animation         = AIRngr_SKL.AIRngr_PFL
5070        AnimationMode     = LOOP
5071        TransitionKey     = TRANS_Falling
5072      End
5073      AliasConditionState = FREEFALL REALLYDAMAGED
5074      AliasConditionState = FREEFALL DYING
5075      ConditionState      = PARACHUTING
5076        Animation         = AIRngr_SKL.AIRngr_PHG
5077        AnimationMode     = LOOP
5078        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
5079        TransitionKey     = TRANS_Chute
5080      End
5081      AliasConditionState = PARACHUTING REALLYDAMAGED
5082      AliasConditionState = PARACHUTING DYING
5083      TransitionState     = TRANS_Falling TRANS_Chute
5084        Animation         = AIRngr_SKL.AIRngr_POP
5085        AnimationMode     = ONCE
5086        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
5087      End
5088      TransitionState     = TRANS_Chute TRANS_Stand
5089        Animation         = AIRngr_SKL.AIRngr_PTD
5090        AnimationMode     = ONCE
5091      End
5092      TransitionState     = TRANS_Chute TRANS_StandInjured
5093        Animation         = AIRngr_SKL.AIRngr_PTD
5094        AnimationMode     = ONCE
5095      End
5096  
5097      ; ----- SURRENDER ANIMATIONS
5098  ; surrender is cut. sorry. (srj)
5099  ;    ConditionState      = SURRENDER
5100  ;      Animation         = AIRngr_SKL.AIRngr_SST
5101  ;      AnimationMode     = ONCE
5102  ;      TransitionKey     = TRANS_SurrenderKneeling
5103  ;    End
5104  ;    AliasConditionState = SURRENDER REALLYDAMAGED
5105  ;    ConditionState      = SURRENDER MOVING
5106  ;      Animation         = AIRngr_SKL.AIRngr_SWKB
5107  ;      AnimationMode     = ONCE
5108  ;      TransitionKey     = TRANS_SurrenderMoving
5109  ;    End
5110  ;    AliasConditionState = SURRENDER MOVING REALLYDAMAGED
5111  ;    TransitionState     = TRANS_Stand TRANS_SurrenderKneeling
5112  ;      Animation         = AIRngr_SKL.AIRngr_SUR
5113  ;      AnimationMode     = ONCE
5114  ;    End
5115      
5116      ; ------- Bldg-capture
5117  
5118      ConditionState      = UNPACKING
5119        Model             = AIRngr_F_SKN
5120        Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
5121        AnimationMode     = ONCE
5122      End
5123      AliasConditionState = UNPACKING REALLYDAMAGED
5124  
5125  
5126      ConditionState      = RAISING_FLAG
5127        Model             = AIRngr_F_SKN
5128        Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
5129        AnimationMode     = ONCE
5130        TransitionKey     = TRANS_Raising
5131      End
5132      AliasConditionState = RAISING_FLAG REALLYDAMAGED
5133  
5134      ConditionState      = PACKING
5135        Model             = AIRngr_F_SKN
5136        Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
5137        AnimationMode     = ONCE_BACKWARDS
5138        Flags             = START_FRAME_LAST
5139        TransitionKey     = TRANS_Packing
5140      End
5141      AliasConditionState = PACKING REALLYDAMAGED
5142  
5143      TransitionState     = TRANS_Raising TRANS_Packing
5144        Model             = AIRngr_F_SKN
5145        Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
5146        AnimationMode     = ONCE_BACKWARDS
5147        Flags             = START_FRAME_LAST
5148      End
5149  
5150      ; --- RAPPELLING ANIMATIONS
5151      ConditionState      = RAPPELLING
5152        Animation         = AIRngr_SKL.AIRngr_RPL1 ;30
5153        AnimationMode     = LOOP
5154        Flags             = RANDOMSTART
5155        TransitionKey     = TRANS_Rappelling
5156      End
5157      AliasConditionState = MOVING RAPPELLING
5158  
5159      TransitionState     = TRANS_Rappelling TRANS_Stand
5160        Animation         = AIRngr_SKL.AIRngr_RPL2
5161        AnimationMode     = ONCE
5162      End
5163  
5164      TransitionState     = TRANS_Rappelling TRANS_StandInjured
5165        Animation         = AIRngr_SKL.AIRngr_RPL2
5166        AnimationMode     = ONCE
5167      End
5168  
5169    End
5170  
5171    ; ***DESIGN parameters ***
5172    DisplayName         = OBJECT:Ranger
5173    Side                = America
5174    EditorSorting       = INFANTRY
5175    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
5176    
5177    WeaponSet
5178      Conditions = None 
5179      Weapon = PRIMARY RangerAdvancedCombatRifle
5180    End
5181    WeaponSet
5182      Conditions = PLAYER_UPGRADE 
5183      Weapon = PRIMARY RangerAdvancedCombatRifle
5184      Weapon = SECONDARY RangerFlashBangGrenadeWeapon
5185      AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
5186      AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
5187    End
5188    ArmorSet
5189      Conditions      = None
5190      Armor           = HumanArmor
5191      DamageFX        = InfantryDamageFX
5192    End
5193  
5194    VisionRange = 100
5195    ShroudClearingRange = 400
5196    Prerequisites
5197      Object = AmericaBarracks
5198    End
5199    BuildCost = 225
5200    BuildTime = 5.0          ;in seconds  
5201    
5202    ExperienceValue = 20 20 40 60    ;Experience point value at each level
5203    ExperienceRequired = 0 40 60 120  ;Experience points needed to gain each level
5204    IsTrainable = Yes             ;Can gain experience
5205    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
5206    CommandSet          = AmericaInfantryRangerCommandSet
5207  
5208    ; *** AUDIO Parameters ***
5209    VoiceSelect = RangerVoiceSelect
5210    VoiceMove = RangerVoiceMove
5211    VoiceGuard = RangerVoiceMove
5212    VoiceAttack = RangerVoiceAttack
5213    SoundDie = RangerVoiceDie
5214    VoiceFear = RangerVoiceFear
5215  ; surrender is cut. sorry. (srj)
5216  ;  VoiceSurrender = RangerVoiceSurrender
5217    VoiceTaskComplete = RangerVoiceCaptureComplete
5218  
5219    UnitSpecificSounds
5220      VoiceEnter = RangerVoiceMove
5221      VoiceEnterHostile = RangerVoiceMove
5222      VoiceGarrison = RangerVoiceGarrison
5223      VoiceCreate         = RangerVoiceCreate
5224      VoiceSubdue         = RangerVoiceSubdue
5225      VoiceClearBuilding  = RangerVoiceClearBuilding
5226      VoiceGetHealed      = RangerVoiceMove
5227      VoicePrimaryWeaponMode = RangerVoiceModeGun
5228      VoiceSecondaryWeaponMode = RangerVoiceModeFlashBang
5229    End
5230  
5231    UnitSpecificFX
5232      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
5233      CombatDropKillFX = FX_RangerCombatDropKill
5234    End
5235  
5236    ; *** ENGINEERING Parameters ***
5237    RadarPriority = UNIT
5238    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY CAN_RAPPEL SCORE
5239  
5240    Behavior = CommandButtonHuntUpdate ModuleTag_02
5241    End
5242  
5243    Body = ActiveBody ModuleTag_03
5244      MaxHealth       = 180.0
5245      InitialHealth   = 180.0
5246    End
5247  
5248    Behavior = ExperienceScalarUpgrade ModuleTag_04
5249      TriggeredBy = Upgrade_AmericaAdvancedTraining
5250      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
5251    End
5252  
5253    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
5254      ScanRate = 1000 ; once a second.
5255      ScanRange = 300 ;
5256      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
5257      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
5258    End
5259  
5260    Behavior = AIUpdateInterface ModuleTag_06
5261      AutoAcquireEnemiesWhenIdle = Yes
5262    End
5263    Locomotor = SET_NORMAL BasicHumanLocomotor
5264  
5265    Behavior = PhysicsBehavior ModuleTag_07
5266      Mass = 5.0
5267    End
5268  
5269    Behavior = ProductionUpdate ModuleTag_08
5270      ; nothing
5271    End
5272  
5273    Behavior = CommandButtonHuntUpdate  ModuleTag_09 ; allows use of command button hunt script with this unit. 
5274    End
5275  
5276    Behavior = WeaponSetUpgrade ModuleTag_10
5277      TriggeredBy = Upgrade_AmericaRangerFlashBangGrenade
5278    End
5279  
5280  
5281  ; --- begin Death modules ---
5282    Behavior = SlowDeathBehavior ModuleTag_Death01
5283      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
5284      SinkDelay           = 3000
5285      SinkRate            = 0.5     ; in Dist/Sec
5286      DestructionDelay    = 8000
5287      FX                  = INITIAL FX_GIDie
5288    End
5289    Behavior = SlowDeathBehavior ModuleTag_Death02
5290      DeathTypes          = NONE +CRUSHED +SPLATTED
5291      SinkDelay           = 3000
5292      SinkRate            = 0.5     ; in Dist/Sec
5293      DestructionDelay    = 8000
5294      FX                  = INITIAL FX_GIDieCrushed
5295    End
5296    Behavior = SlowDeathBehavior ModuleTag_Death03
5297      DeathTypes          = NONE +EXPLODED
5298      SinkDelay           = 3000
5299      SinkRate            = 0.5     ; in Dist/Sec
5300      DestructionDelay    = 8000
5301      FX                  = INITIAL FX_GIDie
5302      FlingForce          = 8
5303      FlingForceVariance  = 3
5304      FlingPitch          = 60
5305      FlingPitchVariance  = 10
5306    End
5307    Behavior = SlowDeathBehavior ModuleTag_Death04
5308      DeathTypes          = NONE +BURNED
5309      DestructionDelay    = 0
5310      FX                  = INITIAL FX_GIDie
5311      OCL                 = INITIAL OCL_FlamingInfantry
5312    End
5313    Behavior = SlowDeathBehavior ModuleTag_Death05
5314      DeathTypes          = NONE +POISONED
5315      DestructionDelay    = 0
5316      FX                  = INITIAL FX_GIDie
5317      OCL                 = INITIAL OCL_ToxicInfantry
5318    End
5319    
5320    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
5321      DeathTypes          = NONE +POISONED_BETA
5322      DestructionDelay    = 0
5323      FX                  = INITIAL FX_GIDie
5324      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
5325    End
5326  ; --- end Death modules ---
5327  
5328    Behavior = SquishCollide ModuleTag_12
5329      ;nothing
5330    End
5331  
5332    Behavior = PoisonedBehavior ModuleTag_17
5333      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
5334      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
5335    End
5336   
5337    Behavior = SpecialAbility ModuleTag_18
5338      SpecialPowerTemplate      = SpecialAbilityRangerCaptureBuilding
5339      UpdateModuleStartsAttack  = Yes
5340      StartsPaused              = Yes ; Unpaused by upgrade module
5341      InitiateSound         = RangerVoiceCapture
5342    End
5343    Behavior = SpecialAbilityUpdate ModuleTag_19
5344      SpecialPowerTemplate  = SpecialAbilityRangerCaptureBuilding
5345      StartAbilityRange  = 5.0
5346      UnpackTime            = 3000  ; (changing this will scale anim speed)
5347      PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
5348      PackTime              = 2000  ; (changing this will scale anim speed)
5349      DoCaptureFX           = Yes
5350      AwardXPForTriggering  = 15
5351      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
5352    End
5353  
5354    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_20
5355      SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
5356      TriggeredBy = Upgrade_InfantryCaptureBuilding
5357    End
5358  
5359  
5360    Geometry = CYLINDER
5361    GeometryMajorRadius = 7.0
5362    GeometryMinorRadius = 7.0
5363    GeometryHeight = 13.0
5364  
5365    GeometryIsSmall = Yes
5366    Shadow = SHADOW_DECAL
5367    ShadowSizeX = 14;
5368    ShadowSizeY = 14;
5369    ShadowTexture = ShadowI;
5370    BuildCompletion = APPEARS_AT_RALLY_POINT
5371  
5372  End
5373  
5374  ;------------------------------------------------------------------------------
5375  Object AmericaInfantryMissileDefender
5376  
5377    ; *** ART Parameters ***
5378    SelectPortrait         = SAMissleDefender_L
5379    ButtonImage            = SAMissleDefender
5380    
5381    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
5382    ;UpgradeCameo2 = NONE
5383    ;UpgradeCameo3 = NONE
5384    ;UpgradeCameo4 = NONE
5385    ;UpgradeCameo5 = NONE
5386    
5387    Draw = W3DModelDraw ModuleTag_01
5388      OkToChangeModelColor = Yes
5389  
5390      ;***NOTE***
5391      ;A little history -- the MissileDefender now uses the assets of the TankHunter. 
5392      ;The TH uses assets of the GLA tunnel defender, and the TD uses assets of the NEW
5393      ;MD. It was a design/art/code decision because the new missile defender animations
5394      ;don't suit that of a mobile/offensive unit with packing and unpacking.
5395  
5396      DefaultConditionState
5397        Model             = NITHNT_SKN
5398        IdleAnimation     = NITHNT_SKL.NITHNT_STA 0 30
5399        IdleAnimation     = NITHNT_SKL.NITHNT_IDA
5400        IdleAnimation     = NITHNT_SKL.NITHNT_IDB
5401        AnimationMode     = ONCE
5402        AnimationSpeedFactorRange = 0.8 1.2
5403        TransitionKey     = TRANS_Stand
5404        WeaponMuzzleFlash = PRIMARY MuzzleFX
5405        WeaponFireFXBone  = PRIMARY Muzzle
5406        WeaponLaunchBone  = PRIMARY Muzzle
5407        WeaponLaunchBone  = SECONDARY Muzzle
5408  
5409      End
5410      AliasConditionState = REALLYDAMAGED
5411  
5412      ConditionState      = FIRING_A 
5413        Animation         = NITHNT_SKL.NITHNT_ATA 
5414        AnimationMode     = ONCE
5415        TransitionKey     = TRANS_START_FIRING
5416      End
5417      AliasConditionState = FIRING_A REALLYDAMAGED
5418  
5419      ConditionState      = BETWEEN_FIRING_SHOTS_A
5420        Animation         = NITHNT_SKL.NITHNT_STA
5421        AnimationMode     = ONCE
5422        ; this is basically a trick: this guy has a nontrivial animation for firing,
5423        ; and a long recycle time between shots. we want him to finish his fire animation
5424        ; (unless he's ordered to do something else), so this is just a handy trick that
5425        ; says, "if the previous state had this transition key, allow it to finish before
5426        ; switching to us, if possible".
5427        WaitForStateToFinishIfPossible = TRANS_START_FIRING
5428      End
5429      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
5430  
5431      ConditionState      = MOVING
5432        Animation         = NITHNT_SKL.NITHNT_RNA 20
5433        AnimationMode     = LOOP
5434        Flags             = RANDOMSTART
5435        TransitionKey     = None
5436        ParticleSysBone   = None InfantryDustTrails
5437      End
5438      AliasConditionState = MOVING REALLYDAMAGED
5439  
5440      ConditionState      = RELOADING_A
5441        Animation         = NITHNT_SKL.NITHNT_ATA 10
5442        AnimationMode     = ONCE
5443        ;WeaponLaunchBone = PRIMARY WeaponA
5444      End
5445      AliasConditionState = MOVING RELOADING_A
5446      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
5447  
5448      ConditionState      = DYING
5449        Animation         = NITHNT_SKL.NITHNT_DTA
5450        Animation         = NITHNT_SKL.NITHNT_DTB
5451        AnimationSpeedFactorRange = 0.9 1.25
5452        AnimationMode     = ONCE
5453        TransitionKey     = TRANS_Dying
5454      End
5455  
5456      TransitionState     = TRANS_Dying TRANS_Flailing
5457        Animation         = NITHNT_SKL.NITHNT_ADTA1
5458        AnimationMode     = ONCE
5459      End
5460  
5461      ConditionState      = DYING EXPLODED_FLAILING
5462        Animation         = NITHNT_SKL.NITHNT_ADTA2
5463        AnimationMode     = LOOP
5464        TransitionKey     = TRANS_Flailing
5465      End
5466  
5467      ConditionState      = DYING EXPLODED_BOUNCING
5468        Animation         = NITHNT_SKL.NITHNT_ADTA3
5469        AnimationMode     = ONCE
5470        TransitionKey     = None
5471      End
5472  
5473      ;PARACHUTING ANIMATIONS
5474      ConditionState      = FREEFALL
5475        Animation         = NITHNT_SKL.NITHNT_PFL
5476        AnimationMode     = LOOP
5477        TransitionKey     = TRANS_Falling
5478      End
5479      AliasConditionState = FREEFALL REALLYDAMAGED
5480      AliasConditionState = FREEFALL DYING
5481  
5482      ConditionState      = PARACHUTING
5483        Animation         = NITHNT_SKL.NITHNT_PHG
5484        AnimationMode     = LOOP
5485        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
5486        TransitionKey     = TRANS_Chute
5487      End
5488      AliasConditionState = PARACHUTING REALLYDAMAGED
5489      AliasConditionState = PARACHUTING DYING
5490  
5491      TransitionState     = TRANS_Falling TRANS_Chute
5492        Animation         = NITHNT_SKL.NITHNT_POP
5493        AnimationMode     = ONCE
5494        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
5495      End
5496  
5497      TransitionState     = TRANS_Chute TRANS_Stand
5498        Animation         = NITHNT_SKL.NITHNT_PTD
5499        AnimationMode     = ONCE
5500      End
5501  
5502      ;SURRENDER ANIMATIONS
5503  ; surrender is cut. sorry. (srj)
5504  ;    ConditionState      = SURRENDER
5505  ;      Animation         = NITHNT_SKL.NITHNT_SST
5506  ;      AnimationMode     = ONCE
5507  ;      TransitionKey     = TRANS_SurrenderKneeling
5508  ;    End
5509  ;    AliasConditionState = SURRENDER REALLYDAMAGED
5510  ;    ;ConditionState     = SURRENDER MOVING
5511  ;    ;  Animation        = NITHNT_SKL.NITHNT_SWKB
5512  ;    ;  AnimationMode    = ONCE
5513  ;    ;  TransitionKey    = TRANS_SurrenderMoving
5514  ;    ;End
5515  ;    TransitionState     = TRANS_Stand TRANS_SurrenderKneeling
5516  ;      Animation         = NITHNT_SKL.NITHNT_SUR
5517  ;      AnimationMode     = ONCE
5518  ;    End
5519  
5520    End
5521  
5522    ; ***DESIGN parameters ***
5523    DisplayName         = OBJECT:MissileTeam
5524    Side                = America
5525    EditorSorting       = INFANTRY
5526    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
5527    
5528    WeaponSet
5529      Conditions = None 
5530      Weapon = PRIMARY    MissileDefenderMissileWeapon 
5531      Weapon = SECONDARY  MissileDefenderLaserGuidedMissileWeapon ;Controlled by special ability
5532      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
5533      AutoChooseSources = SECONDARY NONE
5534    End
5535    ArmorSet
5536      Conditions      = None
5537      Armor           = HumanArmor
5538      DamageFX        = InfantryDamageFX
5539    End
5540  
5541    VisionRange = 150
5542    ShroudClearingRange = 300
5543    Prerequisites
5544      Object = AmericaBarracks
5545  
5546    End
5547    BuildCost = 300
5548    BuildTime = 5.0          ;in seconds  
5549    
5550    ExperienceValue = 20 20 40 60    ;Experience point value at each level
5551    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
5552    IsTrainable = Yes             ;Can gain experience
5553    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
5554    CommandSet          = AmericaInfantryMissileDefenderCommandSet
5555  
5556    ; *** AUDIO Parameters ***
5557    VoiceSelect = MissileDefenderVoiceSelect
5558    VoiceMove = MissileDefenderVoiceMove
5559    VoiceGuard = MissileDefenderVoiceMove
5560    VoiceAttack = MissileDefenderVoiceAttack
5561    VoiceAttackAir = MissileDefenderVoiceAttack
5562    SoundDie = MissileDefenderVoiceDie
5563    SoundDieFire = DieByFireUSA
5564    SoundDieToxin = DieByToxinUSA
5565  ; surrender is cut. sorry. (srj)
5566  ;  VoiceSurrender = MissileDefenderVoiceSurrender
5567    VoiceFear = MissileDefenderVoiceFear
5568    
5569    UnitSpecificSounds
5570    VoiceGarrison = MissileDefenderVoiceGarrison
5571      VoiceCreate          = MissileDefenderVoiceCreate
5572      VoiceEnter = MissileDefenderVoiceMove
5573      VoiceGetHealed      = MissileDefenderVoiceMove
5574    End
5575  
5576    ; *** ENGINEERING Parameters ***
5577    RadarPriority = UNIT
5578    KindOf = PRELOAD SELECTABLE CAN_ATTACK  ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
5579  
5580    Body = ActiveBody ModuleTag_02
5581      MaxHealth       = 100.0
5582      InitialHealth   = 100.0
5583    End
5584  
5585    Behavior = ExperienceScalarUpgrade ModuleTag_03
5586      TriggeredBy = Upgrade_AmericaAdvancedTraining
5587      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
5588    End
5589  
5590    Behavior = AIUpdateInterface ModuleTag_04
5591      AutoAcquireEnemiesWhenIdle = Yes
5592    End
5593  
5594    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
5595      ScanRate = 1000 ; once a second.
5596      ScanRange = 300 ;
5597      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
5598      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
5599    End
5600  
5601    Locomotor = SET_NORMAL MissileDefenderLocomotor
5602  
5603    Behavior = PhysicsBehavior ModuleTag_06
5604      Mass = 5.0
5605    End
5606  
5607    Behavior = SpecialAbility ModuleTag_08
5608      SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles
5609      UpdateModuleStartsAttack = Yes
5610      InitiateSound = MissileDefenderVoiceAttackLaser
5611    End
5612    Behavior = SpecialAbilityUpdate ModuleTag_09
5613      SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles
5614      StartAbilityRange = 200.0
5615      AbilityAbortRange = 250.0 ;If the target moves outside this range, abort.
5616      PreparationTime = 1000
5617      PersistentPrepTime = 500
5618      SpecialObject = LaserBeam
5619      SpecialObjectAttachToBone = Muzzle01
5620    End
5621   
5622    Behavior = SquishCollide ModuleTag_10
5623      ;nothing
5624    End
5625  
5626  
5627  ; --- begin Death modules ---
5628    Behavior = SlowDeathBehavior ModuleTag_Death01
5629      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
5630      SinkDelay           = 3000
5631      SinkRate            = 0.5     ; in Dist/Sec
5632      DestructionDelay    = 8000
5633      FX                  = INITIAL FX_GIDie
5634    End
5635    Behavior = SlowDeathBehavior ModuleTag_Death02
5636      DeathTypes          = NONE +CRUSHED +SPLATTED
5637      SinkDelay           = 3000
5638      SinkRate            = 0.5     ; in Dist/Sec
5639      DestructionDelay    = 8000
5640      FX                  = INITIAL FX_GIDieCrushed
5641    End
5642    Behavior = SlowDeathBehavior ModuleTag_Death03
5643      DeathTypes          = NONE +EXPLODED
5644      SinkDelay           = 3000
5645      SinkRate            = 0.5     ; in Dist/Sec
5646      DestructionDelay    = 8000
5647      FX                  = INITIAL FX_GIDie
5648      FlingForce          = 8
5649      FlingForceVariance  = 3
5650      FlingPitch          = 60
5651      FlingPitchVariance  = 10
5652    End
5653    Behavior = SlowDeathBehavior ModuleTag_Death04
5654      DeathTypes          = NONE +BURNED
5655      DestructionDelay    = 0
5656      FX                  = INITIAL FX_GIDie
5657      OCL                 = INITIAL OCL_FlamingInfantry
5658    End
5659    Behavior = SlowDeathBehavior ModuleTag_Death05
5660      DeathTypes          = NONE +POISONED
5661      DestructionDelay    = 0
5662      FX                  = INITIAL FX_GIDie
5663      OCL                 = INITIAL OCL_ToxicInfantry
5664    End
5665    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
5666      DeathTypes          = NONE +POISONED_BETA
5667      DestructionDelay    = 0
5668      FX                  = INITIAL FX_GIDie
5669      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
5670    End
5671  ; --- end Death modules ---
5672  
5673    Behavior = PoisonedBehavior ModuleTag_13
5674      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
5675      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
5676    End
5677   
5678    Geometry = CYLINDER
5679    GeometryMajorRadius = 7.0
5680    GeometryMinorRadius = 7.0
5681    GeometryHeight = 12.0
5682    GeometryIsSmall = Yes
5683    Shadow = SHADOW_DECAL
5684    ShadowSizeX = 14;
5685    ShadowSizeY = 14;
5686    ShadowTexture = ShadowI;
5687    BuildCompletion = APPEARS_AT_RALLY_POINT
5688  
5689  End
5690  
5691  ;------------------------------------------------------------------------------
5692  ; @todo -- this entire unit is "first pass only" and needs lots of specialization
5693  Object AmericaInfantryPilot
5694  
5695    ; *** ART Parameters ***
5696    SelectPortrait         = SAPilot_L
5697    ButtonImage            = SAPilot
5698    
5699    ;UpgradeCameo1 = NONE
5700    ;UpgradeCameo2 = NONE
5701    ;UpgradeCameo3 = NONE
5702    ;UpgradeCameo4 = NONE
5703    ;UpgradeCameo5 = NONE
5704    
5705    Draw = W3DModelDraw ModuleTag_01
5706      OkToChangeModelColor = Yes
5707  
5708      DefaultConditionState
5709        Model = AIRPlt_SKN
5710        IdleAnimation = AIRPlt_SKL.AIRPlt_STA 0 20
5711        IdleAnimation = AIRPlt_SKL.AIRPlt_IDA 
5712        IdleAnimation = AIRPlt_SKL.AIRPlt_IDB 
5713        AnimationMode = ONCE
5714        TransitionKey = TRANS_Stand
5715      End
5716  
5717      ConditionState = FREEFALL
5718        Animation = AIRPlt_SKL.AIRPLT_PFL
5719        AnimationMode = ONCE
5720        TransitionKey = TRANS_Falling
5721      End
5722      AliasConditionState = FREEFALL DYING
5723  
5724      ConditionState = PARACHUTING
5725        Animation = AIRPlt_SKL.AIRPlt_PHG
5726        AnimationMode = LOOP
5727        TransitionKey = TRANS_Chute
5728        WaitForStateToFinishIfPossible = TRANS_Falling
5729      End
5730      AliasConditionState = PARACHUTING DYING
5731  
5732      ConditionState = MOVING
5733        Animation = AIRPlt_SKL.AIRPlt_RNA 
5734        AnimationMode = LOOP
5735        TransitionKey = TRANS_Stand
5736        ParticleSysBone     = None InfantryDustTrails
5737      End
5738      
5739  
5740      ConditionState = DYING
5741        Animation = AIRPlt_SKL.AIRPlt_DTA 
5742        Animation = AIRPlt_SKL.AIRPlt_DTB 
5743        AnimationMode = ONCE
5744        TransitionKey = TRANS_Dying
5745      End
5746  
5747      TransitionState = TRANS_Dying TRANS_Flailing
5748        Animation = AIRPlt_SKL.AIRPlt_ADTE1
5749        AnimationMode = ONCE
5750      End
5751  
5752      ConditionState = DYING EXPLODED_FLAILING
5753        Animation = AIRPlt_SKL.AIRPlt_ADTE2
5754        AnimationMode = LOOP
5755        TransitionKey = TRANS_Flailing
5756      End
5757  
5758      ConditionState = DYING EXPLODED_BOUNCING
5759        Animation = AIRPlt_SKL.AIRPlt_ADTE3
5760        AnimationMode = ONCE
5761        TransitionKey = None
5762      End
5763  
5764      ConditionState = SPECIAL_CHEERING
5765        Animation = AIRPLT_SKL.AIRPLT_CHA
5766        AnimationMode = LOOP
5767      End
5768  
5769  ; surrender is cut. sorry. (srj)
5770  ;    ConditionState = SURRENDER
5771  ;      Animation = AIRPLT_SKL.AIRPLT_SST
5772  ;      AnimationMode = ONCE
5773  ;      TransitionKey = TRANS_SurrenderKneeling
5774  ;    End
5775  ;    ;@TODO -- MISSING ANIMATION FILE
5776  ;    ;ConditionState = SURRENDER MOVING
5777  ;    ;  Animation = AIRPLT_SKL.AIRPLT_SWKB
5778  ;    ;  AnimationMode = ONCE
5779  ;    ;  TransitionKey = TRANS_SurrenderMoving
5780  ;    ;End
5781  ;    TransitionState = TRANS_Stand TRANS_SurrenderKneeling
5782  ;      Animation = AIRPLT_SKL.AIRPLT_SUR
5783  ;      AnimationMode = ONCE
5784  ;    End
5785  ;    TransitionState = TRANS_SurrenderKneeling TRANS_Stand
5786  ;      Animation = AIRPLT_SKL.AIRPLT_SURX
5787  ;      AnimationMode = ONCE
5788  ;    End
5789  
5790      ;@TODO -- MISSING ANIMATION FILE
5791      ;TransitionState = TRANS_Falling TRANS_Chute
5792      ;  Animation = AIRPLT_SKL.AIRPLT_POP
5793      ;  AnimationMode = ONCE
5794      ;  Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
5795      ;End
5796      
5797      TransitionState = TRANS_Chute TRANS_Stand
5798        Animation = AIRPlt_SKL.AIRPlt_PTD
5799        AnimationMode = ONCE
5800      End
5801  
5802    End
5803  
5804    ; ***DESIGN parameters ***
5805    DisplayName = OBJECT:Pilot
5806    Side = America
5807    EditorSorting = INFANTRY
5808    TransportSlotCount = 1               ;how many "slots" we take in a transport (0 == not transportable)
5809    ExperienceValue    = 10 10 10 10 ;Experience point value at each level
5810    ExperienceRequired =  0 1 2 3 ;Experience points needed to gain each level
5811    IsTrainable     = Yes  ;Can gain experience
5812    CommandSet = AmericaInfantryPilotCommandSet
5813  
5814    ArmorSet
5815      Conditions      = None
5816      Armor           = HumanArmor
5817      DamageFX        = InfantryDamageFX
5818    End
5819  
5820    VisionRange = 150
5821    ShroudClearingRange = 300
5822    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
5823  
5824    ; *** AUDIO Parameters ***
5825    VoiceSelect = PilotVoiceSelect
5826    VoiceMove = PilotVoiceMove
5827    VoiceAttack = PilotVoiceMove
5828    SoundDie = PilotVoiceDie
5829    SoundDieFire = DieByFireUSA
5830    SoundDieToxin = DieByToxinUSA
5831    VoiceGarrison = PilotVoiceGarrison
5832  ; surrender is cut. sorry. (srj)
5833  ;  VoiceSurrender = PilotVoiceSurrender
5834    VoiceFear = PilotVoiceFear
5835    UnitSpecificSounds
5836      VoiceEnter = PilotVoiceEnter
5837      VoiceEnterHostile     = PilotVoiceEnter
5838      VoiceGetHealed      = PilotVoiceMove
5839    End
5840  
5841    ; *** ENGINEERING Parameters ***
5842    RadarPriority = UNIT
5843    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY NO_GARRISON SCORE IGNORES_SELECT_ALL
5844  
5845    Behavior = VeterancyGainCreate ModuleTag_02
5846      ; omit the "ScienceRequired" so that this upgrade always occurs.
5847      ; Pilots should never (repeat, never) be less than VETERAN status.
5848      StartingLevel = VETERAN
5849    End
5850  
5851    Behavior = VeterancyCrateCollide       ModuleTag_03
5852      RequiredKindOf = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
5853      ForbiddenKindOf = DOZER       ; but not to TRANSPORTs or DOZERs!
5854      EffectRange = 0               ; 0=="affect only the thing you collide with"
5855      AddsOwnerVeterancy = Yes      ; we add our own veterancy to the target (rather than just +1 level)
5856      IsPilot = Yes                 ; set the pilot flag because it's different than the veterancy crate and has extra checking
5857    End
5858  
5859    Body = ActiveBody ModuleTag_04
5860      MaxHealth       = 100.0
5861      InitialHealth   = 100.0
5862    End
5863  
5864    Behavior = AIUpdateInterface ModuleTag_05
5865      AutoAcquireEnemiesWhenIdle = Yes
5866    End
5867  
5868    Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
5869      ScanRate = 1000 ; once a second.
5870      ScanRange = 300 ;
5871      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
5872      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
5873    End
5874  
5875    Behavior = PilotFindVehicleUpdate   ModuleTag_07 ; This update will have the unit go to a vehicle. jba 
5876      ScanRate = 1000 ; once a second.
5877      ScanRange = 300 ;
5878      MinHealth = 0.5 ;  don't enter a vehicle less than 50% healthy.
5879    End
5880  
5881    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
5882    Locomotor = SET_NORMAL_UPGRADED BasicHumanLocomotorPlus25
5883  
5884    Behavior = PhysicsBehavior ModuleTag_08
5885      Mass = 5.0
5886    End
5887  
5888    Behavior = LocomotorSetUpgrade ModuleTag_10
5889      TriggeredBy = Upgrade_Veterancy_HEROIC
5890    End
5891  
5892    Behavior = SquishCollide ModuleTag_11
5893      ;nothing
5894    End
5895  
5896  
5897  ; --- begin Death modules ---
5898    Behavior = SlowDeathBehavior ModuleTag_Death01
5899      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
5900      SinkDelay           = 3000
5901      SinkRate            = 0.5     ; in Dist/Sec
5902      DestructionDelay    = 8000
5903      FX                  = INITIAL FX_GIDie
5904    End
5905    Behavior = SlowDeathBehavior ModuleTag_Death02
5906      DeathTypes          = NONE +CRUSHED +SPLATTED
5907      SinkDelay           = 3000
5908      SinkRate            = 0.5     ; in Dist/Sec
5909      DestructionDelay    = 8000
5910      FX                  = INITIAL FX_GIDieCrushed
5911    End
5912    Behavior = SlowDeathBehavior ModuleTag_Death03
5913      DeathTypes          = NONE +EXPLODED
5914      SinkDelay           = 3000
5915      SinkRate            = 0.5     ; in Dist/Sec
5916      DestructionDelay    = 8000
5917      FX                  = INITIAL FX_GIDie
5918      FlingForce          = 8
5919      FlingForceVariance  = 3
5920      FlingPitch          = 60
5921      FlingPitchVariance  = 10
5922    End
5923    Behavior = SlowDeathBehavior ModuleTag_Death04
5924      DeathTypes          = NONE +BURNED
5925      DestructionDelay    = 0
5926      FX                  = INITIAL FX_GIDie
5927      OCL                 = INITIAL OCL_FlamingInfantry
5928    End
5929    Behavior = SlowDeathBehavior ModuleTag_Death05
5930      DeathTypes          = NONE +POISONED
5931      DestructionDelay    = 0
5932      FX                  = INITIAL FX_GIDie
5933      OCL                 = INITIAL OCL_ToxicInfantry
5934    End
5935    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
5936      DeathTypes          = NONE +POISONED_BETA
5937      DestructionDelay    = 0
5938      FX                  = INITIAL FX_GIDie
5939      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
5940    End
5941  ; --- end Death modules ---
5942  
5943    Behavior = PoisonedBehavior ModuleTag_14
5944      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
5945      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
5946    End
5947   
5948    Geometry = CYLINDER
5949    GeometryMajorRadius = 10.0
5950    GeometryMinorRadius = 10.0
5951    GeometryHeight = 12.0
5952    GeometryIsSmall = Yes
5953    Shadow = SHADOW_DECAL
5954    ShadowSizeX = 14;
5955    ShadowSizeY = 14;
5956    ShadowTexture = ShadowI;
5957    BuildCompletion = APPEARS_AT_RALLY_POINT
5958  
5959  End
5960  
5961  ;------------------------------------------------------------------------------
5962  Object AmericaInfantryPathfinder
5963  
5964      ; *** ART Parameters ***
5965    SelectPortrait         = SAPathfinder1_L
5966    ButtonImage            = SAPathfinder1
5967    
5968    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
5969    ;UpgradeCameo2 = NONE
5970    ;UpgradeCameo3 = NONE
5971    ;UpgradeCameo4 = NONE
5972    ;UpgradeCameo5 = NONE
5973    
5974    Draw = W3DModelDraw ModuleTag_01
5975  
5976      OkToChangeModelColor = Yes
5977  
5978      DefaultConditionState
5979        Model = AIPFDR_SKN
5980        IdleAnimation = AIPFDR_SKL.AIPFDR_STA 
5981        IdleAnimation = AIPFDR_SKL.AIPFDR_IDA
5982        AnimationMode = ONCE
5983        WeaponFireFXBone = PRIMARY Muzzle
5984        WeaponMuzzleFlash = PRIMARY MuzzleFX
5985        TransitionKey = TRANS_Standing
5986      End
5987      AliasConditionState = REALLYDAMAGED
5988  
5989      ConditionState = MOVING
5990        Animation = AIPFDR_SKL.AIPFDR_RNA 25
5991        AnimationMode = LOOP
5992        Flags = RANDOMSTART
5993        TransitionKey = TRANS_Standing
5994        ParticleSysBone   = None InfantryDustTrails
5995      End
5996      AliasConditionState = MOVING REALLYDAMAGED
5997  
5998      ConditionState  = FIRING_A 
5999        Animation     = AIPFDR_SKL.AIPFDR_ATB                 ; recoil in standing position
6000        AnimationMode = ONCE
6001        TransitionKey = TRANS_FiringA
6002      End
6003      AliasConditionState = FIRING_A MOVING
6004      AliasConditionState = FIRING_A MOVING REALLYDAMAGED
6005      AliasConditionState = FIRING_A REALLYDAMAGED
6006  
6007      ConditionState  = BETWEEN_FIRING_SHOTS_A
6008        Animation     = AIPFDR_SKL.AIPFDR_ATBST               ; motionless in standing position
6009        AnimationMode = ONCE
6010        WaitForStateToFinishIfPossible = TRANS_FiringA
6011      End
6012      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
6013      AliasConditionState = RELOADING_A
6014      AliasConditionState = RELOADING_A REALLYDAMAGED
6015  
6016      ConditionState = DYING
6017        Animation = AIPFDR_SKL.AIPFDR_DTA
6018        AnimationMode = ONCE
6019        TransitionKey = TRANS_Dying
6020      End
6021      
6022      TransitionState = TRANS_Dying TRANS_Flailing
6023        Animation = AIPFDR_SKL.AIPFDR_ADTA1
6024        AnimationMode = ONCE
6025      End
6026  
6027      ConditionState = DYING EXPLODED_FLAILING
6028        Animation = AIPFDR_SKL.AIPFDR_ADTA2
6029        AnimationMode = LOOP
6030        TransitionKey = TRANS_Flailing
6031      End
6032  
6033      ConditionState = DYING EXPLODED_BOUNCING
6034        Animation = AIPFDR_SKL.AIPFDR_ADTA3
6035        AnimationMode = ONCE
6036        TransitionKey = None
6037      End
6038  
6039      ConditionState = FREEFALL
6040        Animation = AIPFDR_SKL.AIPFDR_PFL
6041        AnimationMode = LOOP
6042        TransitionKey = TRANS_Falling
6043      End
6044      AliasConditionState = FREEFALL DYING
6045  
6046      ConditionState = PARACHUTING
6047        Animation = AIPFDR_SKL.AIPFDR_PHG
6048        AnimationMode = LOOP
6049        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
6050        ;our bone positions should come from the last frame, rather than the first
6051        TransitionKey = TRANS_Chute
6052      End
6053      AliasConditionState = PARACHUTING DYING
6054  
6055  
6056      TransitionState = TRANS_Falling TRANS_Chute
6057        Animation = AIPFDR_SKL.AIPFDR_POP
6058        AnimationMode = ONCE
6059        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
6060        ;our bone positions should come from the last frame, rather than the first
6061      End
6062  
6063      TransitionState = TRANS_Chute TRANS_Standing
6064        Animation = AIPFDR_SKL.AIPFDR_PTD
6065        AnimationMode = ONCE
6066      End
6067    End
6068  
6069    
6070    ; ***DESIGN parameters ***
6071    DisplayName      = OBJECT:Pathfinder
6072    Side = America
6073    EditorSorting = INFANTRY
6074    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
6075    
6076    WeaponSet
6077      Conditions = None 
6078      Weapon = PRIMARY USAPathfinderSniperRifle
6079    End
6080    ArmorSet
6081      Conditions      = None
6082      Armor           = HumanArmor
6083      DamageFX        = InfantryDamageFX
6084    End
6085  
6086    VisionRange = 200
6087    ShroudClearingRange = 400
6088    Prerequisites
6089      Object = AmericaBarracks
6090      Science = SCIENCE_Pathfinder
6091    End
6092    BuildCost = 600
6093    BuildTime = 10.0          ;in seconds  
6094    
6095    ExperienceValue = 40 40 60 80    ;Experience point value at each level
6096    ExperienceRequired = 0 50 100 200  ;Experience points needed to gain each level
6097    IsTrainable = Yes             ;Can gain experience
6098    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
6099    CommandSet      = AmericaInfantryPathfinderCommandSet
6100  
6101    ; *** AUDIO Parameters ***
6102    VoiceSelect = PathfinderVoiceSelect
6103    VoiceMove = PathfinderVoiceMove
6104    VoiceGuard = PathfinderVoiceMove
6105    VoiceAttack = PathfinderVoiceAttack
6106    SoundDie = PathfinderVoiceDie
6107    SoundDieFire = DieByFireUSA
6108    SoundDieToxin = DieByToxinUSA
6109    VoiceFear = PathfinderVoiceFear
6110  ; surrender is cut. sorry. (srj)
6111  ;  VoiceSurrender = PathfinderVoiceSurrender
6112    SoundStealthOn = StealthOn
6113    SoundStealthOff = StealthOff
6114    VoiceFear = PathfinderVoiceFear
6115    
6116    UnitSpecificSounds
6117      VoiceCreate          = PathfinderVoiceCreate
6118      VoiceGarrison = PathfinderVoiceGarrison
6119      VoiceEnter = PathfinderVoiceMove
6120      VoiceEnterHostile =  PathfinderVoiceMove
6121      VoiceGetHealed      = PathfinderVoiceMove
6122    End
6123  
6124    ; *** ENGINEERING Parameters ***
6125    RadarPriority = UNIT
6126    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY STEALTH_GARRISON SCORE
6127  
6128    Body = ActiveBody ModuleTag_02
6129      MaxHealth       = 120.0
6130      InitialHealth   = 120.0
6131    End
6132  
6133    Behavior = AIUpdateInterface ModuleTag_03
6134      AutoAcquireEnemiesWhenIdle = Yes Stealthed
6135      MoodAttackCheckRate        = 250
6136    End
6137  
6138    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
6139      ScanRate = 1000 ; once a second.
6140      ScanRange = 300 ;
6141      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
6142      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
6143    End
6144  
6145    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
6146  
6147    Behavior = ExperienceScalarUpgrade ModuleTag_05
6148      TriggeredBy = Upgrade_AmericaAdvancedTraining
6149      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
6150    End
6151  
6152    Behavior = PhysicsBehavior ModuleTag_06
6153      Mass = 5.0
6154    End
6155    Behavior = StealthDetectorUpdate ModuleTag_08
6156      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
6157      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
6158      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
6159      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
6160    End
6161    Behavior = StealthUpdate ModuleTag_09
6162      StealthDelay                = 0           ; msec
6163      StealthForbiddenConditions  = MOVING ; stays stealthy while attacking
6164      FriendlyOpacityMin          = 30.0%
6165      FriendlyOpacityMax          = 80.0%
6166      PulseFrequency              = 500   ; msec
6167      MoveThresholdSpeed          = 3
6168      InnateStealth               = Yes
6169      OrderIdleEnemiesToAttackMeUponReveal  = Yes
6170    End
6171   
6172    Behavior = SquishCollide ModuleTag_10
6173      ;nothing
6174    End
6175  
6176  
6177  ; --- begin Death modules ---
6178    Behavior = SlowDeathBehavior ModuleTag_Death01
6179      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
6180      SinkDelay           = 3000
6181      SinkRate            = 0.5     ; in Dist/Sec
6182      DestructionDelay    = 8000
6183      FX                  = INITIAL FX_GIDie
6184    End
6185    Behavior = SlowDeathBehavior ModuleTag_Death02
6186      DeathTypes          = NONE +CRUSHED +SPLATTED
6187      SinkDelay           = 3000
6188      SinkRate            = 0.5     ; in Dist/Sec
6189      DestructionDelay    = 8000
6190      FX                  = INITIAL FX_GIDieCrushed
6191    End
6192    Behavior = SlowDeathBehavior ModuleTag_Death03
6193      DeathTypes          = NONE +EXPLODED
6194      SinkDelay           = 3000
6195      SinkRate            = 0.5     ; in Dist/Sec
6196      DestructionDelay    = 8000
6197      FX                  = INITIAL FX_GIDie
6198      FlingForce          = 8
6199      FlingForceVariance  = 3
6200      FlingPitch          = 60
6201      FlingPitchVariance  = 10
6202    End
6203    Behavior = SlowDeathBehavior ModuleTag_Death04
6204      DeathTypes          = NONE +BURNED
6205      DestructionDelay    = 0
6206      FX                  = INITIAL FX_GIDie
6207      OCL                 = INITIAL OCL_FlamingInfantry
6208    End
6209    Behavior = SlowDeathBehavior ModuleTag_Death05
6210      DeathTypes          = NONE +POISONED
6211      DestructionDelay    = 0
6212      FX                  = INITIAL FX_GIDie
6213      OCL                 = INITIAL OCL_ToxicInfantry
6214    End
6215    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
6216      DeathTypes          = NONE +POISONED_BETA
6217      DestructionDelay    = 0
6218      FX                  = INITIAL FX_GIDie
6219      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
6220    End
6221  ; --- end Death modules ---
6222  
6223    Behavior = PoisonedBehavior ModuleTag_13
6224      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
6225      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
6226    End
6227   
6228    Geometry = CYLINDER
6229    GeometryMajorRadius = 10.0
6230    GeometryMinorRadius = 10.0
6231    GeometryHeight = 12.0
6232    GeometryIsSmall = Yes
6233    Shadow = SHADOW_DECAL
6234    ShadowSizeX = 14;
6235    ShadowSizeY = 14;
6236    ShadowTexture = ShadowI;
6237    BuildCompletion = APPEARS_AT_RALLY_POINT
6238  
6239  End
6240  
6241  ;------------------------------------------------------------------------------
6242  Object GLAInfantryRebel
6243  
6244    ; *** ART Parameters ***
6245    SelectPortrait         = SURebel_L
6246    ButtonImage            = SURebel
6247  
6248    UpgradeCameo1 = Upgrade_GLAAPBullets
6249    UpgradeCameo2 = Upgrade_GLACamouflage
6250    UpgradeCameo3 = Upgrade_InfantryCaptureBuilding
6251    ;UpgradeCameo4 = NONE
6252    ;UpgradeCameo5 = NONE
6253  
6254    Draw = W3DModelDraw ModuleTag_01
6255  
6256      OkToChangeModelColor = Yes
6257      
6258      ; this says "we don't use these condition states at all, so completely
6259      ; ignore them for purposes of matchmaking"... this is useful to help
6260      ; reduce the number of AliasConditionState clauses you must add in
6261      ; order to avoid ambiguity in some cases.
6262      IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
6263  
6264      ; ---- standing
6265      DefaultConditionState
6266        Model               = UIRGrd_SKN
6267        IdleAnimation       = UIRGrd_SKL.UIRGrd_STN 0 35
6268        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDA 
6269        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDB 
6270        AnimationMode       = ONCE
6271        WeaponFireFXBone    = PRIMARY Muzzle
6272        WeaponMuzzleFlash   = PRIMARY MuzzleFX
6273        TransitionKey       = TRANS_Standing
6274      End
6275  
6276      ConditionState        = REALLYDAMAGED
6277        IdleAnimation       = UIRGrd_SKL.UIRGrd_STB 0 35
6278        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDC
6279        IdleAnimation       = UIRGrd_SKL.UIRGrd_IDD 
6280        AnimationMode       = ONCE
6281        TransitionKey       = TRANS_StandingHurt
6282      End
6283  
6284      ; ---- moving
6285      ConditionState        = MOVING
6286        Animation           = UIRGrd_SKL.UIRGrd_RNA 15
6287        AnimationMode       = LOOP
6288        TransitionKey       = TRANS_Walking
6289        ParticleSysBone     = None InfantryDustTrails
6290      End
6291      AliasConditionState   = MOVING ATTACKING
6292  
6293      ConditionState        = MOVING REALLYDAMAGED
6294        Animation           = UIRGrd_SKL.UIRGrd_RNB 25
6295        AnimationMode       = LOOP
6296        TransitionKey       = TRANS_WalkingHurt
6297        ParticleSysBone     = None InfantryDustTrails
6298      End
6299      AliasConditionState   = MOVING ATTACKING REALLYDAMAGED
6300      
6301      ; ---- dying 
6302      ConditionState        = DYING
6303        Animation           = UIRGrd_SKL.UIRGrd_DTA 
6304        Animation           = UIRGrd_SKL.UIRGrd_DTB 
6305        AnimationMode       = ONCE
6306        TransitionKey       = TRANS_Dying
6307      End
6308  
6309      TransitionState = TRANS_Dying TRANS_Flailing
6310        Animation = UIRGrd_SKL.UIRGrd_ADTE1
6311        AnimationMode = ONCE
6312      End
6313  
6314      ConditionState = DYING EXPLODED_FLAILING
6315        Animation = UIRGrd_SKL.UIRGrd_ADTE2
6316        AnimationMode = LOOP
6317        TransitionKey = TRANS_Flailing
6318      End
6319  
6320      ConditionState = DYING EXPLODED_BOUNCING
6321        Animation = UIRGrd_SKL.UIRGrd_ADTE3
6322        AnimationMode = ONCE
6323        TransitionKey = None
6324      End
6325      
6326      ConditionState = SPECIAL_CHEERING
6327        Animation = UIRGrd_SKL.UIRGrd_IDB
6328      End
6329  
6330      ; ---- firing
6331      ConditionState = USING_WEAPON_A
6332        Animation = UIRGrd_SKL.UIRGrd_ATA
6333        AnimationMode = LOOP
6334        TransitionKey = TRANS_Firing
6335      End
6336  
6337      ConditionState = USING_WEAPON_A REALLYDAMAGED
6338        Animation = UIRGrd_SKL.UIRGrd_ATA2
6339        AnimationMode = LOOP
6340        TransitionKey = TRANS_FiringHurt
6341      End
6342  
6343      TransitionState = TRANS_Standing TRANS_Firing
6344        Animation = UIRGrd_SKL.UIRGrd_ATAST
6345        AnimationMode = ONCE
6346      End
6347  
6348      TransitionState = TRANS_Firing TRANS_Standing
6349        Animation = UIRGrd_SKL.UIRGrd_ATAED
6350        AnimationMode = ONCE
6351      End
6352  
6353      TransitionState = TRANS_StandingHurt TRANS_FiringHurt
6354        Animation = UIRGrd_SKL.UIRGrd_ATA2ED
6355        AnimationMode = ONCE_BACKWARDS
6356      End
6357  
6358      TransitionState = TRANS_FiringHurt TRANS_StandingHurt
6359        Animation = UIRGrd_SKL.UIRGrd_ATA2ED
6360        AnimationMode = ONCE
6361      End
6362  
6363      TransitionState = TRANS_Standing TRANS_StandingHurt
6364        Animation = UIRGrd_SKL.UIRGrd_ATA2ED
6365        AnimationMode = ONCE
6366      End
6367  
6368      
6369  
6370      ; ------- Bldg-capture
6371  
6372      ConditionState = UNPACKING
6373        Model             = UIRGrd_F_SKN
6374        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
6375        AnimationMode     = ONCE
6376      End
6377      AliasConditionState = UNPACKING REALLYDAMAGED
6378  
6379      ConditionState = RAISING_FLAG
6380        Model             = UIRGrd_F_SKN
6381        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
6382        AnimationMode     = ONCE
6383        TransitionKey     = TRANS_Raising
6384      End
6385      AliasConditionState = RAISING_FLAG REALLYDAMAGED
6386  
6387      ConditionState = PACKING
6388        Model             = UIRGrd_F_SKN
6389        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
6390        AnimationMode     = ONCE_BACKWARDS
6391        Flags             = START_FRAME_LAST
6392        TransitionKey     = TRANS_Packing
6393      End
6394      AliasConditionState = PACKING REALLYDAMAGED
6395  
6396      TransitionState = TRANS_Raising TRANS_Packing
6397        Model             = UIRGrd_F_SKN
6398        Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
6399        AnimationMode     = ONCE_BACKWARDS
6400        Flags             = START_FRAME_LAST
6401      End
6402  
6403      ; ------- Surrender
6404  
6405      ;ConditionState = SURRENDER
6406      ;  Animation         = UIRGrd_SKL.UIRGrd_SST
6407      ;  AnimationMode     = ONCE
6408      ;  TransitionKey     = TRANS_Surrendered
6409      ;End
6410      ;ConditionState = SURRENDER MOVING
6411      ;  Animation         = UIRGrd_SKL.UIRGrd_RNA
6412      ;  AnimationMode     = ONCE
6413      ;  TransitionKey     = TRANS_Surrendered
6414      ;End
6415      ;TransitionState = TRANS_Standing TRANS_Surrendered
6416      ;  Animation       = UIRGrd_SKL.UIRGrd_SUR
6417      ;  AnimationMode   = ONCE
6418      ;End
6419      ;ConditionState = SURRENDER REALLYDAMAGED
6420      ;  Animation         = UIRGrd_SKL.UIRGrd_SSTB
6421      ;  AnimationMode     = ONCE
6422      ;  TransitionKey     = TRANS_SurrenderedHurt
6423      ;End
6424      ;ConditionState = SURRENDER MOVING REALLYDAMAGED
6425      ;  Animation         = UIRGrd_SKL.UIRGrd_RNB
6426      ;  AnimationMode     = ONCE
6427      ;  TransitionKey     = TRANS_SurrenderedHurt
6428      ;End
6429      ;TransitionState = TRANS_StandingHurt TRANS_SurrenderedHurt
6430      ;  Animation       = UIRGrd_SKL.UIRGrd_SURB
6431      ;  AnimationMode   = ONCE
6432      ;End
6433  
6434    End
6435  
6436    ; ***DESIGN parameters ***
6437    DisplayName         = OBJECT:Rebel
6438    Side                = GLA
6439    EditorSorting       = INFANTRY
6440    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
6441   
6442    WeaponSet
6443      Conditions = None 
6444      Weapon = PRIMARY GLARebelMachineGun
6445    End
6446    WeaponSet
6447      Conditions = PLAYER_UPGRADE 
6448      Weapon = PRIMARY GLARebelMachineGun
6449      Weapon = SECONDARY GLARebelTranqDartsWeapon
6450      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
6451      AutoChooseSources = SECONDARY NONE
6452    End
6453  
6454    ArmorSet
6455      Conditions      = None
6456      Armor           = HumanArmor
6457      DamageFX        = InfantryDamageFX
6458    End
6459    VisionRange         = 150
6460    ShroudClearingRange = 300
6461    Prerequisites
6462      Object = GLABarracks
6463    End
6464    BuildCost = 150
6465    BuildTime = 5.0          ;in seconds  
6466  
6467    ExperienceValue     = 15 15 30 40     ;Experience point value at each level
6468    ExperienceRequired  = 0 40 60 120     ;Experience points needed to gain each level
6469    IsTrainable         = Yes             ;Can gain experience
6470    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
6471    CommandSet          = GLAInfantryRebelCommandSet
6472  
6473    ; *** AUDIO Parameters ***
6474    VoiceSelect = RebelVoiceSelect
6475    VoiceMove = RebelVoiceMove
6476    VoiceGuard = RebelVoiceMove
6477    VoiceAttack = RebelVoiceAttack
6478    SoundDie = RebelVoiceDie
6479    SoundDieFire = DieByFireGLA
6480    SoundDieToxin = DieByToxinGLA
6481    SoundStealthOn = StealthOn
6482    SoundStealthOff = StealthOff
6483  ; surrender is cut. sorry. (srj)
6484  ;  VoiceSurrender = RebelVoiceSurrender
6485    VoiceFear = RebelVoiceFear
6486    VoiceTaskComplete = RebelVoiceCaptureComplete
6487    UnitSpecificSounds
6488      VoiceCreate = RebelVoiceCreate
6489      VoiceSubdue = RebelVoiceSubdue
6490      VoiceGarrison = RebelVoiceGarrison
6491      VoiceEnter = RebelVoiceMove
6492      VoiceEnterHostile = RebelVoiceMove
6493      VoiceGetHealed      = RebelVoiceMove
6494    End
6495  
6496    ; *** ENGINEERING Parameters ***
6497    RadarPriority = UNIT
6498    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE 
6499  
6500    Body = ActiveBody ModuleTag_02
6501      MaxHealth       = 120.0
6502      InitialHealth   = 120.0
6503    End
6504  
6505    Behavior = AIUpdateInterface ModuleTag_03
6506      AutoAcquireEnemiesWhenIdle = Yes
6507    End
6508  
6509    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
6510    End
6511  
6512    Locomotor = SET_NORMAL BasicHumanLocomotor
6513  
6514    Behavior = PhysicsBehavior ModuleTag_05
6515      Mass = 5.0
6516    End
6517    Behavior = StealthUpdate ModuleTag_07
6518      StealthDelay                = 2500 ; msec
6519      StealthForbiddenConditions  = ATTACKING USING_ABILITY
6520      MoveThresholdSpeed          = 3
6521      InnateStealth               = No ;Requires upgrade first
6522      OrderIdleEnemiesToAttackMeUponReveal  = Yes
6523    End
6524  
6525    Behavior = WeaponSetUpgrade ModuleTag_08
6526      TriggeredBy = Upgrade_GLATranqDarts
6527    End
6528    Behavior = WeaponBonusUpgrade ModuleTag_09
6529      TriggeredBy = Upgrade_GLAAPBullets
6530    End
6531    Behavior = StealthUpgrade ModuleTag_10
6532      TriggeredBy = Upgrade_GLACamouflage
6533    End
6534  
6535   
6536    Behavior = SquishCollide ModuleTag_11
6537      ;nothing
6538    End
6539  
6540  
6541  ; --- begin Death modules ---
6542    Behavior = SlowDeathBehavior ModuleTag_Death01
6543      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
6544      SinkDelay           = 3000
6545      SinkRate            = 0.5     ; in Dist/Sec
6546      DestructionDelay    = 8000
6547      FX                  = INITIAL FX_GIDie
6548    End
6549    Behavior = SlowDeathBehavior ModuleTag_Death02
6550      DeathTypes          = NONE +CRUSHED +SPLATTED
6551      SinkDelay           = 3000
6552      SinkRate            = 0.5     ; in Dist/Sec
6553      DestructionDelay    = 8000
6554      FX                  = INITIAL FX_GIDieCrushed
6555    End
6556    Behavior = SlowDeathBehavior ModuleTag_Death03
6557      DeathTypes          = NONE +EXPLODED
6558      SinkDelay           = 3000
6559      SinkRate            = 0.5     ; in Dist/Sec
6560      DestructionDelay    = 8000
6561      FX                  = INITIAL FX_GIDie
6562      FlingForce          = 8
6563      FlingForceVariance  = 3
6564      FlingPitch          = 60
6565      FlingPitchVariance  = 10
6566    End
6567    Behavior = SlowDeathBehavior ModuleTag_Death04
6568      DeathTypes          = NONE +BURNED
6569      DestructionDelay    = 0
6570      FX                  = INITIAL FX_GIDie
6571      OCL                 = INITIAL OCL_FlamingInfantry
6572    End
6573    Behavior = SlowDeathBehavior ModuleTag_Death05
6574      DeathTypes          = NONE +POISONED
6575      DestructionDelay    = 0
6576      FX                  = INITIAL FX_GIDie
6577      OCL                 = INITIAL OCL_ToxicInfantry
6578    End
6579    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
6580      DeathTypes          = NONE +POISONED_BETA
6581      DestructionDelay    = 0
6582      FX                  = INITIAL FX_GIDie
6583      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
6584    End
6585  ; --- end Death modules ---
6586  
6587    Behavior = PoisonedBehavior ModuleTag_16
6588      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
6589      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
6590    End
6591  
6592    Behavior = SpecialAbility ModuleTag_17
6593      SpecialPowerTemplate      = SpecialAbilityRebelCaptureBuilding
6594      UpdateModuleStartsAttack  = Yes
6595      StartsPaused              = Yes
6596      InitiateSound         = RebelVoiceCapture
6597    End
6598    Behavior = SpecialAbilityUpdate ModuleTag_18
6599      SpecialPowerTemplate  = SpecialAbilityRebelCaptureBuilding
6600      StartAbilityRange  = 5.0
6601      UnpackTime            = 3000  ; (changing this will scale anim speed)
6602      PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
6603      PackTime              = 2000  ; (changing this will scale anim speed)
6604      DoCaptureFX           = Yes
6605      AwardXPForTriggering  = 12
6606      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
6607    End
6608  
6609    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_19
6610      SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding
6611      TriggeredBy = Upgrade_InfantryCaptureBuilding
6612    End
6613  
6614   
6615    Geometry = CYLINDER
6616    GeometryMajorRadius = 10.0
6617    GeometryMinorRadius = 10.0
6618    GeometryHeight = 12.0
6619    GeometryIsSmall = Yes
6620    Shadow = SHADOW_DECAL
6621    ShadowSizeX = 14;
6622    ShadowSizeY = 14;
6623    ShadowTexture = ShadowI;
6624    BuildCompletion = APPEARS_AT_RALLY_POINT
6625  
6626  End
6627  
6628  ;----------------------------------------------------------------------------
6629  Object GLAInfantryJarmenKell
6630  
6631    ; *** ART Parameters ***
6632    SelectPortrait         = SUJermanKell1_L  ;NOTE: Asset spelling mistake
6633    ButtonImage            = SUJermanKell1
6634    
6635    UpgradeCameo1 = Upgrade_GLAAPBullets
6636    ;UpgradeCameo2 = NONE
6637    ;UpgradeCameo3 = NONE
6638    ;UpgradeCameo4 = NONE
6639    ;UpgradeCameo5 = NONE
6640    
6641    Draw = W3DModelDraw ModuleTag_01
6642      OkToChangeModelColor = Yes
6643  
6644      ; --- idle
6645      DefaultConditionState
6646        Model             = UIHERO_SKN
6647        IdleAnimation     = UIHERO_SKL.UIHERO_STA 0 21
6648        IdleAnimation     = UIHERO_SKL.UIHERO_IDA
6649        IdleAnimation     = UIHERO_SKL.UIHERO_IDB
6650        AnimationMode     = ONCE
6651        WeaponFireFXBone  = PRIMARY Muzzle
6652        WeaponMuzzleFlash = PRIMARY MuzzleFX
6653        TransitionKey     = TRANS_Stand
6654      End
6655  
6656      ConditionState      = REALLYDAMAGED
6657        IdleAnimation     = UIHERO_SKL.UIHERO_ISTA 0 30
6658        IdleAnimation     = UIHERO_SKL.UIHERO_IIDA
6659        IdleAnimation     = UIHERO_SKL.UIHERO_IIDB
6660        AnimationMode     = ONCE
6661        TransitionKey     = TRANS_StandInjured
6662      End
6663  
6664      TransitionState     = TRANS_Stand TRANS_StandInjured
6665        Animation         = UIHERO_SKL.UIHERO_ISTAHIT
6666        AnimationMode     = ONCE
6667      End
6668  
6669      ; --- attack
6670  
6671      ConditionState      = FIRING_A 
6672        Animation         = UIHERO_SKL.UIHERO_ATA 
6673        AnimationMode     = ONCE
6674        TransitionKey     = TRANS_FiringA
6675        AnimationSpeedFactorRange = 1.5 1.5
6676      End
6677  
6678      ConditionState      = BETWEEN_FIRING_SHOTS_A
6679        Animation         = UIHERO_SKL.UIHERO_STA
6680        AnimationMode     = ONCE
6681        WaitForStateToFinishIfPossible = TRANS_FiringA
6682      End
6683      AliasConditionState = RELOADING_A
6684    
6685      ConditionState      = FIRING_A REALLYDAMAGED
6686        Animation         = UIHERO_SKL.UIHERO_IATA2
6687        AnimationMode     = ONCE
6688        TransitionKey     = TRANS_FiringAInjured
6689        AnimationSpeedFactorRange = 1.5 1.5
6690      End
6691  
6692      ConditionState      = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
6693        Animation         = UIHERO_SKL.UIHERO_IATA2
6694        AnimationMode     = MANUAL
6695        Flags             = START_FRAME_LAST
6696        WaitForStateToFinishIfPossible = TRANS_FiringAInjured
6697      End
6698      AliasConditionState = RELOADING_A REALLYDAMAGED
6699  
6700      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
6701        Animation         = UIHERO_SKL.UIHERO_IATAHIT
6702        AnimationMode     = ONCE
6703      End
6704  
6705      ; --- moving
6706      ConditionState      = MOVING
6707        Animation         = UIHERO_SKL.UIHERO_RNA2 30
6708        AnimationMode     = LOOP
6709        Flags             = RANDOMSTART
6710        TransitionKey     = None
6711        ParticleSysBone   = None InfantryDustTrails
6712      End
6713      AliasConditionState = MOVING FIRING_A
6714      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
6715      AliasConditionState = MOVING RELOADING_A
6716  
6717      ConditionState      = MOVING REALLYDAMAGED
6718        Animation         = UIHERO_SKL.UIHERO_IRNA 30
6719        AnimationMode     = LOOP
6720        Flags             = RANDOMSTART
6721        TransitionKey     = None
6722        ParticleSysBone   = None InfantryDustTrails
6723      End
6724      AliasConditionState = MOVING FIRING_A REALLYDAMAGED
6725      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
6726      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
6727      
6728      ; --- cheering
6729      ConditionState      = SPECIAL_CHEERING
6730        Animation         = UIHERO_SKL.UIHERO_CHA
6731        AnimationMode     = LOOP
6732      End
6733  
6734      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
6735        Animation         = UIHERO_SKL.UIHERO_ICHA
6736        AnimationMode     = LOOP
6737      End
6738      
6739      ; --- dying
6740      ConditionState      = DYING
6741        Animation         = UIHERO_SKL.UIHERO_DTA
6742        Animation         = UIHERO_SKL.UIHERO_DTB
6743        Animation         = UIHERO_SKL.UIHERO_IDTA
6744        Animation         = UIHERO_SKL.UIHERO_IDTB
6745        AnimationMode     = ONCE
6746        TransitionKey     = TRANS_Dying
6747      End
6748  
6749      TransitionState     = TRANS_Dying TRANS_Flailing
6750        Animation         = UIHERO_SKL.UIHERO_ADTG21
6751        AnimationMode     = ONCE
6752      End
6753  
6754      ConditionState      = DYING EXPLODED_FLAILING
6755        Animation         = UIHERO_SKL.UIHERO_ADTG22
6756        AnimationMode     = LOOP
6757        TransitionKey     = TRANS_Flailing
6758      End
6759  
6760      ConditionState      = DYING EXPLODED_BOUNCING
6761        Animation         = UIHERO_SKL.UIHERO_ADTG23
6762        AnimationMode     = ONCE
6763        TransitionKey     = None
6764      End
6765      
6766      ; --- falling
6767      ConditionState      = FREEFALL
6768        Animation         = UIHERO_SKL.UIHERO_PFL
6769        AnimationMode     = LOOP
6770        TransitionKey     = TRANS_Falling
6771      End
6772      AliasConditionState = FREEFALL REALLYDAMAGED
6773      AliasConditionState = FREEFALL DYING
6774  
6775      ConditionState      = PARACHUTING
6776        Animation         = UIHERO_SKL.UIHERO_PHG
6777        AnimationMode     = LOOP
6778        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
6779        TransitionKey     = TRANS_Chute
6780      End
6781      AliasConditionState = PARACHUTING REALLYDAMAGED
6782      AliasConditionState = PARACHUTING DYING
6783  
6784      TransitionState     = TRANS_Falling TRANS_Chute
6785        Animation         = UIHERO_SKL.UIHERO_POP
6786        AnimationMode     = ONCE
6787        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
6788      End
6789  
6790      TransitionState     = TRANS_Chute TRANS_Stand
6791        Animation         = UIHERO_SKL.UIHERO_PTD
6792        AnimationMode     = ONCE
6793      End
6794  
6795      TransitionState     = TRANS_Chute TRANS_StandInjured
6796        Animation         = UIHERO_SKL.UIHERO_PTD
6797        AnimationMode     = ONCE
6798      End
6799      
6800      ; --- surrender
6801  ; surrender is cut. sorry. (srj)
6802  ;    ConditionState      = SURRENDER
6803  ;      Animation         = UIHERO_SKL.UIHERO_SST
6804  ;      AnimationMode     = ONCE
6805  ;      TransitionKey     = TRANS_Surrender
6806  ;    End
6807  ;    TransitionState     = TRANS_Stand TRANS_Surrender
6808  ;      Animation         = UIHERO_SKL.UIHERO_SUR
6809  ;      AnimationMode     = ONCE
6810  ;    End
6811  ;    ConditionState      = SURRENDER REALLYDAMAGED
6812  ;      Animation         = UIHERO_SKL.UIHERO_ISST
6813  ;      AnimationMode     = ONCE
6814  ;      TransitionKey     = TRANS_SurrenderInjured
6815  ;    End
6816  ;    TransitionState     = TRANS_StandInjured TRANS_SurrenderInjured
6817  ;      Animation         = UIHERO_SKL.UIHERO_ISUR
6818  ;      AnimationMode     = ONCE
6819  ;    End
6820  
6821    End
6822  
6823    ; ***DESIGN parameters ***
6824    DisplayName           = OBJECT:JarmenKell
6825    Side                  = GLA
6826    EditorSorting         = INFANTRY
6827    TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
6828    MaxSimultaneousOfType = 1
6829   
6830    WeaponSet
6831      Conditions = None 
6832      Weapon = PRIMARY GLAJarmenKellRifle
6833      Weapon = SECONDARY GLAJarmenKellVehiclePilotSniperRifle
6834      AutoChooseSources = PRIMARY FROM_PLAYER FROM_AI FROM_SCRIPT
6835      PreferredAgainst = SECONDARY VEHICLE
6836      ;AutoChooseSources = SECONDARY NONE
6837      ;ShareWeaponReloadTime = Yes
6838    End
6839  ;  WeaponSet
6840  ;    Conditions = SNIPEVEHICLE 
6841  ;    Weapon = PRIMARY GLAJarmenKellVehiclePilotSniperRifle
6842  ;  End
6843  
6844    ArmorSet
6845      Conditions      = None
6846      Armor           = HumanArmor
6847      DamageFX        = InfantryDamageFX
6848    End
6849    VisionRange         = 200
6850    ShroudClearingRange = 300
6851    Prerequisites
6852      Object = GLABarracks
6853      Object = GLAPalace
6854    End
6855    BuildCost = 1500
6856    BuildTime = 20.0          ;in seconds  
6857  
6858    ExperienceValue     = 50 50 100 150    ;Experience point value at each level
6859    ExperienceRequired  = 0 100 200 400  ;Experience points needed to gain each level
6860    IsTrainable         = Yes             ;Can gain experience
6861    CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
6862    CommandSet          = GLAInfantryJarmenKellCommandSet
6863  
6864    ; *** AUDIO Parameters ***
6865    VoiceSelect = JarmenKellVoiceSelect
6866    VoiceMove = JarmenKellVoiceMove
6867    VoiceGuard = JarmenKellVoiceMove
6868    VoiceAttack = JarmenKellVoiceAttack
6869    VoiceFear = JarmenKellVoiceFear
6870    SoundDie = JarmenKellVoiceDie
6871    SoundDieFire = DieByFireGLA
6872    SoundDieToxin = DieByToxinGLA
6873    SoundStealthOn = StealthOn
6874    SoundStealthOff = StealthOff
6875    ;SoundAmbient = JarmenKellSoundAmbient
6876  
6877    UnitSpecificSounds
6878      VoiceCreate          = JarmenKellVoiceCreate
6879      VoiceSnipePilot      = JarmenKellVoiceSnipe
6880      VoiceGarrison = JarmenKellVoiceGarrison
6881      VoiceEnter = JarmenKellVoiceMove
6882      VoiceEnterHostile = JarmenKellVoiceMove
6883      VoiceGetHealed      = JarmenKellVoiceMove
6884    End
6885  
6886  
6887    ; *** ENGINEERING Parameters ***
6888    RadarPriority = UNIT
6889    ; note: per Dustin's comment, Hero units do not surrender
6890    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER STEALTH_GARRISON SCORE HERO
6891  
6892    Body = ActiveBody ModuleTag_02
6893      MaxHealth       = 200.0
6894      InitialHealth   = 200.0
6895    End
6896  
6897    Behavior = AIUpdateInterface ModuleTag_03
6898      AutoAcquireEnemiesWhenIdle = Yes ;Stealthed
6899      ;MoodAttackCheckRate        = 250
6900    End
6901    Locomotor = SET_NORMAL JarmenKellLocomotor
6902  
6903    Behavior = PhysicsBehavior ModuleTag_04
6904      Mass = 5.0
6905    End
6906    Behavior = StealthUpdate ModuleTag_06
6907      StealthDelay                = 2000 ; msec
6908      StealthForbiddenConditions  = ATTACKING
6909      InnateStealth               = Yes
6910      OrderIdleEnemiesToAttackMeUponReveal  = Yes
6911    End
6912  
6913    Behavior = CommandButtonHuntUpdate  ModuleTag_07 ; allows use of command button hunt script with this unit. 
6914    End
6915  
6916    Behavior = WeaponBonusUpgrade ModuleTag_08
6917      TriggeredBy = Upgrade_GLAAPBullets
6918    End
6919   
6920    ;Hero units can't be squished!
6921    ;Behavior = SquishCollide ModuleTag_09
6922    ;  ;nothing
6923    ;End
6924  
6925  
6926  ; --- begin Death modules ---
6927    Behavior = SlowDeathBehavior ModuleTag_Death01
6928      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
6929      SinkDelay           = 3000
6930      SinkRate            = 0.5     ; in Dist/Sec
6931      DestructionDelay    = 8000
6932      FX                  = INITIAL FX_GIDie
6933    End
6934    Behavior = SlowDeathBehavior ModuleTag_Death02
6935      DeathTypes          = NONE +CRUSHED +SPLATTED
6936      SinkDelay           = 3000
6937      SinkRate            = 0.5     ; in Dist/Sec
6938      DestructionDelay    = 8000
6939      FX                  = INITIAL FX_GIDieCrushed
6940    End
6941    Behavior = SlowDeathBehavior ModuleTag_Death03
6942      DeathTypes          = NONE +EXPLODED
6943      SinkDelay           = 3000
6944      SinkRate            = 0.5     ; in Dist/Sec
6945      DestructionDelay    = 8000
6946      FX                  = INITIAL FX_GIDie
6947      FlingForce          = 8
6948      FlingForceVariance  = 3
6949      FlingPitch          = 60
6950      FlingPitchVariance  = 10
6951    End
6952    Behavior = SlowDeathBehavior ModuleTag_Death04
6953      DeathTypes          = NONE +BURNED
6954      DestructionDelay    = 0
6955      FX                  = INITIAL FX_GIDie
6956      OCL                 = INITIAL OCL_FlamingInfantry
6957    End
6958    Behavior = SlowDeathBehavior ModuleTag_Death05
6959      DeathTypes          = NONE +POISONED
6960      DestructionDelay    = 0
6961      FX                  = INITIAL FX_GIDie
6962      OCL                 = INITIAL OCL_ToxicInfantry
6963    End
6964    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
6965      DeathTypes          = NONE +POISONED_BETA
6966      DestructionDelay    = 0
6967      FX                  = INITIAL FX_GIDie
6968      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
6969    End
6970  ; --- end Death modules ---
6971  
6972    Behavior = PoisonedBehavior ModuleTag_14
6973      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
6974      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
6975    End
6976   
6977    Geometry = CYLINDER
6978    GeometryMajorRadius = 10.0
6979    GeometryMinorRadius = 10.0
6980    GeometryHeight = 12.0
6981    GeometryIsSmall = Yes
6982    Shadow = SHADOW_DECAL
6983    ShadowSizeX = 14;
6984    ShadowSizeY = 14;
6985    ShadowTexture = ShadowI;
6986    BuildCompletion = APPEARS_AT_RALLY_POINT
6987  
6988  End
6989  
6990  ;------------------------------------------------------------------------------
6991  ;Tunnel Fanatic ;Now called the RPG Trooper
6992  Object GLAInfantryTunnelDefender
6993  
6994    ; *** ART Parameters ***
6995    SelectPortrait         = SURPG_L
6996    ButtonImage            = SURPG
6997    
6998    UpgradeCameo1 = Upgrade_GLAAPRockets
6999    ;UpgradeCameo2 = NONE
7000    ;UpgradeCameo3 = NONE
7001    ;UpgradeCameo4 = NONE
7002    ;UpgradeCameo5 = NONE
7003  
7004    Draw = W3DModelDraw ModuleTag_01
7005      OkToChangeModelColor = Yes
7006  
7007      DefaultConditionState
7008        Model = UITunF_SKN
7009        IdleAnimation = UITunF_SKL.UITunF_STA 0 20
7010        IdleAnimation = UITunF_SKL.UITunF_IDA 
7011        IdleAnimation = UITunF_SKL.UITunF_IDB 
7012        IdleAnimation = UITunF_SKL.UITunF_IDC 
7013        AnimationMode = ONCE
7014        WeaponMuzzleFlash = PRIMARY MuzzleFX
7015        WeaponFireFXBone = PRIMARY Muzzle
7016        WeaponLaunchBone = PRIMARY Muzzle
7017      End
7018  
7019      ConditionState = MOVING
7020        Animation = UITunF_SKL.UITunF_WKA 16
7021        Animation = UITunF_SKL.UITunF_WKB 30
7022        Animation = UITunF_SKL.UITunF_WKC 30
7023        Animation = UITunF_SKL.UITunF_RNA 15
7024        Animation = UITunF_SKL.UITunF_RNB 25   
7025        AnimationMode = LOOP
7026        ParticleSysBone   = None InfantryDustTrails
7027      End
7028  
7029      ConditionState = DYING
7030        Animation = UITunF_SKL.UITunF_DTA 
7031        Animation = UITunF_SKL.UITunF_DTB 
7032        AnimationMode = ONCE
7033        TransitionKey = TRANS_Dying
7034      End
7035  
7036      TransitionState = TRANS_Dying TRANS_Flailing
7037        Animation = UITunF_SKL.UITunF_ADTA1
7038        Animation = UITunF_SKL.UITunF_ADTE1
7039        Animation = UITunF_SKL.UITunF_ADTF1
7040        AnimationMode = ONCE
7041      End
7042  
7043      ConditionState = DYING EXPLODED_FLAILING
7044        Animation = UITunF_SKL.UITunF_ADTA2
7045        Animation = UITunF_SKL.UITunF_ADTE2
7046        Animation = UITunF_SKL.UITunF_ADTF2
7047        AnimationMode = LOOP
7048        TransitionKey = TRANS_Flailing
7049      End
7050  
7051      ConditionState = DYING EXPLODED_BOUNCING
7052        Animation = UITunF_SKL.UITunF_ADTA3
7053        Animation = UITunF_SKL.UITunF_ADTE3
7054        Animation = UITunF_SKL.UITunF_ADTF3
7055        AnimationMode = ONCE
7056        TransitionKey = None
7057      End
7058  
7059      ConditionState = FIRING_A 
7060        Animation = UITunF_SKL.UITunF_ATA 
7061        AnimationMode = ONCE
7062        TransitionKey = TRANS_START_FIRING
7063      End
7064      ConditionState = BETWEEN_FIRING_SHOTS_A
7065        Animation = UITunF_SKL.UITunF_STA
7066        AnimationMode = ONCE
7067        ; this is basically a trick: this guy has a nontrivial animation for firing,
7068        ; and a long recycle time between shots. we want him to finish his fire animation
7069        ; (unless he's ordered to do something else), so this is just a handy trick that
7070        ; says, "if the previous state had this transition key, allow it to finish before
7071        ; switching to us, if possible".
7072        WaitForStateToFinishIfPossible = TRANS_START_FIRING
7073      End
7074      AliasConditionState = RELOADING_A
7075  
7076      ConditionState = SPECIAL_CHEERING
7077        Animation = UITUNF_SKL.UITUNF_CHA
7078        AnimationMode = LOOP
7079      End
7080  
7081  ; surrender is cut. sorry. (srj)
7082  ;    ConditionState = SURRENDER
7083  ;      Animation = UITUNF_SKL.UITUNF_SST
7084  ;      AnimationMode = ONCE
7085  ;      TransitionKey = TRANS_SurrenderKneeling
7086  ;    End
7087  ;    ;@TODO -- MISSING ANIMATION FILE
7088  ;    ;ConditionState = SURRENDER MOVING
7089  ;    ;  Animation = UITUNF_SKL.UITUNF_SWKB
7090  ;    ;  AnimationMode = ONCE
7091  ;    ;  TransitionKey = TRANS_SurrenderMoving
7092  ;    ;End
7093  ;    TransitionState = TRANS_Stand TRANS_SurrenderKneeling
7094  ;      Animation = UITUNF_SKL.UITUNF_SUR
7095  ;      AnimationMode = ONCE
7096  ;    End
7097  
7098    End
7099  
7100    ; ***DESIGN parameters ***
7101    DisplayName      = OBJECT:TunnelDefender
7102    Side = GLA
7103    EditorSorting = INFANTRY
7104    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
7105    WeaponSet
7106      Conditions = None 
7107      Weapon = PRIMARY TunnelDefenderRocketWeapon
7108    End
7109    ArmorSet
7110      Conditions      = None
7111      Armor           = HumanArmor
7112      DamageFX        = InfantryDamageFX
7113    End
7114    VisionRange = 150
7115    ShroudClearingRange = 400
7116   ; Prerequisites
7117   ;   Object = GLATunnelNetwork
7118   ; End
7119    BuildCost = 300
7120    BuildTime = 5.0          ;in seconds  
7121  
7122    ExperienceValue = 20 20 40 60    ;Experience point value at each level
7123    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
7124    IsTrainable = Yes             ;Can gain experience
7125    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
7126    CommandSet      = GLAInfantryTunnelDefenderCommandSet
7127  
7128    ; *** AUDIO Parameters ***
7129    VoiceSelect = RPGTrooperVoiceSelect
7130    VoiceMove = RPGTrooperVoiceMove
7131    VoiceGuard = RPGTrooperVoiceMove
7132    VoiceAttack = RPGTrooperVoiceAttack
7133    SoundDie = RPGTrooperVoiceDie
7134    SoundDieFire = DieByFireGLA
7135    SoundDieToxin = DieByToxinGLA
7136  ; surrender is cut. sorry. (srj)
7137  ;  VoiceSurrender = RPGTrooperVoiceSurrender
7138    VoiceFear = RPGTrooperVoiceFear
7139    UnitSpecificSounds
7140      VoiceCreate          = RPGTrooperVoiceCreate
7141      VoiceGarrison = RPGTrooperVoiceGarrison
7142      VoiceEnter = RPGTrooperVoiceMove
7143      VoiceEnterHostile = RPGTrooperVoiceMove
7144      VoiceGetHealed      = RPGTrooperVoiceMove
7145    End
7146  
7147  
7148    ; *** ENGINEERING Parameters ***
7149    RadarPriority = UNIT
7150    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
7151  
7152    Body = ActiveBody ModuleTag_02
7153      MaxHealth       = 100.0
7154      InitialHealth   = 100.0
7155    End
7156  
7157    Behavior = AIUpdateInterface ModuleTag_03
7158      AutoAcquireEnemiesWhenIdle = Yes
7159    End
7160    Locomotor = SET_NORMAL MissileDefenderLocomotor
7161  
7162    Behavior = PhysicsBehavior ModuleTag_04
7163      Mass = 5.0
7164    End
7165   
7166    Behavior = SquishCollide ModuleTag_06
7167      ;nothing
7168    End
7169  
7170  ; --- begin Death modules ---
7171    Behavior = SlowDeathBehavior ModuleTag_Death01
7172      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
7173      SinkDelay           = 3000
7174      SinkRate            = 0.5     ; in Dist/Sec
7175      DestructionDelay    = 8000
7176      FX                  = INITIAL FX_GIDie
7177    End
7178    Behavior = SlowDeathBehavior ModuleTag_Death02
7179      DeathTypes          = NONE +CRUSHED +SPLATTED
7180      SinkDelay           = 3000
7181      SinkRate            = 0.5     ; in Dist/Sec
7182      DestructionDelay    = 8000
7183      FX                  = INITIAL FX_GIDieCrushed
7184    End
7185    Behavior = SlowDeathBehavior ModuleTag_Death03
7186      DeathTypes          = NONE +EXPLODED
7187      SinkDelay           = 3000
7188      SinkRate            = 0.5     ; in Dist/Sec
7189      DestructionDelay    = 8000
7190      FX                  = INITIAL FX_GIDie
7191      FlingForce          = 8
7192      FlingForceVariance  = 3
7193      FlingPitch          = 60
7194      FlingPitchVariance  = 10
7195    End
7196    Behavior = SlowDeathBehavior ModuleTag_Death04
7197      DeathTypes          = NONE +BURNED
7198      DestructionDelay    = 0
7199      FX                  = INITIAL FX_GIDie
7200      OCL                 = INITIAL OCL_FlamingInfantry
7201    End
7202    Behavior = SlowDeathBehavior ModuleTag_Death05
7203      DeathTypes          = NONE +POISONED
7204      DestructionDelay    = 0
7205      FX                  = INITIAL FX_GIDie
7206      OCL                 = INITIAL OCL_ToxicInfantry
7207    End
7208    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
7209      DeathTypes          = NONE +POISONED_BETA
7210      DestructionDelay    = 0
7211      FX                  = INITIAL FX_GIDie
7212      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
7213    End
7214  ; --- end Death modules ---
7215  
7216    Behavior = PoisonedBehavior ModuleTag_12
7217      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
7218      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
7219    End
7220   
7221    Geometry = CYLINDER
7222    GeometryMajorRadius = 10.0
7223    GeometryMinorRadius = 10.0
7224    GeometryHeight = 12.0
7225    GeometryIsSmall = Yes
7226    Shadow = SHADOW_DECAL
7227    ShadowSizeX = 14;
7228    ShadowSizeY = 14;
7229    ShadowTexture = ShadowI;
7230    BuildCompletion = APPEARS_AT_RALLY_POINT
7231  
7232  End
7233  
7234  ;------------------------------------------------------------------------------
7235  ;***THESE UNITS ARE NOT SELECTABLE ANYMORE! To kill them, you must target
7236  ;   the stinger site. If the weapon does particular types of damage, it'll
7237  ;   kill guys inside first, then the site.
7238  Object GLAInfantryStingerSoldier
7239  
7240    ; *** ART Parameters ***
7241    SelectPortrait         = SUStinger_L
7242    ButtonImage            = SUStinger
7243  
7244    Draw = W3DModelDraw ModuleTag_01
7245      OkToChangeModelColor = Yes
7246  
7247      DefaultConditionState
7248        Model = UISmsd_SKN
7249        IdleAnimation = UISmsd_SKL.UISmsd_STA 0 45
7250        IdleAnimation = UISmsd_SKL.UISmsd_IDA 
7251        IdleAnimation = UISmsd_SKL.UISmsd_IDB 
7252        IdleAnimation = UISmsd_SKL.UISmsd_IDC 
7253        IdleAnimation = UISmsd_SKL.UISmsd_IDD 
7254        AnimationMode = ONCE
7255        WeaponMuzzleFlash = PRIMARY MuzzleFX
7256        WeaponFireFXBone = PRIMARY Exhaust
7257        WeaponLaunchBone = PRIMARY Muzzle
7258        WeaponFireFXBone = SECONDARY Exhaust
7259        WeaponLaunchBone = SECONDARY Muzzle
7260  
7261        WaitForStateToFinishIfPossible = TRANS_START_FIRING
7262  
7263      End
7264      AliasConditionState = BETWEEN_FIRING_SHOTS_A
7265      AliasConditionState = BETWEEN_FIRING_SHOTS_B
7266      AliasConditionState = RELOADING_A
7267      AliasConditionState = RELOADING_B
7268  
7269      ConditionState = MOVING
7270        Animation = UISmsd_SKL.UISmsd_WKB 25
7271        AnimationMode = LOOP
7272      End
7273  
7274      ConditionState = DYING
7275        Animation = UISmsd_SKL.UISmsd_DTA 
7276        Animation = UISmsd_SKL.UISmsd_DTB 
7277        AnimationMode = ONCE
7278        TransitionKey = TRANS_Dying
7279        WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish
7280      End
7281  
7282      TransitionState = TRANS_Dying TRANS_Flailing
7283        Animation = UISmsd_SKL.UISmsd_ADTF1
7284        Animation = UISmsd_SKL.UISmsd_ADTG21
7285        AnimationMode = ONCE
7286      End
7287  
7288      ConditionState = DYING EXPLODED_FLAILING
7289        Animation = UISmsd_SKL.UISmsd_ADTF2
7290        Animation = UISmsd_SKL.UISmsd_ADTG22
7291        AnimationMode = LOOP
7292        TransitionKey = TRANS_Flailing
7293        WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish
7294      End
7295  
7296      ConditionState = DYING EXPLODED_BOUNCING
7297        Animation = UISmsd_SKL.UISmsd_ADTF3
7298        Animation = UISmsd_SKL.UISmsd_ADTG23
7299        AnimationMode = ONCE
7300        TransitionKey = None
7301        WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish
7302      End
7303  
7304      ConditionState = FIRING_A
7305        Animation = UISmsd_SKL.UISmsd_ATA
7306        AnimationMode = ONCE
7307        TransitionKey = TRANS_START_FIRING
7308      End
7309      ; AliasConditionState is a new keyword that says,
7310      ; "give me another ConditionState exactly like the previous
7311      ; one, except with different conditions". Useful when you
7312      ; have several states that are the same with only different condition bits.
7313      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
7314      AliasConditionState = MOVING FIRING_A
7315      AliasConditionState = MOVING RELOADING_A
7316  
7317      ConditionState = FIRING_B
7318        Animation = UISmsd_SKL.UISmsd_ATB
7319        AnimationMode = ONCE
7320        TransitionKey = TRANS_START_FIRINGB
7321      End
7322      ; AliasConditionState is a new keyword that says,
7323      ; "give me another ConditionState exactly like the previous
7324      ; one, except with different conditions". Useful when you
7325      ; have several states that are the same with only different condition bits.
7326      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
7327      AliasConditionState = MOVING FIRING_B
7328      AliasConditionState = MOVING RELOADING_B
7329  
7330  
7331      ConditionState = SPECIAL_CHEERING
7332        Animation = UISMSD_SKL.UISMSD_CHA
7333        AnimationMode = LOOP
7334      End
7335  
7336    End
7337  
7338    ; ***DESIGN parameters ***
7339    DisplayName      = OBJECT:StingerSoldier
7340    Side = GLA
7341    EditorSorting = INFANTRY
7342    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
7343    WeaponSet
7344      Conditions          = None 
7345      Weapon              = PRIMARY   StingerMissileWeapon
7346      AutoChooseSources   = PRIMARY   FROM_PLAYER FROM_AI FROM_SCRIPT
7347      Weapon              = SECONDARY StingerMissileWeaponAir
7348      PreferredAgainst    = SECONDARY BALLISTIC_MISSILE AIRCRAFT
7349    End
7350    ArmorSet
7351      Conditions      = None
7352      Armor           = StingerSoldierArmor ;Extra protection due to being enclosed by the stinger site.
7353      DamageFX        = None
7354    End
7355    VisionRange = 400.0
7356    ShroudClearingRange = 400
7357  
7358    Prerequisites
7359      Object = GLABarracks
7360    End
7361    BuildCost = 100
7362    BuildTime = 1.0          ;in seconds    
7363    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
7364  
7365    ;I don't know what is right, but this is SO wrong.
7366  ;  CommandSet      = GLAInfantryRebelCommandSet
7367  
7368    ; *** AUDIO Parameters ***
7369    VoiceSelect = StingerSoldierVoiceSelect
7370    VoiceMove = StingerSoldierVoiceMove
7371    VoiceAttack = StingerSoldierVoiceAttack
7372    SoundDie = StingerSoldierVoiceDie
7373    SoundDieFire = DieByFireGLA
7374    SoundDieToxin = DieByToxinGLA
7375  
7376    ; *** ENGINEERING Parameters ***
7377    RadarPriority = UNIT
7378    KindOf = PRELOAD CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER CLICK_THROUGH SPAWNS_ARE_THE_WEAPONS
7379  
7380    Body = ActiveBody ModuleTag_02
7381      MaxHealth       = 100.0
7382      InitialHealth   = 100.0
7383    End
7384  
7385    Behavior = StealthDetectorUpdate ModuleTag_16
7386      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
7387      DetectionRange = 200 ;Dustin, enable this for independant balancing!
7388      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
7389      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
7390    End
7391  
7392    Behavior = AIUpdateInterface ModuleTag_03
7393      AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
7394      MoodAttackCheckRate        = 250
7395    End
7396    Locomotor = SET_NORMAL BasicHumanLocomotor
7397    Behavior = PhysicsBehavior ModuleTag_04
7398      Mass = 5.0
7399    End
7400    Behavior = SlavedUpdate ModuleTag_06
7401      ;nothing
7402    End
7403  ;  Behavior = ProneUpdate ModuleTag_07
7404  ;    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
7405  ;  End
7406  
7407    Behavior = SquishCollide ModuleTag_08
7408      ;nothing
7409    End
7410  
7411  
7412  ; --- begin Death modules ---
7413    Behavior = SlowDeathBehavior ModuleTag_Death01
7414      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
7415      SinkDelay           = 3000
7416      SinkRate            = 0.5     ; in Dist/Sec
7417      DestructionDelay    = 8000
7418      FX                  = INITIAL FX_GIDie
7419    End
7420    Behavior = SlowDeathBehavior ModuleTag_Death02
7421      DeathTypes          = NONE +CRUSHED +SPLATTED
7422      SinkDelay           = 3000
7423      SinkRate            = 0.5     ; in Dist/Sec
7424      DestructionDelay    = 8000
7425      FX                  = INITIAL FX_GIDieCrushed
7426    End
7427    Behavior = SlowDeathBehavior ModuleTag_Death03
7428      DeathTypes          = NONE +EXPLODED
7429      SinkDelay           = 3000
7430      SinkRate            = 0.5     ; in Dist/Sec
7431      DestructionDelay    = 8000
7432      FX                  = INITIAL FX_GIDie
7433      FlingForce          = 8
7434      FlingForceVariance  = 3
7435      FlingPitch          = 60
7436      FlingPitchVariance  = 10
7437    End
7438    Behavior = SlowDeathBehavior ModuleTag_Death04
7439      DeathTypes          = NONE +BURNED
7440      DestructionDelay    = 0
7441      FX                  = INITIAL FX_GIDie
7442      OCL                 = INITIAL OCL_FlamingInfantry
7443    End
7444    Behavior = SlowDeathBehavior ModuleTag_Death05
7445      DeathTypes          = NONE +POISONED
7446      DestructionDelay    = 0
7447      FX                  = INITIAL FX_GIDie
7448      OCL                 = INITIAL OCL_ToxicInfantry
7449    End
7450    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
7451      DeathTypes          = NONE +POISONED_BETA
7452      DestructionDelay    = 0
7453      FX                  = INITIAL FX_GIDie
7454      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
7455    End
7456  ; --- end Death modules ---
7457  
7458    Behavior = PoisonedBehavior ModuleTag_14
7459      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
7460      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
7461    End
7462   
7463    Geometry = CYLINDER
7464    GeometryMajorRadius = 10.0
7465    GeometryMinorRadius = 10.0
7466    GeometryHeight = 12.0
7467    GeometryIsSmall = Yes
7468    Shadow = SHADOW_DECAL
7469    ShadowSizeX = 14
7470    ShadowSizeY = 14
7471    ShadowTexture = ShadowI;
7472    BuildCompletion = APPEARS_AT_RALLY_POINT
7473  
7474  End
7475  
7476  ;------------------------------------------------------------------------------
7477  Object GLAInfantryTerrorist
7478  
7479  ; *** ART Parameters ***
7480    SelectPortrait         = SUTerrorist_L
7481    ButtonImage            = SUTerrorist
7482    
7483    ;UpgradeCameo1 = NONE
7484    ;UpgradeCameo2 = NONE
7485    ;UpgradeCameo3 = NONE
7486    ;UpgradeCameo4 = NONE
7487    ;UpgradeCameo5 = NONE
7488  
7489    Draw = W3DModelDraw ModuleTag_01
7490      OkToChangeModelColor = Yes
7491      DefaultConditionState
7492        Model = UITRST_SKN
7493        IdleAnimation = UITRST_SKL.UITRST_STA 0 25
7494        ;Regular spice animations
7495        IdleAnimation = UITRST_SKL.UITRST_IDA
7496        IdleAnimation = UITRST_SKL.UITRST_IDB
7497        AnimationMode = ONCE
7498        TransitionKey = TRANS_Stand
7499      End
7500  
7501      ConditionState = REALLYDAMAGED
7502        Animation = UITRST_SKL.UITRST_STA
7503        AnimationMode = LOOP
7504        TransitionKey = TRANS_Stand
7505      End
7506  
7507      ConditionState = FREEFALL
7508        Animation = UITRST_SKL.UITRST_PFL
7509        AnimationMode = LOOP
7510        TransitionKey = TRANS_Falling
7511      End
7512      AliasConditionState = FREEFALL REALLYDAMAGED
7513      AliasConditionState = FREEFALL DYING
7514  
7515      ConditionState = PARACHUTING
7516        Animation = UITRST_SKL.UITRST_PHG
7517        AnimationMode = LOOP
7518        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
7519        TransitionKey = TRANS_Chute
7520      End
7521      AliasConditionState = PARACHUTING REALLYDAMAGED
7522      AliasConditionState = PARACHUTING DYING
7523  
7524      ConditionState = MOVING
7525        Animation = UITRST_SKL.UITRST_RNA 15
7526        AnimationMode = LOOP
7527        Flags = RANDOMSTART
7528        TransitionKey = None
7529        ParticleSysBone   = None InfantryDustTrails
7530      End
7531      AliasConditionState = MOVING REALLYDAMAGED
7532  
7533      ConditionState = ATTACKING MOVING
7534        Animation = UITRST_SKL.UITRST_RNB 10
7535        AnimationMode = LOOP
7536        Flags = RANDOMSTART
7537        TransitionKey = None
7538      End
7539      AliasConditionState = ATTACKING MOVING REALLYDAMAGED
7540  
7541      ConditionState = PREATTACK_A
7542        Animation = UITRST_SKL.UITRST_ATA
7543        AnimationMode = ONCE
7544      End
7545      AliasConditionState = PREATTACK_A MOVING
7546   
7547      ConditionState = DYING
7548        Animation = UITRST_SKL.UITRST_DTA
7549        Animation = UITRST_SKL.UITRST_DTC
7550        AnimationMode = ONCE
7551        TransitionKey = TRANS_Dying
7552      End
7553  
7554      TransitionState = TRANS_Dying TRANS_Flailing
7555        Animation = UITRST_SKL.UITRST_ADTE1
7556        AnimationMode = ONCE
7557      End
7558  
7559      ConditionState = DYING EXPLODED_FLAILING
7560        Animation = UITRST_SKL.UITRST_ADTE2
7561        AnimationMode = LOOP
7562        TransitionKey = TRANS_Flailing
7563      End
7564  
7565      ConditionState = DYING EXPLODED_BOUNCING
7566        Animation = UITRST_SKL.UITRST_ADTE3
7567        AnimationMode = ONCE
7568        TransitionKey = None
7569      End
7570  
7571      ConditionState = SPECIAL_CHEERING
7572        Animation = UITRST_SKL.UITRST_CHA
7573        AnimationMode = LOOP
7574      End
7575  
7576  ; surrender is cut. sorry. (srj)
7577  ;    ConditionState = SURRENDER
7578  ;      Animation = UITRST_SKL.UITRST_SST
7579  ;      AnimationMode = ONCE
7580  ;      TransitionKey = TRANS_SurrenderKneeling
7581  ;    End
7582  ;    ;@TODO -- MISSING ANIMATION FILE
7583  ;    ;ConditionState = SURRENDER MOVING
7584  ;    ;  Animation = UITRST_SKL.UITRST_SWKB
7585  ;    ;  AnimationMode = ONCE
7586  ;    ;  TransitionKey = TRANS_SurrenderMoving
7587  ;    ;End
7588  ;    TransitionState = TRANS_Stand TRANS_SurrenderKneeling
7589  ;      Animation = UITRST_SKL.UITRST_SUR
7590  ;      AnimationMode = ONCE
7591  ;    End
7592  
7593  
7594      TransitionState = TRANS_Falling TRANS_Chute
7595        Animation = UITRST_SKL.UITRST_POP
7596        AnimationMode = ONCE
7597        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
7598      End
7599  
7600      TransitionState = TRANS_Chute TRANS_Stand
7601        Animation = UITRST_SKL.UITRST_PTD
7602        AnimationMode = ONCE
7603      End
7604  
7605    End
7606  
7607    ; ***DESIGN parameters ***
7608    DisplayName      = OBJECT:Terrorist
7609    Side = GLA
7610    EditorSorting = INFANTRY
7611    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
7612    WeaponSet
7613      Conditions = None 
7614      ;Kill himself so we can use FireWeaponWhenDead to fire the real weapon -- and use UNRESISTABLE
7615      ;damage to do ini logic for type of death to play -- unresistable for success.
7616      Weapon = PRIMARY TerroristSuicideWeapon 
7617    End
7618    ArmorSet
7619      Conditions      = None
7620      Armor           = HumanArmor
7621      DamageFX        = InfantryDamageFX
7622    End
7623    VisionRange = 150
7624    ShroudClearingRange = 200
7625    Prerequisites
7626      Object = GLABarracks
7627    End
7628    BuildCost = 200
7629    BuildTime = 5.0          ;in seconds    
7630    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
7631    CommandSet    = GLAInfantryTerroristCommandSet
7632  
7633    ; *** AUDIO Parameters ***
7634    VoiceSelect = TerroristVoiceSelect
7635    VoiceMove = TerroristVoiceMove
7636    VoiceAttack = TerroristVoiceAttack
7637    SoundDie = TerroristVoiceDie
7638    SoundDieFire = DieByFireGLA
7639    SoundDieToxin = DieByToxinGLA
7640    VoiceFear = TerroristVoiceFear
7641    VoiceGuard = TerroristVoiceMove
7642    UnitSpecificSounds
7643      VoiceGarrison         = TerroristVoiceMove
7644      VoiceCreate           = TerroristVoiceCreate
7645      VoiceEnter            = TerroristVoiceEnter
7646      VoiceEnterHostile     = TerroristVoiceEnterHostile
7647      VoiceGetHealed      = TerroristVoiceMove
7648    End
7649  
7650    ; *** ENGINEERING Parameters ***
7651    RadarPriority = UNIT
7652    ; Terrorists do not surrender!
7653    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
7654  
7655    Body = ActiveBody ModuleTag_02
7656      MaxHealth       = 120.0
7657      InitialHealth   = 120.0
7658    End
7659  
7660    ExperienceValue     = 20 20 20 20  ; Experience point value at each level
7661  
7662    Behavior = AIUpdateInterface ModuleTag_03
7663      AutoAcquireEnemiesWhenIdle = Yes
7664    End
7665    Locomotor = SET_NORMAL FastHumanLocomotor
7666    Behavior = PhysicsBehavior ModuleTag_04
7667      Mass = 5.0
7668    End
7669  
7670    ;Kris
7671    Behavior = ConvertToCarBombCrateCollide       ModuleTag_06
7672      RequiredKindOf    = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
7673      ;ForbiddenKindOf  = TRANSPORT DOZER  ; but not to TRANSPORTs or DOZERs!
7674      FXList            = FX_MakeCarBombSuccess
7675    End
7676   
7677    Behavior = SquishCollide ModuleTag_07
7678      ;nothing
7679    End
7680  
7681  ; --- begin Death modules ---
7682    Behavior = SlowDeathBehavior ModuleTag_Death01
7683      DeathTypes          = ALL  -SUICIDED -POISONED -POISONED_BETA
7684      SinkDelay           = 3000
7685      SinkRate            = 0.5     ; in Dist/Sec
7686      DestructionDelay    = 8000
7687      FX                  = INITIAL FX_GIDie
7688    End
7689  
7690  
7691    ;POISON_DEATHS POISON_DEATHS POISON_DEATHS POISON_DEATHS
7692    Behavior = SlowDeathBehavior ModuleTag_Death02
7693      DeathTypes          = NONE +POISONED
7694      DestructionDelay    = 0
7695      FX                  = INITIAL FX_GIDie
7696      OCL                 = INITIAL OCL_ToxicInfantry
7697    End
7698    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
7699      DeathTypes          = NONE +POISONED_BETA
7700      DestructionDelay    = 0
7701      FX                  = INITIAL FX_GIDie
7702      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
7703    End
7704    ;POISON_DEATHS POISON_DEATHS POISON_DEATHS POISON_DEATHS
7705  
7706  
7707    ; I have just pulled my ripcord, and this ain't no parachute!
7708    Behavior = SlowDeathBehavior ModuleTag_Death03
7709      DeathTypes          = NONE +SUICIDED
7710      SinkDelay           = 3000
7711      SinkRate            = 0.5     ; in Dist/Sec
7712      DestructionDelay    = 8000
7713      FX                  = INITIAL FX_TerroristExplode
7714      FlingForce          = 8
7715      FlingForceVariance  = 3
7716      FlingPitch          = 60
7717      FlingPitchVariance  = 10
7718    End
7719    Behavior = FireWeaponWhenDeadBehavior ModuleTag_Death04
7720      DeathWeapon   = SuicideDynamitePack
7721      StartsActive  = Yes                      ; turned on by upgrade
7722      DeathTypes = NONE +SUICIDED +CRUSHED +SPLATTED +LASERED +BURNED +EXPLODED
7723    End
7724  ; --- end Death modules ---
7725  
7726    Behavior = PoisonedBehavior ModuleTag_14
7727      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
7728      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
7729    End
7730   
7731    Geometry = CYLINDER
7732    GeometryMajorRadius = 10.0
7733    GeometryMinorRadius = 10.0
7734    GeometryHeight = 12.0
7735    GeometryIsSmall = Yes
7736    Shadow = SHADOW_DECAL
7737    ShadowSizeX = 14;
7738    ShadowSizeY = 14;
7739    ShadowTexture = ShadowI;
7740    BuildCompletion = APPEARS_AT_RALLY_POINT
7741  
7742  End
7743  
7744  
7745  
7746  
7747  
7748  
7749  
7750  
7751  ;------------------------------------------------------------------------------
7752  ;------------------------------------------------------------------------------
7753  Object GLAInfantryAngryMobNexus 
7754  
7755  ;**** ART Parameters **************************
7756    SelectPortrait         = SUAngryMob_L
7757    ButtonImage            = SUAngryMob
7758    
7759    UpgradeCameo1 = Upgrade_GLAArmTheMob
7760    ;UpgradeCameo2 = NONE
7761    ;UpgradeCameo3 = NONE
7762    ;UpgradeCameo4 = NONE
7763    ;UpgradeCameo5 = NONE
7764    
7765    Draw = W3DModelDraw ModuleTag_01
7766      OkToChangeModelColor = Yes
7767      DefaultConditionState
7768        Model = None
7769  ;      Model = AVBomber_B
7770      End
7771    End
7772  
7773  
7774  ;****DESIGN parameters **************************
7775  
7776    DisplayName      = OBJECT:AngryMobNexus
7777    Side = GLA
7778  
7779    RadarPriority       = NOT_ON_RADAR
7780  
7781    EditorSorting   = INFANTRY
7782    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
7783  
7784    WeaponSet
7785      Conditions = None 
7786      Weapon = PRIMARY GLAAngryMobNexusHarmlessWeapon
7787      Weapon = SECONDARY GLAAngryMobNexusHarmlessWeapon
7788      Weapon = TERTIARY GLAAngryMobNexusHarmlessWeapon
7789    End
7790  
7791  
7792    ArmorSet
7793      Conditions      = None
7794      Armor           = InvulnerableAllArmor
7795      DamageFX        = None
7796    End
7797  
7798    BuildCost       = 800
7799    BuildTime       = 15.0          ;in seconds    
7800    VisionRange     = 150  ; it can scout for the spawn
7801    ShroudClearingRange = 0
7802  
7803    Prerequisites
7804      Object = GLABarracks
7805      Object = GLAPalace
7806    End
7807  
7808    ExperienceValue    = 5 5 5 5 ;Experience point value at each level
7809  
7810    IsTrainable     = No
7811  
7812  
7813  
7814    CommandSet    = GLAInfantryAngryMobCommandSet;
7815  
7816  ;**** AUDIO Parameters *****************************
7817    VoiceSelect = AngryMobVoiceSelect
7818    VoiceMove = AngryMobVoiceMove
7819    VoiceGuard = AngryMobVoiceMove
7820    VoiceAttack = AngryMobVoiceAttack
7821    SoundMoveStart = NoSound
7822    SoundAmbient = AngryMobAmbientLoop
7823    SoundAmbientRubble = NoSound
7824    SoundDie = CivilianArabMaleDie
7825    SoundDieFire = DieByFireGLA
7826    SoundDieToxin = DieByToxinGLA
7827    UnitSpecificSounds
7828      VoiceCreate          = AngryMobVoiceCreate
7829    End
7830  
7831  
7832  ;**** ENGINEERING Parameters ******************************
7833  
7834    RadarPriority = UNIT
7835    KindOf = PRELOAD CAN_ATTACK INFANTRY MOB_NEXUS ATTACK_NEEDS_LINE_OF_SIGHT NO_COLLIDE SELECTABLE SCORE
7836    Body = ImmortalBody ModuleTag_02
7837      MaxHealth       = 99999.0
7838      InitialHealth   = 99999.0
7839    End
7840  
7841    Behavior = AIUpdateInterface ModuleTag_03
7842      AutoAcquireEnemiesWhenIdle = Yes
7843    End
7844  
7845    Locomotor = SET_NORMAL AngryMobNexusLocomotor ;Important! don't make the Nexus any faster!
7846    Locomotor = SET_WANDER AngryMobNexusLocomotor ;Important! don't make the Nexus any faster!
7847    Locomotor = SET_PANIC AngryMobNexusLocomotor ;Important! don't make the Nexus any faster!
7848  
7849  ;  Locomotor = SET_NORMAL WanderHumanLocomotor ;Important! don't make the Nexus any faster!
7850  ;  Locomotor = SET_WANDER WanderHumanLocomotor ;Important! don't make the Nexus any faster!
7851  ;  Locomotor = SET_PANIC WanderHumanLocomotor ;Important! don't make the Nexus any faster!
7852  
7853    Behavior = PhysicsBehavior ModuleTag_04
7854      Mass = 50.0
7855    End
7856  
7857    Behavior            = SpawnBehavior ModuleTag_05
7858      SpawnNumber       = 10
7859      SpawnReplaceDelay = 30000 ; 30 seconds
7860  
7861          SpawnTemplateName = GLAInfantryAngryMobPistol01 ; Aladdin
7862          SpawnTemplateName = GLAInfantryAngryMobRock02 ; Woman in the Gypsy Costume
7863          SpawnTemplateName = GLAInfantryAngryMobMolotov02 ; The Lady with the hot sauce
7864          SpawnTemplateName = GLAInfantryAngryMobPistol03 ; Skinny Guy with the Green Beret
7865          SpawnTemplateName = GLAInfantryAngryMobRock04 ; Fat guy with the tank top
7866          SpawnTemplateName = GLAInfantryAngryMobMolotov02 ; The Lady with the hot sauce
7867          SpawnTemplateName = GLAInfantryAngryMobPistol05 ; The robed dude with the Man-Veil
7868  
7869  
7870  
7871      ExitByBudding = Yes;!
7872  
7873      InitialBurst = 5 ; the first set of 5 will not delay
7874      OneShot     = No
7875      AggregateHealth = Yes
7876    End
7877  
7878    Behavior = QueueProductionExitUpdate ModuleTag_06
7879      UnitCreatePoint   = X:  0.0  Y:  0.0   Z:0.0
7880      NaturalRallyPoint = X: 0.0  Y:  0.0   Z:0.0
7881      ExitDelay     = 5000 ; 5 sec
7882      InitialBurst = 5 ; the first set of 5 will not delay
7883    End
7884  
7885    Behavior = DestroyDie ModuleTag_07
7886      DeathTypes = ALL
7887    End
7888  
7889    Geometry = CYLINDER
7890    GeometryMajorRadius = 1.0
7891    GeometryMinorRadius = 1.0
7892    GeometryHeight = 1.0     
7893    GeometryIsSmall = Yes 
7894    Shadow = SHADOW_VOLUME
7895  
7896  End
7897  
7898  
7899  
7900  
7901  
7902  ;------------------------------------------------------------------------------
7903  ;------------------------------------------------------------------------------
7904  Object GLAInfantryAngryMobPistol01
7905  
7906  ;**** ART Parameters ***
7907    Draw = W3DModelDraw DrawTag_01
7908      OkToChangeModelColor = Yes
7909  
7910  
7911  
7912      ; WHILE CARRYING PISTOL
7913      ;---------------------------------------------------------
7914      DefaultConditionState ;Idle with Pistol Holstered
7915        Model = UIMOB01_SKN
7916        IdleAnimation = UIMOB01_SKL.UIMOB01_IDA1 0 12
7917        IdleAnimation = UIMOB01_SKL.UIMOB01_IDA2 0 5
7918        IdleAnimation = UIMOB01_SKL.UIMOB01_CHA  0 5
7919        IdleAnimation = UIMOB01_SKL.UIMOB01_STA  0 5
7920        AnimationMode = ONCE
7921        AnimationSpeedFactorRange 0.9 1.1
7922        TransitionKey = TRANS_STAND_A
7923  
7924        WeaponFireFXBone = PRIMARY Muzzle
7925        WeaponMuzzleFlash = PRIMARY MuzzleFX
7926        WeaponFireFXBone = SECONDARY MuzzleAK
7927        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
7928      End
7929  
7930      ; Drawing pistol
7931      ConditionState  = PREATTACK_A
7932        Animation     = UIMOB01_SKL.UIMOB01_ATA1_ST ; start firing
7933        AnimationMode = ONCE
7934      End
7935      AliasConditionState = PREATTACK_A FIRING_A
7936      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
7937  
7938      ; Firing pistol
7939      ConditionState = FIRING_A
7940        Animation = UIMOB01_SKL.UIMOB01_ATA1_LP ; looping firing
7941        AnimationMode = LOOP
7942        TransitionKey = TRANS_FIRING_A
7943      End
7944      AliasConditionState  = BETWEEN_FIRING_SHOTS_A
7945      
7946      ConditionState  = RELOADING_A
7947        Animation     = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing
7948        AnimationMode = ONCE
7949      End
7950  
7951      ; This transition allows him to put his gun away when he's finished attacking.
7952      TransitionState = TRANS_FIRING_A TRANS_STAND_A
7953        Animation     = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing
7954        AnimationMode = ONCE
7955      End
7956  
7957      ConditionState = MOVING
7958        Animation = UIMOB01_SKL.UIMOB01_RNA 
7959        AnimationMode = LOOP
7960        Flags = RANDOMSTART
7961        TransitionKey   = MOVING
7962        ParticleSysBone   = None InfantryDustTrails
7963      End
7964      AliasConditionState = MOVING RELOADING_A
7965      AliasConditionState = MOVING PREATTACK_A
7966      AliasConditionState = MOVING FIRING_A
7967      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
7968      AliasConditionState = MOVING RELOADING_C RELOADING_A 
7969      AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
7970  
7971      ConditionState = DYING
7972        Animation = UIMOB01_SKL.UIMOB01_DA1    
7973        Animation = UIMOB01_SKL.UIMOB01_DA2
7974        AnimationMode = ONCE
7975        TransitionKey = TRANS_Dying
7976      End
7977  
7978  
7979      ConditionState = SPECIAL_CHEERING
7980        Animation = UIMOB01_SKL.UIMOB01_CHA
7981        AnimationMode = ONCE
7982      End
7983  
7984      ;--------------------------------------------------------
7985      ; TRANSITION FROM PISTOL TO AK47
7986      TransitionState = TRANS_STAND_A TRANS_STAND_AK
7987        Animation = UIMOB01_SKL.UIMOB01_TA-D
7988        AnimationMode = ONCE
7989      End
7990  
7991  
7992      ; WHILE CARRYING AK47 
7993      ;---------------------------------------------------------
7994      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
7995        Model = UIMOB01_SKN
7996        IdleAnimation = UIMOB01_SKL.UIMOB01_IDD1 0 6
7997        IdleAnimation = UIMOB01_SKL.UIMOB01_IDD2 0 6
7998        IdleAnimation = UIMOB01_SKL.UIMOB01_CHD  0 6
7999        IdleAnimation = UIMOB01_SKL.UIMOB01_STD
8000        AnimationMode = ONCE
8001        AnimationSpeedFactorRange 0.9 1.1
8002        TransitionKey = TRANS_STAND_AK
8003      End
8004  
8005      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
8006        Animation = UIMOB01_SKL.UIMOB01_RND 
8007        AnimationMode = LOOP
8008        Flags = RANDOMSTART
8009        TransitionKey   = MOVING_AK
8010      End
8011  
8012      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
8013        Animation = UIMOB01_SKL.UIMOB01_DD1    
8014        Animation = UIMOB01_SKL.UIMOB01_DD2
8015        AnimationMode = ONCE
8016        TransitionKey = TRANS_Dying
8017      End
8018  
8019      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
8020        Animation = UIMOB01_SKL.UIMOB01_CHD
8021        AnimationMode = ONCE
8022      End
8023  
8024      ; Drawing AK47
8025      ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
8026        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ST ; start firing
8027        AnimationMode = ONCE
8028      End
8029      AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
8030      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
8031  
8032      ; Firing Gun
8033      ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
8034        Animation = UIMOB01_SKL.UIMOB01_ATD1_LP ; looping firing
8035        AnimationMode = LOOP
8036        WeaponFireFXBone = SECONDARY MuzzleAK
8037        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
8038        TransitionKey = TRANS_FIRING_AK
8039      End
8040      AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
8041  
8042  
8043      ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
8044        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing
8045        AnimationMode = ONCE
8046      End
8047  
8048  
8049      ; This transition allows him to put his gun away when he's finished attacking.
8050      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
8051        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing
8052        AnimationMode = ONCE
8053      End
8054  
8055  
8056  
8057  
8058  
8059  
8060  ;    ;Throwing bottle----------------------------------------------------------------
8061  ;    ConditionState = PREATTACK_C 
8062  ;      Animation     = UIMOB01_SKL.UIMOB01_ATCA_BF ; the wind up
8063  ;    End
8064  ;    AliasConditionState = PREATTACK_C FIRING_A
8065  ;    AliasConditionState = PREATTACK_C RELOADING_A
8066  ;    AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
8067  ;
8068  ;    ConditionState = FIRING_C 
8069  ;      Animation     = UIMOB01_SKL.UIMOB01_ATCA_AF ; the release and follow-thru
8070  ;      TransitionKey = TRANS_THROW
8071  ;    End
8072  ;    AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
8073  ;
8074  ;    ConditionState RELOADING_C
8075  ;      Animation =UIMOB01_SKL.UIMOB01_IDA1
8076  ;      WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
8077  ;    End
8078  ;    AliasConditionState = RELOADING_C RELOADING_A
8079  ;    AliasConditionState = RELOADING_C FIRING_A
8080  ;    AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
8081  
8082  
8083  ;    TransitionState = TRANSXXX TRANS_THROW
8084  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway gun and take out bottle
8085  ;    End
8086  
8087  ;    TransitionState = TRANS_THROW TRANS_FIRING_A
8088  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get PISTOL
8089  ;    End
8090  
8091  ;    TransitionState = TRANSXXXAK TRANS_THROW
8092  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway AK and take out bottle
8093  ;    End
8094  
8095  ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
8096  ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get AK
8097  ;    End
8098  
8099  
8100  
8101  
8102  
8103      ;--------------------------------------------------------
8104  
8105  
8106  
8107  
8108  
8109  
8110      TransitionState = TRANS_Dying TRANS_Flailing
8111        Animation = UIMOB01_SKL.UIMOB01_A_ADTE1
8112        Animation = UIMOB01_SKL.UIMOB01_D_ADTE1
8113        AnimationMode = ONCE
8114      End
8115  
8116      ConditionState = DYING EXPLODED_FLAILING
8117        Animation = UIMOB01_SKL.UIMOB01_A_ADTE2
8118        Animation = UIMOB01_SKL.UIMOB01_D_ADTE2
8119        AnimationMode = LOOP
8120        TransitionKey = TRANS_Flailing
8121      End
8122  
8123      ConditionState = DYING EXPLODED_BOUNCING
8124        Animation = UIMOB01_SKL.UIMOB01_A_ADTE3
8125        Animation = UIMOB01_SKL.UIMOB01_D_ADTE3
8126        AnimationMode = ONCE
8127        TransitionKey = None
8128      End
8129  
8130  
8131    End
8132  
8133  
8134  ;**** DESIGN parameters ***
8135  
8136    DisplayName      = OBJECT:AngryMob
8137    Side = GLA
8138    EditorSorting = INFANTRY
8139    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
8140  
8141    WeaponSet
8142      Conditions = None 
8143      Weapon = PRIMARY GLAAngryMobPistolWeapon
8144    End
8145  
8146    WeaponSet
8147      Conditions = PLAYER_UPGRADE 
8148      Weapon = PRIMARY GLAAngryMobAK47NoDamageWeapon ; for atttacking in AK-proof conditions
8149      Weapon = SECONDARY GLAAngryMobAK47Weapon
8150    End
8151  
8152    ArmorSet
8153      Conditions      = None
8154      Armor           = HumanArmor
8155      DamageFX        = InfantryDamageFX
8156    End
8157  
8158    VisionRange = 150
8159    ShroudClearingRange = 150
8160    Prerequisites
8161      Object = GLABarracks
8162    End
8163    BuildCost = 100
8164    BuildTime = 0.0           
8165  
8166    ExperienceValue = 5 5 5 5    ;Experience point value at each level
8167    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
8168    IsTrainable = Yes             ;Can gain experience
8169    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
8170  
8171    ; *** AUDIO Parameters ***
8172    VoiceSelect = NoSound 
8173    VoiceMove = NoSound   
8174    VoiceAttack = NoSound 
8175    SoundDie = CivilianArabMaleDie
8176  
8177  
8178  ;**** ENGINEERING Parameters *** ;MOB01
8179    RadarPriority = UNIT
8180    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
8181  
8182    Body = ActiveBody BodyTag_01
8183      MaxHealth       = 50.0
8184      InitialHealth   = 50.0
8185    End
8186  
8187    Behavior = AIUpdateInterface ModuleTag_03
8188      AutoAcquireEnemiesWhenIdle = Yes
8189    End
8190  
8191    Behavior = MobMemberSlavedUpdate ModuleTag_04
8192      MustCatchUpRadius   = 40
8193      NoNeedToCatchUpRadius = 15
8194      Squirrelliness = 0.05
8195      CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
8196    End
8197  
8198    Locomotor = SET_NORMAL AngryMobNormalLocomotor
8199    Locomotor = SET_WANDER AngryMobWanderLocomotor
8200    Locomotor = SET_PANIC AngryMobPanicLocomotor
8201  
8202    Behavior = PhysicsBehavior BehaviorTag_01
8203      Mass = 5.0
8204    End
8205  
8206    Behavior = SquishCollide ModuleTag_08
8207      ;nothing
8208    End
8209  
8210    Behavior = WeaponSetUpgrade UpgradeTag_01
8211      TriggeredBy = Upgrade_GLAArmTheMob
8212    End
8213  
8214  
8215  ; --- begin Death modules ---
8216    Behavior = SlowDeathBehavior DeathTag_01
8217      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
8218      SinkDelay           = 3000
8219      SinkRate            = 0.5     ; in Dist/Sec
8220      DestructionDelay    = 8000
8221      FX                  = INITIAL FX_GIDie
8222    End
8223    Behavior = SlowDeathBehavior DeathTag_02
8224      DeathTypes          = NONE +CRUSHED +SPLATTED
8225      SinkDelay           = 3000
8226      SinkRate            = 0.5     ; in Dist/Sec
8227      DestructionDelay    = 8000
8228      FX                  = INITIAL FX_GIDieCrushed
8229    End
8230    Behavior = SlowDeathBehavior DeathTag_03
8231      DeathTypes          = NONE +EXPLODED
8232      SinkDelay           = 3000
8233      SinkRate            = 0.5     ; in Dist/Sec
8234      DestructionDelay    = 8000
8235      FX                  = INITIAL FX_GIDie
8236      FlingForce          = 8
8237      FlingForceVariance  = 3
8238      FlingPitch          = 60
8239      FlingPitchVariance  = 10
8240    End
8241    Behavior = SlowDeathBehavior DeathTag_04
8242      DeathTypes          = NONE +BURNED
8243      DestructionDelay    = 0
8244      FX                  = INITIAL FX_GIDie
8245      OCL                 = INITIAL OCL_FlamingInfantry
8246    End
8247    Behavior = SlowDeathBehavior DeathTag_05
8248      DeathTypes          = NONE +POISONED
8249      DestructionDelay    = 0
8250      FX                  = INITIAL FX_GIDie
8251      OCL                 = INITIAL OCL_ToxicInfantry
8252    End
8253  ; --- end Death modules ---
8254  
8255    Behavior = PoisonedBehavior BehaviorTag_02
8256      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
8257      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
8258    End
8259   
8260    Geometry = CYLINDER
8261    GeometryMajorRadius = 4.0 ; very thin
8262    GeometryHeight = 12.0
8263    GeometryIsSmall = Yes
8264    Shadow = SHADOW_DECAL
8265    ShadowSizeX = 14;
8266    ShadowSizeY = 14;
8267    ShadowTexture = ShadowI;
8268    BuildCompletion = APPEARS_AT_RALLY_POINT
8269  
8270  End
8271  
8272  
8273  ;------------------------------------------------------------------------------
8274  ;------------------------------------------------------------------------------
8275  Object GLAInfantryAngryMobRock02
8276  
8277  ;**** ART Parameters ***
8278    Draw = W3DModelDraw ModuleTag_01
8279      OkToChangeModelColor = Yes
8280  
8281      ; WHILE CARRYING ROCK
8282      ;---------------------------------------------------------
8283      DefaultConditionState
8284        Model = UIMOB02_SKN
8285        IdleAnimation = UIMOB02_SKL.UIMOB02_IDB1 0 12
8286        IdleAnimation = UIMOB02_SKL.UIMOB02_IDB2 0 5
8287        IdleAnimation = UIMOB02_SKL.UIMOB02_CHB  0 5
8288        IdleAnimation = UIMOB02_SKL.UIMOB02_STB  0 12
8289        AnimationMode = ONCE
8290        AnimationSpeedFactorRange 0.9 1.1
8291        TransitionKey = TRANS_STAND_A
8292  
8293        ;WeaponFireFXBone  = PRIMARY   "UIMOB02 R HAND"
8294        ;WeaponMuzzleFlash = PRIMARY   "UIMOB02 R HAND"
8295        WeaponFireFXBone =  SECONDARY MuzzleAK
8296        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
8297      End
8298  
8299  
8300      ; Drawing rock
8301      ConditionState  = PREATTACK_A
8302        Animation     = UIMOB02_SKL.UIMOB02_ATB2_BF ; wind up
8303        AnimationMode = ONCE
8304      End
8305      AliasConditionState = PREATTACK_A FIRING_A
8306      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
8307  
8308      ; throwing rock
8309      ConditionState = FIRING_A
8310        Animation = UIMOB02_SKL.UIMOB02_ATB1_AF ; throw
8311        Animation = UIMOB02_SKL.UIMOB02_ATB2_AF ; throw
8312        AnimationMode = ONCE
8313        TransitionKey = TRANS_FIRING_A
8314      End
8315      
8316      ConditionState = BETWEEN_FIRING_SHOTS_A
8317        Animation         = UIMOB02_SKL.UIMOB02_STB
8318        AnimationMode     = ONCE
8319        ; this is basically a trick: this guy has a nontrivial animation for firing,
8320        ; and a long recycle time between shots. we want him to finish his fire animation
8321        ; (unless he's ordered to do something else), so this is just a handy trick that
8322        ; says, "if the previous state had this transition key, allow it to finish before
8323        ; switching to us, if possible".
8324        WaitForStateToFinishIfPossible = TRANS_FIRING_A
8325      End
8326      AliasConditionState = RELOADING_A
8327  
8328  
8329      ConditionState = MOVING
8330        Animation = UIMOB02_SKL.UIMOB02_RNB 
8331        AnimationMode = LOOP
8332        Flags = RANDOMSTART
8333        TransitionKey   = MOVING
8334        ParticleSysBone   = None InfantryDustTrails
8335      End
8336  
8337      ConditionState = DYING
8338        Animation = UIMOB02_SKL.UIMOB02_DB1    
8339        Animation = UIMOB02_SKL.UIMOB02_DB2
8340        AnimationMode = ONCE
8341        TransitionKey = TRANS_Dying
8342      End
8343  
8344      ConditionState = SPECIAL_CHEERING
8345        Animation = UIMOB02_SKL.UIMOB02_CHB
8346        Flags = RANDOMSTART
8347        AnimationMode = LOOP
8348      End
8349  
8350  
8351      ;--------------------------------------------------------
8352      ; TRANSITION FROM PISTOL TO AK47
8353      TransitionState = TRANS_STAND_A TRANS_STAND_AK
8354        Animation = UIMOB02_SKL.UIMOB02_TB-D
8355        AnimationMode = ONCE
8356      End
8357  
8358  
8359      ; WHILE CARRYING AK47 
8360      ;---------------------------------------------------------
8361      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
8362        Model = UIMOB02_SKN
8363        IdleAnimation = UIMOB02_SKL.UIMOB02_IDD1 0 6
8364        IdleAnimation = UIMOB02_SKL.UIMOB02_IDD2 0 6
8365        IdleAnimation = UIMOB02_SKL.UIMOB02_CHD  0 6
8366        IdleAnimation = UIMOB02_SKL.UIMOB02_STD
8367        AnimationMode = ONCE
8368        AnimationSpeedFactorRange 0.9 1.1
8369        TransitionKey = TRANS_STAND_AK
8370      End
8371  
8372      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
8373        Animation = UIMOB02_SKL.UIMOB02_RND 
8374        AnimationMode = LOOP
8375        Flags = RANDOMSTART
8376        TransitionKey   = MOVING_AK
8377      End
8378  
8379      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
8380        Animation = UIMOB02_SKL.UIMOB02_DD1    
8381        Animation = UIMOB02_SKL.UIMOB02_DD2
8382        AnimationMode = ONCE
8383        TransitionKey = TRANS_Dying
8384      End
8385  
8386      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
8387        Animation = UIMOB02_SKL.UIMOB02_CHD
8388        AnimationMode = ONCE
8389      End
8390  
8391      ; Drawing AK47
8392      ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
8393        Animation     = UIMOB02_SKL.UIMOB02_ATD1_ST ; start firing
8394        AnimationMode = ONCE
8395      End
8396      AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
8397      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
8398  
8399      ; Firing Gun
8400      ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
8401        Animation = UIMOB02_SKL.UIMOB02_ATD1_LP ; looping firing
8402        AnimationMode = LOOP
8403        WeaponFireFXBone = SECONDARY MuzzleAK
8404        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
8405        TransitionKey = TRANS_FIRING_AK
8406      End
8407      AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
8408  
8409  
8410      ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
8411        Animation     = UIMOB02_SKL.UIMOB02_ATD1_ED ; end firing
8412        AnimationMode = ONCE
8413      End
8414  
8415  
8416      ; This transition allows him to put his gun away when he's finished attacking.
8417      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
8418        Animation     = UIMOB02_SKL.UIMOB02_ATD1_ED ; end firing
8419        AnimationMode = ONCE
8420      End
8421  
8422  
8423  
8424  
8425      TransitionState = TRANS_Dying TRANS_Flailing
8426        Animation = UIMOB02_SKL.UIMOB02_B_ADTA1
8427        Animation = UIMOB02_SKL.UIMOB02_D_ADTA1
8428        AnimationMode = ONCE
8429      End
8430  
8431      ConditionState = DYING EXPLODED_FLAILING
8432        Animation = UIMOB02_SKL.UIMOB02_B_ADTA2
8433        Animation = UIMOB02_SKL.UIMOB02_D_ADTA2
8434        AnimationMode = LOOP
8435        TransitionKey = TRANS_Flailing
8436      End
8437  
8438      ConditionState = DYING EXPLODED_BOUNCING
8439        Animation = UIMOB02_SKL.UIMOB02_B_ADTA3
8440        Animation = UIMOB02_SKL.UIMOB02_D_ADTA3
8441        AnimationMode = ONCE
8442        TransitionKey = None
8443      End
8444  
8445  
8446    End
8447  
8448  
8449  ;**** DESIGN parameters ***
8450  
8451    DisplayName      = OBJECT:AngryMob
8452    Side = GLA
8453    EditorSorting = INFANTRY
8454    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
8455  
8456    WeaponSet
8457      Conditions = None 
8458      Weapon = PRIMARY GLAAngryMobRockProjectileWeapon
8459    End
8460  
8461    WeaponSet
8462      Conditions = PLAYER_UPGRADE 
8463      Weapon = PRIMARY GLAAngryMobAK47NoDamageWeapon ; for atttacking in AK-proof conditions
8464      Weapon = SECONDARY GLAAngryMobAK47Weapon
8465    End
8466  
8467    ArmorSet
8468      Conditions      = None
8469      Armor           = HumanArmor
8470      DamageFX        = InfantryDamageFX
8471    End
8472  
8473    VisionRange = 150
8474    ShroudClearingRange = 150
8475    Prerequisites
8476      Object = GLABarracks
8477    End
8478    BuildCost = 100
8479    BuildTime = 0.0            
8480  
8481    ExperienceValue = 5 5 5 5    ;Experience point value at each level
8482    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
8483    IsTrainable = Yes             ;Can gain experience
8484    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
8485  
8486    ; *** AUDIO Parameters ***
8487    VoiceSelect = NoSound 
8488    VoiceMove = NoSound   
8489    VoiceAttack = NoSound 
8490    SoundDie = CivilianArabFemaleDie
8491  
8492  
8493  ;**** ENGINEERING Parameters *** ;MOB02
8494    RadarPriority = UNIT
8495    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
8496  
8497    Body = ActiveBody BodyTag_01
8498      MaxHealth       = 50.0
8499      InitialHealth   = 50.0
8500    End
8501  
8502    Behavior = AIUpdateInterface ModuleTag_03
8503      AutoAcquireEnemiesWhenIdle = Yes
8504    End
8505  
8506    Behavior = MobMemberSlavedUpdate ModuleTag_04
8507      MustCatchUpRadius   = 40
8508      NoNeedToCatchUpRadius = 15
8509      Squirrelliness = 0.05
8510      CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
8511    End
8512  
8513    Locomotor = SET_NORMAL AngryMobNormalLocomotor
8514    Locomotor = SET_WANDER AngryMobWanderLocomotor
8515    Locomotor = SET_PANIC AngryMobPanicLocomotor
8516  
8517    Behavior = PhysicsBehavior ModuleTag_05
8518      Mass = 5.0
8519    End
8520  
8521    Behavior = SquishCollide ModuleTag_08
8522      ;nothing
8523    End
8524  
8525    Behavior = WeaponSetUpgrade UpgradeTag_01
8526      TriggeredBy = Upgrade_GLAArmTheMob
8527    End
8528  
8529  
8530  ; --- begin Death modules ---
8531    Behavior = SlowDeathBehavior ModuleTag_Death01
8532      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
8533      SinkDelay           = 3000
8534      SinkRate            = 0.5     ; in Dist/Sec
8535      DestructionDelay    = 8000
8536      FX                  = INITIAL FX_GIDie
8537    End
8538    Behavior = SlowDeathBehavior ModuleTag_Death02
8539      DeathTypes          = NONE +CRUSHED +SPLATTED
8540      SinkDelay           = 3000
8541      SinkRate            = 0.5     ; in Dist/Sec
8542      DestructionDelay    = 8000
8543      FX                  = INITIAL FX_GIDieCrushed
8544    End
8545    Behavior = SlowDeathBehavior ModuleTag_Death03
8546      DeathTypes          = NONE +EXPLODED
8547      SinkDelay           = 3000
8548      SinkRate            = 0.5     ; in Dist/Sec
8549      DestructionDelay    = 8000
8550      FX                  = INITIAL FX_GIDie
8551      FlingForce          = 8
8552      FlingForceVariance  = 3
8553      FlingPitch          = 60
8554      FlingPitchVariance  = 10
8555    End
8556    Behavior = SlowDeathBehavior ModuleTag_Death04
8557      DeathTypes          = NONE +BURNED
8558      DestructionDelay    = 0
8559      FX                  = INITIAL FX_GIDie
8560      OCL                 = INITIAL OCL_FlamingInfantry
8561    End
8562    Behavior = SlowDeathBehavior ModuleTag_Death05
8563      DeathTypes          = NONE +POISONED
8564      DestructionDelay    = 0
8565      FX                  = INITIAL FX_GIDie
8566      OCL                 = INITIAL OCL_ToxicInfantry
8567    End
8568  ; --- end Death modules ---
8569  
8570    Behavior = PoisonedBehavior ModuleTag_13
8571      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
8572      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
8573    End
8574   
8575    Geometry = CYLINDER
8576    GeometryMajorRadius = 4.0 ; very thin
8577    GeometryHeight = 12.0
8578    GeometryIsSmall = Yes
8579    Shadow = SHADOW_DECAL
8580    ShadowSizeX = 14;
8581    ShadowSizeY = 14;
8582    ShadowTexture = ShadowI;
8583    BuildCompletion = APPEARS_AT_RALLY_POINT
8584  
8585  End
8586  
8587  ;------------------------------------------------------------------------------
8588  ;------------------------------------------------------------------------------
8589  
8590  ObjectReskin GLAInfantryAngryMobPistol03 GLAInfantryAngryMobPistol01
8591  
8592  ;**** ART Parameters ***
8593    Draw = W3DModelDraw DrawTag_01
8594      OkToChangeModelColor = Yes
8595  
8596  
8597  
8598      ; WHILE CARRYING PISTOL
8599      ;---------------------------------------------------------
8600      DefaultConditionState ;Idle with Pistol Holstered
8601        Model = UIMOB03_SKN
8602        IdleAnimation = UIMOB03_SKL.UIMOB03_IDA1 0 12
8603        IdleAnimation = UIMOB03_SKL.UIMOB03_IDA2 0 5
8604        IdleAnimation = UIMOB03_SKL.UIMOB03_CHA  0 5
8605        IdleAnimation = UIMOB03_SKL.UIMOB03_STA  0 5
8606        AnimationMode = ONCE
8607        AnimationSpeedFactorRange 0.9 1.1
8608        TransitionKey = TRANS_STAND_A
8609  
8610        WeaponFireFXBone = PRIMARY Muzzle
8611        WeaponMuzzleFlash = PRIMARY MuzzleFX
8612        WeaponFireFXBone = SECONDARY MuzzleAK
8613        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
8614        WeaponFireFXBone = TERTIARY "UIMOB03 R HAND"
8615      End
8616  
8617      ; Drawing pistol
8618      ConditionState  = PREATTACK_A
8619        Animation     = UIMOB03_SKL.UIMOB03_ATA1_ST ; start firing
8620        AnimationMode = ONCE
8621      End
8622      AliasConditionState = PREATTACK_A FIRING_A
8623      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
8624  
8625      ; Firing pistol
8626      ConditionState = FIRING_A
8627        Animation = UIMOB03_SKL.UIMOB03_ATA1_LP ; looping firing
8628        AnimationMode = LOOP
8629        TransitionKey = TRANS_FIRING_A
8630      End
8631      AliasConditionState  = BETWEEN_FIRING_SHOTS_A
8632  
8633      ConditionState  = RELOADING_A
8634        Animation     = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing
8635        AnimationMode = ONCE
8636      End
8637  
8638      ; This transition allows him to put his gun away when he's finished attacking.
8639      TransitionState = TRANS_FIRING_A TRANS_STAND_A
8640        Animation     = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing
8641        AnimationMode = ONCE
8642      End
8643  
8644      ConditionState = MOVING
8645        Animation = UIMOB03_SKL.UIMOB03_RNA 
8646        AnimationMode = LOOP
8647        Flags = RANDOMSTART
8648        TransitionKey   = MOVING
8649        ParticleSysBone   = None InfantryDustTrails
8650      End
8651      AliasConditionState = MOVING RELOADING_A
8652      AliasConditionState = MOVING PREATTACK_A
8653      AliasConditionState = MOVING FIRING_A
8654      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
8655      AliasConditionState = MOVING RELOADING_C RELOADING_A 
8656      AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
8657  
8658      ConditionState = DYING
8659        Animation = UIMOB03_SKL.UIMOB03_DA1    
8660        Animation = UIMOB03_SKL.UIMOB03_DA2
8661        AnimationMode = ONCE
8662        TransitionKey = TRANS_Dying
8663      End
8664  
8665  
8666      ConditionState = SPECIAL_CHEERING
8667        Animation = UIMOB03_SKL.UIMOB03_CHA
8668        AnimationMode = ONCE
8669      End
8670  
8671      ;--------------------------------------------------------
8672      ; TRANSITION FROM PISTOL TO AK47
8673      TransitionState = TRANS_STAND_A TRANS_STAND_AK
8674        Animation = UIMOB03_SKL.UIMOB03_TA-D
8675        AnimationMode = ONCE
8676      End
8677  
8678  
8679      ; WHILE CARRYING AK47 
8680      ;---------------------------------------------------------
8681      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
8682        Model = UIMOB03_SKN
8683        IdleAnimation = UIMOB03_SKL.UIMOB03_IDD1 0 6
8684        IdleAnimation = UIMOB03_SKL.UIMOB03_IDD2 0 6
8685        IdleAnimation = UIMOB03_SKL.UIMOB03_CHD  0 6
8686        IdleAnimation = UIMOB03_SKL.UIMOB03_STD
8687        AnimationMode = ONCE
8688        AnimationSpeedFactorRange 0.9 1.1
8689        TransitionKey = TRANS_STAND_AK
8690      End
8691  
8692      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
8693        Animation = UIMOB03_SKL.UIMOB03_RND 
8694        AnimationMode = LOOP
8695        Flags = RANDOMSTART
8696        TransitionKey   = MOVING_AK
8697      End
8698  
8699      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
8700        Animation = UIMOB03_SKL.UIMOB03_DD1    
8701        Animation = UIMOB03_SKL.UIMOB03_DD2
8702        AnimationMode = ONCE
8703        TransitionKey = TRANS_Dying
8704      End
8705  
8706      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
8707        Animation = UIMOB03_SKL.UIMOB03_CHD
8708        AnimationMode = ONCE
8709      End
8710  
8711      ; Drawing AK47
8712      ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
8713        Animation     = UIMOB03_SKL.UIMOB03_ATD_ST ; start firing
8714        AnimationMode = ONCE
8715      End
8716      AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
8717      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
8718  
8719      ; Firing Gun
8720      ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
8721        Animation = UIMOB03_SKL.UIMOB03_ATD_LP ; looping firing
8722        AnimationMode = LOOP
8723        WeaponFireFXBone = SECONDARY MuzzleAK
8724        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
8725        TransitionKey = TRANS_FIRING_AK
8726      End
8727      AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
8728  
8729  
8730      ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
8731        Animation     = UIMOB03_SKL.UIMOB03_ATD_ED ; end firing
8732        AnimationMode = ONCE
8733      End
8734  
8735  
8736      ; This transition allows him to put his gun away when he's finished attacking.
8737      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
8738        Animation     = UIMOB03_SKL.UIMOB03_ATD_ED ; end firing
8739        AnimationMode = ONCE
8740      End
8741  
8742  
8743  ;    ;Throwing bottle----------------------------------------------------------------
8744  ;    ConditionState = PREATTACK_C 
8745  ;      Animation     = UIMOB03_SKL.UIMOB03_ATCA_BF ; the wind up
8746  ;    End
8747  ;    AliasConditionState = PREATTACK_C FIRING_A
8748  ;    AliasConditionState = PREATTACK_C RELOADING_A
8749  ;    AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
8750  ;
8751  ;    ConditionState = FIRING_C 
8752  ;      Animation     = UIMOB03_SKL.UIMOB03_ATCA_AF ; the release and follow-thru
8753  ;      TransitionKey = TRANS_THROW
8754  ;    End
8755  ;    AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
8756  ;
8757  ;    ConditionState RELOADING_C
8758  ;      Animation =UIMOB03_SKL.UIMOB03_IDA1
8759  ;      WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
8760  ;
8761  ;    End
8762  ;    AliasConditionState = RELOADING_C RELOADING_A
8763  ;    AliasConditionState = RELOADING_C FIRING_A
8764  ;    AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
8765  
8766  
8767  ;    TransitionState = TRANSXXX TRANS_THROW
8768  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway gun and take out bottle
8769  ;    End
8770  
8771  ;    TransitionState = TRANS_THROW TRANS_FIRING_A
8772  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get PISTOL
8773  ;    End
8774  
8775  ;    TransitionState = TRANSXXXAK TRANS_THROW
8776  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway AK and take out bottle
8777  ;    End
8778  
8779  ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
8780  ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get AK
8781  ;    End
8782  
8783  
8784  
8785  
8786  
8787      ;--------------------------------------------------------
8788  
8789  
8790  
8791  
8792  
8793  
8794      TransitionState = TRANS_Dying TRANS_Flailing
8795        Animation = UIMOB03_SKL.UIMOB03_A_ADTD1
8796        Animation = UIMOB03_SKL.UIMOB03_D_ADTD1
8797        AnimationMode = ONCE
8798      End
8799  
8800      ConditionState = DYING EXPLODED_FLAILING
8801        Animation = UIMOB03_SKL.UIMOB03_A_ADTD2
8802        Animation = UIMOB03_SKL.UIMOB03_D_ADTD2
8803        AnimationMode = LOOP
8804        TransitionKey = TRANS_Flailing
8805      End
8806  
8807      ConditionState = DYING EXPLODED_BOUNCING
8808        Animation = UIMOB03_SKL.UIMOB03_A_ADTD3
8809        Animation = UIMOB03_SKL.UIMOB03_D_ADTD3
8810        AnimationMode = ONCE
8811        TransitionKey = None
8812      End
8813  
8814  
8815    End
8816  
8817  
8818    Geometry = CYLINDER
8819    GeometryMajorRadius = 3.0 ; very thin
8820    GeometryMinorRadius = 3.0 ; very thinD
8821    GeometryHeight = 12.0
8822    GeometryIsSmall = Yes
8823  
8824  End
8825  
8826  ;------------------------------------------------------------------------------
8827  ;------------------------------------------------------------------------------
8828  ObjectReskin GLAInfantryAngryMobRock04 GLAInfantryAngryMobRock02
8829  
8830  ;**** ART Parameters ***
8831    Draw = W3DModelDraw ModuleTag_01
8832      OkToChangeModelColor = Yes
8833  
8834      ; WHILE CARRYING ROCK
8835      ;---------------------------------------------------------
8836      DefaultConditionState
8837        Model = UIMOB04_SKN
8838        IdleAnimation = UIMOB04_SKL.UIMOB04_IDB1 0 12
8839        IdleAnimation = UIMOB04_SKL.UIMOB04_IDB2 0 5 
8840        IdleAnimation = UIMOB04_SKL.UIMOB04_CHB  0 5 
8841        IdleAnimation = UIMOB04_SKL.UIMOB04_STB  0 12
8842        AnimationMode = ONCE
8843        AnimationSpeedFactorRange 0.9 1.1
8844        TransitionKey = TRANS_STAND_A
8845        WaitForStateToFinishIfPossible TRANS_FIRING_A
8846  
8847        ;WeaponFireFXBone  = PRIMARY   "UIMOB04 R HAND"
8848        ;WeaponMuzzleFlash = PRIMARY   "UIMOB04 R HAND"
8849        WeaponFireFXBone =  SECONDARY MuzzleAK
8850        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
8851      End
8852  
8853  
8854      ; Drawing rock
8855      ConditionState  = PREATTACK_A
8856        Animation     = UIMOB04_SKL.UIMOB04_ATB2_BF ; wind up
8857        AnimationMode = ONCE
8858        AnimationSpeedFactorRange 1.0 1.0
8859      End
8860      AliasConditionState = PREATTACK_A FIRING_A
8861      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
8862  
8863      ; throwing rock
8864      ConditionState = FIRING_A
8865        Animation = UIMOB04_SKL.UIMOB04_ATB1_AF ; throw
8866        Animation = UIMOB04_SKL.UIMOB04_ATB2_AF ; throw
8867        AnimationMode = ONCE
8868        TransitionKey = TRANS_FIRING_A
8869      End
8870  
8871      ConditionState = BETWEEN_FIRING_SHOTS_A
8872        Animation         = UIMOB04_SKL.UIMOB04_STB
8873        AnimationMode     = ONCE
8874        ; this is basically a trick: this guy has a nontrivial animation for firing,
8875        ; and a long recycle time between shots. we want him to finish his fire animation
8876        ; (unless he's ordered to do something else), so this is just a handy trick that
8877        ; says, "if the previous state had this transition key, allow it to finish before
8878        ; switching to us, if possible".
8879        WaitForStateToFinishIfPossible = TRANS_FIRING_A
8880      End
8881      AliasConditionState = RELOADING_A
8882  
8883      ConditionState = MOVING
8884        Animation = UIMOB04_SKL.UIMOB04_RUN 
8885        AnimationMode = LOOP
8886        Flags = RANDOMSTART
8887        TransitionKey   = MOVING
8888        ParticleSysBone   = None InfantryDustTrails
8889      End
8890  
8891      ConditionState = DYING
8892        Animation = UIMOB04_SKL.UIMOB04_DB1    
8893        Animation = UIMOB04_SKL.UIMOB04_DB2
8894        AnimationMode = ONCE
8895        TransitionKey = TRANS_Dying
8896      End
8897  
8898      ConditionState = SPECIAL_CHEERING
8899        Animation = UIMOB04_SKL.UIMOB04_CHB
8900        Flags = RANDOMSTART
8901        AnimationMode = LOOP
8902      End
8903  
8904  
8905  
8906  
8907  
8908  
8909  
8910  
8911      ;--------------------------------------------------------
8912      ; TRANSITION FROM PISTOL TO AK47
8913      TransitionState = TRANS_STAND_A TRANS_STAND_AK
8914        Animation = UIMOB04_SKL.UIMOB04_TB-D
8915        AnimationMode = ONCE
8916      End
8917  
8918  
8919      ; WHILE CARRYING AK47 
8920      ;---------------------------------------------------------
8921      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
8922        Model = UIMOB04_SKN
8923        IdleAnimation = UIMOB04_SKL.UIMOB04_IDD1 0 6
8924        IdleAnimation = UIMOB04_SKL.UIMOB04_IDD2 0 6
8925        IdleAnimation = UIMOB04_SKL.UIMOB04_CHD  0 6
8926        IdleAnimation = UIMOB04_SKL.UIMOB04_STD
8927        AnimationMode = ONCE
8928        AnimationSpeedFactorRange 0.9 1.1
8929        TransitionKey = TRANS_STAND_AK
8930        WeaponFireFXBone = SECONDARY MuzzleAK
8931        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
8932      End
8933  
8934      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
8935        Animation = UIMOB04_SKL.UIMOB04_RND 
8936        AnimationMode = LOOP
8937        Flags = RANDOMSTART
8938        TransitionKey   = MOVING_AK
8939      End
8940  
8941      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
8942        Animation = UIMOB04_SKL.UIMOB04_DD1    
8943        Animation = UIMOB04_SKL.UIMOB04_DD2
8944        AnimationMode = ONCE
8945        TransitionKey = TRANS_Dying
8946      End
8947  
8948      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
8949        Animation = UIMOB04_SKL.UIMOB04_CHD
8950        AnimationMode = ONCE
8951      End
8952  
8953      ; Drawing AK47
8954      ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
8955        Animation     = UIMOB04_SKL.UIMOB04_ATD1_ST ; start firing
8956        AnimationMode = ONCE
8957      End
8958      AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
8959      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
8960  
8961      ; Firing Gun
8962      ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
8963        Animation = UIMOB04_SKL.UIMOB04_ATD1_LP ; looping firing
8964        AnimationMode = LOOP
8965        WeaponFireFXBone = PRIMARY MuzzleAK
8966        WeaponMuzzleFlash = PRIMARY MuzzleAKFX
8967        TransitionKey = TRANS_FIRING_AK
8968      End
8969      AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
8970  
8971  
8972      ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
8973        Animation     = UIMOB04_SKL.UIMOB04_ATD1_ED ; end firing
8974        AnimationMode = ONCE
8975      End
8976  
8977  
8978      ; This transition allows him to put his gun away when he's finished attacking.
8979      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
8980        Animation     = UIMOB04_SKL.UIMOB04_ATD1_ED ; end firing
8981        AnimationMode = ONCE
8982      End
8983  
8984  
8985  
8986  
8987  
8988  
8989  
8990  
8991  
8992  
8993      TransitionState = TRANS_Dying TRANS_Flailing
8994        Animation = UIMOB04_SKL.UIMOB04_B_ADTF1
8995        Animation = UIMOB04_SKL.UIMOB04_D_ADTF1
8996        AnimationMode = ONCE
8997      End
8998  
8999      ConditionState = DYING EXPLODED_FLAILING
9000        Animation = UIMOB04_SKL.UIMOB04_B_ADTF2
9001        Animation = UIMOB04_SKL.UIMOB04_D_ADTF2
9002        AnimationMode = LOOP
9003        TransitionKey = TRANS_Flailing
9004      End
9005  
9006      ConditionState = DYING EXPLODED_BOUNCING
9007        Animation = UIMOB04_SKL.UIMOB04_B_ADTF3
9008        Animation = UIMOB04_SKL.UIMOB04_D_ADTF3
9009        AnimationMode = ONCE
9010        TransitionKey = None
9011      End
9012  
9013  
9014    End
9015  
9016    Geometry = CYLINDER
9017    GeometryMajorRadius = 5.0 ; kinda thin
9018    GeometryMinorRadius = 5.0 ; kinda thinD
9019    GeometryHeight = 12.0
9020    GeometryIsSmall = Yes
9021  
9022  End
9023  
9024  ;------------------------------------------------------------------------------
9025  ;------------------------------------------------------------------------------
9026  ObjectReskin GLAInfantryAngryMobPistol05 GLAInfantryAngryMobPistol01
9027  
9028  ;**** ART Parameters ***
9029    Draw = W3DModelDraw DrawTag_01
9030      OkToChangeModelColor = Yes
9031  
9032  
9033  
9034      ; WHILE CARRYING PISTOL
9035      ;---------------------------------------------------------
9036      DefaultConditionState ;Idle with Pistol Holstered
9037        Model = UIMOB05_SKN
9038        IdleAnimation = UIMOB05_SKL.UIMOB05_IDA1 0 12
9039        IdleAnimation = UIMOB05_SKL.UIMOB05_IDA2 0 5
9040        IdleAnimation = UIMOB05_SKL.UIMOB05_CHA  0 5
9041        IdleAnimation = UIMOB05_SKL.UIMOB05_STA  0 5
9042        AnimationMode = ONCE
9043        AnimationSpeedFactorRange 0.9 1.1
9044        TransitionKey = TRANS_STAND_A
9045  
9046        WeaponFireFXBone = PRIMARY Muzzle01
9047        WeaponMuzzleFlash = PRIMARY Muzzle01
9048      End
9049  
9050      ; Drawing pistol
9051      ConditionState  = PREATTACK_A
9052        Animation     = UIMOB05_SKL.UIMOB05_ATA1_ST ; start firing
9053        AnimationMode = ONCE
9054      End
9055      AliasConditionState = PREATTACK_A FIRING_A
9056      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
9057  
9058      ; Firing pistol
9059      ConditionState = FIRING_A
9060        Animation = UIMOB05_SKL.UIMOB05_ATA1_LP ; looping firing
9061        AnimationMode = LOOP
9062        TransitionKey = TRANS_FIRING_A
9063      End
9064      AliasConditionState  = BETWEEN_FIRING_SHOTS_A
9065      
9066      ConditionState  = RELOADING_A
9067        Animation     = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing
9068        AnimationMode = ONCE
9069      End
9070  
9071      ; This transition allows him to put his gun away when he's finished attacking.
9072      TransitionState = TRANS_FIRING_A TRANS_STAND_A
9073        Animation     = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing
9074        AnimationMode = ONCE
9075      End
9076  
9077      ConditionState = MOVING
9078        Animation = UIMOB05_SKL.UIMOB05_RNA 
9079        AnimationMode = LOOP
9080        Flags = RANDOMSTART
9081        TransitionKey   = MOVING
9082        ParticleSysBone   = None InfantryDustTrails
9083      End
9084      AliasConditionState = MOVING RELOADING_A
9085      AliasConditionState = MOVING PREATTACK_A
9086      AliasConditionState = MOVING FIRING_A
9087      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
9088      AliasConditionState = MOVING RELOADING_C RELOADING_A 
9089      AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
9090  
9091      ConditionState = DYING
9092        Animation = UIMOB05_SKL.UIMOB05_DA1    
9093        Animation = UIMOB05_SKL.UIMOB05_DA2
9094        AnimationMode = ONCE
9095        TransitionKey = TRANS_Dying
9096      End
9097  
9098  
9099      ConditionState = SPECIAL_CHEERING
9100        Animation = UIMOB05_SKL.UIMOB05_CHA
9101        AnimationMode = ONCE
9102      End
9103  
9104      ;--------------------------------------------------------
9105  
9106      ; TRANSITION FROM PISTOL TO AK47
9107      TransitionState = TRANS_STAND_A TRANS_STAND_AK
9108        Animation = UIMOB05_SKL.UIMOB05_TA-D
9109        AnimationMode = ONCE
9110      End
9111  
9112  
9113      ; WHILE CARRYING AK47 
9114      ;---------------------------------------------------------
9115      ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
9116        Model = UIMOB05_SKN
9117        IdleAnimation = UIMOB05_SKL.UIMOB05_IDD1 0 6
9118        IdleAnimation = UIMOB05_SKL.UIMOB05_IDD2 0 6
9119        IdleAnimation = UIMOB05_SKL.UIMOB05_CHD  0 6
9120        IdleAnimation = UIMOB05_SKL.UIMOB05_STD
9121        AnimationMode = ONCE
9122        AnimationSpeedFactorRange 0.9 1.1
9123        TransitionKey = TRANS_STAND_AK
9124        WeaponFireFXBone = SECONDARY MuzzleAK
9125        WeaponMuzzleFlash = SECONDARY MuzzleAKFX
9126      End
9127  
9128      ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
9129        Animation = UIMOB05_SKL.UIMOB05_RND 
9130        AnimationMode = LOOP
9131        Flags = RANDOMSTART
9132        TransitionKey   = MOVING_AK
9133      End
9134  
9135      ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
9136        Animation = UIMOB05_SKL.UIMOB05_DD1    
9137        Animation = UIMOB05_SKL.UIMOB05_DD2
9138        AnimationMode = ONCE
9139        TransitionKey = TRANS_Dying
9140      End
9141  
9142      ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
9143        Animation = UIMOB05_SKL.UIMOB05_CHD
9144        AnimationMode = ONCE
9145      End
9146  
9147      ; Drawing AK47
9148      ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
9149        Animation     = UIMOB05_SKL.UIMOB05_ATD1_ST ; start firing
9150        AnimationMode = ONCE
9151      End
9152      AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
9153      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
9154  
9155      ; Firing Gun
9156      ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
9157        Animation = UIMOB05_SKL.UIMOB05_ATD1_LP ; looping firing
9158        AnimationMode = LOOP
9159        WeaponFireFXBone = PRIMARY MuzzleAK
9160        WeaponMuzzleFlash = PRIMARY MuzzleAKFX
9161        TransitionKey = TRANS_FIRING_AK
9162      End
9163      AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
9164  
9165  
9166      ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
9167        Animation     = UIMOB05_SKL.UIMOB05_ATD1_ED ; end firing
9168        AnimationMode = ONCE
9169      End
9170  
9171  
9172      ; This transition allows him to put his gun away when he's finished attacking.
9173      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
9174        Animation     = UIMOB05_SKL.UIMOB05_ATD1_ED ; end firing
9175        AnimationMode = ONCE
9176      End
9177  
9178  
9179  ;    ;Throwing bottle----------------------------------------------------------------
9180  ;    ConditionState = PREATTACK_C 
9181  ;      Animation     = UIMOB05_SKL.UIMOB05_ATCA_BF ; the wind up
9182  ;    End
9183  ;    AliasConditionState = PREATTACK_C FIRING_A
9184  ;    AliasConditionState = PREATTACK_C RELOADING_A
9185  ;    AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
9186  ;
9187  ;    ConditionState = FIRING_C 
9188  ;      Animation     = UIMOB05_SKL.UIMOB05_ATCA_AF ; the release and follow-thru
9189  ;      TransitionKey = TRANS_THROW
9190  ;    End
9191  ;    AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
9192  ;
9193  ;    ConditionState RELOADING_C
9194  ;      Animation =UIMOB05_SKL.UIMOB05_IDA1
9195  ;      WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
9196  ;    End
9197  ;    AliasConditionState = RELOADING_C RELOADING_A
9198  ;    AliasConditionState = RELOADING_C FIRING_A
9199  ;    AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
9200  
9201  
9202  ;    TransitionState = TRANSXXX TRANS_THROW
9203  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway gun and take out bottle
9204  ;    End
9205  
9206  ;    TransitionState = TRANS_THROW TRANS_FIRING_A
9207  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get PISTOL
9208  ;    End
9209  
9210  ;    TransitionState = TRANSXXXAK TRANS_THROW
9211  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway AK and take out bottle
9212  ;    End
9213  
9214  
9215  ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
9216  ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get AK
9217  ;    End
9218  
9219  
9220  
9221  
9222  
9223      ;--------------------------------------------------------
9224  
9225  
9226  
9227  
9228  
9229  
9230      TransitionState = TRANS_Dying TRANS_Flailing
9231        Animation = UIMOB05_SKL.UIMOB05_A_ADTA1
9232        Animation = UIMOB05_SKL.UIMOB05_D_ADTA1
9233        AnimationMode = ONCE
9234      End
9235  
9236      ConditionState = DYING EXPLODED_FLAILING
9237        Animation = UIMOB05_SKL.UIMOB05_A_ADTA2
9238        Animation = UIMOB05_SKL.UIMOB05_D_ADTA2
9239        AnimationMode = LOOP
9240        TransitionKey = TRANS_Flailing
9241      End
9242  
9243      ConditionState = DYING EXPLODED_BOUNCING
9244        Animation = UIMOB05_SKL.UIMOB05_A_ADTA3
9245        Animation = UIMOB05_SKL.UIMOB05_D_ADTA3
9246        AnimationMode = ONCE
9247        TransitionKey = None
9248      End
9249  
9250  
9251    End
9252  
9253  
9254  
9255    Geometry = CYLINDER
9256    GeometryMajorRadius = 3.0 ; very thin
9257    GeometryMinorRadius = 3.0 ; very thinD
9258    GeometryHeight = 12.0
9259    GeometryIsSmall = Yes
9260  
9261  End
9262  
9263  
9264  ;------------------------------------------------------------------------------
9265  ;------------------------------------------------------------------------------
9266  Object GLAInfantryAngryMobMolotov02
9267  
9268  ;**** ART Parameters ***
9269    Draw = W3DModelDraw ModuleTag_01
9270      OkToChangeModelColor = Yes
9271  
9272      ; WHILE CARRYING ROCK
9273      ;---------------------------------------------------------
9274      DefaultConditionState
9275        Model = UIMOB02_SKN
9276        IdleAnimation = UIMOB02_SKL.UIMOB02_IDB1 0 12
9277        IdleAnimation = UIMOB02_SKL.UIMOB02_IDB2 0 5
9278        IdleAnimation = UIMOB02_SKL.UIMOB02_CHB  0 5
9279        IdleAnimation = UIMOB02_SKL.UIMOB02_STB  0 12
9280        AnimationMode = ONCE
9281        AnimationSpeedFactorRange 0.9 1.1
9282        TransitionKey = TRANS_STAND_B
9283  
9284        WeaponFireFXBone  = SECONDARY   "UIMOB02 R HAND"
9285  
9286      End
9287  
9288  
9289      ; Drawing rock
9290      ConditionState  = PREATTACK_B
9291        Animation     = UIMOB02_SKL.UIMOB02_ATCB_BF ; wind up
9292        AnimationMode = ONCE
9293      End
9294      AliasConditionState = PREATTACK_B FIRING_B
9295      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
9296  
9297      ; throwing rock
9298      ConditionState = FIRING_B
9299        Animation = UIMOB02_SKL.UIMOB02_ATCB_AF ; throw
9300        AnimationMode = ONCE
9301        TransitionKey = TRANS_FIRING_B
9302      End
9303  
9304      ConditionState = BETWEEN_FIRING_SHOTS_B
9305        Animation         = UIMOB02_SKL.UIMOB02_STB
9306        AnimationMode     = ONCE
9307        ; this is basically a trick: this guy has a nontrivial animation for firing,
9308        ; and a long recycle time between shots. we want him to finish his fire animation
9309        ; (unless he's ordered to do something else), so this is just a handy trick that
9310        ; says, "if the previous state had this transition key, allow it to finish before
9311        ; switching to us, if possible".
9312        WaitForStateToFinishIfPossible = TRANS_FIRING_B
9313      End
9314      AliasConditionState = RELOADING_B
9315  
9316  
9317      ConditionState = MOVING
9318        Animation = UIMOB02_SKL.UIMOB02_RNB 
9319        AnimationMode = LOOP
9320        Flags = RANDOMSTART
9321        TransitionKey   = MOVING
9322        ParticleSysBone   = None InfantryDustTrails
9323      End
9324  
9325      ConditionState = DYING
9326        Animation = UIMOB02_SKL.UIMOB02_DB1    
9327        Animation = UIMOB02_SKL.UIMOB02_DB2
9328        AnimationMode = ONCE
9329        TransitionKey = TRANS_Dying
9330      End
9331  
9332      ConditionState = SPECIAL_CHEERING
9333        Animation = UIMOB02_SKL.UIMOB02_CHB
9334        Flags = RANDOMSTART
9335        AnimationMode = LOOP
9336      End
9337  
9338  
9339  
9340  
9341  
9342  
9343      TransitionState = TRANS_Dying TRANS_Flailing
9344        Animation = UIMOB02_SKL.UIMOB02_B_ADTA1
9345        Animation = UIMOB02_SKL.UIMOB02_D_ADTA1
9346        AnimationMode = ONCE
9347      End
9348  
9349      ConditionState = DYING EXPLODED_FLAILING
9350        Animation = UIMOB02_SKL.UIMOB02_B_ADTA2
9351        Animation = UIMOB02_SKL.UIMOB02_D_ADTA2
9352        AnimationMode = LOOP
9353        TransitionKey = TRANS_Flailing
9354      End
9355  
9356      ConditionState = DYING EXPLODED_BOUNCING
9357        Animation = UIMOB02_SKL.UIMOB02_B_ADTA3
9358        Animation = UIMOB02_SKL.UIMOB02_D_ADTA3
9359        AnimationMode = ONCE
9360        TransitionKey = None
9361      End
9362  
9363  
9364    End
9365  
9366  
9367  ;**** DESIGN parameters ***
9368  
9369    DisplayName      = OBJECT:AngryMob
9370    Side = GLA
9371    EditorSorting = INFANTRY
9372    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
9373  
9374    WeaponSet
9375      Conditions = None 
9376      Weapon = PRIMARY GLAAngryMobMolotovCocktailProjectileWeapon ; all she does is throw molotovs
9377    End
9378  
9379    ArmorSet
9380      Conditions      = None
9381      Armor           = HumanArmor
9382      DamageFX        = InfantryDamageFX
9383    End
9384  
9385    VisionRange = 150
9386    ShroudClearingRange = 150
9387    Prerequisites
9388      Object = GLABarracks
9389  
9390    End
9391    BuildCost = 100
9392    BuildTime = 0.0            
9393  
9394    ExperienceValue = 5 5 5 5    ;Experience point value at each level
9395    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
9396    IsTrainable = Yes             ;Can gain experience
9397    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
9398  
9399    ; *** AUDIO Parameters ***
9400    VoiceSelect = NoSound 
9401    VoiceMove = NoSound   
9402    VoiceAttack = NoSound 
9403    SoundDie = CivilianArabFemaleDie
9404  
9405  
9406  ;**** ENGINEERING Parameters *** ;MOB02
9407    RadarPriority = UNIT
9408    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
9409  
9410    Body = ActiveBody BodyTag_01
9411      MaxHealth       = 50.0
9412      InitialHealth   = 50.0
9413    End
9414  
9415    Behavior = AIUpdateInterface ModuleTag_03
9416      AutoAcquireEnemiesWhenIdle = Yes
9417    End
9418  
9419    Behavior = MobMemberSlavedUpdate ModuleTag_04
9420      MustCatchUpRadius   = 40
9421      NoNeedToCatchUpRadius = 15
9422      Squirrelliness = 0.05
9423      CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
9424    End
9425  
9426    Locomotor = SET_NORMAL AngryMobNormalLocomotor
9427    Locomotor = SET_WANDER AngryMobWanderLocomotor
9428    Locomotor = SET_PANIC AngryMobPanicLocomotor
9429  
9430    Behavior = PhysicsBehavior ModuleTag_05
9431      Mass = 5.0
9432    End
9433  
9434    Behavior = SquishCollide ModuleTag_08
9435      ;nothing
9436    End
9437  
9438    Behavior = WeaponSetUpgrade UpgradeTag_01
9439      TriggeredBy = Upgrade_GLAArmTheMob
9440    End
9441  
9442  
9443  ; --- begin Death modules ---
9444    Behavior = SlowDeathBehavior ModuleTag_Death01
9445      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
9446      SinkDelay           = 3000
9447      SinkRate            = 0.5     ; in Dist/Sec
9448      DestructionDelay    = 8000
9449      FX                  = INITIAL FX_GIDie
9450    End
9451    Behavior = SlowDeathBehavior ModuleTag_Death02
9452      DeathTypes          = NONE +CRUSHED +SPLATTED
9453      SinkDelay           = 3000
9454      SinkRate            = 0.5     ; in Dist/Sec
9455      DestructionDelay    = 8000
9456      FX                  = INITIAL FX_GIDieCrushed
9457    End
9458    Behavior = SlowDeathBehavior ModuleTag_Death03
9459      DeathTypes          = NONE +EXPLODED
9460      SinkDelay           = 3000
9461      SinkRate            = 0.5     ; in Dist/Sec
9462      DestructionDelay    = 8000
9463      FX                  = INITIAL FX_GIDie
9464      FlingForce          = 8
9465      FlingForceVariance  = 3
9466      FlingPitch          = 60
9467      FlingPitchVariance  = 10
9468    End
9469    Behavior = SlowDeathBehavior ModuleTag_Death04
9470      DeathTypes          = NONE +BURNED
9471      DestructionDelay    = 0
9472      FX                  = INITIAL FX_GIDie
9473      OCL                 = INITIAL OCL_FlamingInfantry
9474    End
9475    Behavior = SlowDeathBehavior ModuleTag_Death05
9476      DeathTypes          = NONE +POISONED
9477      DestructionDelay    = 0
9478      FX                  = INITIAL FX_GIDie
9479      OCL                 = INITIAL OCL_ToxicInfantry
9480    End
9481  ; --- end Death modules ---
9482  
9483    Behavior = PoisonedBehavior ModuleTag_13
9484      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
9485      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
9486    End
9487   
9488    Geometry = CYLINDER
9489    GeometryMajorRadius = 4.0 ; very thin
9490    GeometryHeight = 12.0
9491    GeometryIsSmall = Yes
9492    Shadow = SHADOW_DECAL
9493    ShadowSizeX = 14;
9494    ShadowSizeY = 14;
9495    ShadowTexture = ShadowI;
9496    BuildCompletion = APPEARS_AT_RALLY_POINT
9497  
9498  End
9499  ;------------------------------------------------------------------------------
9500  ;------------------------------------------------------------------------------
9501  
9502  
9503  
9504  ;------------------------------------------------------------------------------
9505  ;------------------------------------------------------------------------------
9506  ;------------------------------------------------------------------------------
9507  Object GLAInfantryHijacker
9508  
9509    ; *** ART Parameters ***
9510    SelectPortrait         = SUHijacker_L
9511    ButtonImage            = SUHijacker
9512    
9513    ;UpgradeCameo1 = NONE
9514    ;UpgradeCameo2 = NONE
9515    ;UpgradeCameo3 = NONE
9516    ;UpgradeCameo4 = NONE
9517    ;UpgradeCameo5 = NONE
9518  
9519    Draw = W3DModelDraw ModuleTag_01
9520      OkToChangeModelColor = Yes
9521  
9522      DefaultConditionState
9523        Model = UIHJCK_SKN
9524        IdleAnimation = UIHJCK_SKL.UIHJCK_STA 0 25
9525        IdleAnimation = UIHJCK_SKL.UIHJCK_IDA
9526        IdleAnimation = UIHJCK_SKL.UIHJCK_IDB
9527        AnimationMode = ONCE
9528        TransitionKey = TRANS_Stand
9529      End
9530      AliasConditionState = REALLYDAMAGED
9531  
9532      ConditionState = MOVING
9533        Animation = UIHJCK_SKL.UIHJCK_RUN 
9534        AnimationMode = LOOP
9535        Flags = RANDOMSTART
9536        TransitionKey = None
9537        ParticleSysBone   = None InfantryDustTrails
9538      End
9539      AliasConditionState = REALLYDAMAGED MOVING
9540  
9541  
9542      ConditionState = DYING
9543        Animation = UIHJCK_SKL.UIHJCK_DTA
9544        Animation = UIHJCK_SKL.UIHJCK_DTB
9545        AnimationMode = ONCE
9546        TransitionKey = TRANS_Dying
9547      End
9548  
9549      TransitionState = TRANS_Dying TRANS_Flailing
9550        Animation = UIHJCK_SKL.UIHJCK_ADTE1
9551        AnimationMode = ONCE
9552      End
9553  
9554      ConditionState = DYING EXPLODED_FLAILING
9555        Animation = UIHJCK_SKL.UIHJCK_ADTE2
9556        AnimationMode = LOOP
9557        TransitionKey = TRANS_Flailing
9558      End
9559  
9560      ConditionState = DYING EXPLODED_BOUNCING
9561        Animation = UIHJCK_SKL.UIHJCK_ADTE3
9562        AnimationMode = ONCE
9563        TransitionKey = None
9564      End
9565  
9566      ConditionState = SPECIAL_CHEERING
9567        Animation = UIHJCK_SKL.UIHJCK_CHA
9568        AnimationMode = LOOP
9569      End
9570  
9571  
9572      ConditionState = PARACHUTING
9573        Animation = UIHJCK_SKL.UIHJCK_PHG
9574        AnimationMode = LOOP
9575        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
9576        TransitionKey = TRANS_Chute
9577      End
9578      AliasConditionState = PARACHUTING REALLYDAMAGED
9579      AliasConditionState = PARACHUTING DYING
9580      TransitionState = TRANS_Falling TRANS_Chute
9581        Animation = UIHJCK_SKL.UIHJCK_POP
9582        AnimationMode = ONCE
9583        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
9584      End
9585      TransitionState = TRANS_Chute TRANS_Stand
9586        Animation = UIHJCK_SKL.UIHJCK_PTD
9587        AnimationMode = ONCE
9588      End
9589  
9590  
9591      ;SURRENDER ANIMATIONS
9592  ; surrender is cut. sorry. (srj)
9593  ;    ConditionState = SURRENDER
9594  ;      Animation = UIHJCK_SKL.UIHJCK_SST
9595  ;      AnimationMode = ONCE
9596  ;      TransitionKey = TRANS_SurrenderKneeling
9597  ;    End
9598  ;    TransitionState = TRANS_Stand TRANS_SurrenderKneeling
9599  ;      Animation = UIHJCK_SKL.UIHJCK_SUR
9600  ;      AnimationMode = ONCE
9601  ;    End
9602  
9603    End
9604  
9605    ; ***DESIGN parameters ***
9606    DisplayName      = OBJECT:Hijacker
9607    Side = GLA
9608    EditorSorting = INFANTRY
9609    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
9610    
9611    ArmorSet
9612      Conditions      = None
9613      Armor           = HumanArmor
9614      DamageFX        = InfantryDamageFX
9615    End
9616  
9617    VisionRange = 100
9618    ShroudClearingRange = 200
9619    Prerequisites
9620      Object = GLABarracks
9621      ;Object = GLAPalace
9622      Science = SCIENCE_Hijacker
9623    End
9624  
9625    BuildCost = 400
9626    BuildTime = 10.0          ;in seconds    
9627  
9628    ExperienceValue = 50 100 150 400    ;Experience point value at each level
9629    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
9630    IsTrainable = No                    ;Can gain experience
9631    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
9632    CommandSet    = GLAInfantryHijackerCommandSet
9633  
9634    ; *** AUDIO Parameters ***
9635    VoiceSelect     = HijackerVoiceSelect
9636    VoiceMove     = HijackerVoiceMove
9637    VoiceGuard     = HijackerVoiceMove
9638    VoiceAttack     = HijackerVoiceAttack
9639    SoundDie         = HijackerVoiceDie
9640    SoundDieFire     = DieByFireGLA
9641    SoundDieToxin     = DieByToxinGLA
9642    ;VoiceSurrender = HijackerVoiceSurrender
9643    VoiceFear     = HijackerVoiceFear
9644    UnitSpecificSounds
9645      VoiceGarrison     = HijackerVoiceGarrison
9646      VoiceCreate         = HijackerVoiceCreate
9647      VoiceEnter          = HijackerVoiceEnter
9648      VoiceEnterHostile   = HijackerVoiceEnterHostile
9649      VoiceGetHealed      = HijackerVoiceMove
9650    End
9651    
9652  
9653    ; *** ENGINEERING Parameters ***
9654    RadarPriority = UNIT
9655    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE STEALTH_GARRISON BOAT ;<- for linking to the hijacker stealth detection
9656    ;STEALTH_GARRISON Added per Dustin, 12/14--ML
9657  
9658  
9659    Behavior = StealthUpdate ModuleTag_02
9660      StealthDelay                = 1200 ;500      ; 4/10 of a second delay before stealthy
9661      ;StealthForbiddenConditions  = MOVING         ; only stealthy while stationary
9662      MoveThresholdSpeed          = 3
9663      InnateStealth               = Yes
9664      OrderIdleEnemiesToAttackMeUponReveal  = Yes
9665    End
9666  
9667    Body = ActiveBody ModuleTag_03
9668      MaxHealth       = 100.0
9669      InitialHealth   = 100.0
9670    End
9671  
9672    Behavior = HijackerUpdate ModuleTag_04
9673      ParachuteName = AmericaParachute
9674    End
9675  
9676    Behavior = AIUpdateInterface ModuleTag_05
9677      AutoAcquireEnemiesWhenIdle = Yes Stealthed
9678      MoodAttackCheckRate        = 250
9679    End
9680    Locomotor = SET_NORMAL JarmenKellLocomotor
9681  
9682    Behavior = PhysicsBehavior ModuleTag_06
9683      Mass = 5.0
9684    End
9685  
9686    Behavior = ConvertToHijackedVehicleCrateCollide       ModuleTag_08
9687      RequiredKindOf = VEHICLE      ; This is my car now, infidel!
9688    End
9689  
9690    Behavior = SquishCollide ModuleTag_09
9691      ;nothing
9692    End
9693  
9694  
9695  ; --- begin Death modules ---
9696    Behavior = SlowDeathBehavior ModuleTag_Death01
9697      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
9698      SinkDelay           = 3000
9699      SinkRate            = 0.5     ; in Dist/Sec
9700      DestructionDelay    = 8000
9701      FX                  = INITIAL FX_GIDie
9702    End
9703    Behavior = SlowDeathBehavior ModuleTag_Death02
9704      DeathTypes          = NONE +CRUSHED +SPLATTED
9705      SinkDelay           = 3000
9706      SinkRate            = 0.5     ; in Dist/Sec
9707      DestructionDelay    = 8000
9708      FX                  = INITIAL FX_GIDieCrushed
9709    End
9710    Behavior = SlowDeathBehavior ModuleTag_Death03
9711      DeathTypes          = NONE +EXPLODED
9712      SinkDelay           = 3000
9713      SinkRate            = 0.5     ; in Dist/Sec
9714      DestructionDelay    = 8000
9715      FX                  = INITIAL FX_GIDie
9716      FlingForce          = 8
9717      FlingForceVariance  = 3
9718      FlingPitch          = 60
9719      FlingPitchVariance  = 10
9720    End
9721    Behavior = SlowDeathBehavior ModuleTag_Death04
9722      DeathTypes          = NONE +BURNED
9723      DestructionDelay    = 0
9724      FX                  = INITIAL FX_GIDie
9725      OCL                 = INITIAL OCL_FlamingInfantry
9726    End
9727    Behavior = SlowDeathBehavior ModuleTag_Death05
9728      DeathTypes          = NONE +POISONED
9729      DestructionDelay    = 0
9730      FX                  = INITIAL FX_GIDie
9731      OCL                 = INITIAL OCL_ToxicInfantry
9732    End
9733    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
9734      DeathTypes          = NONE +POISONED_BETA
9735      DestructionDelay    = 0
9736      FX                  = INITIAL FX_GIDie
9737      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
9738    End
9739  ; --- end Death modules ---
9740  
9741    Behavior = PoisonedBehavior ModuleTag_14
9742      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
9743      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
9744    End
9745   
9746    Geometry = CYLINDER
9747    GeometryMajorRadius = 10.0
9748    GeometryMinorRadius = 10.0
9749    GeometryHeight = 12.0
9750    GeometryIsSmall = Yes
9751    Shadow = SHADOW_DECAL
9752    ShadowSizeX = 14;
9753    ShadowSizeY = 14;
9754    ShadowTexture = ShadowI;
9755    BuildCompletion = APPEARS_AT_RALLY_POINT
9756  
9757  End
9758  
9759  ;------------------------------------------------------------------------------
9760  Object ChinaInfantryRedguard
9761  
9762    ; *** ART Parameters ***
9763    SelectPortrait         = SNRedGuard_L  
9764    ButtonImage            = SNRedGuard_L
9765    
9766    UpgradeCameo1 = Upgrade_Nationalism
9767    UpgradeCameo2 = Upgrade_InfantryCaptureBuilding
9768    UpgradeCameo3 = Upgrade_ChinaBayonet
9769    ;UpgradeCameo4 = NONE
9770    ;UpgradeCameo5 = NONE
9771  
9772    Draw = W3DModelDraw ModuleTag_01
9773  
9774      OkToChangeModelColor = Yes
9775  
9776      ; this says "we don't use these condition states at all, so completely
9777      ; ignore them for purposes of matchmaking"... this is useful to help
9778      ; reduce the number of AliasConditionState clauses you must add in
9779      ; order to avoid ambiguity in some cases.
9780      ;IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
9781  
9782      ; ------- Standing-Around Animations
9783   
9784      DefaultConditionState
9785        Model               = NICNSC_SKN
9786        IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
9787        IdleAnimation       = NICNSC_SKL.NICNSC_IDA
9788        IdleAnimation       = NICNSC_SKL.NICNSC_IDB
9789        AnimationMode       = ONCE
9790        WeaponFireFXBone    = PRIMARY Muzzle
9791        WeaponMuzzleFlash   = PRIMARY MuzzleFX
9792        TransitionKey       = TRANS_Stand
9793      End
9794  
9795      ConditionState        = REALLYDAMAGED
9796        IdleAnimation       = NICNSC_SKL.NICNSC_STB
9797        AnimationMode       = ONCE
9798        TransitionKey       = TRANS_StandDamaged
9799      End
9800  
9801      ; ------- Machine Gun Animations
9802  
9803      ;ConditionState      = USING_WEAPON_A 
9804      ;  Animation         = NICNSC_SKL.NICNSC_ATA
9805      ;  AnimationMode     = LOOP
9806      ;  TransitionKey     = TRANS_Firing
9807      ;End
9808  
9809      ;ConditionState      = USING_WEAPON_A REALLYDAMAGED
9810      ;  Animation         = NICNSC_SKL.NICNSC_ATC
9811      ;  AnimationMode     = LOOP
9812      ;  TransitionKey     = TRANS_FiringDamaged
9813      ;End
9814  
9815      ConditionState = FIRING_A 
9816        Animation         = NICNSC_SKL.NICNSC_ATA
9817        AnimationMode     = LOOP
9818        TransitionKey     = TRANS_Firing
9819      End
9820      AliasConditionState = BETWEEN_FIRING_SHOTS_A
9821      AliasConditionState = RELOADING_A
9822  
9823      ConditionState = FIRING_A REALLYDAMAGED
9824        Animation         = NICNSC_SKL.NICNSC_ATC
9825        AnimationMode     = LOOP
9826        TransitionKey     = TRANS_FiringDamaged
9827      End
9828      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
9829      AliasConditionState = RELOADING_A REALLYDAMAGED
9830  
9831      ; ------- Firing-related Transitions
9832  
9833      TransitionState   = TRANS_Firing TRANS_FiringDamaged
9834        Animation       = NICNSC_SKL.NICNSC_AA2AC
9835        AnimationMode   = ONCE
9836      End
9837  
9838      TransitionState   = TRANS_Stand TRANS_Firing
9839        Animation       = NICNSC_SKL.NICNSC_SA2AA
9840        AnimationMode   = ONCE
9841      End
9842  
9843      TransitionState   = TRANS_Firing TRANS_Stand
9844        Animation       = NICNSC_SKL.NICNSC_AA2SA
9845        AnimationMode   = ONCE
9846      End
9847  
9848      TransitionState   = TRANS_StandDamaged TRANS_FiringDamaged
9849        Animation       = NICNSC_SKL.NICNSC_ATCST
9850        AnimationMode   = ONCE
9851      End
9852  
9853      TransitionState   = TRANS_FiringDamaged TRANS_StandDamaged
9854        Animation       = NICNSC_SKL.NICNSC_ATCED
9855        AnimationMode   = ONCE
9856      End
9857  
9858  
9859      ; ------------- Damage Transitions --------------------
9860      TransitionState = TRANS_StandDamaged TRANS_RunDamaged
9861        Animation       = NICNSC_SKL.NICNSC_AA2AC
9862        AnimationMode   = ONCE
9863        AnimationSpeedFactorRange = 2 2
9864      End
9865      TransitionState = TRANS_RunDamaged TRANS_StandDamaged 
9866        Animation       = NICNSC_SKL.NICNSC_AA2AC
9867        AnimationMode   = ONCE_BACKWARDS
9868        AnimationSpeedFactorRange = 2 2
9869        Flags           = START_FRAME_LAST
9870      End
9871      TransitionState = TRANS_Stand TRANS_StandDamaged 
9872        Animation       = NICNSC_SKL.NICNSC_AA2SA
9873        AnimationMode   = ONCE_BACKWARDS
9874        AnimationSpeedFactorRange = 4 5
9875        Flags           = START_FRAME_LAST
9876      End
9877  
9878      ; ------- Bayonet Animations
9879  
9880      ConditionState    = PREATTACK_B 
9881        Animation       = NICNSC_SKL.NICNSC_ATB1
9882        AnimationMode   = ONCE
9883        TransitionKey   = TRANS_Stab
9884      End
9885      AliasConditionState = PREATTACK_B MOVING
9886      AliasConditionState = PREATTACK_B FIRING_B
9887      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
9888  
9889      ConditionState      = FIRING_B
9890        Animation         = NICNSC_SKL.NICNSC_ATB2
9891        AnimationMode     = ONCE
9892        WaitForStateToFinishIfPossible = TRANS_Stab
9893      End
9894      AliasConditionState = BETWEEN_FIRING_SHOTS_B
9895      AliasConditionState = RELOADING_B
9896  
9897      TransitionState   = TRANS_Stab TRANS_Stand
9898        Animation       = NICNSC_SKL.NICNSC_ATB2
9899        AnimationMode   = ONCE
9900      End
9901  
9902      ConditionState    = REALLYDAMAGED PREATTACK_B 
9903        Animation       = NICNSC_SKL.NICNSC_IATB1
9904        AnimationMode   = ONCE
9905        TransitionKey   = TRANS_StabDamaged
9906      End
9907      AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
9908      AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
9909      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
9910  
9911      ConditionState      = FIRING_B REALLYDAMAGED
9912        Animation         = NICNSC_SKL.NICNSC_IATB1
9913        AnimationMode     = ONCE
9914        WaitForStateToFinishIfPossible = TRANS_Stab
9915      End
9916      AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
9917      AliasConditionState = RELOADING_B REALLYDAMAGED
9918  
9919      TransitionState   = TRANS_StabDamaged TRANS_StandDamaged
9920        Animation       = NICNSC_SKL.NICNSC_IATB2
9921        AnimationMode   = ONCE
9922      End
9923  
9924      ; ------- Parachuting Animations
9925  
9926      ConditionState    = FREEFALL
9927        Animation       = NICNSC_SKL.NICNSC_POP
9928        AnimationMode   = MANUAL
9929        Flags           = START_FRAME_FIRST
9930        TransitionKey   = TRANS_Falling
9931      End
9932      AliasConditionState = FREEFALL REALLYDAMAGED
9933      AliasConditionState = FREEFALL DYING
9934  
9935      ConditionState    = PARACHUTING
9936        Animation       = NICNSC_SKL.NICNSC_PHG
9937        AnimationMode   = LOOP
9938        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
9939        TransitionKey   = TRANS_Chute
9940      End
9941      AliasConditionState = PARACHUTING REALLYDAMAGED
9942      AliasConditionState = PARACHUTING DYING
9943  
9944      TransitionState   = TRANS_Falling TRANS_Chute
9945        Animation       = NICNSC_SKL.NICNSC_POP
9946        AnimationMode   = ONCE
9947        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
9948      End
9949  
9950      TransitionState   = TRANS_Chute TRANS_Stand
9951        Animation       = NICNSC_SKL.NICNSC_PTD
9952        AnimationMode   = ONCE
9953      End
9954  
9955      ; ------- Movement Animations
9956  
9957      ConditionState      = MOVING
9958        Animation         = NICNSC_SKL.NICNSC_RNA 26
9959        AnimationMode     = LOOP
9960        Flags             = RANDOMSTART
9961        TransitionKey     = None
9962        ParticleSysBone   = None InfantryDustTrails
9963      End
9964      AliasConditionState = MOVING ATTACKING
9965  
9966      ConditionState = MOVING REALLYDAMAGED
9967        Animation         = NICNSC_SKL.NICNSC_RNB 28
9968        AnimationMode     = LOOP
9969        Flags             = RANDOMSTART
9970        TransitionKey     = TRANS_RunDamaged
9971        TransitionKey     = None
9972      End
9973      AliasConditionState = MOVING ATTACKING REALLYDAMAGED
9974  
9975      ; ------- Bldg-capture
9976  
9977      ConditionState      = UNPACKING
9978        Model             = NICNSC_F_SKN
9979        Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
9980        AnimationMode     = ONCE
9981      End
9982      AliasConditionState = UNPACKING REALLYDAMAGED
9983  
9984      ConditionState      = RAISING_FLAG
9985        Model             = NICNSC_F_SKN
9986        Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
9987        AnimationMode     = ONCE
9988        TransitionKey     = TRANS_Raising
9989      End
9990      AliasConditionState = RAISING_FLAG REALLYDAMAGED
9991  
9992      ConditionState      = PACKING
9993        Model             = NICNSC_F_SKN
9994        Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
9995        AnimationMode     = ONCE_BACKWARDS
9996        Flags             = START_FRAME_LAST
9997        TransitionKey     = TRANS_Packing
9998      End
9999      AliasConditionState = PACKING REALLYDAMAGED
10000  
10001      TransitionState     = TRANS_Raising TRANS_Packing
10002        Model             = NICNSC_F_SKN
10003        Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
10004        AnimationMode     = ONCE_BACKWARDS
10005        Flags             = START_FRAME_LAST
10006      End
10007  
10008      ; ------- Dying Animations
10009  
10010      ConditionState      = DYING
10011        Animation         = NICNSC_SKL.NICNSC_DTA
10012        Animation         = NICNSC_SKL.NICNSC_DTB
10013        AnimationMode     = ONCE
10014        TransitionKey     = TRANS_Dying
10015      End
10016  
10017      TransitionState     = TRANS_Dying TRANS_Flailing
10018        Animation         = NICNSC_SKL.NICNSC_ATDE1
10019        AnimationMode     = ONCE
10020      End
10021  
10022      ConditionState      = DYING EXPLODED_FLAILING
10023        Animation         = NICNSC_SKL.NICNSC_ATDE2
10024        AnimationMode     = LOOP
10025        TransitionKey     = TRANS_Flailing
10026      End
10027  
10028      ConditionState      = DYING EXPLODED_BOUNCING
10029        Animation         = NICNSC_SKL.NICNSC_ATDE3
10030        AnimationMode     = ONCE
10031        TransitionKey     = None
10032      End
10033  
10034      ; ------- Misc Animations
10035  
10036      ConditionState      = SPECIAL_CHEERING
10037        Animation         = NICNSC_SKL.NICNSC_CHA
10038        AnimationMode     = LOOP
10039      End
10040  
10041    End
10042  
10043    ; ***DESIGN parameters ***
10044    DisplayName         = OBJECT:Redguard
10045    Side                = China
10046    EditorSorting       = INFANTRY
10047    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
10048    WeaponSet
10049      Conditions = None 
10050      Weapon = PRIMARY RedguardMachineGun
10051      Weapon = SECONDARY RedguardBayonet
10052      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
10053      AutoChooseSources = SECONDARY NONE
10054    End
10055    ArmorSet
10056      Conditions      = None
10057      Armor           = HumanArmor
10058      DamageFX        = InfantryDamageFX
10059    End
10060    VisionRange = 100
10061    ShroudClearingRange = 200
10062    Prerequisites
10063      Object = ChinaBarracks
10064    End
10065    BuildCost     = 300
10066    BuildTime     = 10.0          ;in seconds      
10067  
10068    ExperienceValue = 5 5 10 20   ;Experience point value at each level
10069    ExperienceRequired = 0 20 40 80  ;Experience points needed to gain each level
10070    IsTrainable = Yes             ;Can gain experience
10071    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
10072    CommandSet    = ChinaInfantryRedguardCommandSet
10073  
10074    ; *** AUDIO Parameters ***
10075    VoiceSelect = RedGuardVoiceSelect
10076    VoiceMove = RedGuardVoiceMove
10077    VoiceGuard = RedGuardVoiceMove
10078    VoiceAttack = RedGuardVoiceAttack
10079    VoiceGroupSelect = BattleCrySound
10080    SoundDie = RedGuardVoiceDie
10081    SoundDieFire = DieByFireChina
10082    SoundDieToxin = DieByToxinChina
10083  ; surrender is cut. sorry. (srj)
10084  ;  VoiceSurrender = RedGuardVoiceSurrender
10085    VoiceFear = RedGuardVoiceFear
10086    VoiceTaskComplete = RedGuardVoiceCaptureComplete
10087    UnitSpecificSounds
10088      VoiceMelee      = RedGuardVoiceAttackBayonet
10089      VoiceGarrison   = RedGuardVoiceGarrison
10090      VoiceCreate     = RedGuardVoiceCreate
10091      VoiceSubdue     = RedGuardVoiceSubdue
10092      VoiceEnter      = RedGuardVoiceMove
10093      VoiceEnterHostile = RedGuardVoiceMove
10094      VoiceGetHealed      = RedGuardVoiceMove
10095    End
10096  
10097    ; *** ENGINEERING Parameters ***
10098    RadarPriority = UNIT
10099    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE
10100  
10101    Body = ActiveBody ModuleTag_02
10102      MaxHealth       = 120.0
10103      InitialHealth   = 120.0
10104    End
10105  
10106    Behavior = VeterancyGainCreate ModuleTag_03
10107      StartingLevel = VETERAN
10108      ScienceRequired = SCIENCE_RedGuardTraining
10109    End
10110  
10111    Behavior = AIUpdateInterface ModuleTag_04
10112      AutoAcquireEnemiesWhenIdle = Yes
10113    End
10114  
10115    Behavior = CommandButtonHuntUpdate  ModuleTag_05 ; allows use of command button hunt script with this unit. 
10116    End
10117  
10118    Locomotor = SET_NORMAL RedguardLocomotor
10119  
10120    Behavior = HordeUpdate ModuleTag_06
10121      RubOffRadius = 60    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
10122      UpdateRate = 1000    ; how often to recheck horde status (msec)
10123      Radius = 30          ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
10124      KindOf = INFANTRY    ; what KindOf's must match to count towards horde-ness
10125      AlliesOnly = Yes     ; do we only count allies towards horde status? 
10126      ExactMatch = No      ; do we only count units of our exact same type towards horde status? (overrides kindof)
10127      Count = 5            ; how many units must be within Radius to grant us horde-ness
10128      Action = HORDE       ; when horde-ing, grant us the HORDE bonus
10129    End
10130    Behavior = PhysicsBehavior ModuleTag_07
10131      Mass = 5.0
10132    End
10133  
10134    ;Behavior = WeaponSetUpgrade ModuleTag_09
10135    ;  TriggeredBy = Upgrade_ChinaBayonet
10136    ;End
10137   
10138    Behavior = CommandSetUpgrade ModuleTag_09
10139      CommandSet = ChinaInfantryRedguardCommandSetUpgrade
10140      TriggeredBy = Upgrade_ChinaBayonet
10141    End
10142  
10143    Behavior = SquishCollide ModuleTag_10
10144      ;nothing
10145    End
10146  
10147  ; --- begin Death modules ---
10148    Behavior = SlowDeathBehavior ModuleTag_Death01
10149      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
10150      SinkDelay           = 3000
10151      SinkRate            = 0.5     ; in Dist/Sec
10152      DestructionDelay    = 8000
10153      FX                  = INITIAL FX_GIDie
10154    End
10155    Behavior = SlowDeathBehavior ModuleTag_Death02
10156      DeathTypes          = NONE +CRUSHED +SPLATTED
10157      SinkDelay           = 3000
10158      SinkRate            = 0.5     ; in Dist/Sec
10159      DestructionDelay    = 8000
10160      FX                  = INITIAL FX_GIDieCrushed
10161    End
10162    Behavior = SlowDeathBehavior ModuleTag_Death03
10163      DeathTypes          = NONE +EXPLODED
10164      SinkDelay           = 3000
10165      SinkRate            = 0.5     ; in Dist/Sec
10166      DestructionDelay    = 8000
10167      FX                  = INITIAL FX_GIDie
10168      FlingForce          = 8
10169      FlingForceVariance  = 3
10170      FlingPitch          = 60
10171      FlingPitchVariance  = 10
10172    End
10173    Behavior = SlowDeathBehavior ModuleTag_Death04
10174      DeathTypes          = NONE +BURNED
10175      DestructionDelay    = 0
10176      FX                  = INITIAL FX_GIDie
10177      OCL                 = INITIAL OCL_FlamingInfantry
10178    End
10179    Behavior = SlowDeathBehavior ModuleTag_Death05
10180      DeathTypes          = NONE +POISONED
10181      DestructionDelay    = 0
10182      FX                  = INITIAL FX_GIDie
10183      OCL                 = INITIAL OCL_ToxicInfantry
10184    End
10185    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
10186      DeathTypes          = NONE +POISONED_BETA
10187      DestructionDelay    = 0
10188      FX                  = INITIAL FX_GIDie
10189      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
10190    End
10191  ; --- end Death modules ---
10192  
10193    Behavior = PoisonedBehavior ModuleTag_15
10194      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
10195      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
10196    End
10197  
10198    Behavior = SpecialAbility ModuleTag_16
10199      SpecialPowerTemplate      = SpecialAbilityRedGuardCaptureBuilding
10200      UpdateModuleStartsAttack  = Yes
10201      StartsPaused              = Yes
10202      InitiateSound         = RedGuardVoiceCapture
10203    End
10204    Behavior = SpecialAbilityUpdate ModuleTag_17
10205      SpecialPowerTemplate  = SpecialAbilityRedGuardCaptureBuilding
10206      StartAbilityRange  = 5.0
10207      UnpackTime            = 3000  ; (changing this will scale anim speed)
10208      PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
10209      PackTime              = 2000  ; (changing this will scale anim speed)
10210      DoCaptureFX           = Yes
10211      AwardXPForTriggering  = 4
10212      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
10213    End
10214  
10215    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_18
10216      SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
10217      TriggeredBy = Upgrade_InfantryCaptureBuilding
10218    End
10219  
10220    Geometry = CYLINDER
10221    GeometryMajorRadius = 7.0
10222    GeometryMinorRadius = 7.0
10223    GeometryHeight = 12.0
10224    GeometryIsSmall = Yes
10225    Shadow = SHADOW_DECAL
10226    ShadowSizeX = 14;
10227    ShadowSizeY = 14;
10228    ShadowTexture = ShadowI;
10229    BuildCompletion = APPEARS_AT_RALLY_POINT
10230  
10231  End
10232  ;------------------------------------------------------------------------------
10233  Object ChinaInfantryParadeRedGuard
10234  
10235  ; Unit added per John Lee's request. - GB
10236  
10237    ; *** ART Parameters ***
10238    Draw = W3DModelDraw ModuleTag_01
10239      OkToChangeModelColor = Yes
10240  
10241      ; ------- Standing-Around Animations
10242   
10243      DefaultConditionState
10244        Model               = NICNSC_SKN
10245        IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
10246        IdleAnimation       = NICNSC_SKL.NICNSC_IDA
10247        IdleAnimation       = NICNSC_SKL.NICNSC_IDB
10248        AnimationMode       = ONCE
10249        WeaponFireFXBone    = PRIMARY Muzzle
10250        WeaponMuzzleFlash   = PRIMARY MuzzleFX
10251        TransitionKey       = TRANS_Stand
10252      End
10253  
10254      ConditionState = REALLYDAMAGED
10255        IdleAnimation       = NICNSC_SKL.NICNSC_STB
10256        AnimationMode       = ONCE
10257        TransitionKey       = TRANS_StandDamaged
10258      End
10259  
10260      ; ------- Machine Gun Animations
10261  
10262      ConditionState = FIRING_A 
10263        Animation         = NICNSC_SKL.NICNSC_ATA
10264        AnimationMode     = LOOP
10265        TransitionKey     = TRANS_Firing
10266      End
10267      AliasConditionState = BETWEEN_FIRING_SHOTS_A
10268      AliasConditionState = RELOADING_A
10269  
10270      ConditionState = USING_WEAPON_A REALLYDAMAGED
10271        Animation         = NICNSC_SKL.NICNSC_ATC
10272        AnimationMode     = LOOP
10273        TransitionKey     = TRANS_FiringDamaged
10274      End
10275  
10276  
10277      ; ------- Firing-related Transitions
10278  
10279      TransitionState = TRANS_Firing TRANS_FiringDamaged
10280        Animation       = NICNSC_SKL.NICNSC_AA2AC
10281        AnimationMode   = ONCE
10282      End
10283  
10284      TransitionState = TRANS_Stand TRANS_Firing
10285        Animation       = NICNSC_SKL.NICNSC_SA2AA
10286        AnimationMode   = ONCE
10287      End
10288  
10289      TransitionState = TRANS_Firing TRANS_Stand
10290        Animation       = NICNSC_SKL.NICNSC_AA2SA
10291        AnimationMode   = ONCE
10292      End
10293  
10294      TransitionState = TRANS_StandDamaged TRANS_FiringDamaged
10295        Animation       = NICNSC_SKL.NICNSC_ATCST
10296        AnimationMode   = ONCE
10297      End
10298  
10299      TransitionState = TRANS_FiringDamaged TRANS_StandDamaged
10300        Animation       = NICNSC_SKL.NICNSC_ATCED
10301        AnimationMode   = ONCE
10302      End
10303  
10304  
10305      ; ------------- Damage Transitions --------------------
10306      TransitionState = TRANS_StandDamaged TRANS_RunDamaged
10307        Animation       = NICNSC_SKL.NICNSC_AA2AC
10308        AnimationMode   = ONCE
10309        AnimationSpeedFactorRange = 2 2
10310      End
10311      TransitionState = TRANS_RunDamaged TRANS_StandDamaged 
10312        Animation       = NICNSC_SKL.NICNSC_AA2AC
10313        AnimationMode   = ONCE_BACKWARDS
10314        AnimationSpeedFactorRange = 2 2
10315        Flags           = START_FRAME_LAST
10316      End
10317      TransitionState = TRANS_Stand TRANS_StandDamaged 
10318        Animation       = NICNSC_SKL.NICNSC_AA2SA
10319        AnimationMode   = ONCE_BACKWARDS
10320        AnimationSpeedFactorRange = 4 5
10321        Flags           = START_FRAME_LAST
10322      End
10323  
10324  
10325      ; ------- Bayonet Animations
10326  
10327      ConditionState = PREATTACK_C 
10328        Animation = NICNSC_SKL.NICNSC_ATB1
10329        AnimationMode   = ONCE
10330        TransitionKey   = TRANS_Stab
10331      End
10332      AliasConditionState = PREATTACK_C MOVING
10333      AliasConditionState = PREATTACK_C FIRING_C
10334      AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C
10335  
10336      ConditionState = FIRING_C
10337        Animation         = NICNSC_SKL.NICNSC_ATB2
10338        AnimationMode     = ONCE
10339        ; this is basically a trick: this guy has a nontrivial animation for firing,
10340        ; and a long recycle time between shots. we want him to finish his fire animation
10341        ; (unless he's ordered to do something else), so this is just a handy trick that
10342        ; says, "if the previous state had this transition key, allow it to finish before
10343        ; switching to us, if possible".
10344        WaitForStateToFinishIfPossible = TRANS_Stab
10345      End
10346      AliasConditionState = BETWEEN_FIRING_SHOTS_C
10347      AliasConditionState = RELOADING_C
10348  
10349      ; ------- Parachuting Animations
10350  
10351      ConditionState = FREEFALL
10352        Animation       = NICNSC_SKL.NICNSC_POP
10353        AnimationMode   = MANUAL
10354        Flags           = START_FRAME_FIRST
10355        TransitionKey   = TRANS_Falling
10356      End
10357      AliasConditionState = FREEFALL REALLYDAMAGED
10358      AliasConditionState = FREEFALL DYING
10359  
10360      ConditionState = PARACHUTING
10361        Animation       = NICNSC_SKL.NICNSC_PHG
10362        AnimationMode   = LOOP
10363        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
10364        TransitionKey   = TRANS_Chute
10365      End
10366      AliasConditionState = PARACHUTING REALLYDAMAGED
10367      AliasConditionState = PARACHUTING DYING
10368  
10369      TransitionState = TRANS_Falling TRANS_Chute
10370        Animation       = NICNSC_SKL.NICNSC_POP
10371        AnimationMode   = ONCE
10372        Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
10373      End
10374  
10375      TransitionState = TRANS_Chute TRANS_Stand
10376        Animation       = NICNSC_SKL.NICNSC_PTD
10377        AnimationMode   = ONCE
10378      End
10379  
10380      ; ------- Movement Animations
10381  
10382      ConditionState = MOVING
10383        Animation         = NICNSC_SKL.NICNSC_MAR 12
10384        AnimationMode     = LOOP
10385        Flags             = RANDOMSTART
10386        TransitionKey     = None
10387        ParticleSysBone     = None InfantryDustTrails
10388      End
10389      AliasConditionState = MOVING ATTACKING
10390  
10391      ConditionState = MOVING REALLYDAMAGED
10392        Animation         = NICNSC_SKL.NICNSC_RNB
10393        AnimationMode     = LOOP
10394        Flags             = RANDOMSTART
10395        TransitionKey     = TRANS_RunDamaged
10396        ParticleSysBone     = None InfantryDustTrails
10397      End
10398      AliasConditionState = MOVING ATTACKING REALLYDAMAGED
10399  
10400  
10401  
10402      ; ------- Surrender Animations
10403  
10404  ; surrender is cut. sorry. (srj)
10405  ;    ConditionState = SURRENDER
10406  ;      Animation         = NICNSC_SKL.NICNSC_SST
10407  ;      AnimationMode     = ONCE
10408  ;      TransitionKey     = TRANS_Surrendered
10409  ;    End
10410  ;    AliasConditionState = SURRENDER REALLYDAMAGED
10411  ;    ConditionState = SURRENDER MOVING
10412  ;      Animation         = NICNSC_SKL.NICNSC_RNB
10413  ;      AnimationMode     = ONCE
10414  ;      TransitionKey     = TRANS_Surrendered
10415  ;    End
10416  ;    AliasConditionState = SURRENDER MOVING REALLYDAMAGED
10417  ;    TransitionState = TRANS_Stand TRANS_Surrendered
10418  ;      Animation       = NICNSC_SKL.NICNSC_SUR
10419  ;      AnimationMode   = ONCE
10420  ;    End
10421  
10422      ; ------- Bldg-capture
10423  
10424      ConditionState = UNPACKING
10425        Animation         = NICNSC_SKL.NICNSC_FDP1
10426        AnimationMode     = ONCE
10427      End
10428      AliasConditionState = UNPACKING REALLYDAMAGED
10429  
10430      ConditionState = RAISING_FLAG
10431        Animation         = NICNSC_SKL.NICNSC_FDP2
10432        AnimationMode     = ONCE
10433        TransitionKey     = TRANS_Raising
10434      End
10435      AliasConditionState = RAISING_FLAG REALLYDAMAGED
10436  
10437      ConditionState = PACKING
10438        Animation         = NICNSC_SKL.NICNSC_FDP1
10439        AnimationMode     = ONCE_BACKWARDS
10440        Flags             = START_FRAME_LAST
10441        TransitionKey     = TRANS_Packing
10442      End
10443      AliasConditionState = PACKING REALLYDAMAGED
10444  
10445      TransitionState = TRANS_Raising TRANS_Packing
10446        Animation       = NICNSC_SKL.NICNSC_FDP2
10447        AnimationMode   = ONCE_BACKWARDS
10448        Flags           = START_FRAME_LAST
10449      End
10450  
10451      ; ------- Misc Animations
10452  
10453      ; ------- Dying Animations
10454  
10455      ConditionState      = DYING
10456        Animation         = NICNSC_SKL.NICNSC_DTA
10457        Animation         = NICNSC_SKL.NICNSC_DTB
10458        AnimationMode     = ONCE
10459        TransitionKey     = TRANS_Dying
10460      End
10461  
10462      TransitionState     = TRANS_Dying TRANS_Flailing
10463        Animation         = NICNSC_SKL.NICNSC_ATDE1
10464        AnimationMode     = ONCE
10465      End
10466  
10467      ConditionState      = DYING EXPLODED_FLAILING
10468        Animation         = NICNSC_SKL.NICNSC_ATDE2
10469        AnimationMode     = LOOP
10470        TransitionKey     = TRANS_Flailing
10471      End
10472  
10473      ConditionState      = DYING EXPLODED_BOUNCING
10474        Animation         = NICNSC_SKL.NICNSC_ATDE3
10475        AnimationMode     = ONCE
10476        TransitionKey     = None
10477      End
10478  
10479      ConditionState = SPECIAL_CHEERING
10480        Animation         = NICNSC_SKL.NICNSC_CHA
10481        AnimationMode     = LOOP
10482      End
10483  
10484    End
10485  
10486    ; ***DESIGN parameters ***
10487    DisplayName         = OBJECT:Redguard
10488    Side                = China
10489    EditorSorting       = INFANTRY
10490    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
10491    WeaponSet
10492      Conditions = None 
10493      Weapon = PRIMARY RedguardMachineGun
10494      Weapon = SECONDARY None
10495      Weapon = TERTIARY RedguardBayonet
10496      AutoChooseSources = TERTIARY None
10497    End
10498  ; sorry, no stun bullets, cut for this version (srj)
10499  ;  WeaponSet
10500  ;    Conditions = PLAYER_UPGRADE
10501  ;    Weapon = PRIMARY RedguardMachineGun
10502  ;    Weapon = SECONDARY RedguardStunBulletsMachineGun
10503  ;    Weapon = TERTIARY RedguardBayonet
10504  ;    AutoChooseSources = SECONDARY None
10505  ;    AutoChooseSources   = TERTIARY None
10506  ;  End
10507    ArmorSet
10508      Conditions      = None
10509      Armor           = HumanArmor
10510      DamageFX        = InfantryDamageFX
10511    End
10512    VisionRange = 100
10513    ShroudClearingRange = 200
10514    Prerequisites
10515      Object = ChinaBarracks
10516    End
10517    BuildCost     = 225
10518    BuildTime     = 10.0          ;in seconds      
10519  
10520    ExperienceValue = 5 5 10 20   ;Experience point value at each level
10521    ExperienceRequired = 0 20 40 80  ;Experience points needed to gain each level
10522    IsTrainable = Yes             ;Can gain experience
10523    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
10524    CommandSet    = ChinaInfantryRedguardCommandSet
10525  
10526    ; *** AUDIO Parameters ***
10527    VoiceSelect = RedGuardVoiceSelect
10528    VoiceMove = RedGuardVoiceMove
10529    VoiceAttack = RedGuardVoiceAttack
10530    VoiceGroupSelect = BattleCrySound
10531    SoundDie = RedGuardVoiceDie
10532    SoundDieFire = DieByFireChina
10533    SoundDieToxin = DieByToxinChina
10534  
10535    ; *** ENGINEERING Parameters ***
10536    RadarPriority = UNIT
10537    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE
10538  
10539    Body = ActiveBody ModuleTag_02
10540      MaxHealth       = 90.0
10541      InitialHealth   = 90.0
10542    End
10543  
10544    Behavior = VeterancyGainCreate ModuleTag_03
10545      StartingLevel = VETERAN
10546      ScienceRequired = SCIENCE_RedGuardTraining
10547    End
10548  
10549    Behavior = AIUpdateInterface ModuleTag_04
10550      AutoAcquireEnemiesWhenIdle = Yes
10551    End
10552  
10553    Locomotor = SET_NORMAL ParadeRedguardLocomotor
10554  
10555    Behavior = PhysicsBehavior ModuleTag_06
10556      Mass = 5.0
10557    End
10558  
10559  ; sorry, no tranq or stun bullets, cut for this version (srj)
10560  ;  Behavior = WeaponSetUpgrade ModuleTag_08
10561  ;    TriggeredBy = Upgrade_ChinaStunBullets
10562  ;  End
10563   
10564    Behavior = SquishCollide ModuleTag_09
10565      ;nothing
10566    End
10567  
10568  ; --- begin Death modules ---
10569    Behavior = SlowDeathBehavior ModuleTag_Death01
10570      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
10571      SinkDelay           = 3000
10572      SinkRate            = 0.5     ; in Dist/Sec
10573      DestructionDelay    = 8000
10574      FX                  = INITIAL FX_GIDie
10575    End
10576    Behavior = SlowDeathBehavior ModuleTag_Death02
10577      DeathTypes          = NONE +CRUSHED +SPLATTED
10578      SinkDelay           = 3000
10579      SinkRate            = 0.5     ; in Dist/Sec
10580      DestructionDelay    = 8000
10581      FX                  = INITIAL FX_GIDieCrushed
10582    End
10583    Behavior = SlowDeathBehavior ModuleTag_Death03
10584      DeathTypes          = NONE +EXPLODED
10585      SinkDelay           = 3000
10586      SinkRate            = 0.5     ; in Dist/Sec
10587      DestructionDelay    = 8000
10588      FX                  = INITIAL FX_GIDie
10589      FlingForce          = 8
10590      FlingForceVariance  = 3
10591      FlingPitch          = 60
10592      FlingPitchVariance  = 10
10593    End
10594    Behavior = SlowDeathBehavior ModuleTag_Death04
10595      DeathTypes          = NONE +BURNED
10596      DestructionDelay    = 0
10597      FX                  = INITIAL FX_GIDie
10598      OCL                 = INITIAL OCL_FlamingInfantry
10599    End
10600    Behavior = SlowDeathBehavior ModuleTag_Death05
10601      DeathTypes          = NONE +POISONED
10602      DestructionDelay    = 0
10603      FX                  = INITIAL FX_GIDie
10604      OCL                 = INITIAL OCL_ToxicInfantry
10605    End
10606  ; --- end Death modules ---
10607   
10608    Behavior = PoisonedBehavior ModuleTag_14
10609      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
10610      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
10611    End
10612  
10613    Behavior = SpecialAbility ModuleTag_15
10614      SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
10615      UpdateModuleStartsAttack = Yes
10616      InitiateSound         = RedGuardVoiceCapture
10617    End
10618    Behavior = SpecialAbilityUpdate ModuleTag_16
10619      SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
10620      StartAbilityRange = 5.0
10621      UnpackTime            = 3000  ; (changing this will scale anim speed)
10622      PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
10623      PackTime              = 2000  ; (changing this will scale anim speed)
10624      DoCaptureFX           = Yes
10625    End
10626  
10627    Geometry = CYLINDER
10628    GeometryMajorRadius = 10.0
10629    GeometryMinorRadius = 10.0
10630    GeometryHeight = 12.0
10631    GeometryIsSmall = Yes
10632    Shadow = SHADOW_DECAL
10633    ShadowSizeX = 14;
10634    ShadowSizeY = 14;
10635    ShadowTexture = ShadowI;
10636    BuildCompletion = APPEARS_AT_RALLY_POINT
10637  
10638  End
10639  
10640  ;------------------------------------------------------------------------------
10641  Object ChinaInfantryBlackLotus
10642  
10643    ; *** ART Parameters ***
10644    SelectPortrait         = SNBlkLotus_L2
10645    ButtonImage            = SNBlkLotus2
10646    
10647    ;UpgradeCameo1 = NONE
10648    ;UpgradeCameo2 = NONE
10649    ;UpgradeCameo3 = NONE
10650    ;UpgradeCameo4 = NONE
10651    ;UpgradeCameo5 = NONE
10652    
10653    Draw = W3DModelDraw ModuleTag_01
10654  
10655      OkToChangeModelColor = Yes
10656      
10657      ; --- idle
10658      DefaultConditionState
10659        Model             = NIHERO_SKN
10660        IdleAnimation     = NIHERO_SKL.NIHERO_STA 0 17
10661        IdleAnimation     = NIHERO_SKL.NIHero_IDA
10662        IdleAnimation     = NIHERO_SKL.NIHero_IDB
10663        AnimationMode     = ONCE
10664        TransitionKey     = TRANS_Stand
10665      End
10666  
10667      ConditionState      = REALLYDAMAGED
10668        IdleAnimation     = NIHERO_SKL.NIHERO_ISTA 0 30
10669        IdleAnimation     = NIHERO_SKL.NIHero_IIDA
10670        AnimationMode     = ONCE
10671        TransitionKey     = TRANS_StandInjured
10672      End
10673  
10674      TransitionState     = TRANS_Stand TRANS_StandInjured
10675        Animation         = NIHero_SKL.NIHero_ISTAHIT
10676        AnimationMode     = ONCE
10677      End
10678  
10679      ; --- moving
10680      ConditionState      = MOVING
10681        Animation         = NIHero_SKL.NIHero_RNA
10682        AnimationMode     = LOOP
10683        Flags             = RANDOMSTART
10684        TransitionKey     = None
10685        ParticleSysBone   = None InfantryDustTrails
10686      End
10687      AliasConditionState = MOVING UNPACKING
10688  
10689      ConditionState      = MOVING REALLYDAMAGED
10690        Animation         = NIHero_SKL.NIHero_IRNA
10691        AnimationMode     = LOOP
10692        Flags             = RANDOMSTART
10693        TransitionKey     = None
10694        ParticleSysBone   = None InfantryDustTrails
10695      End
10696      AliasConditionState = MOVING UNPACKING REALLYDAMAGED
10697  
10698      ; --- packing states
10699      ConditionState      = UNPACKING
10700        ;Preparing to attack (unpacking gear)
10701        Animation         = NIHero_SKL.NIHero_ATA1
10702        AnimationMode     = ONCE
10703      End
10704      AliasConditionState = UNPACKING FIRING_A
10705  
10706      ConditionState      = FIRING_A
10707        ;Processing attack (hacking)
10708        Animation         = NIHero_SKL.NIHero_ATA2
10709        AnimationMode     = LOOP
10710        TransitionKey     = TRANS_FiringA
10711      End
10712  
10713      ConditionState      = PACKING
10714        ;Completing attack (packing gear)
10715        Animation         = NIHero_SKL.NIHero_ATA3
10716        AnimationMode     = ONCE
10717      End
10718      AliasConditionState = FIRING_A PACKING 
10719  
10720      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
10721        Animation         = NIHero_SKL.NIHero_IATAHIT
10722        AnimationMode     = ONCE
10723      End
10724  
10725      ; --- injured-packing states
10726      ConditionState      = UNPACKING REALLYDAMAGED
10727        ;Preparing to attack (unpacking gear)
10728        Animation         = NIHero_SKL.NIHero_IATA1
10729        AnimationMode     = ONCE
10730      End
10731      AliasConditionState = UNPACKING FIRING_A REALLYDAMAGED
10732  
10733      ConditionState      = FIRING_A REALLYDAMAGED
10734        ;Processing attack (hacking)
10735        Animation         = NIHero_SKL.NIHero_IATA2
10736        AnimationMode     = LOOP
10737        TransitionKey     = TRANS_FiringAInjured
10738      End
10739  
10740      ConditionState      = PACKING REALLYDAMAGED
10741        ;Completing attack (packing gear)
10742        Animation         = NIHero_SKL.NIHero_IATA3
10743        AnimationMode     = ONCE
10744      End
10745      AliasConditionState = FIRING_A PACKING REALLYDAMAGED
10746  
10747      ; --- packing-dying states
10748  ; code doesn't really support this. Oh well.
10749  ;    ConditionState      = DYING RAISING_FLAG
10750  ;      Animation         = NIHero_SKL.NIHero_IDTA
10751  ;      Animation         = NIHero_SKL.NIHero_IDTB
10752  ;      AnimationMode     = ONCE
10753  ;    End
10754  ;    AliasConditionState = DYING RAISING_FLAG EXPLODED_FLAILING EXPLODED_BOUNCING
10755  
10756      ; --- normal-dying states
10757      ConditionState      = DYING
10758        Animation         = NIHero_SKL.NIHero_DTA
10759        Animation         = NIHero_SKL.NIHero_DTB
10760        AnimationMode     = ONCE
10761        TransitionKey     = TRANS_Dying
10762      End
10763  
10764      TransitionState     = TRANS_Dying TRANS_Flailing
10765        Animation         = NIHero_SKL.NIHero_ADTF1
10766        AnimationMode     = ONCE
10767      End
10768  
10769      ConditionState      = DYING EXPLODED_FLAILING
10770        Animation         = NIHero_SKL.NIHero_ADTF2
10771        AnimationMode     = LOOP
10772        TransitionKey     = TRANS_Flailing
10773      End
10774  
10775      ConditionState      = DYING EXPLODED_BOUNCING
10776        Animation         = NIHero_SKL.NIHero_ADTF3
10777        AnimationMode     = ONCE
10778        TransitionKey     = None
10779      End
10780  
10781      ; --- cheering states
10782      ConditionState      = SPECIAL_CHEERING
10783        Animation         = NIHERO_SKL.NIHERO_CHA
10784        AnimationMode     = ONCE
10785      End
10786  
10787      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
10788        Animation         = NIHERO_SKL.NIHERO_ICHA
10789        AnimationMode     = ONCE
10790      End
10791  
10792      ; --- falling states
10793      ConditionState      = FREEFALL
10794        Animation         = NIHero_SKL.NIHero_PFL
10795        AnimationMode     = LOOP
10796        TransitionKey     = TRANS_Falling
10797      End
10798      AliasConditionState = FREEFALL REALLYDAMAGED
10799      AliasConditionState = FREEFALL DYING
10800  
10801      ConditionState      = PARACHUTING
10802        Animation         = NIHero_SKL.NIHero_PHG
10803        AnimationMode     = LOOP
10804        TransitionKey     = TRANS_Chute
10805      End
10806      AliasConditionState = PARACHUTING REALLYDAMAGED
10807      AliasConditionState = PARACHUTING DYING
10808  
10809      TransitionState     = TRANS_Falling TRANS_Chute
10810        Animation         = NIHero_SKL.NIHero_POP
10811        AnimationMode     = ONCE
10812        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
10813      End
10814  
10815      TransitionState     = TRANS_Chute TRANS_Stand
10816        Animation         = NIHero_SKL.NIHero_PTD
10817        AnimationMode     = ONCE
10818      End
10819  
10820      TransitionState     = TRANS_Chute TRANS_StandInjured
10821        Animation         = NIHero_SKL.NIHero_PTD
10822        AnimationMode     = ONCE
10823      End
10824  
10825      ; --- surrender states
10826  ; surrender is cut. sorry. (srj)
10827  ;    ConditionState      = SURRENDER
10828  ;      Animation         = NIHERO_SKL.NIHERO_SUR
10829  ;      AnimationMode     = ONCE
10830  ;      TransitionKey     = TRANS_HandsUp
10831  ;    End
10832  ;    TransitionState     = TRANS_HandsUp TRANS_Stand
10833  ;      Animation         = NIHERO_SKL.NIHERO_SST
10834  ;      AnimationMode     = ONCE
10835  ;    End
10836  ;    TransitionState     = TRANS_HandsUp TRANS_StandInjured
10837  ;      Animation         = NIHERO_SKL.NIHERO_SST
10838  ;      AnimationMode     = ONCE
10839  ;    End
10840  ;    ConditionState      = SURRENDER REALLYDAMAGED
10841  ;      Animation         = NIHERO_SKL.NIHERO_ISUR
10842  ;      AnimationMode     = ONCE
10843  ;      TransitionKey     = TRANS_InjuredHandsUp
10844  ;    End
10845  ;    TransitionState     = TRANS_InjuredHandsUp TRANS_StandInjured
10846  ;      Animation         = NIHERO_SKL.NIHERO_ISST
10847  ;      AnimationMode     = ONCE
10848  ;    End
10849  
10850    End
10851  
10852    ; ***DESIGN parameters ***
10853    DisplayName         = OBJECT:BlackLotus
10854    Side                = China
10855    EditorSorting       = INFANTRY
10856    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
10857    WeaponSet
10858      Conditions        = None 
10859      Weapon            = PRIMARY None
10860    End
10861    ArmorSet
10862      Conditions      = None
10863      Armor           = HumanArmor
10864      DamageFX        = InfantryDamageFX
10865    End
10866    VisionRange         = 300
10867    ShroudClearingRange = 400
10868    Prerequisites
10869      Object = ChinaBarracks
10870      Object = ChinaPropagandaCenter
10871    End
10872    BuildCost             = 1500
10873    BuildTime             = 20.0          ;in seconds    
10874    MaxSimultaneousOfType = 1
10875    CommandSet            = ChinaInfantryBlackLotusCommandSet
10876  
10877    ExperienceValue       = 50 100 150 400    ;Experience point value at each level
10878    ExperienceRequired    = 0 150 450 900  ;Experience points needed to gain each level
10879    IsTrainable           = Yes             ;Can gain experience
10880    CrushableLevel        = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
10881    CommandSet            = ChinaInfantryBlackLotusCommandSet
10882  
10883    ; *** AUDIO Parameters ***
10884    VoiceSelect = BlackLotusVoiceSelect
10885    VoiceMove = BlackLotusVoiceMove
10886    VoiceAttack = BlackLotusVoiceAttack
10887    VoiceGuard = BlackLotusVoiceMove
10888    VoiceFear = BlackLotusVoiceFear
10889    VoiceTaskComplete = BlackLotusVoiceCaptureComplete
10890    SoundDie = BlackLotusVoiceDie
10891    SoundDieFire = DieByFireFemale
10892    SoundDieToxin = DieByToxinFemale
10893    SoundStealthOn = StealthOn
10894    SoundStealthOff = StealthOff
10895    ;SoundAmbient = BlackLotusSoundAmbient
10896  
10897    UnitSpecificSounds
10898      VoiceCreate          = BlackLotusVoiceCreate
10899      VoiceGarrison = BlackLotusVoiceMove
10900      VoiceEnter = BlackLotusVoiceMove
10901      VoiceEnterHostile = BlackLotusVoiceMove
10902      VoiceStealCashComplete = BlackLotusVoiceCashComplete
10903      VoiceDisableVehicleComplete = BlackLotusVoiceDisableComplete
10904      VoiceCaptureBuildingComplete = BlackLotusVoiceCaptureComplete
10905      VoiceGetHealed      = BlackLotusVoiceMove
10906    End
10907  
10908    ; *** ENGINEERING Parameters ***
10909    RadarPriority = UNIT
10910    ; note: per Dustin's comment, Hero units do not surrender
10911    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE HERO
10912  
10913    Body = ActiveBody ModuleTag_02
10914      MaxHealth       = 150.0
10915      InitialHealth   = 150.0
10916    End
10917  
10918    Behavior = CommandButtonHuntUpdate  ModuleTag_03 ; allows use of command button hunt script with this unit. 
10919    End
10920  
10921    Behavior = AIUpdateInterface ModuleTag_04
10922      AutoAcquireEnemiesWhenIdle = No
10923    End
10924    Locomotor = SET_NORMAL BlackLotusLocomotor
10925    Locomotor = SET_FREEFALL FreeFallLocomotor
10926    Behavior = PhysicsBehavior ModuleTag_05
10927      Mass = 5.0
10928    End
10929    Behavior = StealthUpdate ModuleTag_07
10930      StealthDelay                = 2500 ; msec
10931      StealthForbiddenConditions  = USING_ABILITY
10932      HintDetectableConditions    = USING_ABILITY
10933      InnateStealth               = Yes
10934      OrderIdleEnemiesToAttackMeUponReveal  = Yes
10935    End
10936  
10937    Behavior = StealthDetectorUpdate ModuleTag_44
10938      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
10939      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
10940      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
10941      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
10942    End
10943  
10944    Behavior = SpecialAbility ModuleTag_08
10945      SpecialPowerTemplate = SpecialAbilityBlackLotusCaptureBuilding
10946      UpdateModuleStartsAttack = Yes
10947      InitiateSound         = BlackLotusVoiceHackBuilding
10948    End
10949    Behavior = SpecialAbilityUpdate ModuleTag_09
10950      SpecialPowerTemplate  = SpecialAbilityBlackLotusCaptureBuilding
10951      StartAbilityRange     = 150.0
10952      UnpackTime            = 6730 ;animation time is 6730 (changing this will scale anim speed)
10953      PackTime              = 2800 ;animation time is 5800 (changing this will scale anim speed)
10954      PreparationTime       = 6000 ;time to complete hack once prepared (unpacked)
10955      SpecialObject         = BinaryDataStream
10956      DoCaptureFX           = Yes
10957      PackSound             = BlackLotusPack
10958      UnpackSound           = BlackLotusUnpack
10959      TriggerSound          = BlackLotusTrigger
10960      PrepSoundLoop         = BlackLotusPrepLoop
10961      AwardXPForTriggering  = 20
10962      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
10963    End
10964    Behavior = SpecialAbility ModuleTag_10
10965      SpecialPowerTemplate      = SpecialAbilityBlackLotusDisableVehicleHack
10966      UpdateModuleStartsAttack  = Yes
10967      InitiateSound           = BlackLotusVoiceHackVehicle
10968    End
10969    Behavior = SpecialAbilityUpdate ModuleTag_11
10970      SpecialPowerTemplate    = SpecialAbilityBlackLotusDisableVehicleHack
10971      StartAbilityRange       = 150.0
10972      UnpackTime              = 2000 ;6730 ;animation time is 6730 (changing this will scale anim speed)
10973      PackTime                = 1000 ;2800 ;animation time is 5800 (changing this will scale anim speed)
10974      PreparationTime         = 2000 ;time to complete hack once prepared (unpacked)
10975      EffectDuration          = 15000 ;duration vehicle is disabled  (30 seconds)
10976      DisableFXParticleSystem = DisabledEffectBinaryShower0
10977      SpecialObject           = BinaryDataStream
10978      PackSound               = BlackLotusPack
10979      UnpackSound             = BlackLotusUnpack
10980      TriggerSound            = BlackLotusTrigger
10981      PrepSoundLoop           = BlackLotusPrepLoop
10982      AwardXPForTriggering    = 0
10983      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
10984    End
10985    Behavior = SpecialAbility ModuleTag_12
10986      SpecialPowerTemplate      = SpecialAbilityBlackLotusStealCashHack
10987      UpdateModuleStartsAttack  = Yes
10988      InitiateSound         = BlackLotusVoiceHackCash
10989    End
10990    Behavior = SpecialAbilityUpdate ModuleTag_13
10991      SpecialPowerTemplate  = SpecialAbilityBlackLotusStealCashHack
10992      StartAbilityRange     = 150.0
10993      UnpackTime            = 6730 ;animation time is 6730 (changing this will scale anim speed)
10994      PackTime              = 5800 ;animation time is 5800 (changing this will scale anim speed)
10995      PreparationTime       = 6000 ;time to complete hack once prepared (unpacked)
10996      EffectValue           = 1000 ;amount of cash stolen
10997      SpecialObject         = BinaryDataStream
10998      PackSound             = BlackLotusPack
10999      UnpackSound           = BlackLotusUnpack
11000      TriggerSound          = BlackLotusTrigger
11001      PrepSoundLoop         = BlackLotusPrepLoop
11002      AwardXPForTriggering  = 20
11003      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
11004    End
11005   
11006    ;Hero units can't be squished!
11007    ;Behavior = SquishCollide ModuleTag_14
11008    ;  ;nothing
11009    ;End
11010  
11011  
11012  ; --- begin Death modules ---
11013    Behavior = SlowDeathBehavior ModuleTag_Death01
11014      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
11015      SinkDelay           = 3000
11016      SinkRate            = 0.5     ; in Dist/Sec
11017      DestructionDelay    = 8000
11018      FX                  = INITIAL FX_GIDie
11019    End
11020    Behavior = SlowDeathBehavior ModuleTag_Death02
11021      DeathTypes          = NONE +CRUSHED +SPLATTED
11022      SinkDelay           = 3000
11023      SinkRate            = 0.5     ; in Dist/Sec
11024      DestructionDelay    = 8000
11025      FX                  = INITIAL FX_GIDieCrushed
11026    End
11027    Behavior = SlowDeathBehavior ModuleTag_Death03
11028      DeathTypes          = NONE +EXPLODED
11029      SinkDelay           = 3000
11030      SinkRate            = 0.5     ; in Dist/Sec
11031      DestructionDelay    = 8000
11032      FX                  = INITIAL FX_GIDie
11033      FlingForce          = 8
11034      FlingForceVariance  = 3
11035      FlingPitch          = 60
11036      FlingPitchVariance  = 10
11037    End
11038    Behavior = SlowDeathBehavior ModuleTag_Death04
11039      DeathTypes          = NONE +BURNED
11040      DestructionDelay    = 0
11041      FX                  = INITIAL FX_GIDie
11042      OCL                 = INITIAL OCL_FlamingInfantry
11043    End
11044    Behavior = SlowDeathBehavior ModuleTag_Death05
11045      DeathTypes          = NONE +POISONED
11046      DestructionDelay    = 0
11047      FX                  = INITIAL FX_GIDie
11048      OCL                 = INITIAL OCL_ToxicInfantry
11049    End
11050    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
11051      DeathTypes          = NONE +POISONED_BETA
11052      DestructionDelay    = 0
11053      FX                  = INITIAL FX_GIDie
11054      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
11055    End
11056  ; --- end Death modules ---
11057  
11058    Behavior = PoisonedBehavior ModuleTag_17
11059      PoisonDamageInterval  = 100  ; Every this many msec I will retake the poison damage dealt me...
11060      PoisonDuration        = 3000       ; ... for this long after last hit by poison damage
11061    End
11062   
11063    Geometry = CYLINDER
11064    GeometryMajorRadius = 10.0
11065    GeometryMinorRadius = 10.0
11066    GeometryHeight = 12.0
11067    GeometryIsSmall = Yes
11068    Shadow = SHADOW_DECAL
11069    ShadowSizeX = 14;
11070    ShadowSizeY = 14;
11071    ShadowTexture = ShadowI;
11072    BuildCompletion = APPEARS_AT_RALLY_POINT
11073  
11074  End
11075  
11076  ;------------------------------------------------------------------------------
11077  Object ChinaInfantryTankHunter
11078  
11079    ; *** ART Parameters ***
11080    SelectPortrait         = SNTankHunter_L
11081    ButtonImage            = SNTankHunter
11082    
11083    UpgradeCameo1 = Upgrade_Nationalism
11084    ;UpgradeCameo2 = NONE
11085    ;UpgradeCameo3 = NONE
11086    ;UpgradeCameo4 = NONE
11087    ;UpgradeCameo5 = NONE
11088  
11089    Draw = W3DModelDraw ModuleTag_01
11090      OkToChangeModelColor = Yes
11091    
11092    
11093      DefaultConditionState
11094        Model             = NIMSST_SKN
11095        IdleAnimation     = NIMSST_SKL.NIMSST_STA 0 30
11096        IdleAnimation     = NIMSST_SKL.NIMSST_IDA
11097        IdleAnimation     = NIMSST_SKL.NIMSST_IDB
11098        AnimationMode     = ONCE
11099        AnimationSpeedFactorRange = 0.8 1.2
11100        TransitionKey     = TRANS_Stand
11101        WeaponMuzzleFlash = PRIMARY MuzzleFX
11102        WeaponFireFXBone  = PRIMARY Muzzle
11103        WeaponLaunchBone  = PRIMARY Muzzle
11104        WeaponLaunchBone  = SECONDARY Muzzle
11105      End
11106      AliasConditionState = REALLYDAMAGED
11107  
11108      ConditionState      = FIRING_A 
11109        Animation         = NIMSST_SKL.NIMSST_ATA 
11110        AnimationMode     = ONCE
11111        TransitionKey     = TRANS_START_FIRING
11112      End
11113      AliasConditionState = REALLYDAMAGED FIRING_A
11114      
11115      ConditionState      = BETWEEN_FIRING_SHOTS_A
11116        Animation         = NIMSST_SKL.NIMSST_STA
11117        AnimationMode     = ONCE
11118        ; this is basically a trick: this guy has a nontrivial animation for firing,
11119        ; and a long recycle time between shots. we want him to finish his fire animation
11120        ; (unless he's ordered to do something else), so this is just a handy trick that
11121        ; says, "if the previous state had this transition key, allow it to finish before
11122        ; switching to us, if possible".
11123        WaitForStateToFinishIfPossible = TRANS_START_FIRING
11124      End
11125      AliasConditionState = REALLYDAMAGED BETWEEN_FIRING_SHOTS_A
11126  
11127      ConditionState      = MOVING
11128        Animation         = NIMSST_SKL.NIMSST_RNA 20
11129        AnimationMode     = LOOP
11130        Flags             = RANDOMSTART
11131        TransitionKey     = None
11132        ParticleSysBone   = None InfantryDustTrails
11133      End
11134      AliasConditionState = REALLYDAMAGED MOVING
11135  
11136      ConditionState      = RELOADING_A
11137        Animation         = NIMSST_SKL.NIMSST_ATA 10
11138        AnimationMode     = ONCE
11139        ;WeaponLaunchBone = PRIMARY WeaponA
11140      End
11141      AliasConditionState = MOVING RELOADING_A
11142      AliasConditionState = REALLYDAMAGED MOVING RELOADING_A
11143  
11144      ConditionState      = DYING
11145        Animation         = NIMSST_SKL.NIMSST_DTA
11146        Animation         = NIMSST_SKL.NIMSST_DTB
11147        AnimationSpeedFactorRange = 0.9 1.25
11148        AnimationMode     = ONCE
11149        TransitionKey     = TRANS_Dying
11150      End
11151  
11152      TransitionState     = TRANS_Dying TRANS_Flailing
11153        Animation         = NIMSST_SKL.NIMSST_ADTD1
11154        AnimationMode     = ONCE
11155      End
11156  
11157      ConditionState      = DYING EXPLODED_FLAILING
11158        Animation         = NIMSST_SKL.NIMSST_ADTD2
11159        AnimationMode     = LOOP
11160        TransitionKey     = TRANS_Flailing
11161      End
11162  
11163      ConditionState      = DYING EXPLODED_BOUNCING
11164        Animation         = NIMSST_SKL.NIMSST_ADTD3
11165        AnimationMode     = ONCE
11166        TransitionKey     = None
11167      End
11168  
11169      ;PARACHUTING ANIMATIONS
11170      ConditionState      = FREEFALL
11171        Animation         = NIMSST_SKL.NIMSST_POP
11172        AnimationMode     = ONCE
11173        TransitionKey     = TRANS_Falling
11174      End
11175      AliasConditionState = FREEFALL REALLYDAMAGED
11176      AliasConditionState = FREEFALL DYING
11177      
11178      ConditionState      = PARACHUTING
11179        Animation         = NIMSST_SKL.NIMSST_PHG
11180        AnimationMode     = LOOP
11181        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
11182        TransitionKey     = TRANS_Chute
11183      End
11184      AliasConditionState = PARACHUTING REALLYDAMAGED
11185      AliasConditionState = PARACHUTING DYING
11186      
11187     ; TransitionState     = TRANS_Falling TRANS_Chute
11188     ;   Animation         = NIMSST_SKL.NIMSST_POP
11189     ;   AnimationMode     = ONCE
11190     ;   Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
11191     ; End
11192      
11193      TransitionState     = TRANS_Chute TRANS_Stand
11194        Animation         = NIMSST_SKL.NIMSST_PDN
11195        AnimationMode     = ONCE
11196      End
11197  
11198      ;SURRENDER ANIMATIONS
11199  ; surrender is cut. sorry. (srj)
11200  ;    ConditionState      = SURRENDER
11201  ;      Animation         = NIMSST_SKL.NIMSST_SST
11202  ;      AnimationMode     = ONCE
11203  ;      TransitionKey     = TRANS_SurrenderKneeling
11204  ;    End
11205  ;    ;ConditionState     = SURRENDER MOVING
11206  ;    ;  Animation        = NIMSST_SKL.NIMSST_SWKB
11207  ;    ;  AnimationMode    = ONCE
11208  ;    ;  TransitionKey    = TRANS_SurrenderMoving
11209  ;    ;End
11210  ;    TransitionState     = TRANS_Stand TRANS_SurrenderKneeling
11211  ;      Animation         = NIMSST_SKL.NIMSST_SUR
11212  ;      AnimationMode     = ONCE
11213  ;    End
11214  
11215    End
11216  
11217  
11218    ; ***DESIGN parameters ***
11219    DisplayName      = OBJECT:TankHunter
11220    Side = China
11221    EditorSorting = INFANTRY
11222    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
11223    WeaponSet
11224      Conditions = None 
11225      Weapon = PRIMARY ChinaInfantryTankHunterMissileLauncher
11226    End
11227    ArmorSet
11228      Conditions      = None
11229      Armor           = HumanArmor
11230      DamageFX        = InfantryDamageFX
11231    End
11232    VisionRange = 150
11233    ShroudClearingRange = 400
11234    Prerequisites
11235      Object = ChinaBarracks
11236    End
11237    BuildCost = 300
11238    BuildTime = 5.0          ;in seconds    
11239  
11240    ExperienceValue = 20 20 40 60    ;Experience point value at each level
11241    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
11242    IsTrainable = Yes             ;Can gain experience
11243    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
11244    CommandSet      = ChinaInfantryTankHunterCommandSet
11245  
11246    ; *** AUDIO Parameters ***
11247    VoiceSelect = TankHunterVoiceSelect
11248    VoiceMove = TankHunterVoiceMove
11249    VoiceAttack = TankHunterVoiceAttack
11250    VoiceAttackAir = TankHunterVoiceAttack
11251    SoundDie = TankHunterVoiceDie
11252    SoundDieFire = DieByFireChina
11253    SoundDieToxin = DieByToxinChina
11254    VoiceGuard = TankHunterVoiceMove
11255  ; surrender is cut. sorry. (srj)
11256  ;  VoiceSurrender = TankHunterVoiceSurrender
11257    VoiceFear = TankHunterVoiceFear
11258    UnitSpecificSounds
11259      VoiceCreate          = TankHunterVoiceCreate
11260      VoiceGarrison = TankHunterVoiceGarrison
11261      VoiceEnter = TankHunterVoiceMove
11262      VoiceEnterHostile = TankHunterVoiceMove
11263      VoiceGetHealed      = TankHunterVoiceMove
11264    End
11265  
11266    ; *** ENGINEERING Parameters ***
11267    RadarPriority = UNIT
11268    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
11269  
11270    Body = ActiveBody ModuleTag_02
11271      MaxHealth       = 100.0
11272      InitialHealth   = 100.0
11273    End
11274  
11275    Behavior = AIUpdateInterface ModuleTag_03
11276      AutoAcquireEnemiesWhenIdle = Yes
11277    End
11278    Locomotor = SET_NORMAL MissileDefenderLocomotor
11279    Behavior = HordeUpdate ModuleTag_04
11280      UpdateRate = 1000    ; how often to recheck horde status (msec)
11281      RubOffRadius = 60    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
11282      Radius = 30          ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
11283      KindOf = INFANTRY    ; what KindOf's must match to count towards horde-ness
11284      AlliesOnly = Yes     ; do we only count allies towards horde status? 
11285      ExactMatch = No      ; do we only count units of our exact same type towards horde status? (overrides kindof)
11286      Count = 5            ; how many units must be within Radius to grant us horde-ness
11287      Action = HORDE       ; when horde-ing, grant us the HORDE bonus
11288    End
11289    Behavior = PhysicsBehavior ModuleTag_05
11290      Mass = 5.0
11291    End
11292  
11293    Behavior = SpecialAbility ModuleTag_07
11294      SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack
11295      UpdateModuleStartsAttack = Yes
11296      InitiateSound = TankHunterVoiceTNT
11297    End
11298    Behavior = SpecialAbilityUpdate ModuleTag_08
11299      SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack
11300      StartAbilityRange = 5.0
11301      PreparationTime = 0
11302      SpecialObject = TNTStickyBomb
11303      MaxSpecialObjects = 8
11304      SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
11305      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
11306      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
11307      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
11308    End
11309  
11310   
11311    Behavior = SquishCollide ModuleTag_09
11312      ;nothing
11313    End
11314  
11315  
11316  ; --- begin Death modules ---
11317    Behavior = SlowDeathBehavior ModuleTag_Death01
11318      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
11319      SinkDelay           = 3000
11320      SinkRate            = 0.5     ; in Dist/Sec
11321      DestructionDelay    = 8000
11322      FX                  = INITIAL FX_GIDie
11323    End
11324    Behavior = SlowDeathBehavior ModuleTag_Death02
11325      DeathTypes          = NONE +CRUSHED +SPLATTED
11326      SinkDelay           = 3000
11327      SinkRate            = 0.5     ; in Dist/Sec
11328      DestructionDelay    = 8000
11329      FX                  = INITIAL FX_GIDieCrushed
11330    End
11331    Behavior = SlowDeathBehavior ModuleTag_Death03
11332      DeathTypes          = NONE +EXPLODED
11333      SinkDelay           = 3000
11334      SinkRate            = 0.5     ; in Dist/Sec
11335      DestructionDelay    = 8000
11336      FX                  = INITIAL FX_GIDie
11337      FlingForce          = 8
11338      FlingForceVariance  = 3
11339      FlingPitch          = 60
11340      FlingPitchVariance  = 10
11341    End
11342    Behavior = SlowDeathBehavior ModuleTag_Death04
11343      DeathTypes          = NONE +BURNED
11344      DestructionDelay    = 0
11345      FX                  = INITIAL FX_GIDie
11346      OCL                 = INITIAL OCL_FlamingInfantry
11347    End
11348    Behavior = SlowDeathBehavior ModuleTag_Death05
11349      DeathTypes          = NONE +POISONED
11350      DestructionDelay    = 0
11351      FX                  = INITIAL FX_GIDie
11352      OCL                 = INITIAL OCL_ToxicInfantry
11353    End
11354    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
11355      DeathTypes          = NONE +POISONED_BETA
11356      DestructionDelay    = 0
11357      FX                  = INITIAL FX_GIDie
11358      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
11359    End
11360  ; --- end Death modules ---
11361  
11362    Behavior = PoisonedBehavior ModuleTag_12
11363      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
11364      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
11365    End
11366   
11367    Geometry = CYLINDER
11368    GeometryMajorRadius = 10.0
11369    GeometryMinorRadius = 10.0
11370    GeometryHeight = 12.0
11371    GeometryIsSmall = Yes
11372    Shadow = SHADOW_DECAL
11373    ShadowSizeX = 14;
11374    ShadowSizeY = 14;
11375    ShadowTexture = ShadowI;
11376    BuildCompletion = APPEARS_AT_RALLY_POINT
11377  
11378  End
11379  
11380  ;------------------------------------------------------------------------------
11381  Object TNTStickyBomb ;Created by Chinese Tank Hunters
11382  
11383    ;No drawable because it's invisible
11384    ; *** ART Parameters ***
11385  
11386    ; ***DESIGN parameters ***
11387    Side = China
11388    EditorSorting   = SYSTEM
11389    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
11390    VisionRange = 75.0  ;Allow the stickybomb to show itself to user?
11391    ShroudClearingRange = 75
11392    ArmorSet
11393      Conditions      = None
11394      Armor           = InvulnerableAllArmor
11395    End
11396  
11397    ; *** AUDIO Parameters ***
11398    SoundDie = BombTruckDefaultBombDetonation
11399    UnitSpecificSounds
11400      UnitBombPing = BombTickTimed
11401    End
11402  
11403    ; *** ENGINEERING Parameters ***
11404    RadarPriority = NOT_ON_RADAR
11405    KindOf = PROJECTILE MINE NO_COLLIDE
11406  
11407    Behavior = PhysicsBehavior ModuleTag_01
11408      Mass = 5
11409    End
11410  
11411    ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
11412    Behavior = LifetimeUpdate ModuleTag_02
11413      MinLifetime = 10000   ; min lifetime in msec
11414      MaxLifetime = 10000   ; max lifetime in msec
11415    End
11416  
11417    Behavior = StickyBombUpdate ModuleTag_03
11418      ; nothing
11419    End
11420  
11421    Behavior = SlowDeathBehavior ModuleTag_04
11422      DestructionDelay    = 1
11423      FX                  = INITIAL WeaponFX_TNTStickyBombDetonation
11424      Weapon              = FINAL   TNTDetonationWeapon
11425      ;PreferredAgainst    = PRIMARY VEHICLE
11426    End
11427  
11428    Body = HighlanderBody ModuleTag_NewBody
11429      MaxHealth = 1.0
11430      InitialHealth = 1.0
11431    End
11432  
11433  End
11434  
11435  ;------------------------------------------------------------------------------
11436  Object RemoteC4Charge ;Created by ColonelBurton
11437  
11438    ;No drawable because it's invisible
11439    ; *** ART Parameters ***
11440  
11441    ; ***DESIGN parameters ***
11442    Side = America
11443    EditorSorting   = SYSTEM
11444    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
11445    VisionRange = 75.0  ;Allow the stickybomb to show itself to user?
11446    ShroudClearingRange = 75
11447    ArmorSet
11448      Conditions      = None
11449      Armor           = InvulnerableAllArmor
11450    End
11451  
11452    ; *** AUDIO Parameters ***
11453    SoundDie = RemoteDemoChargeExplosion
11454    UnitSpecificSounds
11455      UnitBombPing = BombTickRemote
11456    End
11457  
11458    ; *** ENGINEERING Parameters ***
11459    RadarPriority = NOT_ON_RADAR
11460    KindOf =  PROJECTILE MINE NO_COLLIDE
11461  
11462    ;Body = ActiveBody ModuleTag_02
11463    ;  MaxHealth = 1.0
11464    ;  InitialHealth = 1.0
11465    ;End
11466  
11467    Body = HighlanderBody ModuleTag_NewBody
11468      MaxHealth = 1.0
11469      InitialHealth = 1.0
11470    End
11471  
11472    Behavior = StealthUpdate ModuleTag_03
11473      StealthDelay                = 0                  ; msec
11474      StealthForbiddenConditions  = NONE
11475      FriendlyOpacityMin          = 50.0%
11476      InnateStealth               = Yes
11477    End
11478  
11479    Behavior = StickyBombUpdate ModuleTag_04
11480      ;Keeps it attached properly to the intended target should it move.
11481    End
11482  
11483  
11484    Behavior = SlowDeathBehavior ModuleTag_05
11485      DestructionDelay = 1
11486      FX                  = INITIAL WeaponFX_TNTStickyBombDetonation
11487      Weapon              = FINAL   BurtonC4ChargeWeapon
11488    End
11489  
11490    Geometry            = CYLINDER
11491    GeometryMajorRadius = 0.0
11492    GeometryHeight      = 0.0
11493    GeometryIsSmall     = No
11494  
11495  End
11496  
11497  ;------------------------------------------------------------------------------
11498  Object TimedC4Charge ;Created by Colonel Burton
11499  
11500    ;No drawable because it's invisible
11501    ; *** ART Parameters ***
11502  
11503    ; ***DESIGN parameters ***
11504    Side = America
11505    EditorSorting   = SYSTEM
11506    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
11507    VisionRange = 75.0  ;Allow the stickybomb to show itself to user?
11508    ShroudClearingRange = 75
11509    ArmorSet
11510      Conditions      = None
11511      Armor           = InvulnerableAllArmor
11512    End
11513  
11514    ; *** AUDIO Parameters ***
11515    SoundDie = RemoteDemoChargeExplosion
11516    UnitSpecificSounds
11517      UnitBombPing = BombTickTimed
11518    End
11519  
11520    ; *** ENGINEERING Parameters ***
11521    RadarPriority = NOT_ON_RADAR
11522    KindOf =  PROJECTILE MINE NO_COLLIDE
11523  
11524    ;Body = ActiveBody ModuleTag_02
11525    ;  MaxHealth = 1.0
11526    ;  InitialHealth = 1.0
11527    ;End
11528    Body = HighlanderBody ModuleTag_NewBody
11529      MaxHealth = 1.0
11530      InitialHealth = 1.0
11531    End
11532  
11533    Behavior = StealthUpdate ModuleTag_03
11534      StealthDelay                = 0                  ; msec
11535      StealthForbiddenConditions  = NONE
11536      FriendlyOpacityMin          = 50.0%
11537      InnateStealth               = Yes
11538    End
11539  
11540    ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
11541    Behavior = LifetimeUpdate ModuleTag_04
11542      MinLifetime = 20000   ; min lifetime in msec
11543      MaxLifetime = 20000   ; max lifetime in msec
11544    End
11545  
11546    Behavior = StickyBombUpdate ModuleTag_05
11547      ;Keeps it attached properly to the intended target should it move.
11548    End
11549  
11550    Behavior = SlowDeathBehavior ModuleTag_06
11551      DestructionDelay = 1
11552      FX                  = INITIAL WeaponFX_TNTStickyBombDetonation
11553      Weapon              = FINAL   BurtonC4ChargeWeapon
11554    End
11555  
11556    Geometry            = CYLINDER
11557    GeometryMajorRadius = 0.0
11558    GeometryHeight      = 0.0
11559    GeometryIsSmall     = No
11560  
11561  End
11562  
11563  ;------------------------------------------------------------------------------
11564  Object DemoTrapDetonationObject ;The explodes-next-frame object when demo trap is triggered.
11565  
11566    ; ***DESIGN parameters ***
11567    Side = GLA
11568    EditorSorting   = SYSTEM
11569    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
11570    VisionRange = 0.0  ;Allow the stickybomb to show itself to user?
11571  
11572    ; *** AUDIO Parameters ***
11573  
11574    ; *** ENGINEERING Parameters ***
11575    RadarPriority = NOT_ON_RADAR
11576    KindOf = PROJECTILE
11577  
11578    Behavior = PhysicsBehavior ModuleTag_01
11579      Mass = 5
11580    End
11581  
11582    ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
11583    Behavior = LifetimeUpdate ModuleTag_02
11584      MinLifetime = 1   ; min lifetime in msec
11585      MaxLifetime = 1   ; max lifetime in msec
11586    End
11587  
11588    Behavior = SlowDeathBehavior ModuleTag_03
11589      DestructionDelay = 1
11590      FX                  = INITIAL WeaponFX_DemoTrapDetonation
11591      Weapon              = FINAL   DemoTrapDetonationWeapon
11592    End
11593  End
11594  
11595  ;------------------------------------------------------------------------------
11596  ; @todo  -- this entire unit is "first pass only" and needs lots of specialization
11597  Object ChinaInfantrySecretPolice
11598  
11599    ; *** ART Parameters ***
11600    Draw = W3DModelDraw ModuleTag_01
11601      OkToChangeModelColor = Yes
11602  
11603      ; @todo srj -- all these states are using placeholder art; need to add anims, etc.
11604      DefaultConditionState
11605        Model = NIHacker
11606      End
11607  
11608    End
11609  
11610    ; ***DESIGN parameters ***
11611    DisplayName      = OBJECT:SecretPolice
11612    Side = China
11613    EditorSorting = INFANTRY
11614    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
11615    WeaponSet
11616      Conditions = None 
11617      Weapon = PRIMARY None
11618    End
11619    ArmorSet
11620      Conditions      = None
11621      Armor           = HumanArmor
11622      DamageFX        = InfantryDamageFX
11623    End
11624    VisionRange = 150
11625    ShroudClearingRange = 150
11626    Prerequisites
11627      Object = ChinaBarracks
11628    End
11629    BuildCost = 100
11630    BuildTime = 3.0          ;in seconds    
11631  
11632    ExperienceValue = 50 100 150 400    ;Experience point value at each level
11633    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
11634    IsTrainable = Yes             ;Can gain experience
11635  
11636    ; *** AUDIO Parameters ***
11637    VoiceSelect = RedGuardVoiceSelect
11638    VoiceMove = RedGuardVoiceMove
11639    VoiceAttack = RedGuardVoiceAttack
11640    SoundDie = RedGuardVoiceDie
11641    SoundDieFire = DieByFireChina
11642    SoundDieToxin = DieByToxinChina
11643  
11644  
11645    ; *** ENGINEERING Parameters ***
11646    RadarPriority = UNIT
11647    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
11648  
11649    Body = ActiveBody ModuleTag_02
11650      MaxHealth       = 50.0
11651      InitialHealth   = 50.0
11652    End
11653  
11654    Behavior = AIUpdateInterface ModuleTag_03
11655      AutoAcquireEnemiesWhenIdle = Yes
11656    End
11657    Locomotor = SET_NORMAL BasicHumanLocomotor
11658    Behavior = PhysicsBehavior ModuleTag_04
11659      Mass = 5.0
11660    End
11661    Behavior = SlowDeathBehavior ModuleTag_05
11662      SinkDelay = 3000
11663      SinkRate = 0.5     ; in Dist/Sec
11664      DestructionDelay = 8000
11665    End
11666  
11667   
11668    Behavior = SquishCollide ModuleTag_06
11669      ;nothing
11670    End
11671  
11672  
11673    Behavior = FXListDie ModuleTag_07
11674      DeathTypes = ALL -CRUSHED -SPLATTED
11675      DeathFX = FX_GIDie
11676    End
11677    Behavior = FXListDie ModuleTag_08
11678      DeathTypes = NONE +CRUSHED +SPLATTED
11679      DeathFX = FX_GIDieCrushed
11680    End
11681  
11682    Behavior = PoisonedBehavior ModuleTag_09
11683      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
11684      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
11685    End
11686   
11687    Geometry = CYLINDER
11688    GeometryMajorRadius = 10.0
11689    GeometryMinorRadius = 10.0
11690    GeometryHeight = 12.0
11691    GeometryIsSmall = Yes
11692    Shadow = SHADOW_DECAL
11693    ShadowSizeX = 14;
11694    ShadowSizeY = 14;
11695    ShadowTexture = ShadowI;
11696    BuildCompletion = APPEARS_AT_RALLY_POINT
11697  
11698  End
11699  
11700  ;------------------------------------------------------------------------------
11701  Object GLAInfantryWorker
11702  
11703    ; *** ART Parameters ***
11704    SelectPortrait         = SUWorker_L
11705    ButtonImage            = SUWorker
11706    
11707    ;UpgradeCameo1 = NONE
11708    ;UpgradeCameo2 = NONE
11709    ;UpgradeCameo3 = NONE
11710    ;UpgradeCameo4 = NONE
11711    ;UpgradeCameo5 = NONE
11712  
11713    Draw = W3DModelDraw ModuleTag_01
11714      OkToChangeModelColor = Yes
11715  
11716      DefaultConditionState
11717        Model         = UIWRKR_SKN
11718        IdleAnimation = UIWRKR_SKL.UIWRKR_STA 0 9
11719        IdleAnimation = UIWRKR_SKL.UIWRKR_IDA
11720        AnimationMode = ONCE
11721        TransitionKey = TRANS_Stand
11722      End
11723  
11724      ConditionState  = MOVING
11725        Animation     = UIWRKR_SKL.UIWRKR_RNA 16
11726        AnimationMode = LOOP
11727        Flags         = RANDOMSTART
11728        TransitionKey = TRANS_Moving
11729        ParticleSysBone = None InfantryDustTrails
11730      End
11731      ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
11732      ; since we flip the bit once we get pretty close to the target. but it looks
11733      ; funky to do the construction animation while moving. 
11734      ; so just use the normal move animation in that case.
11735      AliasConditionState = ACTIVELY_CONSTRUCTING MOVING
11736  
11737      ConditionState = ATTACKING
11738        ShowSubObject = MINED_SKIN
11739        Animation = UIWRKR_SKL.UIWRKR_MS
11740        AnimationMode = LOOP
11741        Flags = RANDOMSTART
11742        TransitionKey = TRANS_MetalDetector_Standing
11743      End
11744  
11745      ConditionState = MOVING ATTACKING
11746        ShowSubObject = MINED_SKIN
11747        Animation = UIWRKR_SKL.UIWRKR_MSW 50
11748        AnimationMode = LOOP
11749        Flags = RANDOMSTART
11750        TransitionKey = TRANS_MetalDetector_Moving
11751        ParticleSysBone = None InfantryDustTrails
11752      End
11753      AliasConditionState = MOVING ATTACKING CARRYING
11754  
11755      TransitionState = TRANS_Stand TRANS_MetalDetector_Standing    ;STANDING -> ATTACKING
11756        ShowSubObject = MINED_SKIN
11757        Animation     = UIWRKR_SKL.UIWRKR_TRB1;take out standing
11758        AnimationMode = ONCE
11759      End
11760      TransitionState = TRANS_MetalDetector_Standing TRANS_Stand    ;ATTACKING -> STANDING
11761        ShowSubObject = MINED_SKIN
11762        Animation     = UIWRKR_SKL.UIWRKR_TRB2;put away standing
11763        AnimationMode = ONCE
11764      End
11765  
11766      TransitionState = TRANS_Carry TRANS_MetalDetector_Standing    ;CARRYING -> ATTACKING
11767        ShowSubObject = MINED_SKIN
11768        Animation     = UIWRKR_SKL.UIWRKR_TRB1;take out standing
11769        AnimationMode = ONCE
11770      End
11771      TransitionState = TRANS_MetalDetector_Standing TRANS_Carry    ;ATTACKING -> CARRYING
11772        ShowSubObject = MINED_SKIN
11773        Animation     = UIWRKR_SKL.UIWRKR_TRB2;put away standing
11774        AnimationMode = ONCE
11775      End
11776      TransitionState = TRANS_Carry TRANS_MetalDetector_Moving      ;CARRYING -> MOVING ATTACKING
11777        ShowSubObject = MINED_SKIN
11778        Animation     = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
11779        AnimationMode = ONCE
11780        AnimationSpeedFactorRange = 2.0 2.0
11781      End
11782  
11783      TransitionState = TRANS_MetalDetector_Moving TRANS_Stand      ;MOVING ATTACKING -> STANDING
11784        ShowSubObject = MINED_SKIN
11785        Animation     = UIWRKR_SKL.UIWRKR_TRB2;put away moving
11786        AnimationMode = ONCE
11787      End
11788      TransitionState = TRANS_Stand TRANS_MetalDetector_Moving      ;STANDING -> MOVING ATTACKING
11789        ShowSubObject = MINED_SKIN
11790        Animation     = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
11791        AnimationMode = ONCE
11792        AnimationSpeedFactorRange = 2.0 2.0
11793      End
11794  
11795      TransitionState = TRANS_Moving TRANS_MetalDetector_Standing   ;MOVING -> ATTACKING [STANDING]
11796        ShowSubObject = MINED_SKIN
11797        Animation     = UIWRKR_SKL.UIWRKR_TRB1;take out standing
11798        AnimationMode = ONCE
11799      End
11800      TransitionState = TRANS_MetalDetector_Standing TRANS_Moving   ;ATTACKING [STANDING] -> MOVING
11801        ShowSubObject = MINED_SKIN
11802        Animation     = UIWRKR_SKL.UIWRKR_TRC2;put away moving [NEW NON-SKATING ANIMATION]
11803        AnimationMode = ONCE
11804        AnimationSpeedFactorRange = 2.0 2.0
11805      End
11806  
11807      TransitionState = TRANS_Moving TRANS_MetalDetector_Moving     ;MOVING -> MOVING ATTACKING
11808        ShowSubObject = MINED_SKIN
11809        Animation     = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
11810        AnimationMode = ONCE
11811        AnimationSpeedFactorRange = 2.0 2.0
11812      End
11813      TransitionState = TRANS_MetalDetector_Moving TRANS_Moving     ;MOVING ATTACKING -> MOVING
11814        ShowSubObject = MINED_SKIN
11815        Animation     = UIWRKR_SKL.UIWRKR_TRC2;put away moving [NEW NON-SKATING ANIMATION]
11816        AnimationMode = ONCE
11817        AnimationSpeedFactorRange = 2.0 2.0
11818      End
11819  
11820  
11821      ConditionState = MOVING CARRYING
11822        ShowSubObject = BOX
11823        Animation = UIWRKR_SKL.UIWRKR_CARY 12
11824        AnimationMode = LOOP
11825        Flags = RANDOMSTART
11826        TransitionKey = TRANS_Carry
11827        ParticleSysBone = None InfantryDustTrails
11828      End
11829      ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
11830      ; since we flip the bit once we get pretty close to the target. but it looks
11831      ; funky to do the construction animation while moving. 
11832      ; so just use the normal move animation in that case.
11833      AliasConditionState = ACTIVELY_CONSTRUCTING MOVING CARRYING
11834  
11835      ConditionState = CARRYING
11836        ShowSubObject = BOX
11837        Animation = UIWRKR_SKL.UIWRKR_CARST 30 
11838        AnimationMode = LOOP
11839        Flags = RANDOMSTART
11840        TransitionKey = TRANS_Carry
11841      End
11842  
11843      ConditionState = DYING
11844        Animation = UIWRKR_SKL.UIWRKR_DTA
11845        AnimationMode = ONCE
11846        TransitionKey = TRANS_Dying
11847      End
11848      AliasConditionState = DYING CARRYING
11849  
11850      TransitionState = TRANS_Dying TRANS_Flailing
11851        Animation = UIWRKR_SKL.UIWRKR_ADTE1
11852        AnimationMode = ONCE
11853      End
11854  
11855      ConditionState = DYING EXPLODED_FLAILING
11856        Animation = UIWRKR_SKL.UIWRKR_ADTE2
11857        AnimationMode = LOOP
11858        TransitionKey = TRANS_Flailing
11859      End
11860  
11861      ConditionState = DYING EXPLODED_BOUNCING
11862        Animation = UIWRKR_SKL.UIWRKR_ADTE3
11863        AnimationMode = ONCE
11864        TransitionKey = None
11865      End
11866  
11867      ConditionState  = SPECIAL_CHEERING
11868        Animation     = UIWRKR_SKL.UIWRKR_CHA
11869        AnimationMode = ONCE
11870      End
11871      
11872      ConditionState  = ACTIVELY_CONSTRUCTING
11873        Animation     = UIWRKR_SKL.UIWRKR_BDA
11874        AnimationMode = LOOP
11875        TransitionKey = TRANS_Constructing
11876      End
11877      AliasConditionState = ACTIVELY_CONSTRUCTING CARRYING
11878  
11879      ; --------------------
11880  
11881      TransitionState = TRANS_Stand TRANS_Carry
11882        ShowSubObject = BOX
11883        Animation     = UIWRKR_SKL.UIWRKR_PIK
11884        AnimationMode = ONCE
11885      End
11886  
11887      TransitionState = TRANS_Carry TRANS_Stand
11888        ShowSubObject = BOX
11889        Animation     = UIWRKR_SKL.UIWRKR_PIK
11890        AnimationMode = ONCE_BACKWARDS
11891        Flags         = START_FRAME_LAST
11892      End
11893      
11894      TransitionState = TRANS_Stand TRANS_Constructing
11895        Animation     = UIWRKR_SKL.UIWRKR_TRA1
11896        AnimationMode = ONCE
11897      End
11898  
11899      TransitionState = TRANS_Constructing TRANS_Stand
11900        Animation     = UIWRKR_SKL.UIWRKR_TRA2
11901        AnimationMode = ONCE
11902      End
11903    End
11904  
11905    ; ***DESIGN parameters ***
11906    DisplayName = OBJECT:Worker
11907    Side = GLA
11908    EditorSorting = INFANTRY
11909    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
11910  
11911  
11912    WeaponSet
11913      Conditions = None 
11914      Weapon = PRIMARY None
11915    End
11916    WeaponSet
11917      Conditions = MINE_CLEARING_DETAIL 
11918      Weapon = PRIMARY WorkerMineDisarmingWeapon
11919    End
11920  
11921  
11922    ArmorSet
11923      Conditions      = None
11924      Armor           = HumanArmor
11925      DamageFX        = InfantryDamageFX
11926    End
11927    VisionRange = 100
11928    ShroudClearingRange = 200
11929   ;Prerequisites
11930   ;  Object = GLABarracks GLASupplyStash ;commented out, or else you can't build from Con Yard as Dozer.
11931   ;End
11932    BuildCost = 200
11933    BuildTime = 5.0          ;in seconds    
11934    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
11935    CommandSet = GLAWorkerCommandSet
11936  
11937    ; *** AUDIO Parameters ***
11938    VoiceSelect = WorkerVoiceSelect
11939    VoiceMove = WorkerVoiceMove
11940    VoiceAttack = WorkerVoiceMove
11941    SoundDie = WorkerVoiceDie
11942    SoundDieFire = DieByFireGLA
11943    SoundDieToxin = DieByToxinChina
11944    VoiceGuard = WorkerVoiceMove
11945  ; surrender is cut. sorry. (srj)
11946  ;  VoiceSurrender = WorkerVoiceSurrender
11947    VoiceFear = WorkerVoiceFear
11948    VoiceTaskComplete = WorkerVoiceBuildComplete
11949    UnitSpecificSounds
11950      VoiceEnter = WorkerVoiceMove
11951      VoiceEnterHostile = WorkerVoiceMove
11952      VoiceGarrison     = WorkerVoiceGarrison
11953      VoiceCreate       = WorkerVoiceCreate
11954      VoiceSupply       = WorkerVoiceSupply
11955      VoiceNoBuild      = WorkerVoiceBuildNot
11956      VoiceRepair       = WorkerVoiceRepair
11957      VoiceDisarm       = WorkerVoiceClearMine
11958      VoiceBuildResponse = WorkerVoiceBuild
11959      VoiceGetHealed      = WorkerVoiceMove
11960  
11961    End
11962  
11963    ; *** ENGINEERING Parameters ***
11964    RadarPriority = UNIT
11965    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER DOZER HARVESTER SCORE
11966  
11967    Body = ActiveBody ModuleTag_02
11968      MaxHealth       = 140.0
11969      InitialHealth   = 140.0
11970    End
11971  
11972    Behavior = WorkerAIUpdate ModuleTag_03
11973      RepairHealthPercentPerSecond  = 2%    ; % of max health to repair each second
11974      BoredTime                     = 5000  ; in milliseconds
11975      BoredRange                    = 150   ; when bored, we look this far away to do something 
11976      MaxBoxes                      = 1
11977      SupplyCenterActionDelay       = 150 ;400 ; ms for whole thing (one transaction)
11978      SupplyWarehouseActionDelay    = 150 ;400 ;ms per box (many small transactions)
11979      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)
11980      SuppliesDepletedVoice = WorkerVoiceSuppliesDepleted
11981      ; the only "enemies" that workers can acquire are mines, to be disarmed...
11982      AutoAcquireEnemiesWhenIdle    = Yes
11983    End
11984    Locomotor = SET_NORMAL FastHumanLocomotor
11985    Behavior = PhysicsBehavior ModuleTag_04
11986      Mass = 5.0
11987    End
11988   
11989    Behavior = SquishCollide ModuleTag_06
11990      ;nothing
11991    End
11992  
11993  ; --- begin Death modules ---
11994    Behavior = SlowDeathBehavior ModuleTag_Death01
11995      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
11996      SinkDelay           = 3000
11997      SinkRate            = 0.5     ; in Dist/Sec
11998      DestructionDelay    = 8000
11999      FX                  = INITIAL FX_GIDie
12000    End
12001    Behavior = SlowDeathBehavior ModuleTag_Death02
12002      DeathTypes          = NONE +CRUSHED +SPLATTED
12003      SinkDelay           = 3000
12004      SinkRate            = 0.5     ; in Dist/Sec
12005      DestructionDelay    = 8000
12006      FX                  = INITIAL FX_GIDieCrushed
12007    End
12008    Behavior = SlowDeathBehavior ModuleTag_Death03
12009      DeathTypes          = NONE +EXPLODED
12010      SinkDelay           = 3000
12011      SinkRate            = 0.5     ; in Dist/Sec
12012      DestructionDelay    = 8000
12013      FX                  = INITIAL FX_GIDie
12014      FlingForce          = 8
12015      FlingForceVariance  = 3
12016      FlingPitch          = 60
12017      FlingPitchVariance  = 10
12018    End
12019    Behavior = SlowDeathBehavior ModuleTag_Death04
12020      DeathTypes          = NONE +BURNED
12021      DestructionDelay    = 0
12022      FX                  = INITIAL FX_GIDie
12023      OCL                 = INITIAL OCL_FlamingInfantry
12024    End
12025    Behavior = SlowDeathBehavior ModuleTag_Death05
12026      DeathTypes          = NONE +POISONED
12027      DestructionDelay    = 0
12028      FX                  = INITIAL FX_GIDie
12029      OCL                 = INITIAL OCL_ToxicInfantry
12030    End
12031    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
12032      DeathTypes          = NONE +POISONED_BETA
12033      DestructionDelay    = 0
12034      FX                  = INITIAL FX_GIDie
12035      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
12036    End
12037  ; --- end Death modules ---
12038  
12039    Behavior = StealthDetectorUpdate ModuleTag_12
12040      DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
12041      ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
12042      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
12043      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
12044      ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
12045    End
12046  
12047    Behavior = PoisonedBehavior ModuleTag_13
12048      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
12049      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
12050    End
12051   
12052    ;----------------------- Command Set Changes -----------------------
12053    Behavior = CommandSetUpgrade ModuleTag_commandup
12054      CommandSet = GLAWorkerCommandSetTech
12055      TriggeredBy   = Upgrade_GLAWorkerUpgrade
12056    End
12057    Behavior = CommandSetUpgrade ModuleTag_commandup2
12058      CommandSet = GLAWorkerCommandSet
12059      TriggeredBy   = Upgrade_GLAWorkerUpgradeDefault
12060    End
12061    ; releases the upgrade otherwise you cannot switch between them since they've already been purchased
12062    Behavior = ObjectCreationUpgrade ModuleTag_commandup3
12063      UpgradeObject = OCL_GLACommandsetupgraderelease
12064      TriggeredBy   = Upgrade_GLAWorkerUpgrade Upgrade_GLAWorkerUpgradeDefault
12065    End
12066    ;------------------------------------------------------------------
12067  
12068    Behavior = ProductionUpdate ModuleTag_17
12069      ;MaxQueueEntries = 1
12070    End
12071  
12072    Geometry = CYLINDER
12073    GeometryMajorRadius = 10.0
12074    GeometryMinorRadius = 10.0
12075    GeometryHeight = 12.0
12076    GeometryIsSmall = Yes
12077    Shadow = SHADOW_DECAL
12078    ShadowSizeX = 14;
12079    ShadowSizeY = 14;
12080    ShadowTexture = ShadowI;
12081    BuildCompletion = APPEARS_AT_RALLY_POINT
12082  
12083  End
12084  
12085  ;------------------------------------------------------------------------------
12086  ; Also known as the Ambulance
12087  Object AmericaVehicleMedic
12088  
12089    ; *** ART Parameters ***
12090    SelectPortrait         = SAAmbulance_L
12091    ButtonImage            = SAAmbulance
12092    
12093    UpgradeCameo1 = Upgrade_AmericaBattleDrone
12094    UpgradeCameo2 = Upgrade_AmericaScoutDrone
12095    ;UpgradeCameo3 = NONE
12096    ;UpgradeCameo4 = NONE
12097    ;UpgradeCameo5 = NONE
12098    
12099    Draw = W3DTruckDraw ModuleTag_01
12100  
12101      ConditionState = NONE
12102        Model = AVAmbulance
12103        Turret = Turret
12104        TurretPitch = TurretEL
12105        WeaponFireFXBone = PRIMARY WeaponA
12106        WeaponLaunchBone = PRIMARY WeaponA
12107      End
12108      ConditionState       = REALLYDAMAGED
12109        Model              = AVAmbulance_D
12110        Turret = Turret
12111        TurretPitch = TurretEL
12112        WeaponFireFXBone = PRIMARY WeaponA
12113        WeaponLaunchBone = PRIMARY WeaponA
12114      End      
12115      
12116      ConditionState       = RUBBLE
12117        Model              = AVAmbulance_D
12118      End      
12119      
12120      TrackMarks = EXTireTrack.tga
12121      OkToChangeModelColor = Yes
12122  
12123      Dust = RocketBuggyDust
12124      DirtSpray = RocketBuggyDirtSpray
12125      PowerslideSpray = RocketBuggyDirtPowerSlide
12126  
12127      ; These parameters are only used if the model has a separate suspension, 
12128      ; and the locomotor has HasSuspension = Yes.
12129      LeftFrontTireBone = Tire01
12130      RightFrontTireBone = Tire02
12131      LeftRearTireBone = Tire03
12132      RightRearTireBone = Tire04
12133      TireRotationMultiplier = 0.2        ; this * speed = rotation.
12134      PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
12135  
12136  
12137    End
12138  
12139    ; ***DESIGN parameters ***
12140    DisplayName      = OBJECT:Medic
12141    Side = America
12142    EditorSorting   = VEHICLE
12143    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
12144    WeaponSet 
12145      ;*** Fully automated and driven by the CleanupHazardUpdate ***
12146      Conditions        = None 
12147      Weapon            = PRIMARY AmbulanceCleanHazardWeapon 
12148      AutoChooseSources = PRIMARY NONE
12149    End
12150    ArmorSet
12151      Conditions      = None
12152      Armor           = ToxinTruckArmor 
12153      DamageFX        = TruckDamageFX
12154    End
12155    BuildCost       = 600
12156    BuildTime       = 10.0          ;in seconds    
12157    VisionRange     = 100
12158    ShroudClearingRange = 400
12159    Prerequisites
12160      Object = AmericaWarFactory
12161    End
12162    ExperienceValue    = 50 50 50 50 ;Experience point value at each level
12163    IsTrainable     = No
12164    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
12165    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
12166    CommandSet      = AmericaVehicleAmbulanceCommandSet
12167    
12168    ; *** AUDIO Parameters ***
12169    VoiceSelect = AmbulanceVoiceSelect
12170    VoiceMove = AmbulanceVoiceMove
12171    VoiceGuard = AmbulanceVoiceMove
12172    VoiceAttack = AmbulanceVoiceDetox
12173    SoundMoveStart = HumveeMoveStart
12174    SoundMoveStartDamaged = HumveeMoveStart
12175    SoundEnter = HumveeEnter
12176    SoundExit = HumveeExit
12177  
12178    UnitSpecificSounds
12179      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
12180      VoiceCreate          = AmbulanceVoiceCreate
12181      TurretMoveStart = NoSound
12182      TurretMoveLoop = TurretMoveLoop
12183      ; Required for the W3DTruckDraw module
12184      TruckLandingSound = RocketBuggyLand
12185      TruckPowerslideSound = RocketBuggyPowerslide
12186      VoiceCrush          = AmbulanceVoiceCrush
12187      VoiceEnter = AmbulanceVoiceMove
12188    End
12189  
12190  
12191    ; *** ENGINEERING Parameters ***
12192    RadarPriority = UNIT
12193    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
12194    
12195    Body = ActiveBody ModuleTag_02
12196      MaxHealth       = 240.0
12197      InitialHealth   = 240.0
12198    End
12199  
12200    Behavior = CleanupHazardUpdate ModuleTag_03
12201      WeaponSlot            = PRIMARY
12202      ScanRate              = 1000
12203      ScanRange             = 100.0 ;If this range exceeds the AmbulanceCleanHazardWeapon AttackRange, it'll move!
12204    End
12205  
12206    ;Can be ordered to clean up a larger area with the ability to move around at an extended range.
12207    Behavior = CleanupAreaPower ModuleTag_04
12208      SpecialPowerTemplate          = SpecialAbilityAmbulanceCleanupArea
12209      MaxMoveDistanceFromLocation   = 300.0 ;allows the unit to move around while cleaning up
12210      InitiateSound = AmbulanceVoiceDetox
12211    End
12212  
12213    Behavior = TransportAIUpdate ModuleTag_05
12214     AutoAcquireEnemiesWhenIdle = No  ;CleanupHazardUpdate handles this...
12215     Turret
12216        TurretTurnRate = 180
12217        TurretPitchRate = 180
12218        AllowsPitch = Yes
12219        MinPhysicalPitch = -20 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
12220        TurretFireAngleSweep = PRIMARY 25
12221        ControlledWeaponSlots = PRIMARY
12222      End
12223    End
12224    Locomotor = SET_NORMAL HumveeLocomotor
12225  
12226    Behavior = TransportContain ModuleTag_06
12227      Slots               = 3
12228      HealthRegen%PerSec  = 25
12229      DamagePercentToUnits = 10%
12230      AllowInsideKindOf   = INFANTRY
12231      AllowAlliesInside   = Yes
12232      AllowNeutralInside  = No
12233      AllowEnemiesInside  = No
12234      ExitDelay = 250
12235      NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
12236      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
12237    End
12238  
12239    Behavior = PhysicsBehavior ModuleTag_07
12240      Mass = 50.0
12241    End
12242    Behavior = SlowDeathBehavior ModuleTag_08
12243      DeathTypes = ALL -CRUSHED -SPLATTED
12244      DestructionDelay = 0
12245      FX  = FINAL FX_GenericTankDeathExplosion
12246      OCL = FINAL OCL_FinalAmbulanceDebris
12247    End
12248  
12249    Behavior = ObjectCreationUpgrade ModuleTag_09
12250      UpgradeObject = OCL_AmericanBattleDrone
12251      TriggeredBy   = Upgrade_AmericaBattleDrone
12252      ConflictsWith = Upgrade_AmericaScoutDrone
12253    End
12254    Behavior = ObjectCreationUpgrade ModuleTag_10
12255      UpgradeObject = OCL_AmericanScoutDrone
12256      TriggeredBy   = Upgrade_AmericaScoutDrone
12257      ConflictsWith = Upgrade_AmericaBattleDrone
12258    End
12259    Behavior = ProductionUpdate ModuleTag_11
12260      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
12261    End
12262  
12263    Behavior = DestroyDie ModuleTag_12
12264      DeathTypes = NONE +CRUSHED +SPLATTED
12265    End
12266  
12267    Behavior = FXListDie ModuleTag_13
12268      DeathTypes = NONE +CRUSHED +SPLATTED
12269      DeathFX = FX_CarCrush
12270    End
12271  
12272    Behavior = CreateObjectDie ModuleTag_14
12273      DeathTypes = NONE +CRUSHED +SPLATTED
12274      CreationList = OCL_CrusaderTank_CrushEffect
12275    End
12276  
12277    Behavior = FXListDie ModuleTag_15
12278      DeathTypes = ALL -CRUSHED -SPLATTED
12279      DeathFX = FX_GenericTankDeathEffect
12280    End
12281  
12282    Behavior = CreateCrateDie ModuleTag_16
12283      CrateData = SalvageCrateData
12284      ;CrateData = EliteTankCrateData
12285      ;CrateData = HeroicTankCrateData
12286    End
12287  
12288    Behavior = ExperienceScalarUpgrade ModuleTag_17
12289      TriggeredBy = Upgrade_AmericaAdvancedTraining
12290      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
12291    End
12292  
12293    Behavior = TransitionDamageFX ModuleTag_18
12294      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
12295      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
12296    End
12297  
12298    Behavior = FlammableUpdate ModuleTag_21
12299      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
12300      AflameDamageAmount = 3       ; taking this much damage...
12301      AflameDamageDelay = 500       ; this often.
12302  
12303    End
12304  
12305    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
12306      DetectionRate             = 500
12307      DetectionRange           = 75
12308      CanDetectWhileGarrisoned  = No
12309      CanDetectWhileContained   = No
12310      ExtraRequiredKindOf       = BOAT
12311    End
12312  
12313    Behavior = AutoHealBehavior ModuleTag_22
12314      HealingAmount     = 4
12315      HealingDelay      = 1000 ; msec
12316      Radius            = 100.0f
12317      StartsActive      = Yes
12318      KindOf            = INFANTRY
12319    End
12320  
12321    Geometry = BOX
12322    GeometryMajorRadius = 14.0
12323    GeometryMinorRadius = 7.0
12324    GeometryHeight = 12.0  ; height set to allow clear clipping of projectile streams   
12325    GeometryIsSmall = Yes   
12326    Shadow = SHADOW_VOLUME 
12327  
12328  End
12329  
12330  ;------------------------------------------------------------------------------
12331  Object AmericaVehicleBattleDrone
12332  
12333    ; *** ART Parameters ***
12334    SelectPortrait         = SABattleDrone_L
12335    ButtonImage            = SABattleDrone
12336    
12337    UpgradeCameo1 = Upgrade_AmericaDroneArmor
12338    ;UpgradeCameo2 = NONE
12339    ;UpgradeCameo3 = NONE
12340    ;UpgradeCameo4 = NONE
12341    ;UpgradeCameo5 = NONE
12342  
12343    ;MAIN CHASSIS
12344    Draw = W3DModelDraw ModuleTag_01
12345      OkToChangeModelColor = Yes
12346  
12347      DefaultConditionState
12348        Model = AVBATTLEDR
12349        Animation = AVBATTLEDR.AVBATTLEDR
12350        AnimationMode = LOOP
12351        Turret = Turret01
12352        TurretPitch = TurretEL01
12353        WeaponMuzzleFlash = PRIMARY TurretFX01
12354        WeaponFireFXBone = PRIMARY Muzzle01
12355      End
12356  
12357      ConditionState = REALLYDAMAGED
12358        Model = AVBATTLEDR_D
12359        Animation = AVBATTLEDR_D.AVBATTLEDR_D
12360        AnimationMode = LOOP
12361      End
12362    End
12363  
12364    ;EXTENDING ARM (FOR REPAIRING)
12365    Draw = W3DModelDraw ModuleTag_02
12366      OkToChangeModelColor = Yes
12367  
12368      DefaultConditionState
12369        Model = AVBATTLEDR_A
12370      End
12371  
12372      ;Unloading the arm (before starting to repair)
12373      ConditionState = UNPACKING
12374        Animation = AVBATTLEDR_A1.AVBATTLEDR_A1
12375        AnimationMode = ONCE
12376      End
12377  
12378      ;Loading the arm (after reparing complete)
12379      ConditionState = PACKING
12380        Animation = AVBATTLEDR_A1.AVBATTLEDR_A1
12381        AnimationMode = ONCE_BACKWARDS
12382        Flags = START_FRAME_LAST
12383      End
12384  
12385      ;Repair extending animation 1 (using bogus condition states -- doesn't justify making a whole new set)
12386      ConditionState = FIRING_B
12387        Animation = AVBATTLEDR_A2.AVBATTLEDR_A2
12388        AnimationMode = ONCE
12389      End
12390  
12391  
12392      ;Repair retracting animation 1 (using bogus condition states -- doesn't justify making a whole new set)
12393      ConditionState = FIRING_C
12394        Animation = AVBATTLEDR_A2.AVBATTLEDR_A2
12395        AnimationMode = ONCE_BACKWARDS
12396        Flags = START_FRAME_LAST
12397      End
12398  
12399    End
12400  
12401  
12402    ; ***DESIGN parameters ***
12403    DisplayName         = OBJECT:BattleDrone
12404    Side                = America
12405    EditorSorting       = VEHICLE
12406    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
12407    WeaponSet
12408      Conditions        = None 
12409      Weapon            = PRIMARY BattleDroneMachineGun
12410    End
12411    ArmorSet
12412      Conditions        = None
12413      Armor             = TankArmor
12414      DamageFX          = SmallTankDamageFX
12415    End
12416  
12417    BuildCost           = 200
12418    BuildTime           = 5.0          ;in seconds    
12419    VisionRange         = 150
12420    ShroudClearingRange = 150
12421    Prerequisites
12422      Object = AmericaWarFactory
12423    End
12424    ExperienceValue     = 10 10 10 10 ;Experience point value at each level
12425    IsTrainable         = No
12426    
12427    ; *** AUDIO Parameters ***
12428    VoiceSelect         = NoSound
12429    VoiceMove           = NoSound
12430    VoiceAttack         = NoSound
12431    SoundMoveStart      = NoSound
12432    UnitSpecificSounds
12433    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
12434      TurretMoveStart   = NoSound
12435      TurretMoveLoop    = TurretMoveLoop
12436    End
12437  
12438    ; *** ENGINEERING Parameters ***
12439    RadarPriority       = UNIT
12440    KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SELECTABLE CAN_ATTACK DRONE   
12441    Body = ActiveBody ModuleTag_03
12442      MaxHealth       = 100.0
12443      InitialHealth   = 100.0
12444    End
12445  
12446    Behavior = AIUpdateInterface ModuleTag_04
12447      Turret
12448        TurretTurnRate        = 360   // turn rate, in degrees per sec
12449        TurretPitchRate       = 360
12450        MinPhysicalPitch      = -75 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
12451        AllowsPitch           = Yes
12452        ControlledWeaponSlots = PRIMARY
12453      End
12454      AutoAcquireEnemiesWhenIdle = Yes
12455    End
12456    Locomotor = SET_NORMAL BattleDroneLocomotor
12457    Locomotor = SET_PANIC BattleDronePanicLocomotor   ;used for repairing master (zippy)
12458    Behavior = PhysicsBehavior ModuleTag_05
12459      Mass = 50.0
12460      KillWhenRestingOnGround = Yes
12461      AllowBouncing = No
12462    End
12463  
12464    Behavior = MaxHealthUpgrade ModuleTag_06
12465      TriggeredBy   = Upgrade_AmericaDroneArmor
12466      AddMaxHealth  = 50.0
12467      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
12468    End
12469  
12470    Behavior = SlavedUpdate ModuleTag_07
12471      GuardMaxRange = 35      ;How far away from master I'm allowed when master is idle (doesn't wander)
12472      GuardWanderRange = 35   ;How far away I'm allowed to wander from master while guarding.
12473      AttackRange = 75        ;How far away from master I'm allowed when master is attacking a target.
12474      AttackWanderRange = 10  ;How far I'm allowed to wander from target.
12475      ScoutRange = 75         ;How far away from master I'm allowed when master is moving.
12476      ScoutWanderRange = 10   ;How far I'm allowed to wander from scout point.
12477      RepairRange = 8         ;How far I can zip around while repair (only moves when he stops welding)
12478      RepairMinAltitude = 18.0   ;My minimum repair hover altitude.
12479      RepairMaxAltitude = 24.0   ;My maximum repair hover altitude.
12480      RepairRatePerSecond = 5.0 ;How many health points can I repair per second.
12481      RepairWhenBelowHealth% = 60 ;How low should my master's health be (in %) before I should prioritize repairing.
12482      RepairMinReadyTime = 300
12483      RepairMaxReadyTime = 750
12484      RepairMinWeldTime = 250
12485      RepairMaxWeldTime = 500
12486      RepairWeldingSys = BlueSparks
12487      RepairWeldingFXBone = Muzzle02
12488      StayOnSameLayerAsMaster = Yes
12489    End
12490  
12491    Behavior = DestroyDie ModuleTag_08
12492      DeathTypes = ALL
12493    End
12494    Behavior                 = CreateObjectDie  ModuleTag_09
12495      DeathTypes = ALL
12496      CreationList      = OCL_AmericaBattleDroneExplode
12497    End
12498    
12499    Behavior                 = TransitionDamageFX ModuleTag_10
12500      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
12501      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleDroneDamageTransitionSmall
12502    End
12503    
12504    Behavior                 = FXListDie ModuleTag_11
12505      DeathTypes = ALL
12506      DeathFX           = FX_AmericaBattleDroneExplode
12507    End
12508  
12509    Behavior = UpgradeDie  ModuleTag_12
12510      ;This frees the object based upgrade for the producer object.
12511      DeathTypes = ALL
12512      UpgradeToRemove     = Upgrade_AmericaBattleDrone ModuleTag_13
12513    End
12514  
12515    Behavior = FlammableUpdate ModuleTag_21
12516      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
12517      AflameDamageAmount = 3       ; taking this much damage...
12518      AflameDamageDelay = 500       ; this often.
12519    End
12520  
12521    Geometry = CYLINDER
12522    GeometryMajorRadius = 5
12523    GeometryMinorRadius = 5
12524    GeometryHeight = 10.0     
12525    GeometryIsSmall = Yes 
12526    Shadow = SHADOW_VOLUME
12527    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
12528  
12529  End
12530  
12531  ;------------------------------------------------------------------------------
12532  ; **data here is a copy and paste of AmericaVehicleMedic**
12533  Object AmericaVehicleGuardianDrone
12534  
12535    ; *** ART Parameters ***
12536    Draw = W3DTankDraw ModuleTag_01
12537      DefaultConditionState
12538        Model = AVGuardDr
12539        Turret = Turret
12540        WeaponFireFXBone = PRIMARY TurretMS
12541        WeaponMuzzleFlash = PRIMARY TurretFX
12542      End
12543      TrackMarks = EXTnkTrack.tga
12544      OkToChangeModelColor = Yes
12545    End
12546  
12547    ; ***DESIGN parameters ***
12548    DisplayName      = OBJECT:GuardianDrone
12549    Side = America
12550    EditorSorting   = VEHICLE
12551    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
12552    WeaponSet
12553      Conditions = None 
12554      Weapon = PRIMARY CrusaderTankGun
12555    End
12556    ArmorSet
12557      Conditions      = None
12558      Armor           = TankArmor
12559      DamageFX        = TankDamageFX
12560    End
12561    BuildCost       = 700
12562    BuildTime       = 8.0          ;in seconds    
12563    VisionRange     = 150
12564    ShroudClearingRange = 150
12565    Prerequisites
12566      Object = AmericaWarFactory
12567    End
12568    ExperienceValue    = 50 100 150 400 ;Experience point value at each level
12569    IsTrainable     = No
12570    
12571    ; *** AUDIO Parameters ***
12572    VoiceSelect = NoSound
12573    VoiceMove = NoSound
12574    VoiceAttack = NoSound
12575    SoundMoveStart = NoSound
12576  
12577    UnitSpecificSounds
12578      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
12579      TurretMoveStart = NoSound
12580      TurretMoveLoop = TurretMoveLoop
12581    End
12582  
12583  
12584    ; *** ENGINEERING Parameters ***
12585    RadarPriority = UNIT
12586    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
12587    
12588    Body = ActiveBody ModuleTag_02
12589      MaxHealth       = 300.0
12590      InitialHealth   = 300.0
12591    End
12592  
12593  
12594    Behavior = AIUpdateInterface ModuleTag_03
12595      Turret
12596        TurretTurnRate = 60   // turn rate, in degrees per sec
12597        ControlledWeaponSlots = PRIMARY
12598      End
12599      AutoAcquireEnemiesWhenIdle = Yes
12600    End
12601    Locomotor = SET_NORMAL BasicTankLocomotor
12602    Behavior = PhysicsBehavior ModuleTag_04
12603      Mass = 50.0
12604    End
12605    Behavior = SlowDeathBehavior ModuleTag_05
12606      DestructionDelay = 500
12607      FX = FINAL FX_GenericTankDeathExplosion
12608    End
12609  
12610    Behavior = MaxHealthUpgrade ModuleTag_06
12611      TriggeredBy   = Upgrade_AmericaDroneArmor
12612      AddMaxHealth  = 50.0
12613      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
12614    End
12615  
12616    Behavior = FXListDie ModuleTag_07
12617      DeathFX = FX_GenericTankDeathEffect
12618    End
12619    Behavior = CreateObjectDie ModuleTag_08
12620      CreationList = OCL_GenericTankDeathEffect
12621    End
12622    Behavior = CreateCrateDie ModuleTag_09
12623      CrateData = SalvageCrateData
12624     ;CrateData = EliteTankCrateData
12625     ;CrateData = HeroicTankCrateData
12626    End
12627    
12628    Behavior                 = TransitionDamageFX ModuleTag_10
12629      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
12630    End
12631  
12632    Behavior = FlammableUpdate ModuleTag_21
12633      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
12634      AflameDamageAmount = 3       ; taking this much damage...
12635      AflameDamageDelay = 500       ; this often.
12636    End
12637  
12638    Geometry = BOX
12639    GeometryMajorRadius = 15.0
12640    GeometryMinorRadius = 10.0
12641    GeometryHeight = 10.0     
12642    GeometryIsSmall = Yes    
12643    Shadow = SHADOW_VOLUME
12644    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
12645  
12646  End
12647  
12648  
12649  ;------------------------------------------------------------------------------
12650  Object AmericaVehicleScoutDrone
12651  
12652    ; *** ART Parameters ***
12653    SelectPortrait         = SAScout_L
12654    ButtonImage            = SAScout
12655    
12656    UpgradeCameo1 = Upgrade_AmericaDroneArmor
12657    ;UpgradeCameo2 = NONE
12658    ;UpgradeCameo3 = NONE
12659    ;UpgradeCameo4 = NONE
12660    ;UpgradeCameo5 = NONE
12661    
12662    Draw = W3DModelDraw ModuleTag_01
12663      OkToChangeModelColor = Yes
12664  
12665      ConditionState = NONE
12666        Model = AVScoutDr
12667        Animation = AVScoutDr.AVScoutDr
12668        AnimationMode = LOOP
12669      End
12670  
12671      ConditionState = REALLYDAMAGED
12672        Model = AVScoutDr_d
12673        Animation = AVScoutDr_d.AVScoutDr_d
12674        AnimationMode = LOOP
12675      End
12676    End
12677  
12678    ; ***DESIGN parameters ***
12679    DisplayName      = OBJECT:ScoutDrone
12680    Side = America
12681    EditorSorting   = VEHICLE
12682    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
12683    ArmorSet
12684      Conditions      = None
12685      Armor           = TankArmor
12686      DamageFX        = SmallTankDamageFX
12687    End
12688    BuildCost       = 100
12689    BuildTime       = 5.0          ;in seconds    
12690    VisionRange     = 150
12691    ShroudClearingRange = 500
12692    IsTrainable     = No  ;Can gain experience
12693    
12694    ; *** AUDIO Parameters ***
12695    VoiceSelect = NoSound
12696    VoiceMove = NoSound
12697    VoiceAttack = NoSound
12698    SoundMoveStart = NoSound
12699  
12700    UnitSpecificSounds
12701      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
12702      TurretMoveStart = NoSound
12703      TurretMoveLoop = TurretMoveLoop
12704    End
12705  
12706  
12707    ; *** ENGINEERING Parameters ***
12708    RadarPriority = UNIT
12709    KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SELECTABLE DRONE
12710    
12711    Body = ActiveBody ModuleTag_02
12712      MaxHealth       = 20.0
12713      InitialHealth   = 20.0
12714    End
12715  
12716    Behavior = AIUpdateInterface ModuleTag_03
12717      Turret
12718        TurretTurnRate = 60   // turn rate, in degrees per sec
12719        ControlledWeaponSlots = PRIMARY
12720      End
12721      AutoAcquireEnemiesWhenIdle = Yes
12722    End
12723    Locomotor = SET_NORMAL DroneLocomotor
12724    Behavior = StealthDetectorUpdate ModuleTag_04
12725      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
12726      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
12727      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
12728      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
12729    End
12730    Behavior = PhysicsBehavior ModuleTag_05
12731      Mass = 50.0
12732      KillWhenRestingOnGround = Yes
12733      AllowBouncing = No
12734    End
12735  
12736    Behavior = SlavedUpdate ModuleTag_06
12737      GuardMaxRange = 35      ;How far away from master I'm allowed when master is idle (doesn't wander)
12738      GuardWanderRange = 35   ;How far away I'm allowed to wander from master while guarding.
12739      AttackRange = 75        ;How far away from master I'm allowed when master is attacking a target.
12740      AttackWanderRange = 10  ;How far I'm allowed to wander from target.
12741      ScoutRange = 75         ;How far away from master I'm allowed when master is moving.
12742      ScoutWanderRange = 10   ;How far I'm allowed to wander from scout point.
12743      DistToTargetToGrantRangeBonus = 20 ;How close I have to be to the master's target in order to grant master a range bonus.
12744      StayOnSameLayerAsMaster = Yes
12745    End
12746  
12747    Behavior = MaxHealthUpgrade ModuleTag_07
12748      TriggeredBy   = Upgrade_AmericaDroneArmor
12749      AddMaxHealth  = 50.0
12750      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
12751    End
12752  
12753    Behavior = DestroyDie ModuleTag_08
12754      DeathTypes = ALL
12755    End
12756    Behavior                 = CreateObjectDie ModuleTag_09
12757      DeathTypes = ALL
12758      CreationList      = OCL_AmericaScoutDroneExplode
12759    End
12760    Behavior                 = FXListDie ModuleTag_10
12761      DeathTypes = ALL
12762      DeathFX           = FX_AmericaScoutDroneExplode
12763    End
12764    
12765    Behavior                 = TransitionDamageFX ModuleTag_11
12766      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
12767      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleDroneDamageTransitionSmall
12768    End
12769  
12770    Behavior = UpgradeDie  ModuleTag_12
12771     ;This frees the object based upgrade for the producer object.
12772     DeathTypes = ALL
12773     UpgradeToRemove      = Upgrade_AmericaScoutDrone ModuleTag_13
12774    End
12775  
12776  
12777    Behavior = FlammableUpdate ModuleTag_21
12778      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
12779      AflameDamageAmount = 3       ; taking this much damage...
12780      AflameDamageDelay = 500       ; this often.
12781    End
12782  
12783    Geometry = CYLINDER
12784    GeometryMajorRadius = 5.0
12785    GeometryMinorRadius = 6.0
12786    GeometryHeight = 3.0
12787    GeometryIsSmall = Yes
12788    Shadow = SHADOW_VOLUME
12789    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
12790  
12791  End
12792  
12793  ;------------------------------------------------------------------------------
12794  Object AmericaVehicleSpyDrone
12795  
12796    ; *** ART Parameters ***
12797    SelectPortrait         = SAScout_L
12798    ButtonImage            = SAScout
12799    Draw = W3DModelDraw ModuleTag_01
12800      OkToChangeModelColor = Yes
12801  
12802      ConditionState = NONE
12803        Model = AVSpyDrone
12804        Animation = AVSpyDrone.AVSpyDrone
12805        AnimationMode = LOOP
12806      End
12807  
12808  ; Damage state waiting for pristine's approval (or may just not need one)
12809  ;    ConditionState = REALLYDAMAGED
12810  ;      Model = AVSpyDrone_d
12811  ;      Animation = AVSpyDrone_d.AVSpyDrone_d
12812  ;      AnimationMode = LOOP
12813  ;    End
12814    End
12815  
12816    ; ***DESIGN parameters ***
12817    DisplayName      = OBJECT:SpyDrone
12818    Side = America
12819    EditorSorting   = VEHICLE
12820    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
12821    ArmorSet
12822      Conditions      = None
12823      Armor           = AirplaneArmor
12824      DamageFX        = SmallTankDamageFX
12825    End
12826    VisionRange     = 250
12827    ShroudClearingRange = 0; Dynamic range below
12828    IsTrainable     = No 
12829    
12830    ; *** AUDIO Parameters ***
12831    VoiceSelect = NoSound
12832    VoiceMove = NoSound
12833    VoiceAttack = NoSound
12834    SoundMoveStart = SpyDroneSnapshot
12835  
12836    UnitSpecificSounds
12837      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
12838      TurretMoveStart = NoSound
12839      TurretMoveLoop = TurretMoveLoop
12840    End
12841  
12842  
12843    ; *** ENGINEERING Parameters ***
12844    RadarPriority = UNIT
12845    KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE DRONE SELECTABLE INERT
12846    
12847    Body = ActiveBody ModuleTag_02
12848      MaxHealth       = 200.0
12849      InitialHealth   = 200.0
12850    End
12851  
12852    Behavior = AIUpdateInterface ModuleTag_03
12853      AutoAcquireEnemiesWhenIdle = No
12854    End
12855  
12856    Locomotor = SET_NORMAL SpyDroneLocomtor
12857  
12858    Behavior = DynamicShroudClearingRangeUpdate ModuleTag_04
12859      FinalVision = 250.0 
12860      ChangeInterval = 50
12861      ShrinkDelay = 2000
12862      ShrinkTime = 1000
12863      GrowDelay = 0
12864      GrowTime = 1000
12865      GrowInterval = 10 ; Faster than most
12866  
12867      GridDecalTemplate
12868        Texture           = EXGrid
12869        Style             = SHADOW_ADDITIVE_DECAL
12870        OpacityMin        = 50%
12871        OpacityMax        = 100%
12872        OpacityThrobTime  = 500
12873        Color             = R:32 G:64 B:128 A:0 //dim blue, additive
12874      End
12875  
12876    End
12877  
12878    Behavior = StealthDetectorUpdate ModuleTag_05
12879      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
12880      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
12881      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
12882      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
12883    End
12884    Behavior = PhysicsBehavior ModuleTag_06
12885      Mass = 50.0
12886    End
12887  
12888    Behavior = DestroyDie ModuleTag_07
12889      DeathTypes = ALL
12890    End
12891    Behavior                 = CreateObjectDie ModuleTag_08
12892      DeathTypes = ALL
12893      CreationList      = OCL_AmericaScoutDroneExplode
12894    End
12895    Behavior = StealthUpdate ModuleTag_09
12896      StealthDelay                = 0 ; msec
12897      StealthForbiddenConditions  = NONE
12898      InnateStealth               = Yes
12899      OrderIdleEnemiesToAttackMeUponReveal  = Yes
12900    End
12901    Behavior = MaxHealthUpgrade ModuleTag_10
12902      TriggeredBy   = Upgrade_AmericaDroneArmor
12903      AddMaxHealth  = 50.0
12904      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
12905    End
12906  
12907    Behavior = FlammableUpdate ModuleTag_21
12908      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
12909      AflameDamageAmount = 3       ; taking this much damage...
12910      AflameDamageDelay = 500       ; this often.
12911    End
12912  
12913    Geometry = CYLINDER
12914    GeometryMajorRadius = 5.0
12915    GeometryMinorRadius = 6.0
12916    GeometryHeight = 3.0
12917    GeometryIsSmall = Yes
12918    Shadow = SHADOW_VOLUME
12919    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
12920  
12921  End
12922  
12923  ;------------------------------------------------------------------------------
12924  Object AmericaTankCrusader
12925  
12926    ; *** ART Parameters ***
12927    SelectPortrait         = SACLeopard_L
12928    ButtonImage            = SACLeopard
12929    
12930    UpgradeCameo1 = Upgrade_AmericaBattleDrone
12931    UpgradeCameo2 = Upgrade_AmericaScoutDrone
12932    UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
12933    UpgradeCameo4 = Upgrade_AmericaCompositeArmor
12934    ;UpgradeCameo5 = NONE
12935    
12936    Draw = W3DTankDraw ModuleTag_01
12937      DefaultConditionState
12938        Model               = AVLeopard
12939        Turret              = Turret
12940        WeaponFireFXBone    = PRIMARY TurretMS
12941        WeaponRecoilBone    = PRIMARY Barrel
12942        WeaponMuzzleFlash   = PRIMARY TurretFX
12943        WeaponLaunchBone = PRIMARY TurretMS
12944      End
12945      ConditionState       = REALLYDAMAGED
12946        Model              = AVLeopard_D
12947      End
12948      ConditionState       = RUBBLE
12949        Model              = AVLeopard_D
12950      End
12951  
12952      TrackMarks           = EXTnkTrack.tga
12953      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
12954      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
12955      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
12956      OkToChangeModelColor = Yes
12957    End
12958  
12959    ; ***DESIGN parameters ***
12960    DisplayName      = OBJECT:Crusader
12961    Side                   = America
12962    EditorSorting          = VEHICLE
12963    TransportSlotCount     = 3
12964    WeaponSet
12965      Conditions           = None 
12966      Weapon               = PRIMARY CrusaderTankGun
12967      ; Uncomment this when we want the crusader to have a machine too again
12968      ;Weapon               = SECONDARY CrusaderMachineGun
12969    End
12970    ArmorSet
12971      Conditions           = None
12972      Armor                = TankArmor
12973      DamageFX             = TankDamageFX
12974    End
12975    ;ArmorSet
12976    ;  Conditions           = PLAYER_UPGRADE
12977    ;  Armor                = UpgradedTankArmor
12978    ;  DamageFX             = TankDamageFX
12979    ;End
12980    BuildCost              = 900
12981    BuildTime              = 10.0          ;in seconds    
12982    VisionRange            = 150
12983    ShroudClearingRange = 300
12984    Prerequisites
12985      Object = AmericaWarFactory
12986    End
12987    ExperienceValue        = 100 100 200 400 ;Experience point value at each level
12988    ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level
12989    IsTrainable            = Yes  ;Can gain experience
12990    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
12991    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
12992    CommandSet             = AmericaTankCrusaderCommandSet
12993    
12994    ; *** AUDIO Parameters ***
12995    VoiceSelect           = CrusaderTankVoiceSelect
12996    VoiceMove             = CrusaderTankVoiceMove
12997    VoiceGuard            = CrusaderTankVoiceMove
12998    VoiceAttack           = CrusaderTankVoiceAttack
12999    SoundMoveStart        = CrusaderTankMoveStart
13000    SoundMoveStartDamaged = CrusaderTankMoveStart
13001    UnitSpecificSounds
13002      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
13003      VoiceCreate         = CrusaderTankVoiceCreate
13004      VoiceEnter             = CrusaderTankVoiceMove
13005      TurretMoveStart     = NoSound
13006      TurretMoveLoop      = TurretMoveLoop
13007      SoundEject          = PilotSoundEject
13008      VoiceEject          = PilotVoiceEject
13009      VoiceCrush          = CrusaderTankVoiceCrush
13010    End
13011  
13012    ; *** ENGINEERING Parameters ***
13013    RadarPriority          = UNIT
13014    KindOf                 = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
13015    
13016    Body                   = ActiveBody ModuleTag_02
13017      MaxHealth       = 480
13018      InitialHealth   = 480
13019    End
13020  
13021    Behavior = AIUpdateInterface ModuleTag_03
13022      Turret
13023        TurretTurnRate       = 180 ;60   // turn rate, in degrees per sec
13024        ControlledWeaponSlots= PRIMARY
13025      End
13026      AutoAcquireEnemiesWhenIdle = Yes
13027    End
13028    Locomotor            = SET_NORMAL CrusaderLocomotor
13029    Behavior = PhysicsBehavior ModuleTag_04
13030      Mass                 = 50.0
13031    End
13032  
13033    Behavior = ObjectCreationUpgrade ModuleTag_05
13034      UpgradeObject = OCL_AmericanBattleDrone
13035      TriggeredBy   = Upgrade_AmericaBattleDrone
13036      ConflictsWith = Upgrade_AmericaScoutDrone
13037    End
13038    Behavior = ObjectCreationUpgrade ModuleTag_06
13039      UpgradeObject = OCL_AmericanScoutDrone
13040      TriggeredBy   = Upgrade_AmericaScoutDrone
13041      ConflictsWith = Upgrade_AmericaBattleDrone
13042    End
13043    Behavior = ProductionUpdate ModuleTag_07
13044      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
13045    End
13046  
13047    Behavior = ExperienceScalarUpgrade ModuleTag_08
13048      TriggeredBy   = Upgrade_AmericaAdvancedTraining
13049      AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
13050    End
13051    Behavior = MaxHealthUpgrade ModuleTag_09
13052      TriggeredBy   = Upgrade_AmericaCompositeArmor
13053      AddMaxHealth  = 100.0
13054      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
13055    End
13056  
13057    ; Turret fly off death
13058    Behavior = SlowDeathBehavior ModuleTag_10
13059      DeathTypes = ALL -CRUSHED -SPLATTED
13060      ProbabilityModifier  = 50
13061      DestructionDelay  = 500
13062      DestructionDelayVariance  = 100
13063      FX  = INITIAL  FX_GenericTankDeathEffect
13064      OCL = MIDPOINT OCL_GenericTankDeathEffect
13065      FX  = FINAL    FX_GenericTankDeathExplosion
13066      OCL = FINAL    OCL_CrusaderTurret
13067    End
13068  
13069    ; Catch fire, and explode death
13070    Behavior = SlowDeathBehavior ModuleTag_11
13071      DeathTypes = ALL -CRUSHED -SPLATTED
13072      ProbabilityModifier  = 50
13073      DestructionDelay  = 2000
13074      DestructionDelayVariance  = 300
13075      FX  = INITIAL  FX_CrusaderCatchFire
13076      OCL = FINAL    OCL_GenericTankDeathEffect  
13077      FX  = FINAL    FX_GenericTankDeathExplosion
13078    End
13079  
13080    Behavior                 = TransitionDamageFX ModuleTag_12
13081      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
13082      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
13083    End
13084  
13085    Behavior = DestroyDie ModuleTag_13
13086      DeathTypes = NONE +CRUSHED +SPLATTED
13087    End
13088  
13089    ; A crushing defeat
13090    Behavior = FXListDie ModuleTag_14
13091      DeathTypes = NONE +CRUSHED +SPLATTED
13092      DeathFX = FX_CarCrush
13093    End
13094  
13095    Behavior = CreateObjectDie ModuleTag_15
13096      DeathTypes = NONE +CRUSHED +SPLATTED
13097      CreationList = OCL_CrusaderTank_CrushEffect
13098    End
13099  
13100    Behavior                    = CreateCrateDie ModuleTag_CratesChange
13101     CrateData             = SalvageCrateData
13102     ;CrateData             = EliteTankCrateData
13103     ;CrateData             = HeroicTankCrateData
13104    End
13105  
13106    Behavior = EjectPilotDie ModuleTag_17
13107      GroundCreationList = OCL_EjectPilotOnGround
13108      AirCreationList = OCL_EjectPilotViaParachute
13109      ExemptStatus = HIJACKED
13110      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
13111    End
13112  
13113    Behavior = MaxHealthUpgrade ModuleTag_18
13114      TriggeredBy   = Upgrade_AmericaCompositeArmor
13115      AddMaxHealth  = 100.0
13116      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
13117    End
13118  
13119    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
13120      DetectionRate             = 500
13121      DetectionRange           = 75
13122      CanDetectWhileGarrisoned  = No
13123      CanDetectWhileContained   = No
13124      ExtraRequiredKindOf       = BOAT
13125    End
13126  
13127    Behavior = FlammableUpdate ModuleTag_21
13128      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
13129      AflameDamageAmount = 3       ; taking this much damage...
13130      AflameDamageDelay = 500       ; this often.
13131    End
13132  
13133    Geometry               = BOX
13134    GeometryMajorRadius    = 15.0
13135    GeometryMinorRadius    = 10.0
13136    GeometryHeight         = 10.0     
13137    GeometryIsSmall        = Yes    
13138    Shadow = SHADOW_VOLUME
13139    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
13140  
13141  End
13142  
13143  ;------------------------------------------------------------------------------
13144  Object AmericaTankCrusaderMK2
13145  
13146    ; *** ART Parameters ***
13147    SelectPortrait         = SALeopard_L
13148    ButtonImage            = SACCrusader ;SALeopard
13149    
13150    UpgradeCameo1 = Upgrade_AmericaBattleDrone
13151    UpgradeCameo2 = Upgrade_AmericaScoutDrone
13152    UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
13153    UpgradeCameo4 = Upgrade_AmericaCompositeArmor
13154    
13155    Draw = W3DModelDraw ModuleTag_01
13156      ConditionState = none
13157        Model               = AVCrusader
13158        Turret              = Turret
13159        WeaponFireFXBone    = PRIMARY TurretMS
13160        WeaponRecoilBone    = PRIMARY Barrel
13161        WeaponMuzzleFlash   = PRIMARY TurretFX
13162        WeaponLaunchBone    = PRIMARY TurretMS
13163        TransitionKey = TRANS_Drive
13164      End
13165      ConditionState = REALLYDAMAGED
13166        Model              = AVCrusader_D
13167        Turret              = Turret
13168        WeaponFireFXBone    = PRIMARY TurretMS
13169        WeaponRecoilBone    = PRIMARY Barrel
13170        WeaponMuzzleFlash   = PRIMARY TurretFX
13171        WeaponLaunchBone    = PRIMARY TurretMS
13172        TransitionKey = TRANS_DriveDamaged
13173      End
13174      ConditionState = RUBBLE
13175        Model              = AVCrusader_D
13176        Turret              = Turret
13177        WeaponFireFXBone    = PRIMARY TurretMS
13178        WeaponRecoilBone    = PRIMARY Barrel
13179        WeaponMuzzleFlash   = PRIMARY TurretFX
13180        WeaponLaunchBone    = PRIMARY TurretMS
13181      End
13182     
13183      ConditionState = MOVING
13184        Model               = AVCrusader
13185        Turret              = Turret
13186        WeaponFireFXBone    = PRIMARY TurretMS
13187        WeaponRecoilBone    = PRIMARY Barrel
13188        WeaponMuzzleFlash   = PRIMARY TurretFX
13189        WeaponLaunchBone    = PRIMARY TurretMS
13190        TransitionKey = TRANS_Drive
13191        ParticleSysBone = TreadFX01 QuadCannonDust
13192        ParticleSysBone = TreadFX02 QuadCannonDust
13193      End
13194  
13195      AliasConditionState = DAMAGED
13196      AliasConditionState = MOVING DAMAGED
13197      AliasConditionState = MOVING REALLYDAMAGED
13198  
13199      ConditionState = WEAPONSET_PLAYER_UPGRADE
13200        Model               = AVCrusader_H
13201        Turret              = Turret
13202        WeaponFireFXBone    = PRIMARY TurretMS
13203        WeaponRecoilBone    = PRIMARY Barrel
13204        WeaponMuzzleFlash   = PRIMARY TurretFX
13205        WeaponLaunchBone    = PRIMARY TurretMS
13206        TransitionKey = TRANS_Hover
13207      End
13208  
13209      ConditionState = WEAPONSET_PLAYER_UPGRADE MOVING
13210        Model               = AVCrusader_H
13211        Turret              = Turret
13212        WeaponFireFXBone    = PRIMARY TurretMS
13213        WeaponRecoilBone    = PRIMARY Barrel
13214        WeaponMuzzleFlash   = PRIMARY TurretFX
13215        WeaponLaunchBone    = PRIMARY TurretMS
13216        TransitionKey = TRANS_Hover
13217        ParticleSysBone = TreadFX01 QuadCannonDust
13218        ParticleSysBone = TreadFX02 QuadCannonDust
13219      End
13220  
13221      TransitionState = TRANS_Drive TRANS_Hover
13222        Model = AVCrusader_A
13223        HideSubObject = TurretFX01
13224        Animation = AVCrusader_A.AVCrusader_A
13225        AnimationMode = ONCE
13226      End
13227  
13228      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
13229        Model               = AVCrusader_H
13230        Turret              = Turret
13231        WeaponFireFXBone    = PRIMARY TurretMS
13232        WeaponRecoilBone    = PRIMARY Barrel
13233        WeaponMuzzleFlash   = PRIMARY TurretFX
13234        WeaponLaunchBone    = PRIMARY TurretMS
13235        TransitionKey = TRANS_HoverDamaged
13236      End
13237  
13238      ConditionState = WEAPONSET_PLAYER_UPGRADE RUBBLE
13239        Model               = AVCrusader_H
13240        Turret              = Turret
13241        WeaponFireFXBone    = PRIMARY TurretMS
13242        WeaponRecoilBone    = PRIMARY Barrel
13243        WeaponMuzzleFlash   = PRIMARY TurretFX
13244        WeaponLaunchBone    = PRIMARY TurretMS
13245      End
13246  
13247      AliasConditionState = WEAPONSET_PLAYER_UPGRADE DAMAGED
13248      AliasConditionState = WEAPONSET_PLAYER_UPGRADE MOVING DAMAGED
13249      AliasConditionState = WEAPONSET_PLAYER_UPGRADE MOVING REALLYDAMAGED
13250  
13251      TransitionState = TRANS_DriveDamaged TRANS_HoverDamaged
13252        Model = AVCrusader_A
13253        HideSubObject = TurretFX01
13254        Animation = AVCrusader_A.AVCrusader_A
13255        AnimationMode = ONCE
13256      End
13257  
13258      ConditionState = WEAPONSET_PLAYER_UPGRADE OVER_WATER
13259        Model               = AVCrusader_H
13260        Turret              = Turret
13261        WeaponFireFXBone    = PRIMARY TurretMS
13262        WeaponRecoilBone    = PRIMARY Barrel
13263        WeaponMuzzleFlash   = PRIMARY TurretFX
13264        WeaponLaunchBone    = PRIMARY TurretMS
13265      End
13266  
13267      ConditionState = WEAPONSET_PLAYER_UPGRADE MOVING OVER_WATER
13268        Model               = AVCrusader_H
13269        Turret              = Turret
13270        WeaponFireFXBone    = PRIMARY TurretMS
13271        WeaponRecoilBone    = PRIMARY Barrel
13272        WeaponMuzzleFlash   = PRIMARY TurretFX
13273        WeaponLaunchBone    = PRIMARY TurretMS
13274        ParticleSysBone = TreadFX01 AmphibWave
13275      End
13276  
13277      AliasConditionState = WEAPONSET_PLAYER_UPGRADE MOVING OVER_WATER REALLYDAMAGED
13278      TrackMarks           = EXTnkTrack.tga
13279      OkToChangeModelColor = Yes
13280    End
13281  
13282    ; ***DESIGN parameters ***
13283    DisplayName      = OBJECT:CrusaderMK2
13284    Side                   = America
13285    EditorSorting          = VEHICLE
13286    TransportSlotCount     = 3
13287    WeaponSet
13288      Conditions           = None 
13289      Weapon               = PRIMARY CrusaderTankGun
13290    End
13291    WeaponSet
13292      Conditions           = PLAYER_UPGRADE 
13293      Weapon               = PRIMARY CrusaderTankGun
13294    End
13295    ArmorSet
13296      Conditions           = None
13297      Armor                = TankArmor
13298      DamageFX             = TankDamageFX
13299    End
13300    
13301    BuildCost              = 850
13302    BuildTime              = 10.0          ;in seconds    
13303    VisionRange            = 150
13304    ShroudClearingRange = 300
13305    Prerequisites
13306      Object = AmericaWarFactory
13307      Object = AmericaStrategyCenter
13308    End
13309    ExperienceValue        = 100 100 200 400 ;Experience point value at each level
13310    ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level
13311    IsTrainable            = Yes  ;Can gain experience
13312    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
13313    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
13314    CommandSet             = AmericaTankCrusaderMK2CommandSet
13315    
13316    ; *** AUDIO Parameters ***
13317    VoiceSelect           = CrusaderTankVoiceSelect
13318    VoiceMove             = CrusaderTankVoiceMove
13319    VoiceGuard            = CrusaderTankVoiceMove
13320    VoiceAttack           = CrusaderTankVoiceAttack
13321    SoundMoveStart        = CrusaderTankMoveStart
13322    SoundMoveStartDamaged = CrusaderTankMoveStart
13323    UnitSpecificSounds
13324      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
13325      VoiceCreate         = CrusaderTankVoiceCreate
13326      VoiceEnter          = CrusaderTankVoiceMove
13327      TurretMoveStart     = NoSound
13328      TurretMoveLoop      = TurretMoveLoop
13329      SoundEject          = PilotSoundEject
13330      VoiceEject          = PilotVoiceEject
13331      VoiceCrush          = CrusaderTankVoiceCrush
13332    End
13333  
13334    ; *** ENGINEERING Parameters ***
13335    RadarPriority          = UNIT
13336    KindOf                 = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
13337    
13338    Body                   = ActiveBody ModuleTag_02
13339      MaxHealth       = 450
13340      InitialHealth   = 450
13341    End
13342  
13343    Behavior = AIUpdateInterface ModuleTag_03
13344      Turret
13345        TurretTurnRate       = 180 ;60   // turn rate, in degrees per sec
13346        ControlledWeaponSlots= PRIMARY
13347      End
13348      AutoAcquireEnemiesWhenIdle = Yes
13349    End
13350    Locomotor            = SET_NORMAL CrusaderMK2Locomotor
13351    Locomotor             = SET_NORMAL_UPGRADED CrusaderAmphibiousLocomotor
13352    Behavior = PhysicsBehavior ModuleTag_04
13353      Mass                 = 45.0
13354    End
13355  
13356    Behavior = WeaponSetUpgrade ModuleTag_w3dphasechange
13357      TriggeredBy = Upgrade_CrusaderMK2Hover
13358    End
13359    Behavior = LocomotorSetUpgrade ModuleTag_LocoUp
13360      TriggeredBy = Upgrade_CrusaderMK2Hover
13361    End
13362  
13363    Behavior = ObjectCreationUpgrade ModuleTag_05
13364      UpgradeObject = OCL_AmericanBattleDrone
13365      TriggeredBy   = Upgrade_AmericaBattleDrone
13366      ConflictsWith = Upgrade_AmericaScoutDrone
13367    End
13368    Behavior = ObjectCreationUpgrade ModuleTag_06
13369      UpgradeObject = OCL_AmericanScoutDrone
13370      TriggeredBy   = Upgrade_AmericaScoutDrone
13371      ConflictsWith = Upgrade_AmericaBattleDrone
13372    End
13373    Behavior = ProductionUpdate ModuleTag_07
13374      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
13375    End
13376  
13377    Behavior = ExperienceScalarUpgrade ModuleTag_08
13378      TriggeredBy   = Upgrade_AmericaAdvancedTraining
13379      AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
13380    End
13381    Behavior = MaxHealthUpgrade ModuleTag_09
13382      TriggeredBy   = Upgrade_AmericaCompositeArmor
13383      AddMaxHealth  = 100.0
13384      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
13385    End
13386  
13387    ; Turret fly off death
13388    Behavior = SlowDeathBehavior ModuleTag_10
13389      DeathTypes = ALL -CRUSHED -SPLATTED
13390      ProbabilityModifier  = 50
13391      DestructionDelay  = 500
13392      DestructionDelayVariance  = 100
13393      FX  = INITIAL  FX_GenericTankDeathEffect
13394      OCL = MIDPOINT OCL_GenericTankDeathEffect
13395      FX  = FINAL    FX_GenericTankDeathExplosion
13396      OCL = FINAL    OCL_CrusaderTurret
13397    End
13398  
13399    ; Catch fire, and explode death
13400    Behavior = SlowDeathBehavior ModuleTag_11
13401      DeathTypes = ALL -CRUSHED -SPLATTED
13402      ProbabilityModifier  = 50
13403      DestructionDelay  = 2000
13404      DestructionDelayVariance  = 300
13405      FX  = INITIAL  FX_CrusaderCatchFire
13406      OCL = FINAL    OCL_GenericTankDeathEffect  
13407      FX  = FINAL    FX_GenericTankDeathExplosion
13408    End
13409  
13410    Behavior                 = TransitionDamageFX ModuleTag_12
13411      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
13412      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
13413    End
13414  
13415    Behavior = DestroyDie ModuleTag_13
13416      DeathTypes = NONE +CRUSHED +SPLATTED
13417    End
13418  
13419    ; A crushing defeat
13420    Behavior = FXListDie ModuleTag_14
13421      DeathTypes = NONE +CRUSHED +SPLATTED
13422      DeathFX = FX_CarCrush
13423    End
13424  
13425    Behavior = CreateObjectDie ModuleTag_15
13426      DeathTypes = NONE +CRUSHED +SPLATTED
13427      CreationList = OCL_CrusaderTank_CrushEffect
13428    End
13429  
13430    Behavior                    = CreateCrateDie ModuleTag_CratesChange
13431     CrateData             = SalvageCrateData
13432     ;CrateData             = EliteTankCrateData
13433     ;CrateData             = HeroicTankCrateData
13434    End
13435  
13436    Behavior = EjectPilotDie ModuleTag_17
13437      GroundCreationList = OCL_EjectPilotOnGround
13438      AirCreationList = OCL_EjectPilotViaParachute
13439      ExemptStatus = HIJACKED
13440      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
13441    End
13442  
13443    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
13444      DetectionRate             = 500
13445      DetectionRange           = 75
13446      CanDetectWhileGarrisoned  = No
13447      CanDetectWhileContained   = No
13448      ExtraRequiredKindOf       = BOAT
13449    End
13450  
13451    Behavior = FlammableUpdate ModuleTag_21
13452      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
13453      AflameDamageAmount = 3       ; taking this much damage...
13454      AflameDamageDelay = 500       ; this often.
13455    End
13456  
13457    Geometry               = BOX
13458    GeometryMajorRadius    = 15.0
13459    GeometryMinorRadius    = 10.0
13460    GeometryHeight         = 10.0     
13461    GeometryIsSmall        = Yes    
13462    Shadow = SHADOW_VOLUME
13463    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
13464  
13465  End
13466  
13467  ;--------------------------------------------------Scorpion Tank------------------------------------------------------
13468  ; this unit is never really "built"; building one triggers the random building of
13469  ; one of the other chassis. If you want a *specific* chassis, choose it explicitly;
13470  ; if you want a chassis at random, specify this.
13471  Object GLATankScorpion
13472  
13473    ; *** ART Parameters ***
13474    SelectPortrait         = SUScorpion_L 
13475    ButtonImage            = SUScorpion
13476  
13477    Draw = W3DModelDraw ModuleTag_01
13478      DefaultConditionState
13479        ; give it a model so it'll show up in WB
13480        Model = UVLiteTank
13481      End
13482    End
13483  
13484    ; set cost and time fields here or else they won't work
13485    BuildCost       = 600
13486    BuildTime       = 6.0          ;in seconds
13487  
13488    Side = GLA
13489    EditorSorting = VEHICLE
13490    BuildVariations = GLATankScorpionOne GLATankScorpionTwo
13491  
13492    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
13493  
13494  End
13495  
13496  ;------------------------------------------------------------------------------
13497  Object GLATankScorpionOne
13498  
13499    ; *** ART Parameters ***
13500    SelectPortrait         = SUScorpion_L
13501    ButtonImage            = SUScorpion
13502    
13503    UpgradeCameo1 = Upgrade_GLAScorpionRocket
13504    UpgradeCameo2 = Upgrade_GLAAPRockets
13505    UpgradeCameo3 = Upgrade_GLAToxinShells
13506    UpgradeCameo4 = Upgrade_GLAJunkRepair
13507    ;UpgradeCameo5 = NONE
13508    
13509    Draw = W3DTankDraw ModuleTag_01
13510      OkToChangeModelColor = Yes
13511  
13512      ProjectileBoneFeedbackEnabledSlots = SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
13513    
13514      DefaultConditionState
13515        Model = UVLiteTank
13516        Turret = Turret01
13517        ; note, order-dependent: we must hide/show Missile AFTER we hide/show MissileRack!
13518        HideSubObject = MissleRack01 Missile ; MissileRack misspelled in the Art
13519        WeaponFireFXBone = PRIMARY Muzzle
13520        WeaponRecoilBone = PRIMARY Barrel
13521        WeaponMuzzleFlash = PRIMARY MuzzleFX
13522        WeaponLaunchBone = PRIMARY Muzzle
13523      End
13524  
13525      ConditionState = REALLYDAMAGED
13526        Model = UVLiteTank_d
13527      End
13528      
13529      ConditionState = RUBBLE
13530        Model = UVLiteTank_d
13531      End
13532  
13533      ConditionState = WEAPONSET_PLAYER_UPGRADE
13534        ShowSubObject = MissleRack01
13535        WeaponFireFXBone = SECONDARY WeaponA
13536        WeaponLaunchBone = SECONDARY WeaponA
13537        WeaponHideShowBone = SECONDARY Missile
13538      End
13539  
13540      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
13541        Model = UVLiteTank_d
13542        ShowSubObject = MissleRack01
13543        WeaponFireFXBone = SECONDARY WeaponA
13544        WeaponLaunchBone = SECONDARY WeaponA
13545        WeaponHideShowBone = SECONDARY Missile
13546      End
13547  
13548      TrackMarks = EXTnkTrack.tga
13549      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
13550    End
13551  
13552    ; ***DESIGN parameters ***
13553    DisplayName           = OBJECT:Scorpion
13554    Side                  = GLA
13555    EditorSorting         = VEHICLE
13556    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
13557    WeaponSet
13558      Conditions = None 
13559      Weapon = PRIMARY ScorpionTankGun
13560      Weapon = SECONDARY None
13561    End
13562    WeaponSet
13563      Conditions = PLAYER_UPGRADE 
13564      Weapon = PRIMARY ScorpionTankGun
13565      Weapon = SECONDARY ScorpionMissileWeapon
13566      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
13567      AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI
13568    End
13569    ArmorSet
13570      Conditions      = None
13571      Armor           = TankArmor
13572      DamageFX        = TankDamageFX
13573    End
13574    ;BuildCost       = 600    ;no longer buildable as self
13575    ;BuildTime       = 7.0          ;in seconds    
13576    VisionRange     = 125
13577    ShroudClearingRange = 300
13578    Prerequisites
13579      Object = GLAArmsDealer
13580    End
13581  
13582    ExperienceValue = 60 60 120 200    ;Experience point value at each level
13583    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
13584    IsTrainable = Yes             ;Can gain experience
13585    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
13586    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
13587    CommandSet      = GLATankScorpionCommandSet
13588  
13589    ; *** AUDIO Parameters ***
13590    VoiceSelect = ScorpionTankVoiceSelect
13591    VoiceMove = ScorpionTankVoiceMove
13592    VoiceAttack = ScorpionTankVoiceAttack
13593    SoundMoveStart = ScorpionTankMoveStart
13594    SoundMoveStartDamaged = ScorpionTankMoveStart
13595    VoiceGuard = ScorpionTankVoiceMove
13596  
13597    UnitSpecificSounds
13598      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
13599      VoiceCreate          = ScorpionTankVoiceCreate
13600      ;TurretMoveStart = NoSound
13601      TurretMoveLoop = TurretMoveLoop
13602      VoiceEnter = ScorpionTankVoiceMove
13603    End
13604  
13605    ; *** ENGINEERING Parameters ***
13606    RadarPriority = UNIT
13607    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
13608  
13609    Body = ActiveBody ModuleTag_02
13610      MaxHealth       = 370.0
13611      InitialHealth   = 370.0
13612    End
13613  
13614    Behavior = AIUpdateInterface ModuleTag_03
13615      Turret
13616        TurretTurnRate = 100
13617        RecenterTime = 5000   ; how long to wait during idle before recentering
13618        ControlledWeaponSlots = PRIMARY SECONDARY
13619      End
13620      AutoAcquireEnemiesWhenIdle = Yes
13621    End
13622    Locomotor = SET_NORMAL ScorpionLocomotor
13623    Behavior = PhysicsBehavior ModuleTag_04
13624      Mass = 50.0
13625    End
13626    Behavior = AutoHealBehavior ModuleTag_05
13627      HealingAmount = 2
13628      HealingDelay = 1000 ; msec
13629      TriggeredBy = Upgrade_GLAJunkRepair
13630    End
13631  
13632    ; Catch fire, and explode death
13633    Behavior = SlowDeathBehavior ModuleTag_06
13634      DeathTypes = ALL -CRUSHED -SPLATTED
13635      ProbabilityModifier = 50
13636      DestructionDelay = 2000
13637      DestructionDelayVariance = 300
13638      FX  = INITIAL  FX_CrusaderCatchFire
13639      OCL = FINAL    OCL_GenericTankDeathEffect  
13640      FX  = FINAL    FX_BattleMasterExplosionOneFinal
13641    End
13642  
13643    Behavior = WeaponSetUpgrade ModuleTag_07
13644      TriggeredBy = Upgrade_GLAScorpionRocket
13645    End
13646  
13647    Behavior = DestroyDie ModuleTag_09
13648      DeathTypes = NONE +CRUSHED +SPLATTED
13649    End
13650  
13651    ; A crushing defeat
13652    Behavior = FXListDie ModuleTag_10
13653      DeathTypes = NONE +CRUSHED +SPLATTED
13654      DeathFX = FX_CarCrush
13655    End
13656    Behavior = CreateObjectDie ModuleTag_11
13657      DeathTypes = NONE +CRUSHED +SPLATTED
13658      CreationList = OCL_CrusaderTank_CrushEffect
13659    End
13660    Behavior = CreateCrateDie ModuleTag_12
13661      CrateData = SalvageCrateData
13662      ;CrateData = EliteTankCrateData
13663      ;CrateData = HeroicTankCrateData
13664    End
13665    
13666    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
13667      DetectionRate             = 500
13668      DetectionRange           = 75
13669      CanDetectWhileGarrisoned  = No
13670      CanDetectWhileContained   = No
13671      ExtraRequiredKindOf       = BOAT
13672    End
13673  
13674    Behavior                 = TransitionDamageFX ModuleTag_13
13675      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
13676      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
13677    End
13678  
13679    Behavior = FlammableUpdate ModuleTag_21
13680      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
13681      AflameDamageAmount = 3       ; taking this much damage...
13682      AflameDamageDelay = 500       ; this often.
13683    End
13684  
13685    Geometry = BOX
13686    GeometryMajorRadius = 14.0
13687    GeometryMinorRadius = 9.0
13688    GeometryHeight = 10.5    
13689    GeometryIsSmall = Yes 
13690    Shadow = SHADOW_VOLUME   
13691    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
13692  
13693  End
13694  
13695  ;------------------------------------------------------------------------------
13696  Object GLATankScorpionTwo ;GLATankCobra
13697  
13698    ; *** ART Parameters ***
13699    SelectPortrait         = SUScorpion_L
13700    ButtonImage            = SUScorpion
13701    
13702    UpgradeCameo1 = Upgrade_GLAScorpionRocket
13703    UpgradeCameo2 = Upgrade_GLAAPRockets
13704    UpgradeCameo3 = Upgrade_GLAToxinShells
13705    UpgradeCameo4 = Upgrade_GLAJunkRepair
13706    ;UpgradeCameo5 = NONE
13707    
13708    Draw = W3DTankDraw ModuleTag_01
13709      OkToChangeModelColor = Yes
13710  
13711      ProjectileBoneFeedbackEnabledSlots = SECONDARY
13712    
13713      DefaultConditionState
13714        Model = UVScorpion
13715        Turret = Turret01
13716        HideSubObject = MissleRack01 Missile
13717        WeaponFireFXBone = PRIMARY Muzzle
13718        WeaponRecoilBone = PRIMARY Barrel
13719        WeaponMuzzleFlash = PRIMARY MuzzleFX
13720        WeaponLaunchBone = PRIMARY Muzzle
13721      End
13722  
13723      ConditionState = REALLYDAMAGED
13724        Model = UVScorpion_d
13725      End
13726      
13727      ConditionState = RUBBLE
13728        Model = UVScorpion_d
13729      End
13730  
13731      ConditionState = WEAPONSET_PLAYER_UPGRADE
13732        ShowSubObject = MissleRack01
13733        WeaponFireFXBone = SECONDARY WeaponA
13734        WeaponLaunchBone = SECONDARY WeaponA
13735        WeaponHideShowBone = SECONDARY Missile
13736      End
13737  
13738      ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
13739        Model = UVScorpion_d
13740        ShowSubObject = MissleRack01
13741        WeaponFireFXBone = SECONDARY WeaponA
13742        WeaponLaunchBone = SECONDARY WeaponA
13743        WeaponHideShowBone = SECONDARY Missile
13744      End
13745  
13746      TrackMarks = EXTnkTrack.tga
13747      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
13748    End
13749  
13750    ; ***DESIGN parameters ***
13751    DisplayName           = OBJECT:Scorpion ;OBJECT:Cobra
13752    Side                  = GLA
13753    EditorSorting         = VEHICLE
13754    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
13755    WeaponSet
13756      Conditions = None 
13757      Weapon = PRIMARY CobraTankGun
13758      Weapon = SECONDARY None
13759    End
13760    WeaponSet
13761      Conditions = PLAYER_UPGRADE 
13762      Weapon = PRIMARY CobraTankGun
13763      Weapon = SECONDARY ScorpionMissileWeapon
13764      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
13765      AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI
13766    End
13767    ArmorSet
13768      Conditions      = None
13769      Armor           = TankArmor
13770      DamageFX        = TankDamageFX
13771    End
13772    ;BuildCost       = 700    ;no longer buildable as self
13773    ;BuildTime       = 8.0          ;in seconds    
13774    VisionRange     = 125
13775    ShroudClearingRange = 300
13776    Prerequisites
13777      Object = GLAArmsDealer
13778    End
13779  
13780    ExperienceValue = 60 60 120 200    ;Experience point value at each level
13781    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
13782    IsTrainable = Yes             ;Can gain experience
13783    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
13784    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
13785    CommandSet      = GLATankScorpionCommandSet ;GLATankCobraCommandSet
13786  
13787    ; *** AUDIO Parameters ***
13788    VoiceSelect = ScorpionTankVoiceSelect
13789    VoiceMove = ScorpionTankVoiceMove
13790    VoiceAttack = ScorpionTankVoiceAttack
13791    SoundMoveStart = ScorpionTankMoveStart
13792    SoundMoveStartDamaged = ScorpionTankMoveStart
13793    VoiceGuard = ScorpionTankVoiceMove
13794  
13795    UnitSpecificSounds
13796      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
13797      VoiceCreate          = ScorpionTankVoiceCreate
13798      VoiceEnter = ScorpionTankVoiceMove
13799    End
13800  
13801    ; *** ENGINEERING Parameters ***
13802    RadarPriority = UNIT
13803    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
13804  
13805    Body = ActiveBody ModuleTag_02
13806      MaxHealth       = 370.0 ;300.0
13807      InitialHealth   = 370.0 ;300.0
13808    End
13809  
13810    Behavior = AIUpdateInterface ModuleTag_03
13811      AutoAcquireEnemiesWhenIdle = Yes
13812    End
13813    Locomotor = SET_NORMAL ScorpionLocomotor ;CobraLocomotor
13814    Behavior = PhysicsBehavior ModuleTag_04
13815      Mass = 50.0
13816    End
13817    Behavior = AutoHealBehavior ModuleTag_05
13818      HealingAmount = 2
13819      HealingDelay = 1000 ; msec
13820      TriggeredBy = Upgrade_GLAJunkRepair
13821    End
13822  
13823    ; Catch fire, and explode death
13824    Behavior = SlowDeathBehavior ModuleTag_06
13825      DeathTypes = ALL -CRUSHED -SPLATTED
13826      ProbabilityModifier = 60
13827      DestructionDelay = 500
13828      DestructionDelayVariance = 200
13829      FX  = INITIAL  FX_CrusaderCatchFire
13830      OCL = FINAL    OCL_GenericTankDeathEffect  
13831      FX  = FINAL    FX_BattleMasterExplosionOneFinal
13832    End
13833  
13834    Behavior = WeaponSetUpgrade ModuleTag_07
13835      TriggeredBy = Upgrade_GLAScorpionRocket
13836    End
13837  
13838    Behavior = DestroyDie ModuleTag_09
13839      DeathTypes = NONE +CRUSHED +SPLATTED
13840    End
13841  
13842    ; A crushing defeat
13843    Behavior = FXListDie ModuleTag_10
13844      DeathTypes = NONE +CRUSHED +SPLATTED
13845      DeathFX = FX_CarCrush
13846    End
13847    Behavior = CreateObjectDie ModuleTag_11
13848      DeathTypes = NONE +CRUSHED +SPLATTED
13849      CreationList = OCL_CrusaderTank_CrushEffect
13850    End
13851    Behavior = CreateCrateDie ModuleTag_12
13852      CrateData = SalvageCrateData
13853      ;CrateData = EliteTankCrateData
13854      ;CrateData = HeroicTankCrateData
13855    End
13856    
13857    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
13858      DetectionRate             = 500
13859      DetectionRange           = 75
13860      CanDetectWhileGarrisoned  = No
13861      CanDetectWhileContained   = No
13862      ExtraRequiredKindOf       = BOAT
13863    End
13864  
13865    Behavior                 = TransitionDamageFX ModuleTag_13
13866      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
13867      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
13868    End
13869  
13870    Behavior = FlammableUpdate ModuleTag_21
13871      AflameDuration = 3500         ; If I catch fire, I'll burn for this long...
13872      AflameDamageAmount = 5       ; taking this much damage...
13873      AflameDamageDelay = 500       ; this often.
13874    End
13875  
13876    Geometry = BOX
13877    GeometryMajorRadius = 12.0
13878    GeometryMinorRadius = 8.0
13879    GeometryHeight = 10.5    
13880    GeometryIsSmall = Yes 
13881    Shadow = SHADOW_VOLUME   
13882    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
13883  
13884  End
13885  ;--------------------------------------------------End Scorpion Tank---------------------------------------------
13886  
13887  ;------------------------------------------------------------------------------
13888  ;GLA Rocket Buggy
13889  Object GLAVehicleRocketBuggy
13890  
13891    ; *** ART Parameters ***
13892    SelectPortrait         = SURocketBuggy_L
13893    ButtonImage            = SURocketBuggy
13894    
13895    UpgradeCameo1 = Upgrade_GLABuggyAmmo
13896    UpgradeCameo2 = Upgrade_GLAAPRockets
13897    UpgradeCameo3 = Upgrade_GLAJunkRepair
13898    ;UpgradeCameo4 = NONE
13899    ;UpgradeCameo5 = NONE
13900    
13901    Draw = W3DTruckDraw ModuleTag_01
13902      OkToChangeModelColor = Yes
13903  
13904      DefaultConditionState
13905        Model = UVRockBug
13906        Turret = Turret
13907        ShowSubObject = Turret
13908        HideSubObject = TurretUp01 
13909        WeaponFireFXBone = PRIMARY WeaponA
13910        WeaponLaunchBone = PRIMARY WeaponA
13911      End
13912      
13913      ConditionState = REALLYDAMAGED
13914        Model = UVRockBug_D
13915        Turret = Turret
13916        ShowSubObject = Turret
13917        HideSubObject = TurretUp01 
13918        WeaponFireFXBone = PRIMARY WeaponA
13919        WeaponLaunchBone = PRIMARY WeaponA
13920      End
13921      
13922      ConditionState = RUBBLE
13923        Model = UVRockBug_D
13924        Turret = Turret
13925        ShowSubObject = Turret
13926        HideSubObject = TurretUp01 
13927        WeaponFireFXBone = PRIMARY WeaponA
13928        WeaponLaunchBone = PRIMARY WeaponA
13929      End
13930  
13931      ConditionState =   WEAPONSET_PLAYER_UPGRADE
13932        Model = UVRockBug
13933        Turret = TurretUp01
13934        ShowSubObject = TurretUp01 
13935        HideSubObject = Turret
13936        WeaponFireFXBone = PRIMARY WeaponB
13937        WeaponLaunchBone = PRIMARY WeaponB
13938      End
13939      
13940      ConditionState =   WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
13941        Model = UVRockBug_D
13942        Turret = TurretUp01
13943        ShowSubObject = TurretUp01 
13944        HideSubObject = Turret
13945        WeaponFireFXBone = PRIMARY WeaponB
13946        WeaponLaunchBone = PRIMARY WeaponB
13947      End
13948      
13949      ConditionState =   WEAPONSET_PLAYER_UPGRADE RUBBLE
13950        Model = UVRockBug_D
13951        Turret = TurretUp01
13952        ShowSubObject = TurretUp01 
13953        HideSubObject = Turret
13954        WeaponFireFXBone = PRIMARY WeaponB
13955        WeaponLaunchBone = PRIMARY WeaponB
13956      End
13957  
13958      TrackMarks = EXTireTrack.tga
13959  
13960      Dust                        = RocketBuggyDust
13961      DirtSpray                   = RocketBuggyDirtSpray
13962      PowerslideSpray             = RocketBuggyDirtPowerSlide
13963  
13964      ; These parameters are only used if the model has a separate suspension, 
13965      ; and the locomotor has HasSuspension = Yes.
13966      LeftFrontTireBone           = Tire01
13967      RightFrontTireBone          = Tire02
13968      LeftRearTireBone            = Tire03
13969      RightRearTireBone           = Tire04
13970      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
13971      PowerslideRotationAddition  = 2.5   ; This speed is added to the rotation speed when powersliding.
13972  
13973    End
13974  
13975    ; ***DESIGN parameters ***
13976    DisplayName         = OBJECT:RocketBuggy
13977    Side                = GLA
13978    EditorSorting       = VEHICLE
13979    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
13980    WeaponSet
13981      Conditions = None 
13982      Weapon = PRIMARY BuggyRocketWeapon
13983    End
13984    WeaponSet
13985      Conditions = PLAYER_UPGRADE 
13986      Weapon = PRIMARY BuggyRocketWeaponUpgraded
13987    End
13988    ArmorSet
13989      Conditions      = None
13990      Armor           = TruckArmor
13991      DamageFX        = TankDamageFX
13992    End
13993    BuildCost       = 900
13994    BuildTime       = 10.0          ;in seconds    
13995    VisionRange     = 180
13996    ShroudClearingRange = 300
13997    Prerequisites
13998      Object = GLAArmsDealer
13999      Object = GLAPalace
14000    End
14001  
14002    ExperienceValue       = 50 50 100 150    ;Experience point value at each level
14003    ExperienceRequired    = 0 200 400 800  ;Experience points needed to gain each level
14004    IsTrainable           = Yes             ;Can gain experience
14005    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
14006    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
14007    CommandSet            = GLAVehicleRocketBuggyCommandSet
14008  
14009    ; *** AUDIO Parameters ***
14010    VoiceSelect = RocketBuggyVoiceSelect
14011    VoiceMove = RocketBuggyVoiceMove
14012    VoiceAttack = RocketBuggyVoiceAttack
14013    SoundMoveStart = RocketBuggyMoveStart
14014    SoundMoveStartDamaged = RocketBuggyMoveStart
14015    VoiceGuard = RocketBuggyVoiceMove
14016  
14017  
14018    UnitSpecificSounds
14019      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
14020      VoiceCreate          = RocketBuggyVoiceCreate
14021      TurretMoveStart = NoSound
14022      TurretMoveLoop = TurretMoveLoop  
14023    ; Required for the W3DTruckDraw module
14024      TruckLandingSound = RocketBuggyLand
14025      TruckPowerslideSound = RocketBuggyPowerslide
14026      VoiceCrush      = RocketBuggyVoiceCrush
14027      VoiceEnter = RocketBuggyVoiceMove
14028    End
14029  
14030    ; *** ENGINEERING Parameters ***
14031    RadarPriority = UNIT
14032    KindOf = PRELOAD SELECTABLE CAN_ATTACK DONT_AUTO_CRUSH_INFANTRY ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
14033  
14034    Body = ActiveBody ModuleTag_02
14035      MaxHealth       = 120
14036      InitialHealth   = 120
14037    End
14038    Behavior = AIUpdateInterface ModuleTag_03
14039      Turret
14040        TurretTurnRate = 90
14041        ControlledWeaponSlots = PRIMARY
14042      End
14043      AutoAcquireEnemiesWhenIdle = Yes
14044    End
14045    Locomotor = SET_NORMAL RocketBuggyLocomotor
14046    Behavior = PhysicsBehavior ModuleTag_04
14047      Mass = 50.0
14048    End
14049  
14050  ; The pop up AirDeath 
14051    Behavior = SlowDeathBehavior ModuleTag_05
14052      DeathTypes = ALL -CRUSHED -SPLATTED
14053      ProbabilityModifier = 5
14054      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
14055      DestructionDelay = 0
14056      FX = INITIAL FX_BuggyNewDeathExplosion
14057      OCL = FINAL OCL_RocketBuggyAirDeathStart
14058    End
14059  
14060    ;Behavior = SlowDeathBehavior ModuleTag_06
14061    ;  DeathTypes = ALL -CRUSHED -SPLATTED
14062    ;  ProbabilityModifier = 5
14063    ;  DestructionDelay = 1000
14064    ;  DestructionDelayVariance = 200
14065    ;  FX = INITIAL FX_RocketBuggyCatchFire
14066    ;  OCL = FINAL OCL_BuggyRocketScatter
14067    ;End
14068  
14069    Behavior = AutoHealBehavior ModuleTag_08
14070      HealingAmount = 2
14071      HealingDelay = 1000 ; msec
14072      TriggeredBy = Upgrade_GLAJunkRepair
14073    End
14074  
14075    Behavior = WeaponSetUpgrade ModuleTag_09
14076      TriggeredBy = Upgrade_GLABuggyAmmo
14077    End
14078  
14079    Behavior = DestroyDie ModuleTag_11
14080      DeathTypes = NONE +CRUSHED +SPLATTED
14081    End
14082  
14083    ; A crushing defeat
14084    Behavior = FXListDie ModuleTag_12
14085      DeathTypes = NONE +CRUSHED +SPLATTED
14086      DeathFX = FX_CarCrush
14087    End
14088    Behavior = CreateObjectDie ModuleTag_13
14089      DeathTypes = NONE +CRUSHED +SPLATTED
14090      CreationList = OCL_RocketBuggy_CrushEffect
14091    End
14092    Behavior = CreateCrateDie ModuleTag_14
14093      CrateData = SalvageCrateData
14094      ;CrateData = EliteTankCrateData
14095      ;CrateData = HeroicTankCrateData
14096    End
14097    
14098    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
14099      DetectionRate             = 500
14100      DetectionRange           = 75
14101      CanDetectWhileGarrisoned  = No
14102      CanDetectWhileContained   = No
14103      ExtraRequiredKindOf       = BOAT
14104    End
14105  
14106    Behavior                 = TransitionDamageFX ModuleTag_15
14107      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
14108      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
14109    End
14110  
14111    Behavior = FlammableUpdate ModuleTag_21
14112      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
14113      AflameDamageAmount = 3       ; taking this much damage...
14114      AflameDamageDelay = 500       ; this often.
14115    End
14116  
14117    Geometry = BOX
14118    GeometryMajorRadius = 13.0
14119    GeometryMinorRadius = 9.0
14120    GeometryHeight = 7.5     
14121    GeometryIsSmall = Yes
14122    Shadow = SHADOW_VOLUME
14123    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
14124  
14125  End
14126  
14127  ;------------------------------------------------------------------------------
14128  Object StingerMissile
14129  
14130    ; *** ART Parameters ***
14131    Draw = W3DModelDraw ModuleTag_01
14132      OkToChangeModelColor = Yes
14133      ConditionState = NONE
14134        Model = UVRockBug_m
14135      End
14136    End
14137  
14138    ; ***DESIGN parameters ***
14139    DisplayName      = OBJECT:StingerMissile
14140    EditorSorting   = SYSTEM
14141    VisionRange = 0.0  
14142    ArmorSet
14143      Conditions      = None
14144      Armor           = ProjectileArmor
14145      DamageFX        = None
14146    End
14147    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
14148  
14149    ; *** ENGINEERING Parameters ***
14150    KindOf = PROJECTILE SMALL_MISSILE
14151    Body = ActiveBody ModuleTag_02
14152      MaxHealth       = 100.0
14153      InitialHealth   = 100.0
14154    End
14155  
14156  ; ---- begin Projectile death behaviors
14157    Behavior = InstantDeathBehavior DeathModuleTag_01
14158      DeathTypes = NONE +DETONATED
14159      ; we detonated normally.
14160      ; no FX, just quiet destroy ourselves
14161    End
14162    Behavior = InstantDeathBehavior DeathModuleTag_02
14163      DeathTypes = NONE +LASERED
14164      ; shot down by laser.
14165      FX         = FX_GenericMissileDisintegrate
14166      OCL        = OCL_GenericMissileDisintegrate
14167    End
14168    Behavior = InstantDeathBehavior DeathModuleTag_03
14169      DeathTypes = ALL -LASERED -DETONATED
14170      ; shot down by nonlaser.
14171      FX         = FX_GenericMissileDeath
14172    End
14173  ; ---- end Projectile death behaviors
14174      
14175    Behavior = PhysicsBehavior ModuleTag_06
14176      Mass = 1
14177    End
14178    Behavior = MissileAIUpdate ModuleTag_07
14179      TryToFollowTarget       = Yes 
14180      FuelLifetime            = 5000
14181      InitialVelocity         = 200                ; in dist/sec
14182      IgnitionDelay           = 0
14183      DistanceToTravelBeforeTurning = 5
14184      IgnitionFX              = None
14185      DistanceToTargetForLock = 100  ; If it gets within 100 of the target, it kills the target.
14186    End
14187  
14188    Behavior = WeaponBonusUpgrade Upgrade_01
14189      TriggeredBy = Upgrade_GLAAPRockets
14190    End
14191  
14192    Locomotor = SET_NORMAL StingerMissileLocomotor
14193  
14194    Geometry = Sphere
14195    GeometryIsSmall = Yes
14196    GeometryMajorRadius = 2.0
14197  
14198  End
14199  
14200  
14201  ;------------------------------------------------------------------------------
14202  Object ComancheAntiTankMissile
14203  
14204    ; *** ART Parameters ***
14205    Draw = W3DModelDraw ModuleTag_01
14206      OkToChangeModelColor = Yes
14207      ConditionState = NONE
14208        ; @todo -- need real art here
14209        Model = UVRockBug_m
14210      End
14211    End
14212  
14213    ; ***DESIGN parameters ***
14214    DisplayName      = OBJECT:Prop
14215    EditorSorting     = SYSTEM
14216    VisionRange = 0.0  
14217    ArmorSet
14218      Conditions      = None
14219      Armor           = ProjectileArmor
14220      DamageFX        = None
14221    End
14222    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
14223  
14224    ; *** ENGINEERING Parameters ***
14225    KindOf = PROJECTILE SMALL_MISSILE
14226    Body = ActiveBody ModuleTag_02
14227      MaxHealth       = 100.0
14228      InitialHealth   = 100.0
14229    End
14230  
14231  ; ---- begin Projectile death behaviors
14232    Behavior = InstantDeathBehavior DeathModuleTag_01
14233      DeathTypes = NONE +DETONATED
14234      ; we detonated normally.
14235      ; no FX, just quiet destroy ourselves
14236    End
14237    Behavior = InstantDeathBehavior DeathModuleTag_02
14238      DeathTypes = NONE +LASERED
14239      ; shot down by laser.
14240      FX         = FX_GenericMissileDisintegrate
14241      OCL        = OCL_GenericMissileDisintegrate
14242    End
14243    Behavior = InstantDeathBehavior DeathModuleTag_03
14244      DeathTypes = ALL -LASERED -DETONATED
14245      ; shot down by nonlaser.
14246      FX         = FX_GenericMissileDeath
14247    End
14248  ; ---- end Projectile death behaviors
14249      
14250    Behavior = PhysicsBehavior ModuleTag_06
14251      Mass = 1
14252    End
14253    Behavior = MissileAIUpdate ModuleTag_07
14254      TryToFollowTarget = Yes 
14255      FuelLifetime = 1000
14256      InitialVelocity = 150                ; in dist/sec
14257      IgnitionDelay = 0
14258      DistanceToTravelBeforeTurning = 10
14259      IgnitionFX = FX_BuggyMissileIgnition
14260    End
14261    Locomotor = SET_NORMAL ComancheAntiTankMissileLocomotor
14262  
14263    Geometry = Sphere
14264    GeometryIsSmall = Yes
14265    GeometryMajorRadius = 2.0
14266  
14267  End
14268  
14269  ;------------------------------------------------------------------------------
14270  Object ComancheRocketPodRocket
14271  
14272    ; *** ART Parameters ***
14273    Draw = W3DModelDraw ModuleTag_01
14274      OkToChangeModelColor = Yes
14275      ConditionState = NONE
14276        ; @todo -- need real art here
14277        Model = UVRockBug_m
14278      End
14279    End
14280  
14281    ; ***DESIGN parameters ***
14282    DisplayName      = OBJECT:Prop
14283    EditorSorting     = SYSTEM
14284    VisionRange = 0.0  
14285    ArmorSet
14286      Conditions      = None
14287      Armor           = ProjectileArmor
14288      DamageFX        = None
14289    End
14290  
14291    ; *** ENGINEERING Parameters ***
14292    KindOf = PROJECTILE SMALL_MISSILE
14293    Body = ActiveBody ModuleTag_02
14294      MaxHealth       = 100.0
14295      InitialHealth   = 100.0
14296    End
14297  
14298  ; ---- begin Projectile death behaviors
14299    Behavior = InstantDeathBehavior DeathModuleTag_01
14300      DeathTypes = NONE +DETONATED
14301      ; we detonated normally.
14302      ; no FX, just quiet destroy ourselves
14303    End
14304    Behavior = InstantDeathBehavior DeathModuleTag_02
14305      DeathTypes = NONE +LASERED
14306      ; shot down by laser.
14307      FX         = FX_GenericMissileDisintegrate
14308      OCL        = OCL_GenericMissileDisintegrate
14309    End
14310    Behavior = InstantDeathBehavior DeathModuleTag_03
14311      DeathTypes = ALL -LASERED -DETONATED
14312      ; shot down by nonlaser.
14313      FX         = FX_GenericMissileDeath
14314    End
14315  ; ---- end Projectile death behaviors
14316      
14317    Behavior = PhysicsBehavior ModuleTag_06
14318      Mass = 1
14319    End
14320    Behavior = MissileAIUpdate ModuleTag_07
14321      TryToFollowTarget = No 
14322      FuelLifetime = 1000
14323      InitialVelocity = 150                ; in dist/sec
14324      IgnitionDelay = 0
14325      DistanceToTravelBeforeTurning = 10
14326      IgnitionFX = FX_BuggyMissileIgnition
14327    End
14328    Locomotor = SET_NORMAL ComancheRocketPodLocomotor
14329    Geometry = Sphere
14330    GeometryIsSmall = Yes
14331    GeometryMajorRadius = 2.0
14332  
14333  End
14334  
14335  ;------------------------------------------------------------------------------
14336  Object RocketBuggyMissile
14337  
14338    ; *** ART Parameters ***
14339    Draw = W3DModelDraw ModuleTag_01
14340      OkToChangeModelColor = Yes
14341      ConditionState = NONE
14342        Model = UVRockBug_m
14343      End
14344    End
14345  
14346    ; ***DESIGN parameters ***
14347    EditorSorting     = SYSTEM
14348    VisionRange       = 0.0  
14349    ArmorSet
14350      Conditions      = None
14351      Armor           = ProjectileArmor
14352      DamageFX        = None
14353    End
14354  
14355    ; *** ENGINEERING Parameters ***
14356    KindOf = PROJECTILE SMALL_MISSILE
14357    Body = ActiveBody ModuleTag_02
14358      MaxHealth       = 100.0
14359      InitialHealth   = 100.0
14360    End
14361  
14362  ; ---- begin Projectile death behaviors
14363    Behavior = InstantDeathBehavior DeathModuleTag_01
14364      DeathTypes = NONE +DETONATED
14365      ; we detonated normally.
14366      ; no FX, just quiet destroy ourselves
14367    End
14368    Behavior = InstantDeathBehavior DeathModuleTag_02
14369      DeathTypes = NONE +LASERED
14370      ; shot down by laser.
14371      FX         = FX_GenericMissileDisintegrate
14372      OCL        = OCL_GenericMissileDisintegrate
14373    End
14374    Behavior = InstantDeathBehavior DeathModuleTag_03
14375      DeathTypes = ALL -LASERED -DETONATED
14376      ; shot down by nonlaser.
14377      FX         = FX_GenericMissileDeath
14378    End
14379  ; ---- end Projectile death behaviors
14380  
14381    Behavior = PhysicsBehavior ModuleTag_06
14382      Mass = 1
14383    End
14384    Behavior = MissileAIUpdate ModuleTag_07
14385      TryToFollowTarget               = Yes
14386      FuelLifetime                    = 1500
14387      InitialVelocity                 = 150                ; in dist/sec
14388      IgnitionDelay                   = 0
14389      DistanceToTravelBeforeTurning   = 3
14390      IgnitionFX                      = FX_BuggyMissileIgnition
14391    End
14392    Locomotor = SET_NORMAL RocketBuggyMissileLocomotor
14393  
14394    Behavior = WeaponBonusUpgrade ModuleTag_08
14395      TriggeredBy = Upgrade_GLAAPRockets
14396    End
14397  
14398    Geometry = Sphere
14399    GeometryIsSmall = Yes
14400    GeometryMajorRadius = 2.0
14401  
14402  End
14403  
14404  ;------------------------------------------------------------------------------
14405  Object SCUDMissile
14406  
14407    ; *** ART Parameters ***
14408    Draw = W3DModelDraw ModuleTag_01
14409      OkToChangeModelColor = Yes
14410      ConditionState = NONE
14411        Model = UVScudLchr_M
14412      End
14413      ConditionState = REALLYDAMAGED
14414        Model = UVScudLchr_DM
14415      End
14416    End
14417  
14418    ; ***DESIGN parameters ***
14419    DisplayName      = OBJECT:SCUDMissile
14420    EditorSorting   = SYSTEM
14421    VisionRange = 0.0  
14422    ArmorSet
14423      Conditions      = None
14424      ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
14425      ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
14426      ;*AntiBallisticMissile = Yes set in the Weapon.ini.
14427      Armor           = BallisticMissileArmor 
14428      DamageFX        = None
14429    End
14430  
14431    ; *** ENGINEERING Parameters ***
14432    KindOf = PROJECTILE BALLISTIC_MISSILE
14433    Body = ActiveBody ModuleTag_02
14434      MaxHealth       = 100.0
14435      InitialHealth   = 100.0
14436    End
14437  
14438  ; ---- begin Projectile death behaviors
14439    Behavior = InstantDeathBehavior DeathModuleTag_01
14440      DeathTypes = NONE +DETONATED
14441      ; we detonated normally.
14442      ; no FX, just quiet destroy ourselves
14443    End
14444    Behavior = InstantDeathBehavior DeathModuleTag_02
14445      DeathTypes = NONE +LASERED
14446      ; shot down by laser.
14447      FX         = FX_GenericMissileDisintegrate
14448      OCL        = OCL_GenericMissileDisintegrate
14449    End
14450    Behavior = InstantDeathBehavior DeathModuleTag_03
14451      DeathTypes = ALL -LASERED -DETONATED
14452      ; shot down by nonlaser.
14453      FX         = FX_GenericMissileDeath
14454    End
14455  ; ---- end Projectile death behaviors
14456      
14457    Behavior = PhysicsBehavior ModuleTag_06
14458      Mass = 1
14459    End
14460    Behavior = MissileAIUpdate ModuleTag_07
14461      TryToFollowTarget = No 
14462      FuelLifetime = 5000
14463      IgnitionDelay = 0
14464  ;   IgnitionFX = FX_ScudStormIgnition ;NOT WORKING
14465      InitialVelocity = 50                ; in dist/sec
14466      DistanceToTravelBeforeTurning = 200
14467      DistanceToTargetBeforeDiving = 200 ; When I hit this close to target, I ignore PreferredHeight.
14468    End
14469    Locomotor = SET_NORMAL SCUDMissileLocomotor
14470  
14471    Behavior = WeaponBonusUpgrade ModuleTag_08
14472      TriggeredBy = Upgrade_GLAAPRockets
14473    End
14474  
14475    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
14476    GeometryMajorRadius = 4.0
14477    GeometryHeight = 4.0
14478    GeometryIsSmall = Yes    
14479  
14480    Shadow = SHADOW_DECAL
14481  End
14482  
14483  ;------------------------------------------------------------------------------
14484  Object TomahawkMissile
14485  
14486    ; *** ART Parameters ***
14487    Draw = W3DModelDraw ModuleTag_01
14488      OkToChangeModelColor = Yes
14489      ConditionState = NONE
14490        Model = AVTomahawk_M
14491  
14492      End
14493    End
14494  
14495    ; ***DESIGN parameters ***
14496    DisplayName      = OBJECT:TomahawkMissile
14497    EditorSorting   = SYSTEM
14498    VisionRange = 0.0  
14499    ArmorSet
14500      Conditions      = None
14501      ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
14502      ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
14503      ;*AntiBallisticMissile = Yes set in the Weapon.ini.
14504      Armor           = BallisticMissileArmor 
14505      DamageFX        = None
14506    End
14507  
14508    ; *** ENGINEERING Parameters ***
14509    KindOf = PROJECTILE BALLISTIC_MISSILE 
14510    Body = ActiveBody ModuleTag_02
14511      MaxHealth       = 200.0
14512      InitialHealth   = 100.0
14513    End
14514  
14515  ; ---- begin Projectile death behaviors
14516    Behavior = InstantDeathBehavior DeathModuleTag_01
14517      DeathTypes = NONE +DETONATED
14518      ; we detonated normally.
14519      FX          = WeaponFX_TomahawkMissileDetonation
14520    End
14521    Behavior = InstantDeathBehavior DeathModuleTag_02
14522      DeathTypes = NONE +LASERED
14523      ; shot down by laser.
14524      FX         = FX_GenericMissileDisintegrate
14525      OCL        = OCL_GenericMissileDisintegrate
14526    End
14527    Behavior = InstantDeathBehavior DeathModuleTag_03
14528      DeathTypes = ALL -LASERED -DETONATED
14529      ; shot down by nonlaser.
14530      FX         = FX_GenericMissileDeath
14531    End
14532  ; ---- end Projectile death behaviors
14533      
14534    Behavior = PhysicsBehavior ModuleTag_06
14535      Mass = 1
14536    End
14537    Behavior = MissileAIUpdate ModuleTag_07
14538      TryToFollowTarget = Yes 
14539      FuelLifetime = 4000
14540      IgnitionDelay = 0
14541      IgnitionFX = FX_TomahawkIgnition
14542      InitialVelocity = 50                ; in dist/sec
14543      DistanceToTravelBeforeTurning = 80
14544      DistanceToTargetBeforeDiving = 100 ; When I hit this close to target, I ignore PreferredHeight. 
14545      ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
14546      ; heart, being over the target counts as "there", so we'll give up and just go straight.
14547  
14548      DistanceToTargetForLock = 10 ; Short lock on, as it looks better flying.  jba.
14549    End
14550    Locomotor = SET_NORMAL TomahawkMissileLocomotor
14551  
14552    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
14553    GeometryMajorRadius = 8.0
14554    GeometryHeight = 4.0
14555    GeometryIsSmall = Yes    
14556  
14557    Shadow = SHADOW_DECAL
14558  End
14559  
14560  ;------------------------------------------------------------------------------
14561  Object NuclearCannonShell
14562  
14563    ; *** ART Parameters ***
14564    Draw = W3DModelDraw ModuleTag_01
14565      OkToChangeModelColor = Yes
14566      ConditionState = NONE
14567        Model = NVNUKECN_B
14568      End
14569    End
14570  
14571    ; ***DESIGN parameters ***
14572    DisplayName      = OBJECT:Missile
14573    EditorSorting   = SYSTEM
14574    VisionRange = 0.0  
14575    ArmorSet
14576      Conditions      = None
14577      Armor           = ProjectileArmor
14578      DamageFX        = None
14579    End
14580  
14581    ; *** ENGINEERING Parameters ***
14582    KindOf = PROJECTILE
14583    Body = ActiveBody ModuleTag_02
14584      MaxHealth       = 100.0
14585      InitialHealth   = 100.0
14586    End
14587  
14588  
14589    Behavior = FireWeaponWhenDeadBehavior ModuleTag_03
14590      DeathWeapon   = ChinaPowerPlantDeathWeapon
14591      StartsActive  = Yes
14592    End
14593  
14594    Behavior = HeightDieUpdate ModuleTag_04
14595      TargetHeight = 1.0
14596      TargetHeightIncludesStructures = No
14597      OnlyWhenMovingDown = Yes
14598      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
14599    End
14600  
14601  ; ---- begin Projectile death behaviors
14602    Behavior = InstantDeathBehavior DeathModuleTag_01
14603      DeathTypes = NONE +DETONATED
14604      ; we detonated normally.
14605      FX         = FX_NukeGLA
14606    End
14607    Behavior = InstantDeathBehavior DeathModuleTag_02
14608      DeathTypes = NONE +LASERED
14609      ; shot down by laser.
14610      FX         = FX_GenericMissileDisintegrate
14611      OCL        = OCL_GenericMissileDisintegrate
14612    End
14613    Behavior = InstantDeathBehavior DeathModuleTag_03
14614      DeathTypes = ALL -LASERED -DETONATED
14615      ; shot down by nonlaser.
14616      FX         = FX_GenericMissileDeath
14617    End
14618  ; ---- end Projectile death behaviors
14619   
14620    Behavior = PhysicsBehavior ModuleTag_09
14621      Mass = 1
14622    End
14623    Behavior = MissileAIUpdate ModuleTag_10
14624      TryToFollowTarget = No 
14625      FuelLifetime = 4000
14626      IgnitionDelay = 0
14627      IgnitionFX = FX_BuggyMissileIgnition
14628      InitialVelocity = 20                ; in dist/sec
14629      DistanceToTravelBeforeTurning = 40
14630      DistanceToTargetBeforeDiving = 50 ; When I hit this close to target, I ignore PreferredHeight. 
14631     ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
14632     ; heart, being over the target counts as "there", so we'll give up and just go straight.
14633    End
14634    Locomotor = SET_NORMAL NuclearCannonShellLocomotor
14635  
14636    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
14637    GeometryMajorRadius = 4.0
14638    GeometryHeight = 4.0
14639    GeometryIsSmall = Yes    
14640  
14641    Shadow = SHADOW_DECAL
14642  End
14643  
14644  ;------------------------------------------------------------------------------
14645  Object StrategyCenterArtilleryShell
14646  
14647    ; *** ART Parameters ***
14648    Draw = W3DModelDraw ModuleTag_01
14649      OkToChangeModelColor = Yes
14650      ConditionState = NONE
14651        Model = NVNUKECN_B
14652  
14653      End
14654    End
14655  
14656    ; ***DESIGN parameters ***
14657    DisplayName      = OBJECT:Missile
14658    EditorSorting   = SYSTEM
14659    VisionRange = 0.0  
14660    ArmorSet
14661      Conditions      = None
14662      Armor           = ProjectileArmor
14663      DamageFX        = None
14664    End
14665  
14666  
14667    ; *** ENGINEERING Parameters ***
14668    KindOf = PROJECTILE
14669    Body = ActiveBody ModuleTag_02
14670      MaxHealth       = 100.0
14671      InitialHealth   = 100.0
14672    End
14673  
14674  ; ---- begin Projectile death behaviors
14675    Behavior = InstantDeathBehavior DeathModuleTag_01
14676      DeathTypes = NONE +DETONATED
14677      ; we detonated normally.
14678      ; no FX, just quiet destroy ourselves
14679    End
14680    Behavior = InstantDeathBehavior DeathModuleTag_02
14681      DeathTypes = NONE +LASERED
14682      ; shot down by laser.
14683      FX         = FX_GenericMissileDisintegrate
14684      OCL        = OCL_GenericMissileDisintegrate
14685    End
14686    Behavior = InstantDeathBehavior DeathModuleTag_03
14687      DeathTypes = ALL -LASERED -DETONATED
14688      ; shot down by nonlaser.
14689      FX         = FX_GenericMissileDeath
14690    End
14691  ; ---- end Projectile death behaviors
14692  
14693    Behavior = PhysicsBehavior ModuleTag_04
14694      Mass = 1
14695    End
14696    Behavior = MissileAIUpdate ModuleTag_05
14697      TryToFollowTarget = No 
14698      FuelLifetime = 4000
14699      IgnitionDelay = 0
14700      IgnitionFX = FX_BuggyMissileIgnition
14701      InitialVelocity = 20                ; in dist/sec
14702      DistanceToTravelBeforeTurning = 40
14703      DistanceToTargetBeforeDiving = 50 ; When I hit this close to target, I ignore PreferredHeight. 
14704     ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
14705     ; heart, being over the target counts as "there", so we'll give up and just go straight.
14706    End
14707    Locomotor = SET_NORMAL NuclearCannonShellLocomotor
14708  
14709    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
14710    GeometryMajorRadius = 4.0
14711    GeometryHeight = 4.0
14712    GeometryIsSmall = Yes    
14713  
14714    Shadow = SHADOW_DECAL
14715  End
14716  
14717  ;------------------------------------------------------------------------------
14718  Object MissileDefenderMissile
14719  
14720    ; *** ART Parameters ***
14721    Draw = W3DModelDraw ModuleTag_01
14722      OkToChangeModelColor = Yes
14723      ConditionState = NONE
14724        Model = ExMsslTm
14725      End
14726    End
14727  
14728    ; ***DESIGN parameters ***
14729    DisplayName      = OBJECT:RangerTeamMissile
14730    EditorSorting   = SYSTEM
14731    VisionRange = 0.0  
14732    ArmorSet
14733      Conditions      = None
14734      Armor           = ProjectileArmor
14735      DamageFX        = None
14736    End
14737  
14738    ; *** ENGINEERING Parameters ***
14739    KindOf = PROJECTILE SMALL_MISSILE
14740    Body = ActiveBody ModuleTag_02
14741      MaxHealth       = 100.0
14742      InitialHealth   = 100.0
14743    End
14744  
14745  ; ---- begin Projectile death behaviors
14746    Behavior = InstantDeathBehavior DeathModuleTag_01
14747      DeathTypes = NONE +DETONATED
14748      ; we detonated normally.
14749      ; no FX, just quiet destroy ourselves
14750    End
14751    Behavior = InstantDeathBehavior DeathModuleTag_02
14752      DeathTypes = NONE +LASERED
14753      ; shot down by laser.
14754      FX         = FX_GenericMissileDisintegrate
14755      OCL        = OCL_GenericMissileDisintegrate
14756    End
14757    Behavior = InstantDeathBehavior DeathModuleTag_03
14758      DeathTypes = ALL -LASERED -DETONATED
14759      ; shot down by nonlaser.
14760      FX         = FX_GenericMissileDeath
14761    End
14762  ; ---- end Projectile death behaviors
14763      
14764    Behavior = PhysicsBehavior ModuleTag_06
14765      Mass = 1
14766    End
14767    Behavior = MissileAIUpdate ModuleTag_07
14768      TryToFollowTarget               = Yes;;;;;;;;;No 
14769      FuelLifetime                    = 3000
14770      InitialVelocity                 = 150                ; in dist/sec
14771      IgnitionDelay                   = 0
14772      DistanceToTravelBeforeTurning   = 3
14773      IgnitionFX                      = FX_BuggyMissileIgnition
14774    End
14775    Locomotor = SET_NORMAL MissileDefenderMissileLocomotor
14776    Geometry = Sphere
14777    GeometryIsSmall = Yes
14778    GeometryMajorRadius = 2.0
14779  
14780  End
14781  
14782  ;------------------------------------------------------------------------------
14783  Object TunnelDefenderMissile
14784  
14785    ; *** ART Parameters ***
14786    Draw = W3DModelDraw ModuleTag_01
14787      OkToChangeModelColor = Yes
14788      ConditionState = NONE
14789        Model = EXStinger01
14790      End
14791    End
14792   
14793    ; ***DESIGN parameters ***
14794    EditorSorting   = SYSTEM
14795    VisionRange = 0.0  
14796    ArmorSet
14797      Conditions      = None
14798      Armor           = ProjectileArmor
14799      DamageFX        = None
14800    End
14801  
14802    ; *** ENGINEERING Parameters ***
14803    KindOf = PROJECTILE SMALL_MISSILE
14804    Body = ActiveBody ModuleTag_02
14805      MaxHealth       = 100.0
14806      InitialHealth   = 100.0
14807    End
14808  
14809  ; ---- begin Projectile death behaviors
14810    Behavior = InstantDeathBehavior DeathModuleTag_01
14811      DeathTypes = NONE +DETONATED
14812      ; we detonated normally.
14813      ; no FX, just quiet destroy ourselves
14814    End
14815    Behavior = InstantDeathBehavior DeathModuleTag_02
14816      DeathTypes = NONE +LASERED
14817      ; shot down by laser.
14818      FX         = FX_GenericMissileDisintegrate
14819      OCL        = OCL_GenericMissileDisintegrate
14820    End
14821    Behavior = InstantDeathBehavior DeathModuleTag_03
14822      DeathTypes = ALL -LASERED -DETONATED
14823      ; shot down by nonlaser.
14824      FX         = FX_GenericMissileDeath
14825    End
14826  ; ---- end Projectile death behaviors
14827  
14828    Behavior = WeaponBonusUpgrade ModuleTag_08
14829      TriggeredBy = Upgrade_GLAAPRockets
14830    End
14831      
14832    Behavior = PhysicsBehavior ModuleTag_06
14833      Mass = 1
14834    End
14835    Behavior = MissileAIUpdate ModuleTag_07
14836      TryToFollowTarget             = Yes;;;;;;;;;;No 
14837      FuelLifetime                  = 1250
14838      InitialVelocity               = 150                ; in dist/sec
14839      IgnitionDelay                 = 0
14840      DistanceToTravelBeforeTurning = 20
14841      IgnitionFX                    = FX_BuggyMissileIgnition
14842    End
14843    Locomotor = SET_NORMAL TunnelDefenderMissileLocomotor
14844  
14845    Geometry = Sphere
14846    GeometryIsSmall = Yes
14847    GeometryMajorRadius = 2.0
14848  
14849  End
14850  
14851  ;------------------------------------------------------------------------------
14852  Object TechnicalRPGMissile
14853  
14854    ; *** ART Parameters ***
14855    Draw = W3DModelDraw ModuleTag_01
14856      OkToChangeModelColor = Yes
14857      DefaultConditionState
14858        Model = EXStinger01
14859      End
14860    End
14861   
14862    ; ***DESIGN parameters ***
14863    EditorSorting     = SYSTEM
14864    VisionRange       = 0.0  
14865    ArmorSet
14866      Conditions      = None
14867      Armor           = ProjectileArmor
14868      DamageFX        = None
14869    End
14870  
14871    ; *** ENGINEERING Parameters ***
14872    KindOf = PROJECTILE SMALL_MISSILE
14873    Body = ActiveBody ModuleTag_02
14874      MaxHealth       = 100.0
14875      InitialHealth   = 100.0
14876    End
14877  
14878  ; ---- begin Projectile death behaviors
14879    Behavior = InstantDeathBehavior DeathModuleTag_01
14880      DeathTypes = NONE +DETONATED
14881      ; we detonated normally.
14882      ; no FX, just quiet destroy ourselves
14883    End
14884    Behavior = InstantDeathBehavior DeathModuleTag_02
14885      DeathTypes = NONE +LASERED
14886      ; shot down by laser.
14887      FX         = FX_GenericMissileDisintegrate
14888      OCL        = OCL_GenericMissileDisintegrate
14889    End
14890    Behavior = InstantDeathBehavior DeathModuleTag_03
14891      DeathTypes = ALL -LASERED -DETONATED
14892      ; shot down by nonlaser.
14893      FX         = FX_GenericMissileDeath
14894    End
14895  ; ---- end Projectile death behaviors
14896      
14897    Behavior = PhysicsBehavior ModuleTag_06
14898      Mass = 1
14899    End
14900    Behavior = MissileAIUpdate ModuleTag_07
14901      TryToFollowTarget             = Yes
14902      FuelLifetime                  = 1000
14903      InitialVelocity               = 150                ; in dist/sec
14904      IgnitionDelay                 = 0
14905      DistanceToTravelBeforeTurning = 20
14906      IgnitionFX                    = FX_BuggyMissileIgnition
14907    End
14908    Locomotor = SET_NORMAL TechnicalRPGMissileLocomotor
14909  
14910    Geometry = Sphere
14911    GeometryIsSmall = Yes
14912    GeometryMajorRadius = 2.0
14913  
14914  End
14915  
14916  ;------------------------------------------------------------------------------
14917  Object TankHunterMissile
14918  
14919    ; *** ART Parameters ***
14920    Draw = W3DModelDraw ModuleTag_01
14921      OkToChangeModelColor = Yes
14922      ConditionState = NONE
14923        Model = EXStinger01
14924      End
14925    End
14926  
14927    ; ***DESIGN parameters ***
14928    EditorSorting   = SYSTEM
14929    VisionRange = 0.0  
14930    ArmorSet
14931      Conditions      = None
14932      Armor           = ProjectileArmor
14933      DamageFX        = None
14934    End
14935  
14936    ; *** ENGINEERING Parameters ***
14937    KindOf = PROJECTILE SMALL_MISSILE
14938    Body = ActiveBody ModuleTag_02
14939      MaxHealth       = 100.0
14940      InitialHealth   = 100.0
14941    End
14942  
14943  ; ---- begin Projectile death behaviors
14944    Behavior = InstantDeathBehavior DeathModuleTag_01
14945      DeathTypes = NONE +DETONATED
14946      ; we detonated normally.
14947      ; no FX, just quiet destroy ourselves
14948    End
14949    Behavior = InstantDeathBehavior DeathModuleTag_02
14950      DeathTypes = NONE +LASERED
14951      ; shot down by laser.
14952      FX         = FX_GenericMissileDisintegrate
14953      OCL        = OCL_GenericMissileDisintegrate
14954    End
14955    Behavior = InstantDeathBehavior DeathModuleTag_03
14956      DeathTypes = ALL -LASERED -DETONATED
14957      ; shot down by nonlaser.
14958      FX         = FX_GenericMissileDeath
14959    End
14960  ; ---- end Projectile death behaviors
14961      
14962    Behavior = PhysicsBehavior ModuleTag_06
14963      Mass = 1
14964    End
14965    Behavior = MissileAIUpdate ModuleTag_07
14966      TryToFollowTarget = Yes;;;;;;;;;;;;No 
14967      FuelLifetime = 1250
14968      InitialVelocity = 150                ; in dist/sec
14969      IgnitionDelay = 0
14970      DistanceToTravelBeforeTurning = 20
14971      IgnitionFX = FX_BuggyMissileIgnition
14972    End
14973    Locomotor = SET_NORMAL TankHunterMissileLocomotor
14974  
14975    Geometry = Sphere
14976    GeometryIsSmall = Yes
14977    GeometryMajorRadius = 2.0
14978  
14979  End
14980  
14981  
14982  ;------------------------------------------------------------------------------
14983  Object GLARocketBuggyFullDebris
14984  
14985    ; *** ART Parameters ***
14986    Draw = W3DModelDraw ModuleTag_01
14987      OkToChangeModelColor = Yes
14988  
14989      DefaultConditionState
14990        Model = UVRockBug_D1
14991        ShowSubObject = Turret
14992        HideSubObject = TurretUp01 
14993      End
14994  
14995      ConditionState =   WEAPONSET_PLAYER_UPGRADE
14996        ShowSubObject = TurretUp01 
14997        HideSubObject = Turret
14998      End
14999    End
15000  
15001    ; ***DESIGN parameters ***
15002    DisplayName           = OBJECT:RocketBuggyDebris
15003    Side                  = GLA
15004    EditorSorting         = SYSTEM
15005    TransportSlotCount    = 0
15006  
15007    ; *** AUDIO Parameters ***
15008    ; *** ENGINEERING Parameters ***
15009    RadarPriority         = UNIT
15010    KindOf                = CAN_CAST_REFLECTIONS 
15011  
15012    Body = ActiveBody ModuleTag_02
15013      MaxHealth       = 1.0
15014      InitialHealth   = 1.0
15015    End
15016  
15017    Behavior = PhysicsBehavior ModuleTag_03
15018      Mass = 50
15019      AllowBouncing = Yes
15020    End
15021    Behavior = LifetimeUpdate ModuleTag_04
15022      MinLifetime = 0   ; min lifetime in msec
15023      MaxLifetime = 0   ; max lifetime in msec
15024    End
15025  
15026    Behavior = WeaponSetUpgrade ModuleTag_05
15027      TriggeredBy = Upgrade_GLABuggyAmmo
15028    End
15029  
15030    Behavior = SlowDeathBehavior ModuleTag_06
15031      DestructionDelay          = 500
15032      DestructionDelayVariance  = 1500
15033      OCL                       = FINAL     OCL_RocketBuggyAirDeath
15034      FX                        = INITIAL   FX_RocketBuggyAirDeathGroundPart
15035      FX                        = FINAL     FX_RocketBuggyAirDeathAirPart    ; This happens in the air
15036    End
15037  
15038    Geometry = BOX
15039    GeometryMajorRadius = 9.0
15040    GeometryMinorRadius = 6.0
15041    GeometryHeight = 7.5     
15042    GeometryIsSmall = Yes    
15043  
15044  End
15045  
15046  ;------------------------------------------------------------------------------
15047  Object RocketBuggyMissileDebris
15048  
15049    ; *** ART Parameters ***
15050    Draw = W3DModelDraw ModuleTag_01
15051      OkToChangeModelColor = Yes
15052      ConditionState = NONE
15053        Model = NVMBuggy_m
15054      End
15055    End
15056  
15057    ; ***DESIGN parameters ***
15058    DisplayName      = OBJECT:RocketBuggyDebris
15059    EditorSorting     = SYSTEM
15060    ArmorSet
15061      Conditions      = None
15062      Armor           = ProjectileArmor
15063      DamageFX        = None
15064    End
15065  
15066    ; *** ENGINEERING Parameters ***
15067    Body = ActiveBody ModuleTag_02
15068      MaxHealth       = 100.0
15069      InitialHealth   = 100.0
15070    End
15071  
15072    Behavior = PhysicsBehavior ModuleTag_03
15073      Mass = 3
15074      AllowBouncing = Yes
15075    End
15076  
15077    Behavior = LifetimeUpdate ModuleTag_04
15078      MinLifetime = 0   ; min lifetime in msec
15079      MaxLifetime = 0   ; max lifetime in msec
15080    End
15081    Behavior = SlowDeathBehavior ModuleTag_05
15082      DestructionDelay = 500
15083      DestructionDelayVariance = 500
15084      FX = INITIAL FX_BuggyMissileDebris
15085      FX = FINAL WeaponFX_RocketBuggyMissileDetonation
15086    End
15087  
15088    Geometry = Sphere
15089    GeometryIsSmall = Yes
15090    GeometryMajorRadius = 2.0
15091  
15092  End
15093  
15094  ;------------------------------------------------------------------------------
15095  Object GLAVehicleQuadCannon
15096  
15097    ; *** ART Parameters ***
15098    SelectPortrait         = SUQuadCannon_L
15099    ButtonImage            = SUQuadCannon
15100    
15101    UpgradeCameo1 = Upgrade_GLAAPBullets
15102    UpgradeCameo2 = Upgrade_GLAJunkRepair
15103    ;UpgradeCameo3 = XXX
15104    ;UpgradeCameo4 = XXX
15105    ;UpgradeCameo5 = XXX
15106    
15107    Draw = W3DTankTruckDraw ModuleTag_01
15108      OkToChangeModelColor = Yes
15109  
15110      ConditionState = NONE
15111        Model = UVQuadCann
15112        Turret = TURRET
15113        TurretPitch = TURRETEL
15114        WeaponFireFXBone  = PRIMARY   BarrelMS
15115        WeaponMuzzleFlash = PRIMARY   BarrelFX
15116        WeaponRecoilBone  = PRIMARY   Barrel
15117        WeaponFireFXBone  = SECONDARY BarrelMS
15118        WeaponMuzzleFlash = SECONDARY BarrelFX
15119        WeaponRecoilBone  = SECONDARY Barrel
15120        ShowSubObject = TURRET
15121        HideSubObject = TURRETUP01 TURRETUP02 BarrelFX01 BarrelFX02 BarrelFX03 BarrelFX04  ; Since we are showing one of three turrets, we need to then hide the subobject muzzleflash
15122      End
15123        
15124      ConditionState = REALLYDAMAGED
15125        Model = UVQuadCann_D
15126        Turret = TURRET
15127        TurretPitch = TURRETEL
15128        WeaponFireFXBone  = PRIMARY   BarrelMS
15129        WeaponMuzzleFlash = PRIMARY   BarrelFX
15130        WeaponRecoilBone  = PRIMARY   Barrel
15131        WeaponFireFXBone  = SECONDARY BarrelMS
15132        WeaponMuzzleFlash = SECONDARY BarrelFX
15133        WeaponRecoilBone  = SECONDARY Barrel
15134        ShowSubObject = TURRET
15135        HideSubObject = TURRETUP01 TURRETUP02 BarrelFX01 BarrelFX02 BarrelFX03 BarrelFX04
15136      End
15137      
15138      ConditionState = RUBBLE
15139        Model = UVQuadCann_D
15140        Turret = TURRET
15141        TurretPitch = TURRETEL
15142        WeaponFireFXBone  = PRIMARY   BarrelMS
15143        WeaponMuzzleFlash = PRIMARY   BarrelFX
15144        WeaponRecoilBone  = PRIMARY   Barrel
15145        WeaponFireFXBone  = SECONDARY BarrelMS
15146        WeaponMuzzleFlash = SECONDARY BarrelFX
15147        WeaponRecoilBone  = SECONDARY Barrel
15148        ShowSubObject = TURRET
15149        HideSubObject = TURRETUP01 TURRETUP02 BarrelFX01 BarrelFX02 BarrelFX03 BarrelFX04
15150      End
15151  
15152      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
15153        Model = UVQuadCann
15154        Turret = TURRETUP01
15155        TurretPitch = TURRETEL01
15156        WeaponFireFXBone  = PRIMARY   BarrelUp01MS
15157        WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
15158        WeaponRecoilBone  = PRIMARY   BarrelUp01
15159        WeaponFireFXBone  = SECONDARY BarrelUp01MS
15160        WeaponMuzzleFlash = SECONDARY BarrelUp01FX
15161        WeaponRecoilBone  = SECONDARY BarrelUp01
15162        ShowSubObject = TURRETUP01
15163        HideSubObject = TURRET TURRETUP02 BarrelUp01FX01 BarrelUp01FX02 BarrelUp01FX03 BarrelUp01FX04
15164      End
15165      
15166      ConditionState = WEAPONSET_CRATEUPGRADE_ONE REALLYDAMAGED
15167        Model = UVQuadCann
15168        Turret = TURRETUP01
15169        TurretPitch = TURRETEL01
15170        WeaponFireFXBone  = PRIMARY   BarrelUp01MS
15171        WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
15172        WeaponRecoilBone  = PRIMARY   BarrelUp01
15173        WeaponFireFXBone  = SECONDARY BarrelUp01MS
15174        WeaponMuzzleFlash = SECONDARY BarrelUp01FX
15175        WeaponRecoilBone  = SECONDARY BarrelUp01
15176        ShowSubObject = TURRETUP01
15177        HideSubObject = TURRET TURRETUP02 BarrelUp01FX01 BarrelUp01FX02 BarrelUp01FX03 BarrelUp01FX04
15178      End
15179      
15180      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE
15181        Model = UVQuadCann
15182        Turret = TURRETUP01
15183        TurretPitch = TURRETEL01
15184        WeaponFireFXBone  = PRIMARY   BarrelUp01MS
15185        WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
15186        WeaponRecoilBone  = PRIMARY   BarrelUp01
15187        WeaponFireFXBone  = SECONDARY BarrelUp01MS
15188        WeaponMuzzleFlash = SECONDARY BarrelUp01FX
15189        WeaponRecoilBone  = SECONDARY BarrelUp01
15190        ShowSubObject = TURRETUP01
15191        HideSubObject = TURRET TURRETUP02 BarrelUp01FX01 BarrelUp01FX02 BarrelUp01FX03 BarrelUp01FX04
15192      End
15193  
15194      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
15195        Model = UVQuadCann
15196        Turret = TURRETUP02
15197        TurretPitch = TURRETEL02
15198        WeaponFireFXBone  = PRIMARY   BarrelUp02MS
15199        WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
15200        WeaponRecoilBone  = PRIMARY   BarrelUp02
15201        WeaponFireFXBone  = SECONDARY BarrelUp02MS
15202        WeaponMuzzleFlash = SECONDARY BarrelUp02FX
15203        WeaponRecoilBone  = SECONDARY BarrelUp02
15204        ShowSubObject = TURRETUP02
15205        HideSubObject = TURRETUP01 TURRET BarrelUp02FX01 BarrelUp02FX02 BarrelUp02FX03 BarrelUp02FX04
15206      End
15207      
15208      ConditionState = WEAPONSET_CRATEUPGRADE_TWO REALLYDAMAGED
15209        Model = UVQuadCann_D
15210        Turret = TURRETUP02
15211        TurretPitch = TURRETEL02
15212        WeaponFireFXBone  = PRIMARY   BarrelUp02MS
15213        WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
15214        WeaponRecoilBone  = PRIMARY   BarrelUp02
15215        WeaponFireFXBone  = SECONDARY BarrelUp02MS
15216        WeaponMuzzleFlash = SECONDARY BarrelUp02FX
15217        WeaponRecoilBone  = SECONDARY BarrelUp02
15218        ShowSubObject = TURRETUP02
15219        HideSubObject = TURRETUP01 TURRET BarrelUp02FX01 BarrelUp02FX02 BarrelUp02FX03 BarrelUp02FX04
15220      End
15221      
15222      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE
15223        Model = UVQuadCann_D
15224        Turret = TURRETUP02
15225        TurretPitch = TURRETEL02
15226        WeaponFireFXBone  = PRIMARY   BarrelUp02MS
15227        WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
15228        WeaponRecoilBone  = PRIMARY   BarrelUp02
15229        WeaponFireFXBone  = SECONDARY BarrelUp02MS
15230        WeaponMuzzleFlash = SECONDARY BarrelUp02FX
15231        WeaponRecoilBone  = SECONDARY BarrelUp02
15232        ShowSubObject = TURRETUP02
15233        HideSubObject = TURRETUP01 TURRET BarrelUp02FX01 BarrelUp02FX02 BarrelUp02FX03 BarrelUp02FX04
15234      End
15235  
15236      TrackMarks = EXTnkTrack.tga
15237  
15238      TreadAnimationRate = 2.0;  amount of tread texture to move per second
15239      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
15240      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
15241  
15242      Dust = RocketBuggyDust
15243      DirtSpray = RocketBuggyDirtSpray
15244   
15245      ; These parameters are only used if the model has a separate suspension, 
15246      ; and the locomotor has HasSuspension = Yes.
15247      LeftFrontTireBone = Tire01
15248      RightFrontTireBone = Tire02
15249      TireRotationMultiplier = 0.2   ; this * speed = rotation.
15250      PowerslideRotationAddition = 0   ; This unit doesn't powerslide.
15251    End
15252  
15253    ; ***DESIGN parameters ***
15254    DisplayName      = OBJECT:QuadCannon
15255    Side = GLA
15256    EditorSorting   = VEHICLE
15257    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
15258    WeaponSet
15259      Conditions = None 
15260      Weapon = PRIMARY QuadCannonGun
15261      Weapon = SECONDARY QuadCannonGunAir
15262    End
15263    WeaponSet
15264      Conditions = CRATEUPGRADE_ONE 
15265      Weapon = PRIMARY QuadCannonGunUpgradeOne
15266      Weapon = SECONDARY QuadCannonGunUpgradeOneAir
15267    End
15268    WeaponSet
15269      Conditions = CRATEUPGRADE_TWO 
15270      Weapon = PRIMARY QuadCannonGunUpgradeTwo
15271      Weapon = SECONDARY QuadCannonGunUpgradeTwoAir
15272    End
15273    ArmorSet
15274      Conditions      = None
15275      Armor           = AntiAirVehicle
15276      DamageFX        = TankDamageFX
15277    End
15278    BuildCost       = 700
15279    BuildTime       = 10.0          ;in seconds    
15280    VisionRange     = 150
15281    ShroudClearingRange = 300
15282    Prerequisites
15283      Object = GLAArmsDealer
15284    End
15285  
15286    CommandSet          = GLAVehicleQuadCannon
15287  
15288    ExperienceValue = 50 50 100 150    ;Experience point value at each level
15289    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
15290    IsTrainable = Yes             ;Can gain experience
15291    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
15292    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
15293  
15294    ; *** AUDIO Parameters ***
15295    VoiceSelect           = QuadCannonVoiceSelect
15296    VoiceMove             = QuadCannonVoiceMove
15297    VoiceAttack           = QuadCannonVoiceAttack
15298    VoiceAttackAir        = QuadCannonVoiceAttackAir
15299    SoundMoveStart        = QuadCannonMoveStart
15300    SoundMoveStartDamaged = QuadCannonMoveStart
15301    VoiceGuard             = QuadCannonVoiceMove
15302    UnitSpecificSounds
15303     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
15304      VoiceCreate         = QuadCannonVoiceCreate
15305     TurretMoveStart      = NoSound
15306     TurretMoveLoop       = TurretMoveLoop
15307     ; Required for the W3DTruckDraw module
15308     TruckLandingSound    = NoSound
15309     TruckPowerslideSound = NoSound
15310     VoiceSalvage         = QuadCannonVoiceSalvage
15311     VoiceCrush           = QuadCannonVoiceCrush
15312     VoiceEnter             = QuadCannonVoiceMove
15313    End
15314  
15315    Behavior = AIUpdateInterface ModuleTag_20
15316      AutoAcquireEnemiesWhenIdle = Yes
15317      MoodAttackCheckRate        = 250
15318    End
15319  
15320    ; *** ENGINEERING Parameters ***
15321    RadarPriority = UNIT
15322    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE
15323  
15324    Body = ActiveBody ModuleTag_02
15325      MaxHealth       = 220.0
15326      InitialHealth   = 220.0
15327    End
15328    
15329    Behavior = AIUpdateInterface ModuleTag_03
15330      Turret
15331        TurretTurnRate = 360
15332        TurretPitchRate = 360
15333        AllowsPitch = Yes
15334        ControlledWeaponSlots = PRIMARY SECONDARY
15335      End
15336      AutoAcquireEnemiesWhenIdle = Yes
15337    End
15338    
15339    Locomotor = SET_NORMAL QuadCannonLocomotor
15340    
15341    Behavior = PhysicsBehavior ModuleTag_04
15342      Mass = 40.0
15343    End
15344    
15345    ; Catch fire, and explode death
15346    Behavior = SlowDeathBehavior ModuleTag_05
15347      DeathTypes = ALL -CRUSHED -SPLATTED
15348      ProbabilityModifier = 411
15349      DestructionDelay = 150
15350      DestructionDelayVariance = 250
15351      OCL = FINAL    OCL_QuadCannonDeathEffect  
15352      FX  = FINAL    FX_BattleMasterExplosionOneFinal
15353    End
15354    
15355    Behavior = AutoHealBehavior ModuleTag_06
15356      HealingAmount = 2
15357      HealingDelay = 1000 ; msec
15358      TriggeredBy = Upgrade_GLAJunkRepair
15359    End
15360  
15361    Behavior = FlammableUpdate ModuleTag_08
15362      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
15363      AflameDamageAmount = 3       ; taking this much damage...
15364      AflameDamageDelay = 500       ; this often.
15365    End
15366  
15367    Behavior                 = TransitionDamageFX ModuleTag_09
15368      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
15369      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
15370    End
15371  
15372  
15373    ; A crushing defeat
15374    Behavior = FXListDie ModuleTag_10
15375      DeathTypes = NONE +CRUSHED +SPLATTED
15376      DeathFX = FX_CarCrush
15377    End
15378  
15379    Behavior = CreateCrateDie ModuleTag_11
15380      CrateData = SalvageCrateData
15381      ;CrateData = EliteTankCrateData
15382      ;CrateData = HeroicTankCrateData
15383    End
15384  
15385    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
15386      DetectionRate             = 500
15387      DetectionRange           = 75
15388      CanDetectWhileGarrisoned  = No
15389      CanDetectWhileContained   = No
15390      ExtraRequiredKindOf       = BOAT
15391    End
15392  
15393    Behavior = WeaponBonusUpgrade ModuleTag_12
15394      TriggeredBy = Upgrade_GLAAPBullets
15395    End 
15396  
15397    Behavior = DestroyDie ModuleTag_13
15398      DeathTypes = NONE +CRUSHED +SPLATTED
15399    End
15400  
15401    Geometry = BOX
15402    GeometryMajorRadius = 18.0
15403    GeometryMinorRadius = 7.0
15404    GeometryHeight = 11.5     
15405    GeometryIsSmall = No
15406    Shadow = SHADOW_VOLUME
15407    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
15408  
15409  End
15410  
15411  ;------------------------------------------------------------------------------
15412  ;Also called Toxin Tractor && ToxinTractor
15413  Object GLAVehicleToxinTruck
15414  
15415    ; *** ART Parameters ***
15416    SelectPortrait         = SUToxinTractor_L
15417    ButtonImage            = SUToxinTractor
15418    
15419    UpgradeCameo1 = Upgrade_GLAAnthraxBeta
15420    UpgradeCameo2 = Upgrade_GLAJunkRepair
15421    ;UpgradeCameo3 = NONE
15422    ;UpgradeCameo4 = NONE
15423    ;UpgradeCameo5 = NONE
15424    
15425    Draw = W3DTruckDraw ModuleTag_01
15426      OkToChangeModelColor = Yes
15427      DefaultConditionState 
15428        Model = UVToxinTrk
15429        Turret = Turret
15430        TurretPitch = TurretEL
15431        WeaponFireFXBone = PRIMARY WeaponA
15432        WeaponLaunchBone = PRIMARY WeaponA
15433        WeaponFireFXBone = SECONDARY Spigot
15434        WeaponLaunchBone = SECONDARY Spigot
15435      End
15436      AliasConditionState WEAPONSET_PLAYER_UPGRADE
15437      ConditionState = USING_WEAPON_B 
15438        Model = UVToxinTrk
15439        ParticleSysBone = none ToxinPuddleContinuous
15440      END
15441      ConditionState = USING_WEAPON_B WEAPONSET_PLAYER_UPGRADE
15442        Model = UVToxinTrk
15443        ParticleSysBone = none AnthraxPuddleContinuous
15444      END
15445  
15446      ConditionState = REALLYDAMAGED
15447        Model = UVToxinTrk_D
15448      End
15449      AliasConditionState REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE
15450      ConditionState = USING_WEAPON_B REALLYDAMAGED
15451        Model = UVToxinTrk_D
15452        ParticleSysBone = none ToxinPuddleContinuous
15453      END
15454      ConditionState = USING_WEAPON_B REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE 
15455        Model = UVToxinTrk_D
15456        ParticleSysBone = none AnthraxPuddleContinuous
15457      END
15458  
15459      ConditionState = RUBBLE
15460        Model = UVToxinTrk_D
15461      End
15462      AliasConditionState WEAPONSET_PLAYER_UPGRADE RUBBLE
15463  
15464      TrackMarks = EXTireTrack.tga
15465      LeftFrontTireBone = Tire01
15466      RightFrontTireBone = Tire02
15467      LeftRearTireBone = Tire03
15468  
15469      RightRearTireBone = Tire04
15470      TireRotationMultiplier = 0.2   ; this * speed = rotation.
15471      PowerslideRotationAddition = 0   ; This vehicle doesn't powerslide.
15472  
15473      Dust = RocketBuggyDust
15474      DirtSpray = RocketBuggyDirtSpray
15475  
15476    End
15477  
15478    ; ***DESIGN parameters ***
15479    DisplayName         = OBJECT:ToxinTruck
15480    Side                = GLA
15481    EditorSorting       = VEHICLE
15482    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
15483    WeaponSet 
15484      Conditions        = None 
15485      Weapon            = PRIMARY     ToxinTruckGun
15486      Weapon            = SECONDARY   ToxinTruckSprayer
15487      AutoChooseSources = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
15488      AutoChooseSources = SECONDARY   NONE ;Special attack only
15489    End
15490    WeaponSet
15491      Conditions        = PLAYER_UPGRADE 
15492      Weapon            = PRIMARY     ToxinTruckGunUpgraded
15493      Weapon            = SECONDARY   ToxinTruckSprayerUpgraded
15494      AutoChooseSources = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
15495      AutoChooseSources = SECONDARY   NONE ;Special attack only
15496    End
15497    ArmorSet
15498      Conditions        = None
15499      Armor             = ToxinTruckArmor
15500      DamageFX          = TruckDamageFX
15501    End
15502    BuildCost           = 600
15503    BuildTime           = 5.0          ;in seconds    
15504    VisionRange         = 100
15505    ShroudClearingRange = 200
15506    Prerequisites
15507      Object = GLAArmsDealer
15508    End
15509  
15510    ExperienceValue     = 50 50 100 150    ;Experience point value at each level
15511    ExperienceRequired  = 0 100 150 300  ;Experience points needed to gain each level
15512    IsTrainable         = Yes             ;Can gain experience
15513    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
15514    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
15515    CommandSet          = GLAVehicleToxinTruckCommandSet
15516  
15517    ; *** AUDIO Parameters ***
15518    VoiceSelect         = ToxinTractorVoiceSelect
15519    VoiceMove           = ToxinTractorVoiceMove
15520    VoiceGuard          = ToxinTractorVoiceMove
15521    VoiceAttack         = ToxinTractorVoiceAttack
15522    SoundMoveStart      = ToxinTractorMoveStart
15523    SoundMoveStartDamaged = ToxinTractorMoveStart
15524    SoundDie            = ToxinTractorDie
15525  
15526    UnitSpecificSounds
15527      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
15528      VoiceCreate         = ToxinTractorVoiceCreate
15529      TurretMoveStart     = NoSound
15530      TurretMoveLoop      = TurretMoveLoop
15531     TruckLandingSound    = NoSound
15532     TruckPowerslideSound = NoSound
15533      VoiceCrush      = ToxinTractorVoiceCrush
15534      VoiceEnter           = ToxinTractorVoiceMove
15535      VoicePoisonLocation = ToxinTractorVoiceAttackContam
15536  
15537    End
15538  
15539    ; *** ENGINEERING Parameters ***
15540    RadarPriority         = UNIT
15541    KindOf                = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
15542  
15543    Body = ActiveBody ModuleTag_02
15544      MaxHealth           = 240.0
15545      InitialHealth       = 240.0
15546    End
15547  
15548    Behavior = AIUpdateInterface ModuleTag_03
15549      AutoAcquireEnemiesWhenIdle = Yes
15550      Turret
15551        TurretTurnRate            = 180
15552        TurretPitchRate           = 180
15553        AllowsPitch               = Yes
15554        MinPhysicalPitch          = -20 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
15555        TurretFireAngleSweep      = PRIMARY 8
15556        TurretSweepSpeedModifier  = PRIMARY 0.5    ; Sweep slower than you turn
15557        ControlledWeaponSlots     = PRIMARY
15558      End
15559    End
15560    Locomotor             = SET_NORMAL ToxinTruckLocomotor
15561    Behavior              = PhysicsBehavior ModuleTag_04
15562      Mass                = 10.0
15563    End
15564  
15565    Behavior = SlowDeathBehavior  ModuleTag_05
15566      DeathTypes = ALL -CRUSHED -SPLATTED
15567      ProbabilityModifier = 5
15568      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
15569      DestructionDelay = 0
15570      DestructionDelayVariance = 200
15571      OCL = INITIAL OCL_ToxinTractorDeathEffect
15572      ;FX  = FINAL FX_ToxinTruckExplosionOneFinal
15573    End
15574  
15575    Behavior = InstantDeathBehavior  ModuleTag_06
15576      DeathTypes = NONE +CRUSHED +SPLATTED
15577      FX     = FX_CarCrush
15578      OCL    = OCL_CrusaderTank_CrushEffect
15579    End
15580      
15581    Behavior = CreateCrateDie ModuleTag_07
15582      CrateData   = SalvageCrateData
15583      ;CrateData  = EliteTankCrateData
15584      ;CrateData  = HeroicTankCrateData
15585    End
15586  
15587    Behavior = WeaponSetUpgrade ModuleTag_08
15588      ; the Toxin Tractor gets this upgrade if we either buy the upgrade,
15589      ; or if it gets HEROIC status
15590      TriggeredBy = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
15591    End
15592    
15593    Behavior                          = TransitionDamageFX ModuleTag_11
15594      ReallyDamagedParticleSystem1  = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
15595      ReallyDamagedFXList1          = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
15596    End
15597    
15598    Behavior = AutoHealBehavior ModuleTag_12
15599      HealingAmount   = 2
15600      HealingDelay    = 1000 ; msec
15601      TriggeredBy     = Upgrade_GLAJunkRepair
15602    End
15603  
15604    Behavior = FlammableUpdate ModuleTag_21
15605      AflameDuration          = 5000         ; If I catch fire, I'll burn for this long...
15606      AflameDamageAmount      = 3       ; taking this much damage...
15607      AflameDamageDelay       = 500       ; this often.
15608    End
15609  
15610    Behavior = FireOCLAfterWeaponCooldownUpdate ModuleTag_13
15611      WeaponSlot            = SECONDARY
15612      ConflictsWith         = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
15613      OCL                   = OCL_PoisonFieldMedium
15614      MinShotsToCreateOCL   = 4
15615      OCLLifetimePerSecond  = 10000
15616      OCLLifetimeMaxCap     = 180000
15617    End
15618    Behavior = FireOCLAfterWeaponCooldownUpdate ModuleTag_14
15619      WeaponSlot            = SECONDARY
15620      TriggeredBy           = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
15621      OCL                   = OCL_PoisonFieldUpgradedMedium
15622      MinShotsToCreateOCL   = 4
15623      OCLLifetimePerSecond  = 10000
15624      OCLLifetimeMaxCap     = 180000
15625    End
15626  
15627    Behavior = FireWeaponWhenDeadBehavior ModuleTag_15    ;These two make the right damage field at death
15628      DeathWeapon   = ToxinTractorExplosionEffect
15629      StartsActive  = Yes   
15630      ConflictsWith = Upgrade_GLAAnthraxBeta
15631    End
15632    Behavior = FireWeaponWhenDeadBehavior ModuleTag_16
15633      DeathWeapon   = ToxinTractorExplosionEffectUpgraded
15634      StartsActive  = No   
15635      TriggeredBy = Upgrade_GLAAnthraxBeta
15636    End
15637  
15638    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
15639      DetectionRate             = 500
15640      DetectionRange           = 75
15641      CanDetectWhileGarrisoned  = No
15642      CanDetectWhileContained   = No
15643      ExtraRequiredKindOf       = BOAT
15644    End
15645  
15646    Geometry = BOX
15647    GeometryMajorRadius = 13.0
15648    GeometryMinorRadius = 9.0
15649    GeometryHeight = 10.0   ; set to make the projectile stream look right  
15650    GeometryIsSmall = Yes    
15651    Shadow = SHADOW_VOLUME
15652    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
15653  
15654  End
15655  
15656  ;------------------------------------------------------------------------------
15657  Object ToxinTruckStreamProjectile
15658  
15659  ; Explanation - Particles can't do damage, so this is a fast shooting low 
15660  ; damage invisible missile launcher with a toxin trail for exhaust
15661  
15662    ; *** ART Parameters ***
15663    Draw = W3DModelDraw ModuleTag_01
15664      DefaultConditionState
15665        Model = NONE 
15666      End
15667    End
15668    ; Must have a draw module to be allowed to draw detonation FX
15669  
15670    ; ***DESIGN parameters ***
15671    EditorSorting     = SYSTEM
15672    VisionRange       = 0.0  
15673    ArmorSet
15674      Conditions      = None
15675      Armor           = ProjectileArmor
15676      DamageFX        = None
15677    End
15678  
15679    ; *** ENGINEERING Parameters ***
15680    KindOf            = PROJECTILE
15681    Body              = ActiveBody ModuleTag_02
15682      MaxHealth       = 100.0
15683      InitialHealth   = 100.0
15684    End
15685  
15686    Behavior = DestroyDie ModuleTag_03
15687      ;nothing
15688    End
15689      
15690    Behavior = PhysicsBehavior ModuleTag_04
15691      Mass                = 1
15692      AllowCollideForce   = No  ; toxins collide, but never apply forces when they do so
15693    End
15694  
15695    Behavior = MissileAIUpdate ModuleTag_05
15696      TryToFollowTarget               = No 
15697      FuelLifetime                    = 500
15698      InitialVelocity                 = 120                ; in dist/sec
15699      IgnitionDelay                   = 0
15700      DistanceToTravelBeforeTurning   = 2
15701      GarrisonHitKillRequiredKindOf   = INFANTRY
15702      GarrisonHitKillForbiddenKindOf  = NONE
15703      GarrisonHitKillCount            = 2
15704      GarrisonHitKillFX               = FX_ToxinStreamGarrisonBuildingHit
15705    End
15706  
15707    Locomotor = SET_NORMAL ToxinTruckStreamLocomotor
15708  
15709    Behavior = BoneFXUpdate ModuleTag_06
15710      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:ToxinTrail01 ; Covers gap at beginning of line
15711    End
15712  
15713    Behavior = BoneFXDamage ModuleTag_07
15714      ;nothing
15715    End
15716  
15717    Geometry = Sphere
15718    GeometryIsSmall = Yes
15719    GeometryMajorRadius = 2.0
15720  
15721  End
15722  
15723  ;------------------------------------------------------------------------------
15724  Object ToxinTruckStreamProjectileUpgraded
15725  
15726  ; Explanation - Particles can't do damage, so this is a fast shooting low 
15727  ; damage invisible missile launcher with a toxin trail for exhaust
15728  
15729    ; *** ART Parameters ***
15730    Draw = W3DModelDraw ModuleTag_01
15731      DefaultConditionState
15732        Model = NONE 
15733      End
15734    End
15735    ; Must have a draw module to be allowed to draw detonation FX
15736  
15737    ; ***DESIGN parameters ***
15738    EditorSorting     = SYSTEM
15739    VisionRange       = 0.0  
15740    ArmorSet
15741      Conditions      = None
15742      Armor           = ProjectileArmor
15743      DamageFX        = None
15744    End
15745  
15746    ; *** ENGINEERING Parameters ***
15747    KindOf            = PROJECTILE
15748    Body              = ActiveBody ModuleTag_02
15749      MaxHealth       = 100.0
15750      InitialHealth   = 100.0
15751    End
15752  
15753    Behavior = DestroyDie ModuleTag_03
15754      ;nothing
15755    End
15756      
15757    Behavior = PhysicsBehavior ModuleTag_04
15758      Mass = 1
15759      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
15760    End
15761  
15762    Behavior = MissileAIUpdate ModuleTag_05
15763      TryToFollowTarget               = No 
15764      FuelLifetime                    = 500
15765      InitialVelocity                 = 120                ; in dist/sec
15766      IgnitionDelay                   = 0
15767      DistanceToTravelBeforeTurning   = 2
15768      GarrisonHitKillRequiredKindOf   = INFANTRY
15769      GarrisonHitKillForbiddenKindOf  = NONE
15770      GarrisonHitKillCount            = 2
15771      GarrisonHitKillFX               = FX_ToxinStreamUpgradedGarrisonBuildingHit
15772    End
15773    Locomotor = SET_NORMAL ToxinTruckStreamLocomotor
15774  
15775    Behavior = BoneFXUpdate ModuleTag_06
15776      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:AnthraxTrail01 ; Covers gap at beginning of line
15777    End
15778  
15779    Behavior = BoneFXDamage ModuleTag_07
15780      ;nothing
15781    End
15782  
15783    Geometry = Sphere
15784    GeometryIsSmall = Yes
15785    GeometryMajorRadius = 2.0
15786  
15787  End
15788  
15789  ;------------------------------------------------------------------------------
15790  Object ToxinTruckProjectileStream
15791  
15792    ; *** ART Parameters ***
15793    Draw = W3DProjectileStreamDraw ModuleTag_01
15794      Texture       = EXToxinStream.tga
15795      Width         = 1.5
15796      TileFactor    = 2.0 ; put the texture on the line segment this many times
15797      ScrollRate    = 6.0; scroll the texture offset this fast
15798      MaxSegments   = 14 ; only play the first X if there are a ton of them. 0 means play all
15799    End
15800  
15801    ; *** ENGINEERING Parameters ***
15802    KindOf = INERT
15803    Behavior = ProjectileStreamUpdate ModuleTag_02
15804      ;nothing
15805    End
15806  
15807  End
15808  
15809  
15810  ;------------------------------------------------------------------------------
15811  Object ToxinTruckProjectileStreamUpgraded
15812  
15813    ; *** ART Parameters ***
15814    Draw = W3DProjectileStreamDraw ModuleTag_01
15815      Texture       = EXAnthraxStream.tga
15816      Width         = 1.5
15817      TileFactor    = 2.0 ; put the texture on the line segment this many times
15818      ScrollRate    = 6.0; scroll the texture offset this fast
15819      MaxSegments   = 14 ; only play the first X if there are a ton of them. 0 means play all
15820    End
15821  
15822    ; *** ENGINEERING Parameters ***
15823    KindOf = INERT
15824    Behavior = ProjectileStreamUpdate ModuleTag_02
15825      ;nothing
15826    End
15827  
15828  End
15829  
15830  ;------------------------------------------------------------------------------
15831  Object ToxinTruckSprayProjectile
15832  
15833  ; Explanation - Particles can't do damage, so this is a fast shooting low 
15834  ; damage invisible missile launcher with a flame trail for exhaust
15835  
15836    ; *** ART Parameters ***
15837    Draw = W3DModelDraw ModuleTag_01
15838      DefaultConditionState
15839        Model = NONE 
15840      End
15841    End
15842    ; Must have a draw module to be allowed to draw detonation FX
15843  
15844    ; ***DESIGN parameters ***
15845    EditorSorting     = SYSTEM
15846    VisionRange       = 0.0  
15847    ArmorSet
15848      Conditions      = None
15849      Armor           = ProjectileArmor
15850      DamageFX        = None
15851    End
15852  
15853    ; *** ENGINEERING Parameters ***
15854    KindOf = PROJECTILE
15855    Body = ActiveBody ModuleTag_02
15856      MaxHealth       = 100.0
15857      InitialHealth   = 100.0
15858    End
15859  
15860    Behavior = DestroyDie ModuleTag_03
15861      ;nothing
15862    End
15863      
15864    Behavior = PhysicsBehavior ModuleTag_04
15865      Mass = 50
15866      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
15867    End
15868  
15869    Behavior = MissileAIUpdate ModuleTag_05
15870      TryToFollowTarget = No 
15871      FuelLifetime = 1
15872      InitialVelocity = 1                ; in dist/sec
15873      IgnitionDelay = 0
15874      DistanceToTravelBeforeTurning = 0
15875      DistanceToTargetForLock = 0  ; If it gets within 100 of the target, it kills the target.
15876  
15877    End
15878  
15879    Locomotor = SET_NORMAL ToxinTruckDribbleLocomotor
15880  
15881    Geometry = Sphere
15882    GeometryIsSmall = Yes
15883    GeometryMajorRadius = 2.0
15884  
15885  End
15886  
15887  ;------------------------------------------------------------------------------
15888  Object CleanupHazardProjectileStream
15889  
15890    ; *** ART Parameters ***
15891    Draw = W3DProjectileStreamDraw ModuleTag_01
15892      Texture = EXCleanupStream.tga
15893      Width = 1.5
15894      TileFactor = 2.0 ; put the texture on the line segment this many times
15895      ScrollRate = 6.0; scroll the texture offset this fast
15896      MaxSegments = 14 ; only play the first X if there are a ton of them. 0 means play all
15897    End
15898  
15899    ; *** ENGINEERING Parameters ***
15900    KindOf = INERT
15901    Behavior = ProjectileStreamUpdate ModuleTag_02
15902      ;nothing
15903    End
15904  
15905  End
15906  
15907  ;------------------------------------------------------------------------------
15908  Object CleanupStreamProjectile
15909  
15910  ; Explanation - Particles can't do damage, so this is a fast shooting low 
15911  ; damage invisible missile launcher with a flame trail for exhaust
15912  
15913    ; *** ART Parameters ***
15914    Draw = W3DModelDraw ModuleTag_01
15915      DefaultConditionState
15916        Model = NONE 
15917      End
15918    End
15919    ; Must have a draw module to be allowed to draw detonation FX
15920  
15921    ; ***DESIGN parameters ***
15922    EditorSorting     = SYSTEM
15923    VisionRange       = 0.0  
15924    ArmorSet
15925      Conditions      = None
15926      Armor           = ProjectileArmor
15927      DamageFX        = None
15928    End
15929  
15930    ; *** ENGINEERING Parameters ***
15931    KindOf            = PROJECTILE
15932    Body              = ActiveBody ModuleTag_02
15933      MaxHealth       = 100.0
15934      InitialHealth   = 100.0
15935    End
15936  
15937    Behavior = DestroyDie ModuleTag_03
15938      ;nothing
15939    End
15940      
15941    Behavior = PhysicsBehavior ModuleTag_04
15942      Mass = 1
15943      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
15944    End
15945  
15946    Behavior = MissileAIUpdate ModuleTag_05
15947      TryToFollowTarget = No 
15948      FuelLifetime = 600
15949      InitialVelocity = 120                ; in dist/sec
15950      IgnitionDelay = 0
15951      DistanceToTravelBeforeTurning = 2
15952    End
15953  
15954    Locomotor = SET_NORMAL ToxinTruckStreamLocomotor
15955  
15956    Behavior = BoneFXUpdate ModuleTag_06
15957      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:CleanupTrail01 ; Covers gap at beginning of line
15958    End
15959  
15960    Behavior = BoneFXDamage ModuleTag_07
15961      ;nothing
15962    End
15963  
15964    Geometry = Sphere
15965    GeometryIsSmall = Yes
15966    GeometryMajorRadius = 2.0
15967  
15968  End
15969  
15970  ;------------------------------------------------------------------------------
15971  Object BioHazardCleanupStreamProjectile
15972  
15973  ; Explanation - Particles can't do damage, so this is a fast shooting low 
15974  ; damage invisible missile launcher with a flame trail for exhaust
15975  
15976    ; *** ART Parameters ***
15977    Draw = W3DModelDraw ModuleTag_01
15978      DefaultConditionState
15979        Model = NONE 
15980      End
15981    End
15982    ; Must have a draw module to be allowed to draw detonation FX
15983  
15984    ; ***DESIGN parameters ***
15985    EditorSorting     = SYSTEM
15986    VisionRange       = 0.0  
15987    ArmorSet
15988      Conditions      = None
15989      Armor           = ProjectileArmor
15990      DamageFX        = None
15991    End
15992  
15993    ; *** ENGINEERING Parameters ***
15994    KindOf            = PROJECTILE
15995    Body              = ActiveBody ModuleTag_02
15996      MaxHealth       = 100.0
15997      InitialHealth   = 100.0
15998    End
15999  
16000    Behavior = DestroyDie ModuleTag_03
16001      ;nothing
16002    End
16003      
16004    Behavior = PhysicsBehavior ModuleTag_04
16005      Mass = 1
16006      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
16007    End
16008  
16009    Behavior = MissileAIUpdate ModuleTag_05
16010      TryToFollowTarget = No 
16011      FuelLifetime = 500
16012      InitialVelocity = 120                ; in dist/sec
16013      IgnitionDelay = 0
16014      DistanceToTravelBeforeTurning = 2
16015      ;GarrisonHitKillRequiredKindOf = INFANTRY
16016      ;GarrisonHitKillForbiddenKindOf = NONE
16017      ;GarrisonHitKillCount = 2
16018      ;GarrisonHitKillFX = FX_ToxinStreamGarrisonBuildingHit
16019    End
16020  
16021    Locomotor = SET_NORMAL FasterToxinTruckStreamLocomotor
16022  
16023  
16024    Behavior = BoneFXUpdate ModuleTag_06
16025      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:CleanupTrail01 ; Covers gap at beginning of line
16026    End
16027  
16028    Behavior = BoneFXDamage ModuleTag_07
16029      ;nothing
16030    End
16031  
16032    Geometry = Sphere
16033    GeometryIsSmall = Yes
16034    GeometryMajorRadius = 2.0
16035  End
16036  
16037  
16038  ;------------------------------------------------------------------------------
16039  Object GLAVehicleBombTruck
16040  
16041    ; *** ART Parameters ***
16042    SelectPortrait         = SUBombTruck_L
16043    ButtonImage            = SUBombTruck
16044    
16045    UpgradeCameo1 = Upgrade_GLABombTruckHighExplosiveBomb
16046    UpgradeCameo2 = Upgrade_GLABombTruckBioBomb
16047    UpgradeCameo3 = Upgrade_GLABombTruckNukeWarhead
16048    UpgradeCameo4 = Upgrade_GLAJunkRepair
16049    ;UpgradeCameo5 = NONE
16050    
16051    
16052    Draw = W3DTruckDraw ModuleTag_01
16053      OkToChangeModelColor = Yes
16054      TrackMarks = EXTireTrack.tga
16055      
16056      DefaultConditionState
16057        Model = UVBMBTRUK
16058        Animation = UVBMBTRUK.UVBMBTRUK
16059        AnimationMode = LOOP
16060  
16061        ;Display the default bombload -- and the upgrades will handle the rest!
16062        HideSubObject = Bombload02 Bombload03 Bombload04
16063      End
16064  
16065      ConditionState = REALLYDAMAGED
16066        Model = UVBMBTRUK_D
16067        Animation = UVBMBTRUK_D.UVBMBTRUK_D
16068        AnimationMode = LOOP
16069      End
16070      
16071      ConditionState = RUBBLE
16072        Model = UVBMBTRUK_D
16073      End
16074  
16075      LeftFrontTireBone = Tire01
16076      RightFrontTireBone = Tire02
16077      MidLeftFrontTireBone = Tire03
16078      MidRightFrontTireBone = Tire04
16079      LeftRearTireBone = Tire05
16080      RightRearTireBone = Tire06
16081      TireRotationMultiplier = 0.2   ; this * speed = rotation.
16082  
16083      Dust = RocketBuggyDust
16084      DirtSpray = RocketBuggyDirtSpray
16085      PowerslideSpray = RocketBuggyDirtPowerSlide
16086  
16087    End
16088  
16089    ; ***DESIGN parameters ***
16090    DisplayName      = OBJECT:BombTruck
16091    Side = GLA
16092    EditorSorting   = VEHICLE
16093    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
16094    WeaponSet
16095      Conditions = None 
16096      Weapon = PRIMARY SuicideWeapon 
16097    End
16098    ArmorSet
16099      Conditions      = None
16100      Armor           = TruckArmor
16101      DamageFX        = TruckDamageFX
16102    End
16103    BuildCost       = 1200
16104    BuildTime       = 15.0          ;in seconds    
16105    VisionRange     = 150 ; Used in attack move targeting
16106    ShroudClearingRange     = 200
16107    Prerequisites
16108      Object = GLAArmsDealer
16109      Object = GLAPalace
16110    End
16111    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
16112    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
16113    CommandSet = GLAVehicleBombTruckCommandSet
16114  
16115    ; *** AUDIO Parameters ***
16116    VoiceSelect = BombTruckVoiceSelect
16117    VoiceMove = BombTruckVoiceMove
16118    VoiceGuard = BombTruckVoiceMove
16119    VoiceAttack = BombTruckVoiceAttack
16120    SoundMoveStart = BombTruckMoveStart
16121    SoundMoveStartDamaged = BombTruckMoveStart
16122    UnitSpecificSounds
16123      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
16124      VoiceCreate                   = BombTruckVoiceCreate
16125      TurretMoveStart               = NoSound
16126      TurretMoveLoop                = NoSound
16127      TruckLandingSound             = RocketBuggyLand
16128      TruckPowerslideSound          = RocketBuggyPowerslide
16129      DisguiseStarted               = BombTruckDisguiseStarted
16130      DisguiseRevealedSuccess       = BombTruckDisguiseRevealedSuccess
16131      DisguiseRevealedFailure       = BombTruckDisguiseRevealedFailure
16132      VoiceEnter = BombTruckVoiceMove
16133    End
16134  
16135    ; *** ENGINEERING Parameters ***
16136    RadarPriority = UNIT
16137    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE DISGUISER
16138  
16139    Body = ActiveBody ModuleTag_02
16140      MaxHealth       = 220.0
16141      InitialHealth   = 220.0
16142    End
16143  
16144    ExperienceValue     = 50 50 50 50  ; Experience point value at each level
16145  
16146    Behavior = VeterancyGainCreate ModuleTag_03
16147      StartingLevel = VETERAN
16148    End
16149  
16150    Behavior = AIUpdateInterface ModuleTag_04
16151      AutoAcquireEnemiesWhenIdle = No ATTACK_BUILDINGS
16152    End
16153    Locomotor = SET_NORMAL BombTruckLocomotor
16154  
16155    Behavior = PhysicsBehavior ModuleTag_05
16156      Mass = 40.0
16157    End
16158  
16159    Behavior = AutoHealBehavior ModuleTag_06
16160      HealingAmount = 2
16161      HealingDelay = 1000 ; msec
16162      TriggeredBy = Upgrade_GLAJunkRepair
16163    End
16164  
16165    Behavior = ProductionUpdate ModuleTag_07
16166      MaxQueueEntries = 1
16167    End
16168  
16169    Behavior = CommandSetUpgrade ModuleTag_upgradedisable
16170      CommandSet = GLAVehicleBombTruckNukeCommandSet
16171      TriggeredBy   = Upgrade_GLABombTruckNukeWarhead
16172      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
16173    End
16174    Behavior = CommandSetUpgrade ModuleTag_upgradedisable2
16175      CommandSet = GLAVehicleBombTruckHECommandSet
16176      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
16177      ConflictsWith = Upgrade_GLABombTruckNukeWarhead Upgrade_GLABombTruckBioBomb
16178    End
16179    Behavior = CommandSetUpgrade ModuleTag_upgradedisable3
16180      CommandSet = GLAVehicleBombTruckBioCommandSet
16181      TriggeredBy   = Upgrade_GLABombTruckBioBomb
16182      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckNukeWarhead
16183    End
16184  
16185    Behavior = SlowDeathBehavior  ModuleTag_08
16186      DeathTypes = ALL -CRUSHED -SPLATTED
16187      ProbabilityModifier = 5
16188      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
16189      DestructionDelay = 0
16190      DestructionDelayVariance = 200
16191      FX = FINAL FX_BuggyNewDeathExplosion
16192      OCL = FINAL OCL_BombTruckDeathEffect
16193    End
16194  
16195    ;Behavior = DestroyDie
16196      ;nothing
16197    ;End
16198  
16199  
16200    ;************************************************************************************************
16201    ;* WHICH BOMB DO WE USE??? 
16202    ;* We have 2 damage possibilities -- (normal OR high explosive) 
16203    ;* So part 1 is inflicting the damage itself without creating effects
16204    ;* The complicated part is the part where we have 6 possible effect explosions based on 
16205    ;* all the possible upgrade combinations. Note that bio weapons don't inflict damage through
16206    ;* the explosion.
16207    ;*
16208    ;* DAMAGE COMBINATIONS (NO EFFECTS):
16209    ;* 1) Normal (doesn't have high explosive upgrade, doesn't have nuke upgrade)
16210    ;* 2) High explosive (has high-explosive upgrade, doesn't have nuke upgrade)
16211    ;*
16212    ;* EFFECT COMBINATIONS (NO DAMAGE):
16213    ;* 1) Normal (no upgrades)
16214    ;* 2) Bio (bio-bomb upgrade)
16215    ;* 3) Anthrax (bio-bomb and anthrax upgrade)
16216    ;* 4) High explosive (high explosive upgrade)
16217    ;* 5) High explosive bio (high explosive and bio-bomb upgrade)
16218    ;* 6) High explosive anthrax (high explosive, bio-bomb, and anthrax upgrades)
16219    ;* 7) Nuke Warhead
16220    ;************************************************************************************************
16221  
16222    ;************************************************************************************************
16223    ;* EXCLUSIVE DAMAGE POSSIBILITY 1 -- Normal explosion (can't have high-explosive upgrade/nuke upgrade)
16224    ;************************************************************************************************
16225    Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
16226      DeathWeapon   = BombTruckDefaultBombDamage
16227      StartsActive  = Yes                      ; turned on by upgrade
16228      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckNukeWarhead
16229    End
16230  
16231    ;************************************************************************************************
16232    ;* EXCLUSIVE DAMAGE POSSIBILITY 2 -- High explosion (always plays if it has high-explosive upgrade)
16233    ;* Can't have: Nuke upgrade
16234    ;************************************************************************************************
16235    Behavior = FireWeaponWhenDeadBehavior ModuleTag_10
16236      DeathWeapon   = BombTruckHighExplosionBombDamage
16237      StartsActive  = No                      ; turned on by upgrade
16238      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
16239      ConflictsWith = Upgrade_GLABombTruckNukeWarhead
16240    End
16241  
16242    ;************************************************************************************************
16243    ;* EXCLUSIVE EFFECT COMBINATION 1 - Regular explosion (no upgrades)
16244    ;************************************************************************************************
16245    Behavior = FireWeaponWhenDeadBehavior ModuleTag_11
16246      DeathWeapon   = BombTruckDefaultBombEffect
16247      StartsActive  = Yes                      ; turned on by upgrade
16248      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckNukeWarhead
16249    End
16250  
16251    ;************************************************************************************************
16252    ;* EXCLUSIVE EFFECT COMBINATION 2 - Bio explosion 
16253    ;* Requires:    Bio upgrade
16254    ;* Can't have:  Anthrax upgrade, high explosive upgrade
16255    ;************************************************************************************************
16256    Behavior = FireWeaponWhenDeadBehavior ModuleTag_12
16257      DeathWeapon   = BombTruckBioBombEffect
16258      StartsActive  = No                      ; turned on by upgrade
16259      TriggeredBy   = Upgrade_GLABombTruckBioBomb
16260      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta Upgrade_GLABombTruckNukeWarhead
16261    End
16262  
16263    ;************************************************************************************************
16264    ;* EXCLUSIVE EFFECT COMBINATION 3 - Anthrax explosion 
16265    ;* Requires:    Bio upgrade and anthrax upgrade
16266    ;* Can't have:  High explosive upgrade
16267    ;************************************************************************************************
16268    Behavior = FireWeaponWhenDeadBehavior ModuleTag_13
16269      DeathWeapon   = BombTruckAnthraxBombEffect
16270      StartsActive  = No                      ; turned on by upgrade
16271      TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLAAnthraxBeta
16272      ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckNukeWarhead
16273      RequiresAllTriggers = Yes
16274    End
16275  
16276    ;************************************************************************************************
16277    ;* EXCLUSIVE EFFECT COMBINATION 4 - High explosion
16278    ;* Requires:    High explosive upgrade
16279    ;* Can't have:  Bio upgrade and anthrax upgrade
16280    ;************************************************************************************************
16281    Behavior = FireWeaponWhenDeadBehavior ModuleTag_14
16282      DeathWeapon   = BombTruckHighExplosiveBombEffect
16283      StartsActive  = No                      ; turned on by upgrade
16284      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
16285      ConflictsWith = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckNukeWarhead
16286    End
16287  
16288    ;************************************************************************************************
16289    ;* EXCLUSIVE EFFECT COMBINATION 5 - High explosive bio explosion 
16290    ;* Requires:    High explosive upgrade and bio upgrade 
16291    ;* Can't have:  Anthrax upgrade
16292    ;************************************************************************************************
16293    Behavior = FireWeaponWhenDeadBehavior ModuleTag_15
16294      DeathWeapon   = BombTruckHighExplosiveBioBombEffect
16295      StartsActive  = No                      ; turned on by upgrade
16296      TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
16297      ConflictsWith = Upgrade_GLAAnthraxBeta Upgrade_GLABombTruckNukeWarhead
16298      RequiresAllTriggers = Yes
16299    End
16300  
16301    ;************************************************************************************************
16302    ;* EXCLUSIVE EFFECT COMBINATION 6 - High explosive Anthrax explosion 
16303    ;* Requires:    High explosive, Bio, and anthrax upgrade
16304    ;************************************************************************************************
16305    Behavior = FireWeaponWhenDeadBehavior ModuleTag_16
16306      DeathWeapon   = BombTruckHighExplosiveAnthraxBombEffect
16307      StartsActive  = No                      ; turned on by upgrade
16308      TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
16309      ConflictsWith = Upgrade_GLABombTruckNukeWarhead
16310      RequiresAllTriggers = Yes
16311    End
16312  
16313    ;************************************************************************************************
16314    ;* EXCLUSIVE DAMAGE/EFFECT COMBINATION 7 - Nuke warhead 
16315    ;* Requires:    Nuke warhead upgrade
16316    ;* Can't have:  bio upgrade and high explosives upgrade
16317    ;************************************************************************************************
16318    Behavior = FireWeaponWhenDeadBehavior ModuleTag_nukeup
16319      DeathWeapon   = BombTruckNukeWarhead
16320      StartsActive  = No                      ; turned on by upgrade
16321      TriggeredBy   = Upgrade_GLABombTruckNukeWarhead
16322      ;ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
16323    End
16324  
16325    ;-------------------------------------------------------------------
16326    ; Wheeeee! Now we get to display the payload based on upgrades!!! 
16327    ;-------------------------------------------------------------------
16328    Behavior = SubObjectsUpgrade ModuleTag_17
16329      ;*** Bio bomb load ***
16330      TriggeredBy    = Upgrade_GLABombTruckBioBomb 
16331      ConflictsWith  = Upgrade_GLABombTruckHighExplosiveBomb
16332      ShowSubObjects = Bombload02 
16333      HideSubObjects = Bombload01 Bombload03 Bombload04
16334    End
16335    Behavior = SubObjectsUpgrade ModuleTag_18
16336      ;*** High-explosive bomb load ***
16337      TriggeredBy    = Upgrade_GLABombTruckHighExplosiveBomb
16338      ConflictsWith  = Upgrade_GLABombTruckBioBomb 
16339      ShowSubObjects = Bombload03 
16340      HideSubObjects = Bombload01 Bombload02 Bombload04
16341    End
16342    Behavior = SubObjectsUpgrade ModuleTag_19
16343      ;*** High-explosive bio bomb load ***
16344      TriggeredBy    = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb
16345      ShowSubObjects = Bombload04 
16346      HideSubObjects = Bombload01 Bombload02 Bombload03
16347      RequiresAllTriggers = Yes
16348    End
16349    Behavior = SubObjectsUpgrade ModuleTag_nukeupimage
16350      ;*** nuke warhead load ***
16351      TriggeredBy    = Upgrade_GLABombTruckNukeWarhead
16352      ConflictsWith  = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb
16353      ShowSubObjects = Bombload04 
16354      HideSubObjects = Bombload01 Bombload02 Bombload03
16355      ;RequiresAllTriggers = Yes
16356    End
16357    ;-------------------------------------------------------------------
16358  
16359  
16360    Behavior = SpecialAbility ModuleTag_20
16361      SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
16362      UpdateModuleStartsAttack = Yes
16363      InitiateSound = BombTruckVoiceDisguise
16364    End
16365    Behavior = SpecialAbilityUpdate ModuleTag_21
16366      SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
16367      StartAbilityRange = 1000000.0
16368      ApproachRequiresLOS = No
16369    End
16370  
16371    Behavior = StealthUpdate ModuleTag_22
16372      StealthDelay                          = 1
16373      DisguisesAsTeam                       = Yes
16374      RevealDistanceFromTarget              = 100.0f
16375      OrderIdleEnemiesToAttackMeUponReveal  = Yes
16376      DisguiseFX                            = FX_BombTruckDisguise
16377      DisguiseRevealFX                      = FX_BombTruckDisguiseReveal
16378      InnateStealth                         = Yes
16379      DisguiseTransitionTime                = 2000
16380      DisguiseRevealTransitionTime          = 1000 
16381    End
16382  
16383    ; A crushing defeat
16384    Behavior = FXListDie ModuleTag_23
16385      DeathTypes = NONE +CRUSHED +SPLATTED
16386      DeathFX = FX_CarCrush
16387    End
16388    Behavior = CreateObjectDie ModuleTag_24
16389      DeathTypes = NONE +CRUSHED +SPLATTED
16390      CreationList = OCL_CrusaderTank_CrushEffect
16391    End
16392    Behavior = CreateCrateDie ModuleTag_25
16393      CrateData = SalvageCrateData
16394      ;CrateData = EliteTankCrateData
16395      ;CrateData = HeroicTankCrateData
16396    End
16397    
16398    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
16399      DetectionRate             = 500
16400      DetectionRange           = 75
16401      CanDetectWhileGarrisoned  = No
16402      CanDetectWhileContained   = No
16403      ExtraRequiredKindOf       = BOAT
16404    End
16405  
16406    Behavior = TransitionDamageFX ModuleTag_26
16407      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
16408      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
16409    End
16410  
16411    Behavior = FlammableUpdate ModuleTag_28
16412      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
16413      AflameDamageAmount = 3       ; taking this much damage...
16414      AflameDamageDelay = 500       ; this often.
16415    End
16416  
16417    Behavior = DestroyDie ModuleTag_29
16418      DeathTypes = NONE +CRUSHED +SPLATTED
16419    End
16420  
16421    Geometry = BOX
16422    GeometryMajorRadius = 19.0
16423    GeometryMinorRadius = 8.0
16424    GeometryHeight = 11.5     
16425    GeometryIsSmall = No    
16426    Shadow = SHADOW_VOLUME
16427    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
16428  
16429  End
16430  
16431  ;------------------------------------------------------------------------------
16432  Object GLAVehicleScudLauncher
16433  
16434    ; *** ART Parameters ***
16435    SelectPortrait         = SUScudLauncher_L
16436    ButtonImage            = SUScudLauncher
16437  
16438    UpgradeCameo1 = Upgrade_GLAJunkRepair
16439    UpgradeCameo2 = Upgrade_GLAAnthraxBeta
16440    ;UpgradeCameo3 = NONE
16441    ;UpgradeCameo4 = NONE
16442    ;UpgradeCameo5 = NONE
16443  
16444    Draw = W3DTruckDraw ModuleTag_01
16445      OkToChangeModelColor = Yes
16446  
16447      ProjectileBoneFeedbackEnabledSlots = PRIMARY SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
16448    
16449      DefaultConditionState
16450        Model = UVScudLchr
16451        Turret = TURRET
16452        TurretPitch = TURRETEL
16453        WeaponLaunchBone = PRIMARY WeaponA
16454        WeaponLaunchBone = SECONDARY WeaponA
16455        WeaponHideShowBone = PRIMARY MISSILE
16456        WeaponHideShowBone = SECONDARY MISSILE
16457      End
16458  
16459      ConditionState = REALLYDAMAGED
16460        Model = UVScudLchr_d
16461      End
16462      AliasConditionState = RUBBLE
16463  
16464      TrackMarks = EXTireTrack.tga
16465  
16466      Dust = ScudLauncherDust
16467      DirtSpray = RocketBuggyDirtSpray
16468      PowerslideSpray = RocketBuggyDirtPowerSlide
16469  
16470      ; These parameters are only used if the model has a separate suspension, 
16471      ; and the locomotor has HasSuspension = Yes.
16472      LeftFrontTireBone = Tire01
16473      RightFrontTireBone = Tire05
16474      LeftRearTireBone = Tire04
16475      RightRearTireBone = Tire08
16476      MidLeftFrontTireBone = Tire02
16477      MidRightFrontTireBone = Tire06
16478      MidLeftRearTireBone = Tire03
16479      MidRightRearTireBone = Tire07
16480  
16481      TireRotationMultiplier = 0.2   ; this * speed = rotation.
16482      ;PowerslideRotationAddition = 0.0   ; This speed is added to the rotation speed when powersliding.
16483  
16484    End
16485  
16486  
16487    ; ***DESIGN parameters ***
16488  
16489    DisplayName      = OBJECT:ScudLauncher
16490    Side = GLA
16491    EditorSorting   = VEHICLE
16492    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
16493    WeaponSet
16494      Conditions = None
16495      Weapon = PRIMARY SCUDLauncherGunExplosive
16496      Weapon = SECONDARY SCUDLauncherGunToxin
16497      AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
16498      AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
16499      PreferredAgainst = SECONDARY INFANTRY
16500      ShareWeaponReloadTime = Yes
16501    End
16502    WeaponSet
16503      Conditions = PLAYER_UPGRADE
16504      Weapon = PRIMARY SCUDLauncherGunExplosive
16505      Weapon = SECONDARY SCUDLauncherGunAnthrax
16506      AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
16507      AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
16508      PreferredAgainst = SECONDARY INFANTRY
16509      ShareWeaponReloadTime = Yes
16510    End
16511    ArmorSet
16512      Conditions      = None
16513      Armor           = TruckArmor
16514      DamageFX        = TankDamageFX
16515    End
16516    BuildCost       = 1200
16517    BuildTime       = 15.0 ;20.0          ;in seconds    
16518    VisionRange     = 180
16519    ShroudClearingRange = 300
16520    Prerequisites
16521      Object = GLAArmsDealer
16522      Object = GLAPalace
16523      Science = SCIENCE_ScudLauncher
16524    End
16525  
16526    ExperienceValue = 50 50 100 150   ;Experience point value at each level
16527    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
16528    IsTrainable = Yes             ;Can gain experience
16529    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
16530    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
16531    CommandSet           = GLAVehicleScudLauncherCommandSet
16532  
16533    ; *** AUDIO Parameters ***
16534    VoiceSelect = ScudLauncherVoiceSelect
16535    VoiceMove = ScudLauncherVoiceMove
16536    VoiceGuard = ScudLauncherVoiceMove
16537    VoiceAttack = ScudLauncherVoiceAttack
16538    SoundMoveStart = ScudLauncherMoveStart
16539    SoundMoveStartDamaged = ScudLauncherMoveStart
16540    VoiceFear = ScudLauncherVoiceFear
16541    UnitSpecificSounds
16542      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
16543      VoiceCreate       = ScudLauncherVoiceCreate
16544      TurretMoveStart = NoSound
16545      TurretMoveLoop = TurretMoveLoop
16546      TruckLandingSound = NoSound
16547      TruckPowerslideSound = NoSound
16548      VoiceCrush = ScudLauncherVoiceCrush
16549      VoiceEnter = ScudLauncherVoiceMove
16550      VoicePrimaryWeaponMode = ScudLauncherVoiceModeHiEx
16551      VoiceSecondaryWeaponMode = ScudLauncherVoiceModeAnthrax
16552    End
16553  
16554    ; *** ENGINEERING Parameters ***
16555    RadarPriority = UNIT
16556    KindOf = PRELOAD SELECTABLE CAN_ATTACK DONT_AUTO_CRUSH_INFANTRY CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
16557  
16558    Body = ActiveBody ModuleTag_02
16559      MaxHealth       = 180.0
16560      InitialHealth   = 180.0
16561    End
16562  
16563    Behavior = AIUpdateInterface ModuleTag_03
16564      Turret
16565        TurretTurnRate = 60   ; turn rate, in degrees per sec
16566        TurretPitchRate = 60
16567        FirePitch = 90  ; Instead of aiming pitchwise at the target, it will aim here
16568        AllowsPitch = Yes
16569        ControlledWeaponSlots = PRIMARY SECONDARY
16570      End
16571      AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
16572    End  
16573  
16574    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
16575    End
16576  
16577    Locomotor = SET_NORMAL ScudLauncherLocomotor
16578    Behavior = PhysicsBehavior ModuleTag_05
16579      Mass = 40.0
16580    End
16581  
16582    Behavior = AutoHealBehavior ModuleTag_06
16583      HealingAmount = 2
16584      HealingDelay = 1000 ; msec
16585      TriggeredBy = Upgrade_GLAJunkRepair
16586    End
16587  
16588    Behavior = TransitionDamageFX ModuleTag_08
16589      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
16590      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_ScudLauncherDamageTransition
16591    End
16592  
16593    ; Catch fire, and explode death
16594    Behavior = SlowDeathBehavior ModuleTag_09
16595      DeathTypes = ALL -CRUSHED -SPLATTED
16596      ProbabilityModifier = 50
16597      DestructionDelay = 2000
16598      DestructionDelayVariance = 300
16599      FX  = INITIAL  FX_CrusaderCatchFire
16600      OCL = FINAL    OCL_SCUDLauncherDeathEffect  
16601      FX  = FINAL    FX_ScudLauncherExplosionOneFinal
16602    End
16603  
16604    ; A crushing defeat
16605    Behavior = FXListDie ModuleTag_10
16606      DeathTypes = NONE +CRUSHED +SPLATTED
16607      DeathFX = FX_CarCrush
16608    End
16609  
16610    Behavior = CreateObjectDie ModuleTag_11
16611      DeathTypes = NONE +CRUSHED +SPLATTED
16612      CreationList = OCL_CrusaderTank_CrushEffect
16613    End
16614  
16615    Behavior = FlammableUpdate ModuleTag_21
16616      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
16617      AflameDamageAmount = 3       ; taking this much damage...
16618      AflameDamageDelay = 500       ; this often.
16619    End
16620  
16621    Behavior = DestroyDie ModuleTag_22
16622      DeathTypes = NONE +CRUSHED +SPLATTED
16623    End
16624  
16625    Behavior = WeaponSetUpgrade ModuleTag_23
16626      TriggeredBy = Upgrade_GLAAnthraxBeta
16627    End
16628  
16629    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
16630      DetectionRate             = 500
16631      DetectionRange           = 75
16632      CanDetectWhileGarrisoned  = No
16633      CanDetectWhileContained   = No
16634      ExtraRequiredKindOf       = BOAT
16635    End
16636  
16637    Geometry = BOX
16638    GeometryMajorRadius = 14.0
16639    GeometryMinorRadius = 7.0
16640    GeometryHeight = 11.5     
16641    GeometryIsSmall = No
16642    Shadow = SHADOW_VOLUME   
16643    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length 
16644  
16645  End
16646  
16647  ;------------------------------------------------------------------------------
16648  Object ChinaTankBattleMaster
16649  
16650    ; *** ART Parameters ***
16651    SelectPortrait         = SNBattlemaster_L
16652    ButtonImage            = SNBattlemaster
16653    
16654    UpgradeCameo1 = Upgrade_Nationalism
16655    UpgradeCameo2 = Upgrade_ChinaUraniumShells
16656    UpgradeCameo3 = Upgrade_ChinaNuclearTanks
16657    ;UpgradeCameo4 = NONE
16658    ;UpgradeCameo5 = NONE
16659    
16660    Draw = W3DTankDraw ModuleTag_01
16661      OkToChangeModelColor = Yes
16662      DefaultConditionState
16663        Model               = NVBtMstr
16664        Turret              = Turret01
16665        WeaponFireFXBone    = PRIMARY Muzzle
16666        WeaponRecoilBone    = PRIMARY Barrel
16667        WeaponMuzzleFlash   = PRIMARY MuzzleFX
16668        WeaponLaunchBone    = PRIMARY Muzzle
16669      End
16670      ConditionState = REALLYDAMAGED
16671        Model               = NVBtMstr_D
16672        Turret              = Turret01
16673        WeaponFireFXBone    = PRIMARY Muzzle
16674        WeaponRecoilBone    = PRIMARY Barrel
16675        WeaponMuzzleFlash   = PRIMARY MuzzleFX
16676        WeaponLaunchBone    = PRIMARY Muzzle
16677      End
16678      ConditionState = RUBBLE
16679        Model               = NVBtMstr_D
16680        Turret              = Turret01
16681      End
16682  
16683      TrackMarks              = EXTnkTrack.tga
16684    End
16685  
16686    ; ***DESIGN parameters ***
16687    DisplayName      = OBJECT:BattleMaster
16688    Side = China
16689    EditorSorting   = VEHICLE
16690    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
16691    WeaponSet
16692      Conditions = None 
16693      Weapon = PRIMARY BattleMasterTankGun
16694    End
16695    ArmorSet
16696      Conditions      = None
16697      Armor           = TankArmor
16698      DamageFX        = TankDamageFX
16699    End
16700    BuildCost       = 800
16701    BuildTime       = 10.0          ;in seconds    
16702    VisionRange     = 150
16703    ShroudClearingRange = 300
16704    Prerequisites
16705      Object = ChinaWarFactory
16706    End
16707  
16708    ExperienceValue = 100 100 200 400    ;Experience point value at each level
16709    ExperienceRequired = 0 200 300 600 ;Experience points needed to gain each level
16710    IsTrainable = Yes             ;Can gain experience
16711    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
16712    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
16713    CommandSet       = ChinaVehicleBattleMasterCommandSet
16714  
16715    ; *** AUDIO Parameters ***
16716    VoiceSelect = BattleMasterTankVoiceSelect
16717    VoiceMove = BattleMasterTankVoiceMove
16718    VoiceGuard = BattleMasterTankVoiceMove
16719    VoiceAttack = BattleMasterTankVoiceAttack
16720    SoundMoveStart = BattleMasterTankMoveStart
16721    SoundMoveStartDamaged = BattleMasterTankMoveStart
16722  
16723    UnitSpecificSounds
16724      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
16725      VoiceCreate          = BattleMasterTankVoiceCreate
16726      TurretMoveStart = NoSound
16727      TurretMoveLoop = TurretMoveLoop
16728      VoiceCrush = BattleMasterTankVoiceCrush
16729      VoiceEnter = BattleMasterTankVoiceMove
16730    End
16731  
16732    ; *** ENGINEERING Parameters ***
16733    RadarPriority = UNIT
16734    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
16735  
16736    Body = ActiveBody ModuleTag_02
16737      MaxHealth       = 400.0
16738      InitialHealth   = 400.0
16739    End
16740  
16741    Behavior = AIUpdateInterface ModuleTag_03
16742      Turret
16743        TurretTurnRate = 120   ; turn rate, in degrees per sec
16744        ControlledWeaponSlots = PRIMARY
16745      End
16746      AutoAcquireEnemiesWhenIdle = Yes
16747    End
16748  
16749    Locomotor = SET_NORMAL BattleMasterLocomotor
16750    Locomotor = SET_NORMAL_UPGRADED NuclearBattleMasterLocomotor
16751  
16752    Behavior = HordeUpdate ModuleTag_04
16753      RubOffRadius = 150    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
16754      UpdateRate = 1000     ; how often to recheck horde status (msec)
16755      Radius = 75           ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
16756      KindOf = VEHICLE      ; what KindOf's must match to count towards horde-ness
16757      AlliesOnly = Yes      ; do we only count allies towards horde status? 
16758      ExactMatch = Yes      ; do we only count units of our exact same type towards horde status? (overrides kindof)
16759      Count = 5             ; how many units must be within Radius to grant us horde-ness
16760      Action = HORDE        ; when horde-ing, grant us the HORDE bonus
16761    End
16762  
16763    Behavior = PhysicsBehavior ModuleTag_05
16764      Mass = 40.0
16765    End
16766  
16767    Behavior = FireWeaponWhenDeadBehavior ModuleTag_06
16768      DeathWeapon   = NuclearTankDeathWeapon
16769      StartsActive  = No                        ; turned on by upgrade
16770      TriggeredBy   = Upgrade_ChinaNuclearTanks
16771    End
16772    Behavior = LocomotorSetUpgrade ModuleTag_07
16773      TriggeredBy = Upgrade_ChinaNuclearTanks
16774    End
16775  
16776    ; A crushing defeat
16777    Behavior = DestroyDie ModuleTag_08
16778      DeathTypes = NONE +CRUSHED +SPLATTED
16779    End
16780    Behavior = FXListDie ModuleTag_09
16781      DeathTypes = NONE +CRUSHED +SPLATTED
16782      DeathFX = FX_CarCrush
16783    End
16784    Behavior = CreateObjectDie ModuleTag_10
16785      DeathTypes = NONE +CRUSHED +SPLATTED
16786      CreationList = OCL_CrusaderTank_CrushEffect
16787    End
16788    Behavior = CreateCrateDie ModuleTag_11
16789      CrateData = SalvageCrateData
16790      ;CrateData = EliteTankCrateData
16791      ;CrateData = HeroicTankCrateData
16792    End
16793  
16794    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
16795      DetectionRate             = 500
16796      DetectionRange           = 75
16797      CanDetectWhileGarrisoned  = No
16798      CanDetectWhileContained   = No
16799      ExtraRequiredKindOf       = BOAT
16800    End
16801  
16802    Behavior = SlowDeathBehavior ModuleTag_12
16803      DeathTypes = ALL -CRUSHED -SPLATTED
16804      ProbabilityModifier = 25
16805      DestructionDelay = 200
16806      DestructionDelayVariance = 100
16807      OCL = FINAL    OCL_ChinaTankBattleMasterDebris
16808      FX  = FINAL    FX_BattleMasterExplosionOneFinal
16809    End
16810  
16811    Behavior = SlowDeathBehavior ModuleTag_14
16812      DeathTypes = ALL -CRUSHED -SPLATTED
16813      ProbabilityModifier = 25
16814      DestructionDelay = 1000
16815      DestructionDelayVariance = 100
16816      FX  = INITIAL  FX_BattleMasterExplosionOneInitial
16817      OCL = FINAL    OCL_ChinaTankBattleMasterDebris
16818      FX  = FINAL    FX_BattleMasterExplosionOneFinal
16819    End
16820  
16821    Behavior = TransitionDamageFX ModuleTag_13
16822      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransitionSmall
16823      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
16824      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
16825    End
16826  
16827    Behavior = FlammableUpdate ModuleTag_21
16828      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
16829      AflameDamageAmount = 3       ; taking this much damage...
16830      AflameDamageDelay = 500       ; this often.
16831    End
16832  
16833    Geometry = BOX
16834    GeometryMajorRadius = 13.0
16835    GeometryMinorRadius = 9.0
16836    GeometryHeight = 10     
16837    GeometryIsSmall = Yes
16838    Shadow = SHADOW_VOLUME    
16839    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
16840  
16841  End
16842  
16843  ;------------------------------------------------------------------------------
16844  Object ChinaVehicleBattleMasterDeadHull
16845    ; *** ART Parameters ***
16846    Draw = W3DModelDraw ModuleTag_01
16847      OkToChangeModelColor = Yes
16848  
16849      ConditionState = NONE
16850        Model = NVBtMstr_D1
16851      End
16852    End
16853  
16854    ; ***DESIGN parameters ***
16855    Side = China
16856    EditorSorting   = SYSTEM
16857    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
16858  
16859    ; *** AUDIO Parameters ***
16860    ; *** ENGINEERING Parameters ***
16861    RadarPriority = UNIT
16862    KindOf = CAN_CAST_REFLECTIONS NO_COLLIDE HULK
16863  
16864    Body = ActiveBody ModuleTag_02
16865      MaxHealth       = 1.0
16866      InitialHealth   = 1.0
16867    End
16868  
16869  
16870    Behavior = PhysicsBehavior ModuleTag_03
16871      Mass = 50
16872      AllowBouncing = Yes
16873    End
16874  
16875    Behavior = LifetimeUpdate ModuleTag_04
16876      MinLifetime = 0   ; min lifetime in msec
16877      MaxLifetime = 0   ; max lifetime in msec
16878    End
16879  
16880  
16881    Behavior = SlowDeathBehavior ModuleTag_05
16882      SinkDelay = 14000
16883      SinkRate = 2     ; in Dist/Sec
16884      DestructionDelay = 20000
16885    End
16886  
16887    Behavior = TransitionDamageFX ModuleTag_06
16888      RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
16889    End
16890  
16891    Geometry = BOX
16892    GeometryMajorRadius = 9.0
16893    GeometryMinorRadius = 6.0
16894    GeometryHeight = 7.5     
16895    GeometryIsSmall = Yes    
16896  
16897  End
16898  
16899  
16900  
16901  ;------------------------------------------------------------------------------
16902  ; this unit is never really "built"; building one triggers the random building of
16903  ; one of the other chassis. If you want a *specific* chassis, choose it explicitly;
16904  ; if you want a chassis at random, specify this.
16905  Object GLAVehicleTechnical
16906  
16907    ; *** ART Parameters ***
16908    SelectPortrait         = SUTechnical_L 
16909    ButtonImage            = SUTechnical
16910  
16911    Draw = W3DModelDraw ModuleTag_01
16912      DefaultConditionState
16913        ; give it a model so it'll show up in WB
16914        Model = UVTechTrck
16915      End
16916    End
16917  
16918    ; set cost and time fields here or else they won't work
16919    BuildCost       = 700 ;500
16920    BuildTime       = 8.0 ;5.0          ;in seconds    
16921  
16922    ; Needed to get the Veterancy Overlays on top of the Technical with his build variations.
16923    ;------------------------------------------------------------
16924    Behavior = VeterancyGainCreate ModuleTag_03
16925      StartingLevel = VETERAN
16926      ScienceRequired = SCIENCE_TechnicalTraining
16927    End
16928  
16929    Side = GLA
16930    EditorSorting = VEHICLE
16931    BuildVariations = GLAVehicleTechnicalChassisOne GLAVehicleTechnicalChassisTwo GLAVehicleTechnicalChassisThree
16932  
16933    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE TRANSPORT
16934  
16935  End
16936  
16937  ;------------------------------------------------------------------------------
16938  Object GLAVehicleTechnicalChassisOne
16939  
16940    ; *** ART Parameters ***
16941    SelectPortrait         = SUTechnical_L 
16942    ButtonImage            = SUTechnical
16943  
16944    UpgradeCameo1 = Upgrade_GLAAPBullets
16945    UpgradeCameo2 = Upgrade_GLAJunkRepair
16946    ;UpgradeCameo3 = NONE
16947    ;UpgradeCameo4 = NONE
16948    ;UpgradeCameo5 = NONE
16949  
16950    Draw = W3DTruckDraw ModuleTag_01
16951  
16952      ExtraPublicBone = Dum_Turret 
16953  
16954      DefaultConditionState
16955        Model         = UVTechTrck
16956      End
16957      ConditionState  = REALLYDAMAGED
16958        Model         = UVTechTrck_d
16959      End
16960      ConditionState  = RUBBLE
16961        Model         = UVTechTrck_d
16962      End
16963  
16964      OkToChangeModelColor        = Yes
16965      TrackMarks                  = EXTireTrack.tga
16966      Dust                        = TechnicalDust
16967      DirtSpray                   = RocketBuggyDirtSpray
16968      PowerslideSpray             = RocketBuggyDirtPowerSlide
16969  
16970      ; These parameters are only used if the model has a separate suspension, 
16971      ; and the locomotor has HasSuspension = Yes.
16972      LeftFrontTireBone           = Tire01
16973      RightFrontTireBone          = Tire02
16974      LeftRearTireBone            = Tire03
16975      RightRearTireBone           = Tire04
16976      TireRotationMultiplier      = 0.2        ; this * speed = rotation.
16977      PowerslideRotationAddition  = 2.5    ; This speed is added to the rotation speed when powersliding.
16978    End
16979  
16980    Draw = W3DModelDraw ModuleTag_02
16981  
16982      OkToChangeModelColor        = Yes
16983      AttachToBoneInAnotherModule = Dum_Turret
16984  
16985      ; ------------------ basic technical ------------------------
16986      DefaultConditionState
16987        Model = UITech_SKN
16988        Turret = Dum-TurManMVR
16989        TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
16990        HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
16991        IdleAnimation = UITech_SKL.UITech_STA 0 6
16992        IdleAnimation = UITech_SKL.UITech_IDA
16993        IdleAnimation = UITech_SKL.UITech_IDB
16994        AnimationMode = ONCE
16995        ShowSubObject = 20Cal
16996        WeaponMuzzleFlash = PRIMARY MuzzleFX01
16997        WeaponFireFXBone = PRIMARY Muzzle01
16998      End
16999  
17000      ConditionState = RUBBLE MOVING TURRET_ROTATE
17001        Animation = None
17002        HideSubObject = UITech-SKN
17003        ShowSubObject = 20Cal
17004        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17005        WeaponFireFXBone = PRIMARY Muzzle01
17006      End
17007  
17008      ConditionState = MOVING
17009        Animation = UITech_SKL.UITech_MVB
17010        AnimationMode = LOOP
17011        ShowSubObject = 20Cal
17012        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17013        WeaponFireFXBone = PRIMARY Muzzle01
17014      End
17015  
17016      ConditionState = TURRET_ROTATE
17017        Animation = UITech_SKL.UITech_TNA
17018        AnimationMode = LOOP
17019        ShowSubObject = 20Cal
17020        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17021        WeaponFireFXBone = PRIMARY Muzzle01
17022      End
17023      AliasConditionState = TURRET_ROTATE MOVING
17024      AliasConditionState = TURRET_ROTATE FIRING_A
17025      AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
17026      AliasConditionState = TURRET_ROTATE RELOADING_A
17027      AliasConditionState = TURRET_ROTATE MOVING FIRING_A
17028      AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
17029      AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
17030  
17031      ConditionState = FIRING_A 
17032        Animation = UITech_SKL.UITech_ATA
17033        AnimationMode = LOOP
17034        ShowSubObject = 20Cal
17035        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17036        WeaponFireFXBone = PRIMARY Muzzle01
17037      End
17038  
17039      ; AliasConditionState is a new keyword that says,
17040      ; "give me another ConditionState exactly like the previous
17041      ; one, except with different conditions". Useful when you
17042      ; have several states that are the same with only different condition bits.
17043      AliasConditionState = BETWEEN_FIRING_SHOTS_A
17044      AliasConditionState = RELOADING_A
17045  
17046      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
17047      AliasConditionState = MOVING FIRING_A
17048      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
17049      AliasConditionState = MOVING RELOADING_A
17050  
17051      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
17052      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
17053        IdleAnimation = UITech_SKL.UITech_STA 0 6
17054        IdleAnimation = UITech_SKL.UITech_IDA
17055        IdleAnimation = UITech_SKL.UITech_IDB
17056        AnimationMode = ONCE
17057        ShowSubObject = 50Cal
17058        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17059        WeaponFireFXBone = PRIMARY Muzzle02
17060        WeaponLaunchBone = PRIMARY Muzzle02
17061      End
17062  
17063      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
17064        Animation = None
17065        HideSubObject = UITech-SKN
17066        ShowSubObject = 50Cal
17067        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17068        WeaponFireFXBone = PRIMARY Muzzle02
17069        WeaponLaunchBone = PRIMARY Muzzle02
17070      End
17071  
17072      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
17073        Animation = UITech_SKL.UITech_MVB
17074        AnimationMode = LOOP
17075        ShowSubObject = 50Cal
17076        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17077        WeaponFireFXBone = PRIMARY Muzzle02
17078        WeaponLaunchBone = PRIMARY Muzzle02
17079      End
17080  
17081      ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
17082        Animation = UITech_SKL.UITech_TNA
17083        AnimationMode = LOOP
17084        ShowSubObject = 50Cal
17085        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17086        WeaponFireFXBone = PRIMARY Muzzle02
17087        WeaponLaunchBone = PRIMARY Muzzle02
17088      End
17089      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
17090      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
17091      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
17092      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
17093      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
17094      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
17095      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
17096  
17097      ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A 
17098        Animation = UITech_SKL.UITech_ATA
17099        AnimationMode = LOOP
17100        ShowSubObject = 50Cal
17101        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17102        WeaponFireFXBone = PRIMARY Muzzle02
17103        WeaponLaunchBone = PRIMARY Muzzle02
17104      End
17105  
17106      ; AliasConditionState is a new keyword that says,
17107      ; "give me another ConditionState exactly like the previous
17108      ; one, except with different conditions". Useful when you
17109      ; have several states that are the same with only different condition bits.
17110      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
17111      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
17112  
17113      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
17114      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
17115      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
17116      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
17117  
17118      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
17119      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
17120        IdleAnimation = UITech_SKL.UITech_STA 0 6
17121        IdleAnimation = UITech_SKL.UITech_IDA
17122        IdleAnimation = UITech_SKL.UITech_IDB
17123        AnimationMode = ONCE
17124        ShowSubObject = RPG
17125        WeaponFireFXBone = PRIMARY Muzzle03
17126        WeaponLaunchBone = PRIMARY Muzzle03
17127      End
17128  
17129      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
17130        Animation = None
17131        HideSubObject = UITech-SKN
17132        ShowSubObject = RPG
17133        WeaponFireFXBone = PRIMARY Muzzle03
17134        WeaponLaunchBone = PRIMARY Muzzle03
17135      End
17136  
17137      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
17138        Animation = UITech_SKL.UITech_MVB
17139        AnimationMode = LOOP
17140        ShowSubObject = RPG
17141        WeaponFireFXBone = PRIMARY Muzzle03
17142        WeaponLaunchBone = PRIMARY Muzzle03
17143      End
17144  
17145      ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
17146        Animation = UITech_SKL.UITech_TNA
17147        AnimationMode = LOOP
17148        ShowSubObject = RPG
17149        WeaponFireFXBone = PRIMARY Muzzle03
17150        WeaponLaunchBone = PRIMARY Muzzle03
17151      End
17152      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
17153      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
17154      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
17155      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
17156      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
17157      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
17158      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
17159  
17160      ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A 
17161        Animation = UITech_SKL.UITech_ATA
17162        AnimationMode = LOOP
17163        ShowSubObject = RPG
17164        WeaponFireFXBone = PRIMARY Muzzle03
17165        WeaponLaunchBone = PRIMARY Muzzle03
17166      End
17167  
17168      ; AliasConditionState is a new keyword that says,
17169      ; "give me another ConditionState exactly like the previous
17170      ; one, except with different conditions". Useful when you
17171      ; have several states that are the same with only different condition bits.
17172      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
17173      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
17174  
17175      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
17176      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
17177      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
17178      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
17179  
17180    End
17181  
17182    ; ***DESIGN parameters ***
17183    DisplayName         = OBJECT:Technical
17184    Side                = GLA
17185    EditorSorting       = VEHICLE
17186    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
17187  
17188    WeaponSet
17189      Conditions = None 
17190      Weapon = PRIMARY TechnicalMachineGunWeapon
17191    End
17192    WeaponSet
17193      Conditions = CRATEUPGRADE_ONE 
17194      Weapon = PRIMARY TechnicalCannonWeapon
17195    End
17196    WeaponSet
17197      Conditions = CRATEUPGRADE_TWO 
17198      Weapon = PRIMARY TechnicalRPGWeapon
17199    End
17200    ArmorSet
17201      Conditions      = None
17202      Armor           = TruckArmor
17203      DamageFX        = TruckDamageFX
17204    End
17205    ;update cost and time fields in Object GLAVehicleTechnical, or else they won't work
17206    ;BuildCost            = 300
17207    ;BuildTime            = 5.0          ;in seconds    
17208    VisionRange           = 150
17209    ShroudClearingRange   = 300
17210    Prerequisites
17211      Object = GLAArmsDealer
17212    End
17213  
17214    ExperienceValue         = 25 25 50 100    ;Experience point value at each level
17215    ExperienceRequired      = 0 50 75 150  ;Experience points needed to gain each level
17216    IsTrainable             = Yes             ;Can gain experience
17217    CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
17218    CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
17219    CommandSet              = GLAVehicleTechnicalCommandSet
17220  
17221    ; *** AUDIO Parameters ***
17222    VoiceSelect = TechnicalVoiceSelect
17223    VoiceMove = TechnicalVoiceMove
17224    VoiceGuard = TechnicalVoiceMove
17225    VoiceAttack = TechnicalVoiceAttack
17226    SoundMoveStart = TechnicalMoveStart
17227    SoundMoveStartDamaged = TechnicalMoveStart
17228    SoundDie = TechnicalVoiceDie
17229    SoundEnter = HumveeEnter
17230    SoundExit = HumveeExit
17231  
17232    UnitSpecificSounds
17233    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
17234      VoiceCreate          = TechnicalVoiceCreate
17235      TurretMoveStart = NoSound
17236      TurretMoveLoop = TurretMoveLoop
17237      TruckLandingSound = RocketBuggyLand
17238      TruckPowerslideSound = RocketBuggyPowerslide
17239      VoiceSalvage = TechnicalVoiceSalvage
17240      VoiceCrush      = TechnicalVoiceCrush
17241      VoiceUnload     = TechnicalVoiceUnload
17242      VoiceEnter = TechnicalVoiceMove
17243    End
17244  
17245    ; *** ENGINEERING Parameters ***
17246    RadarPriority = UNIT
17247    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE TRANSPORT
17248  
17249    Behavior = VeterancyGainCreate ModuleTag_03
17250      StartingLevel = VETERAN
17251      ScienceRequired = SCIENCE_TechnicalTraining
17252    End
17253  
17254    Body = ActiveBody ModuleTag_04
17255      MaxHealth       = 180
17256      InitialHealth   = 180
17257    End
17258    Behavior = AIUpdateInterface ModuleTag_05
17259      Turret
17260        TurretTurnRate = 240       ; turn rate, in degrees per sec
17261        NaturalTurretAngle = 0
17262        MinIdleScanAngle = 30      ; in degrees off the natural turret angle
17263        MaxIdleScanAngle = 60      ; in degrees off the natural turret angle
17264        MinIdleScanInterval = 5000 ; in milliseconds
17265        MaxIdleScanInterval = 10000 ; in milliseconds
17266        ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
17267      End
17268      AutoAcquireEnemiesWhenIdle = Yes
17269    End
17270    Locomotor = SET_NORMAL TechnicalLocomotor
17271    Behavior = PhysicsBehavior ModuleTag_06
17272      Mass = 40.0
17273    End
17274    Behavior = AutoHealBehavior ModuleTag_07
17275      HealingAmount = 2
17276      HealingDelay = 1000 ; msec
17277      TriggeredBy = Upgrade_GLAJunkRepair
17278    End
17279  
17280    Behavior = FlammableUpdate ModuleTag_09
17281      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
17282      AflameDamageAmount = 3       ; taking this much damage...
17283      AflameDamageDelay = 500       ; this often.
17284    End
17285  
17286    Behavior                 = TransitionDamageFX ModuleTag_10
17287      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
17288      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
17289    End
17290  
17291    Behavior = DestroyDie ModuleTag_11
17292      DeathTypes = NONE +CRUSHED +SPLATTED
17293    End
17294  
17295    ; A crushing defeat
17296    Behavior = FXListDie ModuleTag_12
17297      DeathTypes = NONE +CRUSHED +SPLATTED
17298      DeathFX = FX_CarCrush
17299    End
17300    Behavior = CreateObjectDie ModuleTag_13
17301      DeathTypes = NONE +CRUSHED +SPLATTED
17302      CreationList = OCL_TechnicalJeep_CrushEffect
17303    End
17304    Behavior = CreateCrateDie ModuleTag_14
17305      CrateData = SalvageCrateData
17306      ;CrateData = EliteTankCrateData
17307      ;CrateData = HeroicTankCrateData
17308    End
17309  
17310    Behavior = SlowDeathBehavior ModuleTag_15
17311      DeathTypes = ALL -CRUSHED -SPLATTED
17312      DestructionDelay = 500
17313      DestructionDelayVariance = 1500
17314      OCL = INITIAL OCL_TechnicalAirDeathStart
17315      FX = INITIAL FX_RocketBuggyAirDeathGroundPart
17316      OCL = FINAL OCL_RocketBuggyAirDeath
17317      FX = FINAL FX_RocketBuggyAirDeathAirPart    ; This happens in the air
17318    End
17319  
17320    Behavior = TransportContain ModuleTag_16
17321      PassengersAllowedToFire = Yes
17322      ;InitialPayload     = GLAInfantryTechnicalRider 2
17323      Slots = 5
17324      AllowInsideKindOf    = INFANTRY
17325      AllowAlliesInside    = Yes
17326      AllowNeutralInside   = No
17327      AllowEnemiesInside   = No
17328      DamagePercentToUnits = 80%
17329      GoAggressiveOnExit   = Yes
17330     End
17331  
17332    Behavior = WeaponBonusUpgrade ModuleTag_17 ; Not a full weapon set switch, just a number tweak reflected in a weapon. 
17333      TriggeredBy = Upgrade_GLAAPBullets
17334    End 
17335  
17336    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
17337      DetectionRate             = 500
17338      DetectionRange           = 75
17339      CanDetectWhileGarrisoned  = No
17340      CanDetectWhileContained   = No
17341      ExtraRequiredKindOf       = BOAT
17342    End
17343  
17344    Geometry = BOX
17345    GeometryMajorRadius = 18.0
17346    GeometryMinorRadius = 9.0
17347    GeometryHeight = 7.5     
17348    GeometryIsSmall = No    
17349    Shadow = SHADOW_VOLUME
17350    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
17351  
17352  End
17353  
17354  ;------------------------------------------------------------------------------
17355  ObjectReskin GLAVehicleTechnicalChassisTwo GLAVehicleTechnicalChassisOne
17356  
17357    ; *** ART Parameters ***
17358    ;SelectPortrait         = SUTechnicalVan_L
17359  
17360    Draw = W3DTruckDraw ModuleTag_01
17361  
17362      ExtraPublicBone = Dum_Turret 
17363  
17364      DefaultConditionState
17365        Model = UVTechVan
17366      End
17367  
17368      ConditionState = REALLYDAMAGED
17369        Model = UVTechVan_d
17370      End
17371      ConditionState = RUBBLE
17372        Model = UVTechVan_d
17373      End
17374  
17375      OkToChangeModelColor = Yes
17376      TrackMarks = EXTireTrack.tga
17377      Dust = TechnicalDust
17378  
17379      ;DirtSpray = RocketBuggyDirtSpray
17380      PowerslideSpray = RocketBuggyDirtPowerSlide
17381  
17382      ; These parameters are only used if the model has a separate suspension, 
17383      ; and the locomotor has HasSuspension = Yes.
17384      LeftFrontTireBone = Tire01
17385      RightFrontTireBone = Tire02
17386      LeftRearTireBone = Tire03
17387      RightRearTireBone = Tire04
17388      TireRotationMultiplier = 0.2        ; this * speed = rotation.
17389      PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
17390    End
17391  
17392    Draw = W3DModelDraw ModuleTag_02
17393      OkToChangeModelColor = Yes
17394      AttachToBoneInAnotherModule = Dum_Turret
17395  
17396      ; ------------------ basic technical ------------------------
17397      DefaultConditionState
17398        Model = UITech_SKN
17399        Turret = Dum-TurManMVR
17400        TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
17401        HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
17402        IdleAnimation = UITech_SKL.UITech_STA 0 6
17403        IdleAnimation = UITech_SKL.UITech_IDA
17404        IdleAnimation = UITech_SKL.UITech_IDB
17405        AnimationMode = ONCE
17406        ShowSubObject = 20Cal
17407        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17408        WeaponFireFXBone = PRIMARY Muzzle01
17409      End
17410  
17411      ConditionState = RUBBLE MOVING TURRET_ROTATE
17412        Animation = None
17413        HideSubObject = UITech-SKN
17414        ShowSubObject = 20Cal
17415        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17416        WeaponFireFXBone = PRIMARY Muzzle01
17417      End
17418  
17419      ConditionState = MOVING
17420        Animation = UITech_SKL.UITech_MVB
17421        AnimationMode = LOOP
17422        ShowSubObject = 20Cal
17423        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17424        WeaponFireFXBone = PRIMARY Muzzle01
17425      End
17426  
17427      ConditionState = TURRET_ROTATE
17428        Animation = UITech_SKL.UITech_TNA
17429        AnimationMode = LOOP
17430        ShowSubObject = 20Cal
17431        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17432        WeaponFireFXBone = PRIMARY Muzzle01
17433      End
17434      AliasConditionState = TURRET_ROTATE MOVING
17435      AliasConditionState = TURRET_ROTATE FIRING_A
17436      AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
17437      AliasConditionState = TURRET_ROTATE RELOADING_A
17438      AliasConditionState = TURRET_ROTATE MOVING FIRING_A
17439      AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
17440      AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
17441  
17442      ConditionState = FIRING_A 
17443        Animation = UITech_SKL.UITech_ATA
17444        AnimationMode = LOOP
17445        ShowSubObject = 20Cal
17446        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17447        WeaponFireFXBone = PRIMARY Muzzle01
17448      End
17449  
17450      ; AliasConditionState is a new keyword that says,
17451      ; "give me another ConditionState exactly like the previous
17452      ; one, except with different conditions". Useful when you
17453      ; have several states that are the same with only different condition bits.
17454      AliasConditionState = BETWEEN_FIRING_SHOTS_A
17455      AliasConditionState = RELOADING_A
17456  
17457      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
17458      AliasConditionState = MOVING FIRING_A
17459      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
17460      AliasConditionState = MOVING RELOADING_A
17461  
17462      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
17463      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
17464        IdleAnimation = UITech_SKL.UITech_STA 0 6
17465        IdleAnimation = UITech_SKL.UITech_IDA
17466        IdleAnimation = UITech_SKL.UITech_IDB
17467        AnimationMode = ONCE
17468        ShowSubObject = 50Cal
17469        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17470        WeaponFireFXBone = PRIMARY Muzzle02
17471        WeaponLaunchBone = PRIMARY Muzzle02
17472      End
17473  
17474      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
17475        Animation = None
17476        HideSubObject = UITech-SKN
17477        ShowSubObject = 50Cal
17478        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17479        WeaponFireFXBone = PRIMARY Muzzle02
17480        WeaponLaunchBone = PRIMARY Muzzle02
17481      End
17482  
17483      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
17484        Animation = UITech_SKL.UITech_MVB
17485        AnimationMode = LOOP
17486        ShowSubObject = 50Cal
17487        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17488        WeaponFireFXBone = PRIMARY Muzzle02
17489        WeaponLaunchBone = PRIMARY Muzzle02
17490      End
17491  
17492      ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
17493        Animation = UITech_SKL.UITech_TNA
17494        AnimationMode = LOOP
17495        ShowSubObject = 50Cal
17496        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17497        WeaponFireFXBone = PRIMARY Muzzle02
17498        WeaponLaunchBone = PRIMARY Muzzle02
17499      End
17500      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
17501      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
17502      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
17503      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
17504      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
17505      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
17506      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
17507  
17508      ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A
17509        Animation = UITech_SKL.UITech_ATA
17510        AnimationMode = LOOP
17511        ShowSubObject = 50Cal
17512        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17513        WeaponFireFXBone = PRIMARY Muzzle02
17514        WeaponLaunchBone = PRIMARY Muzzle02
17515      End
17516  
17517      ; AliasConditionState is a new keyword that says,
17518      ; "give me another ConditionState exactly like the previous
17519      ; one, except with different conditions". Useful when you
17520      ; have several states that are the same with only different condition bits.
17521      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
17522      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
17523  
17524      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
17525      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
17526      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
17527      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
17528  
17529  
17530      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
17531      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
17532        IdleAnimation = UITech_SKL.UITech_STA 0 6
17533        IdleAnimation = UITech_SKL.UITech_IDA
17534        IdleAnimation = UITech_SKL.UITech_IDB
17535        AnimationMode = ONCE
17536        ShowSubObject = RPG
17537        WeaponFireFXBone = PRIMARY Muzzle03
17538        WeaponLaunchBone = PRIMARY Muzzle03
17539      End
17540  
17541      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
17542        Animation = None
17543        HideSubObject = UITech-SKN
17544        ShowSubObject = RPG
17545        WeaponFireFXBone = PRIMARY Muzzle03
17546        WeaponLaunchBone = PRIMARY Muzzle03
17547      End
17548  
17549      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
17550        Animation = UITech_SKL.UITech_MVB
17551        AnimationMode = LOOP
17552        ShowSubObject = RPG
17553        WeaponFireFXBone = PRIMARY Muzzle03
17554        WeaponLaunchBone = PRIMARY Muzzle03
17555      End
17556  
17557      ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
17558        Animation = UITech_SKL.UITech_TNA
17559        AnimationMode = LOOP
17560        ShowSubObject = RPG
17561        WeaponFireFXBone = PRIMARY Muzzle03
17562        WeaponLaunchBone = PRIMARY Muzzle03
17563      End
17564      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
17565      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
17566      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
17567      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
17568      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
17569      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
17570      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
17571  
17572      ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A
17573        Animation = UITech_SKL.UITech_ATA
17574        AnimationMode = LOOP
17575        ShowSubObject = RPG
17576        WeaponFireFXBone = PRIMARY Muzzle03
17577        WeaponLaunchBone = PRIMARY Muzzle03
17578      End
17579  
17580      ; AliasConditionState is a new keyword that says,
17581      ; "give me another ConditionState exactly like the previous
17582      ; one, except with different conditions". Useful when you
17583      ; have several states that are the same with only different condition bits.
17584      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
17585      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
17586  
17587      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
17588      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
17589      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
17590      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
17591  
17592    End 
17593    
17594   ; Behavior = CreateObjectDie ModuleTag_13
17595   ;   DeathTypes = NONE +CRUSHED +SPLATTED
17596   ;   CreationList = OCL_TechnicalVan_CrushEffect
17597   ; End
17598  
17599    Geometry = BOX
17600    GeometryMajorRadius = 16.0
17601    GeometryMinorRadius = 8.0
17602    GeometryHeight = 7.5     
17603    GeometryIsSmall = Yes  
17604    
17605  
17606  End
17607  
17608  ;------------------------------------------------------------------------------
17609  ObjectReskin GLAVehicleTechnicalChassisThree GLAVehicleTechnicalChassisOne
17610  
17611    ; *** ART Parameters ***
17612    Draw = W3DTruckDraw ModuleTag_01
17613  
17614      ExtraPublicBone = Dum_Turret 
17615  
17616      DefaultConditionState
17617        Model = UVTechJeep
17618      End
17619  
17620      ConditionState = REALLYDAMAGED
17621        Model = UVTechJeep_d
17622      End
17623      ConditionState = RUBBLE
17624        Model = UVTechJeep_d
17625      End
17626  
17627      OkToChangeModelColor = Yes
17628      TrackMarks = EXTireTrack.tga
17629      Dust = TechnicalDust
17630  
17631      ;DirtSpray = RocketBuggyDirtSpray
17632      PowerslideSpray = RocketBuggyDirtPowerSlide
17633  
17634      ; These parameters are only used if the model has a separate suspension, 
17635      ; and the locomotor has HasSuspension = Yes.
17636      LeftFrontTireBone = Tire01
17637      RightFrontTireBone = Tire02
17638      LeftRearTireBone = Tire03
17639      RightRearTireBone = Tire04
17640      TireRotationMultiplier = 0.2        ; this * speed = rotation.
17641      PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
17642    End
17643  
17644    Draw = W3DModelDraw ModuleTag_02
17645      OkToChangeModelColor = Yes
17646      AttachToBoneInAnotherModule = Dum_Turret
17647  
17648      ; ------------------ basic technical ------------------------
17649      DefaultConditionState
17650        Model = UITech_SKN
17651        Turret = Dum-TurManMVR
17652        TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
17653        HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
17654        IdleAnimation = UITech_SKL.UITech_STA 0 6
17655        IdleAnimation = UITech_SKL.UITech_IDA
17656        IdleAnimation = UITech_SKL.UITech_IDB
17657        AnimationMode = ONCE
17658        ShowSubObject = 20Cal
17659        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17660        WeaponFireFXBone = PRIMARY Muzzle01
17661      End
17662  
17663      ConditionState = RUBBLE MOVING TURRET_ROTATE
17664        Animation = None
17665        HideSubObject = UITech-SKN
17666        ShowSubObject = 20Cal
17667        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17668        WeaponFireFXBone = PRIMARY Muzzle01
17669      End
17670  
17671      ConditionState = MOVING
17672        Animation = UITech_SKL.UITech_MVB
17673        AnimationMode = LOOP
17674        ShowSubObject = 20Cal
17675        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17676        WeaponFireFXBone = PRIMARY Muzzle01
17677      End
17678  
17679      ConditionState = TURRET_ROTATE
17680        Animation = UITech_SKL.UITech_TNA
17681        AnimationMode = LOOP
17682        ShowSubObject = 20Cal
17683        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17684        WeaponFireFXBone = PRIMARY Muzzle01
17685      End
17686      AliasConditionState = TURRET_ROTATE MOVING
17687      AliasConditionState = TURRET_ROTATE FIRING_A
17688      AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
17689      AliasConditionState = TURRET_ROTATE RELOADING_A
17690      AliasConditionState = TURRET_ROTATE MOVING FIRING_A
17691      AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
17692      AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
17693  
17694      ConditionState = FIRING_A
17695        Animation = UITech_SKL.UITech_ATA
17696        AnimationMode = LOOP
17697        ShowSubObject = 20Cal
17698        WeaponMuzzleFlash = PRIMARY MuzzleFX01
17699        WeaponFireFXBone = PRIMARY Muzzle01
17700      End
17701  
17702      ; AliasConditionState is a new keyword that says,
17703      ; "give me another ConditionState exactly like the previous
17704      ; one, except with different conditions". Useful when you
17705      ; have several states that are the same with only different condition bits.
17706      AliasConditionState = BETWEEN_FIRING_SHOTS_A
17707      AliasConditionState = RELOADING_A
17708  
17709      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
17710      AliasConditionState = MOVING FIRING_A
17711      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
17712      AliasConditionState = MOVING RELOADING_A
17713  
17714      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
17715      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
17716        IdleAnimation = UITech_SKL.UITech_STA 0 6
17717        IdleAnimation = UITech_SKL.UITech_IDA
17718        IdleAnimation = UITech_SKL.UITech_IDB
17719        AnimationMode = ONCE
17720        ShowSubObject = 50Cal
17721        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17722        WeaponFireFXBone = PRIMARY Muzzle02
17723        WeaponLaunchBone = PRIMARY Muzzle02
17724      End
17725  
17726      ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
17727        Animation = None
17728        HideSubObject = UITech-SKN
17729        ShowSubObject = 50Cal
17730        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17731        WeaponFireFXBone = PRIMARY Muzzle02
17732        WeaponLaunchBone = PRIMARY Muzzle02
17733      End
17734  
17735      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
17736        Animation = UITech_SKL.UITech_MVB
17737        AnimationMode = LOOP
17738        ShowSubObject = 50Cal
17739        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17740        WeaponFireFXBone = PRIMARY Muzzle02
17741        WeaponLaunchBone = PRIMARY Muzzle02
17742      End
17743  
17744      ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
17745        Animation = UITech_SKL.UITech_TNA
17746        AnimationMode = LOOP
17747        ShowSubObject = 50Cal
17748        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17749        WeaponFireFXBone = PRIMARY Muzzle02
17750        WeaponLaunchBone = PRIMARY Muzzle02
17751      End
17752      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
17753      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
17754      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
17755      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
17756      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
17757      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
17758      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
17759  
17760      ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A
17761        Animation = UITech_SKL.UITech_ATA
17762        AnimationMode = LOOP
17763        ShowSubObject = 50Cal
17764        WeaponMuzzleFlash = PRIMARY MuzzleFX02
17765        WeaponFireFXBone = PRIMARY Muzzle02
17766        WeaponLaunchBone = PRIMARY Muzzle02
17767      End
17768  
17769      ; AliasConditionState is a new keyword that says,
17770      ; "give me another ConditionState exactly like the previous
17771      ; one, except with different conditions". Useful when you
17772      ; have several states that are the same with only different condition bits.
17773      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
17774      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
17775  
17776      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
17777      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
17778      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
17779      AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
17780  
17781      ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
17782      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
17783        IdleAnimation = UITech_SKL.UITech_STA 0 6
17784        IdleAnimation = UITech_SKL.UITech_IDA
17785        IdleAnimation = UITech_SKL.UITech_IDB
17786        AnimationMode = ONCE
17787        ShowSubObject = RPG
17788        WeaponFireFXBone = PRIMARY Muzzle03
17789        WeaponLaunchBone = PRIMARY Muzzle03
17790      End
17791  
17792      ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
17793        Animation = None
17794        HideSubObject = UITech-SKN
17795        ShowSubObject = RPG
17796        WeaponFireFXBone = PRIMARY Muzzle03
17797        WeaponLaunchBone = PRIMARY Muzzle03
17798      End
17799  
17800      ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
17801        Animation = UITech_SKL.UITech_MVB
17802        AnimationMode = LOOP
17803        ShowSubObject = RPG
17804        WeaponFireFXBone = PRIMARY Muzzle03
17805        WeaponLaunchBone = PRIMARY Muzzle03
17806      End
17807  
17808      ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
17809        Animation = UITech_SKL.UITech_TNA
17810        AnimationMode = LOOP
17811        ShowSubObject = RPG
17812        WeaponFireFXBone = PRIMARY Muzzle03
17813        WeaponLaunchBone = PRIMARY Muzzle03
17814      End
17815      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
17816      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
17817      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
17818      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
17819      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
17820      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
17821      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
17822  
17823      ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A
17824        Animation = UITech_SKL.UITech_ATA
17825        AnimationMode = LOOP
17826        ShowSubObject = RPG
17827        WeaponFireFXBone = PRIMARY Muzzle03
17828        WeaponLaunchBone = PRIMARY Muzzle03
17829      End
17830  
17831      ; AliasConditionState is a new keyword that says,
17832      ; "give me another ConditionState exactly like the previous
17833      ; one, except with different conditions". Useful when you
17834      ; have several states that are the same with only different condition bits.
17835      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
17836      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
17837  
17838      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
17839      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
17840      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
17841      AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
17842  
17843    End  
17844    
17845   ; Behavior = CreateObjectDie ModuleTag_13
17846   ;   DeathTypes = NONE +CRUSHED +SPLATTED
17847   ;   CreationList = OCL_TechnicalJeep_CrushEffect
17848   ; End
17849    
17850    Geometry = BOX
17851    GeometryMajorRadius = 14.0
17852    GeometryMinorRadius = 9.0
17853    GeometryHeight = 9.5     
17854    GeometryIsSmall = Yes
17855  End
17856  
17857  ;------------------------------------------------------------------------------
17858  Object GLAInfantryTechnicalRider
17859  
17860    ; *** ART Parameters ***
17861    SelectPortrait         = SURebel_L
17862    ButtonImage            = SURebel
17863  
17864    UpgradeCameo1 = Upgrade_GLAAPBullets
17865  
17866    Draw = W3DModelDraw ModuleTag_01
17867  
17868      OkToChangeModelColor = Yes
17869      
17870      DefaultConditionState
17871        Model = UIMOB01_SKN
17872        IdleAnimation = UIMOB01_SKL.UIMOB01_IDD1 0 6
17873        IdleAnimation = UIMOB01_SKL.UIMOB01_IDD2 0 6
17874        IdleAnimation = UIMOB01_SKL.UIMOB01_CHD  0 6
17875        IdleAnimation = UIMOB01_SKL.UIMOB01_STD
17876        AnimationMode = ONCE
17877        AnimationSpeedFactorRange 0.9 1.1
17878        TransitionKey = TRANS_STAND_AK
17879      End
17880      
17881      ConditionState = MOVING
17882        Animation = UIMOB01_SKL.UIMOB01_RND 
17883        AnimationMode = LOOP
17884        Flags = RANDOMSTART
17885        TransitionKey   = MOVING_AK
17886      End
17887  
17888      ConditionState = DYING
17889        Animation = UIMOB01_SKL.UIMOB01_DD1    
17890        Animation = UIMOB01_SKL.UIMOB01_DD2
17891        AnimationMode = ONCE
17892        TransitionKey = TRANS_Dying
17893      End
17894  
17895      ConditionState = SPECIAL_CHEERING
17896        Animation = UIMOB01_SKL.UIMOB01_CHD
17897        AnimationMode = ONCE
17898      End
17899  
17900      ; Drawing AK47
17901      ConditionState  = PREATTACK_A
17902        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ST ; start firing
17903        AnimationMode = ONCE
17904      End
17905      AliasConditionState = PREATTACK_A FIRING_A
17906      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
17907  
17908      ; Firing Gun
17909      ConditionState = FIRING_A
17910        Animation = UIMOB01_SKL.UIMOB01_ATD1_LP ; looping firing
17911        AnimationMode = LOOP
17912        WeaponFireFXBone = PRIMARY MuzzleAK
17913        WeaponMuzzleFlash = PRIMARY MuzzleAKFX
17914        TransitionKey = TRANS_FIRING_AK
17915      End
17916      AliasConditionState  = BETWEEN_FIRING_SHOTS_A
17917  
17918      ConditionState  = RELOADING_A
17919        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing
17920        AnimationMode = ONCE
17921      End
17922  
17923      ; This transition allows him to put his gun away when he's finished attacking.
17924      TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
17925        Animation     = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing
17926        AnimationMode = ONCE
17927      End
17928  
17929      TransitionState = TRANS_Dying TRANS_Flailing
17930        Animation = UIMOB01_SKL.UIMOB01_A_ADTE1
17931        Animation = UIMOB01_SKL.UIMOB01_D_ADTE1
17932        AnimationMode = ONCE
17933      End
17934  
17935      ConditionState = DYING EXPLODED_FLAILING
17936        Animation = UIMOB01_SKL.UIMOB01_A_ADTE2
17937        Animation = UIMOB01_SKL.UIMOB01_D_ADTE2
17938        AnimationMode = LOOP
17939        TransitionKey = TRANS_Flailing
17940      End
17941  
17942      ConditionState = DYING EXPLODED_BOUNCING
17943        Animation = UIMOB01_SKL.UIMOB01_A_ADTE3
17944        Animation = UIMOB01_SKL.UIMOB01_D_ADTE3
17945        AnimationMode = ONCE
17946        TransitionKey = None
17947      End
17948  
17949    End
17950  
17951    ; ***DESIGN parameters ***
17952    DisplayName         = OBJECT:TechnicalRider
17953    Side                = GLA
17954    EditorSorting       = INFANTRY
17955    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
17956   
17957    WeaponSet
17958      Conditions = None 
17959      Weapon = PRIMARY TechnicalRiderAK47
17960    End
17961  
17962    ArmorSet
17963      Conditions      = None
17964      Armor           = HumanArmor
17965      DamageFX        = InfantryDamageFX
17966    End
17967  
17968    VisionRange         = 150
17969    ShroudClearingRange = 300
17970    Prerequisites
17971      ;Object = GLABarracks
17972    End
17973    BuildCost = 200
17974    BuildTime = 6.0          ;in seconds  
17975  
17976    ExperienceValue     = 20 20 35 50     ;Experience point value at each level
17977    ExperienceRequired  = 0 50 70 140     ;Experience points needed to gain each level
17978    IsTrainable         = No              ;Can gain experience
17979    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
17980    CommandSet          = GenericCommandSet ;GLAInfantryTechnicalRiderCommandSet
17981  
17982    ; *** AUDIO Parameters ***
17983    VoiceSelect = RebelVoiceSelect
17984    VoiceMove = RebelVoiceMove
17985    VoiceGuard = RebelVoiceMove
17986    VoiceAttack = RebelVoiceAttack
17987    SoundDie = RebelVoiceDie
17988    SoundDieFire = DieByFireGLA
17989    SoundDieToxin = DieByToxinGLA
17990    VoiceFear = RebelVoiceFear
17991  
17992    UnitSpecificSounds
17993      VoiceCreate = RebelVoiceCreate
17994      VoiceSubdue = RebelVoiceSubdue
17995      VoiceGarrison = RebelVoiceGarrison
17996      VoiceEnter = RebelVoiceMove
17997      VoiceEnterHostile = RebelVoiceMove
17998      VoiceGetHealed      = RebelVoiceMove
17999    End
18000  
18001    ; *** ENGINEERING Parameters ***
18002    RadarPriority = UNIT
18003    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE 
18004  
18005    Body = ActiveBody ModuleTag_02
18006      MaxHealth       = 120.0
18007      InitialHealth   = 120.0
18008    End
18009  
18010    Behavior = AIUpdateInterface ModuleTag_03
18011      AutoAcquireEnemiesWhenIdle = Yes
18012    End
18013  
18014    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
18015    End
18016  
18017    Locomotor = SET_NORMAL TechnicalRiderLocomotor
18018  
18019    Behavior = PhysicsBehavior ModuleTag_05
18020      Mass = 5.0
18021    End
18022  
18023    Behavior = WeaponBonusUpgrade ModuleTag_09
18024      TriggeredBy = Upgrade_GLAAPBullets
18025    End
18026  
18027    Behavior = SquishCollide ModuleTag_11
18028      ;nothing
18029    End
18030  
18031  ; --- begin Death modules ---
18032    Behavior = SlowDeathBehavior ModuleTag_Death01
18033      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
18034      SinkDelay           = 3000
18035      SinkRate            = 0.5     ; in Dist/Sec
18036      DestructionDelay    = 8000
18037      FX                  = INITIAL FX_GIDie
18038    End
18039    Behavior = SlowDeathBehavior ModuleTag_Death02
18040      DeathTypes          = NONE +CRUSHED +SPLATTED
18041      SinkDelay           = 3000
18042      SinkRate            = 0.5     ; in Dist/Sec
18043      DestructionDelay    = 8000
18044      FX                  = INITIAL FX_GIDieCrushed
18045    End
18046    Behavior = SlowDeathBehavior ModuleTag_Death03
18047      DeathTypes          = NONE +EXPLODED
18048      SinkDelay           = 3000
18049      SinkRate            = 0.5     ; in Dist/Sec
18050      DestructionDelay    = 8000
18051      FX                  = INITIAL FX_GIDie
18052      FlingForce          = 8
18053      FlingForceVariance  = 3
18054      FlingPitch          = 60
18055      FlingPitchVariance  = 10
18056    End
18057    Behavior = SlowDeathBehavior ModuleTag_Death04
18058      DeathTypes          = NONE +BURNED
18059      DestructionDelay    = 0
18060      FX                  = INITIAL FX_GIDie
18061      OCL                 = INITIAL OCL_FlamingInfantry
18062    End
18063    Behavior = SlowDeathBehavior ModuleTag_Death05
18064      DeathTypes          = NONE +POISONED
18065      DestructionDelay    = 0
18066      FX                  = INITIAL FX_GIDie
18067      OCL                 = INITIAL OCL_ToxicInfantry
18068    End
18069    Behavior = SlowDeathBehavior ModuleTag_Death06
18070      DeathTypes          = NONE +POISONED_BETA
18071      DestructionDelay    = 0
18072      FX                  = INITIAL FX_GIDie
18073      OCL                 = INITIAL OCL_ToxicInfantryBeta
18074    End
18075  ; --- end Death modules ---
18076  
18077    Behavior = PoisonedBehavior ModuleTag_16
18078      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
18079      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
18080    End
18081   
18082    Geometry = CYLINDER
18083    GeometryMajorRadius = 10.0
18084    GeometryMinorRadius = 10.0
18085    GeometryHeight = 12.0
18086    GeometryIsSmall = Yes
18087    Shadow = SHADOW_DECAL
18088    ShadowSizeX = 14;
18089    ShadowSizeY = 14;
18090    ShadowTexture = ShadowI;
18091    BuildCompletion = APPEARS_AT_RALLY_POINT
18092  
18093  End
18094  
18095  ;------------------------------------------------------------------------------
18096  Object ChinaTankOverlord
18097  
18098    ; *** ART Parameters ***
18099    SelectPortrait         = SNOverlord_L
18100    ButtonImage            = SNOverlord
18101    
18102    UpgradeCameo1 = Upgrade_ChinaUraniumShells
18103    UpgradeCameo2 = Upgrade_ChinaNuclearTanks
18104    UpgradeCameo3 = Upgrade_ChinaOverlordBattleBunker
18105    UpgradeCameo4 = Upgrade_ChinaOverlordGattlingCannon
18106    UpgradeCameo5 = Upgrade_ChinaOverlordPropagandaTower
18107    
18108    
18109    Draw = W3DOverlordTankDraw ModuleTag_01
18110      ConditionState        = NONE
18111        Model               = NVOvrlrd
18112        Animation           = NVOvrlrd.NVOvrlrd
18113        AnimationMode       = LOOP
18114        Turret              = Turret01
18115        WeaponFireFXBone    = PRIMARY Muzzle
18116        WeaponRecoilBone    = PRIMARY Barrel
18117        WeaponMuzzleFlash   = PRIMARY MuzzleFX
18118        WeaponLaunchBone = PRIMARY Muzzle
18119      End
18120      ConditionState        = REALLYDAMAGED
18121        Model               = NVOvrlrd_d
18122        Animation           = NVOvrlrd_d.NVOvrlrd_d
18123        AnimationMode       = LOOP
18124        Turret              = Turret01
18125        WeaponFireFXBone    = PRIMARY Muzzle
18126        WeaponRecoilBone    = PRIMARY Barrel
18127        WeaponMuzzleFlash   = PRIMARY MuzzleFX
18128        WeaponLaunchBone = PRIMARY Muzzle
18129      End
18130  
18131      ConditionState        = RUBBLE
18132        Model               = NVOvrlrd_d
18133        Turret              = Turret01
18134        WeaponFireFXBone    = PRIMARY Muzzle
18135        WeaponRecoilBone    = PRIMARY Barrel
18136        WeaponMuzzleFlash   = PRIMARY MuzzleFX
18137        WeaponLaunchBone = PRIMARY Muzzle
18138      End
18139  
18140      TrackMarks           = EXTnkTrack.tga
18141      OkToChangeModelColor = Yes
18142      TreadAnimationRate = 2.0;  amount of tread texture to move per second
18143      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
18144      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
18145    End
18146  
18147    ; ***DESIGN parameters ***
18148    DisplayName         = OBJECT:Overlord
18149    Side                = China
18150    EditorSorting       = VEHICLE
18151    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
18152    WeaponSet
18153      Conditions        = None 
18154      Weapon            = PRIMARY OverlordTankGun
18155    End
18156    ArmorSet
18157      Conditions        = None
18158      Armor             = TankArmor
18159      DamageFX          = TankDamageFX
18160    End
18161    BuildCost       = 2000
18162    BuildTime       = 25.0          ;in seconds    
18163    VisionRange     = 150
18164    ShroudClearingRange = 200
18165    Prerequisites
18166      Object = ChinaWarFactory
18167      Object = ChinaPropagandaCenter
18168    End
18169  
18170    ExperienceValue = 200 200 400 600   ;Experience point value at each level
18171    ExperienceRequired = 0 400 600 1200  ;Experience points needed to gain each level
18172    IsTrainable = Yes             ;Can gain experience
18173    CrusherLevel           = 3  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
18174    CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
18175    CommandSet = ChinaTankOverlordDefaultCommandSet
18176  
18177    ; *** AUDIO Parameters ***
18178    VoiceSelect = OverlordTankVoiceSelect
18179    SoundMoveStart = OverlordTankMoveStart
18180    SoundMoveStartDamaged = OverlordTankMoveStart
18181    VoiceMove = OverlordTankVoiceMove
18182    VoiceGuard = OverlordTankVoiceMove
18183    VoiceAttack = OverlordTankVoiceAttack
18184  
18185    UnitSpecificSounds
18186      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
18187      VoiceCreate          = OverlordTankVoiceCreate
18188      TurretMoveStart = NoSound
18189      TurretMoveLoop = OverlordTankTurretMoveLoop
18190      VoiceCrush = OverlordTankVoiceCrush
18191      VoiceEnter = OverlordTankVoiceMove
18192      VoiceUnload     = OverlordTankVoiceUnload
18193    End
18194  
18195    ; *** ENGINEERING Parameters ***
18196    RadarPriority = UNIT
18197    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE HUGE_VEHICLE
18198    
18199    Body = ActiveBody ModuleTag_02
18200      MaxHealth       = 1100.0
18201      InitialHealth   = 1100.0
18202    End
18203  
18204    Behavior = TransportAIUpdate ModuleTag_03
18205      Turret
18206        TurretTurnRate = 60 ;30 ;15   // turn rate, in degrees per sec
18207        ControlledWeaponSlots = PRIMARY
18208      End
18209      AutoAcquireEnemiesWhenIdle = Yes
18210    End
18211  
18212    Locomotor = SET_NORMAL OverlordLocomotor
18213    Locomotor = SET_NORMAL_UPGRADED NuclearOverlordLocomotor
18214  
18215    Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
18216      DeathWeapon   = NuclearTankDeathWeapon
18217      StartsActive  = No                        ; turned on by upgrade
18218      TriggeredBy   = Upgrade_ChinaNuclearTanks
18219    End
18220    Behavior = LocomotorSetUpgrade ModuleTag_05
18221      TriggeredBy = Upgrade_ChinaNuclearTanks
18222    End
18223  
18224    Behavior = OverlordContain ModuleTag_06 ; Like Transport, but when full, passes transport queries along to first passenger (redirects like tunnel) 
18225      Slots                 = 1
18226      DamagePercentToUnits        = 100%
18227      AllowInsideKindOf     = PORTABLE_STRUCTURE
18228      PassengersAllowedToFire = Yes
18229      PassengersInTurret = Yes ; My passengers ride in my turret, that's where the Firepoint bones are
18230    End
18231  
18232    Behavior = ObjectCreationUpgrade ModuleTag_07
18233      UpgradeObject = OCL_OverlordGattlingCannon
18234      TriggeredBy   = Upgrade_ChinaOverlordGattlingCannon
18235      ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
18236    End
18237    Behavior = ObjectCreationUpgrade ModuleTag_08
18238      UpgradeObject = OCL_OverlordPropagandaTower
18239      TriggeredBy   = Upgrade_ChinaOverlordPropagandaTower
18240      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
18241    End
18242    Behavior = ObjectCreationUpgrade ModuleTag_09
18243      UpgradeObject = OCL_OverlordBattleBunker
18244      TriggeredBy   = Upgrade_ChinaOverlordBattleBunker
18245      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
18246    End
18247    Behavior = ProductionUpdate ModuleTag_10
18248      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
18249    End
18250    Behavior = CommandSetUpgrade ModuleTag_11
18251      CommandSet = ChinaTankOverlordGattlingCannonCommandSet
18252      TriggeredBy   = Upgrade_ChinaOverlordGattlingCannon
18253      ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
18254    End
18255    Behavior = CommandSetUpgrade ModuleTag_12
18256      CommandSet = ChinaTankOverlordPropagandaTowerCommandSet
18257      TriggeredBy   = Upgrade_ChinaOverlordPropagandaTower
18258      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
18259    End
18260    Behavior = CommandSetUpgrade ModuleTag_13
18261      CommandSet = ChinaTankOverlordBattleBunkerCommandSet
18262      TriggeredBy   = Upgrade_ChinaOverlordBattleBunker
18263      ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
18264    End
18265  
18266    Behavior = PhysicsBehavior ModuleTag_14
18267      Mass = 50.0
18268    End
18269  
18270    ; Smoke for a bit then explode
18271    Behavior = SlowDeathBehavior ModuleTag_15
18272      ProbabilityModifier = 25
18273      DestructionDelay = 1500
18274      DestructionDelayVariance = 500
18275      FX  = INITIAL   FX_OverlordSmoke
18276      OCL = FINAL     OCL_ChinaTankOverlordDebris
18277      FX  = FINAL     FX_OverlordExplosionOneFinal
18278    End
18279    
18280    ; Catch fire, and explode death
18281    Behavior = SlowDeathBehavior ModuleTag_19
18282      ProbabilityModifier = 25
18283      DestructionDelay = 2000
18284      DestructionDelayVariance = 300
18285      FX  = INITIAL  FX_CrusaderCatchFire
18286      OCL = FINAL    OCL_ChinaTankOverlordDebris
18287      FX  = FINAL    FX_OverlordExplosionOneFinal 
18288    End
18289  
18290    ; Just explode death
18291    Behavior = SlowDeathBehavior ModuleTag_16
18292      ProbabilityModifier = 25
18293      DestructionDelay = 200
18294      DestructionDelayVariance = 100
18295      FX  = INITIAL  FX_OverlordExplosionOneInitial
18296      OCL = FINAL    OCL_ChinaTankOverlordDebris
18297      FX  = FINAL    FX_OverlordExplosionOneFinal
18298    End
18299  
18300    Behavior = CreateCrateDie ModuleTag_17
18301      CrateData = SalvageCrateData
18302      ;CrateData = EliteTankCrateData
18303      ;CrateData = HeroicTankCrateData
18304    End
18305  
18306    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
18307      DetectionRate             = 500
18308      DetectionRange           = 75
18309      CanDetectWhileGarrisoned  = No
18310      CanDetectWhileContained   = No
18311      ExtraRequiredKindOf       = BOAT
18312    End
18313  
18314    Behavior = TransitionDamageFX ModuleTag_18
18315      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
18316      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_OverlordDamageTransition
18317    End
18318  
18319    Behavior = FlammableUpdate ModuleTag_21
18320      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
18321      AflameDamageAmount = 3       ; taking this much damage...
18322      AflameDamageDelay = 500       ; this often.
18323    End
18324  
18325    Geometry = BOX
18326    GeometryMajorRadius = 26.0
18327    GeometryMinorRadius = 13.0
18328    GeometryHeight = 15.0     
18329    GeometryIsSmall = No
18330    Shadow = SHADOW_VOLUME     
18331    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
18332  
18333  End
18334  
18335  ;------------------------------------------------------------------------------
18336  Object ChinaTankOverlordGattlingCannon
18337  
18338    ; *** ART Parameters ***
18339    SelectPortrait         = SNGatTower_L
18340    ButtonImage            = SNGatTower
18341    
18342    ;UpgradeCameo1 = Upgrade_Nationalism
18343    UpgradeCameo1 = Upgrade_ChinaUraniumShells
18344    UpgradeCameo2 = Upgrade_ChinaNuclearTanks
18345    ;UpgradeCameo4 = NONE
18346    UpgradeCameo5 = Upgrade_ChinaOverlordGattlingCannon
18347    
18348    
18349    Draw                    = W3DDependencyModelDraw ModuleTag_01
18350      OkToChangeModelColor  = Yes
18351      AttachToBoneInContainer = FIREPOINT01
18352  
18353      DefaultConditionState
18354        Model               = NVOvrlrd_G
18355        Turret              = TURRET01
18356        TurretPitch         = TURRETEL
18357        WeaponFireFXBone    = PRIMARY Muzzle
18358        WeaponMuzzleFlash   = PRIMARY MuzzleFX
18359        WeaponFireFXBone    = SECONDARY Muzzle
18360        WeaponMuzzleFlash   = SECONDARY MuzzleFX
18361      End
18362      ConditionState        = CONTINUOUS_FIRE_SLOW
18363        Model               = NVOvrlrd_G
18364        Animation           = NVOvrlrd_G.NVOvrlrd_G
18365        AnimationMode       = LOOP
18366        AnimationSpeedFactorRange = 0.1 0.1 ;set this state to animate  s l o w l y
18367      End
18368       ConditionState       = CONTINUOUS_FIRE_MEAN
18369        Model               = NVOvrlrd_G
18370        Animation           = NVOvrlrd_G.NVOvrlrd_G
18371        AnimationMode       = LOOP
18372        AnimationSpeedFactorRange = 0.2 0.2 ;set this state to animate  medium-fast
18373      End
18374      ConditionState        = CONTINUOUS_FIRE_FAST
18375        Model               = NVOvrlrd_G
18376        Animation           = NVOvrlrd_G.NVOvrlrd_G
18377        AnimationMode       = LOOP
18378        AnimationSpeedFactorRange = 0.3 0.3 ;set this state to animate  vryfst
18379        ParticleSysBone    = Muzzle01 GattlingMuzzleSmoke
18380        ParticleSysBone    = Muzzle02 GattlingMuzzleSmoke
18381      End
18382  
18383      ConditionState        = REALLYDAMAGED 
18384        Model               = NVOvrlrd_GD
18385        Turret              = TURRET01
18386        TurretPitch         = TURRETEL
18387        WeaponFireFXBone    = PRIMARY Muzzle
18388        WeaponMuzzleFlash   = PRIMARY MuzzleFX
18389        WeaponFireFXBone    = SECONDARY Muzzle
18390        WeaponMuzzleFlash   = SECONDARY MuzzleFX
18391        ParticleSysBone     = Smoke01 SmokeFactionMedium
18392        ParticleSysBone     = Smoke02 SmokeFactionMedium
18393        ParticleSysBone     = Smoke03 SmokeFactionMedium
18394        ParticleSysBone     = SparkM01 SparksMedium
18395        ParticleSysBone     = SparkM02 SparksMedium
18396      End
18397      ConditionState        = CONTINUOUS_FIRE_SLOW REALLYDAMAGED 
18398        Model               = NVOvrlrd_GD
18399        Animation           = NVOvrlrd_G.NVOvrlrd_G
18400        AnimationMode       = LOOP
18401        AnimationSpeedFactorRange = 0.1 0.1 ;set this state to animate  s l o w l y
18402      End
18403       ConditionState       = CONTINUOUS_FIRE_MEAN REALLYDAMAGED 
18404        Model               = NVOvrlrd_GD
18405        Animation           = NVOvrlrd_G.NVOvrlrd_G
18406        AnimationMode       = LOOP
18407        AnimationSpeedFactorRange = 0.2 0.2 ;set this state to animate  medium-fast
18408      End
18409      ConditionState        = CONTINUOUS_FIRE_FAST REALLYDAMAGED 
18410        Model               = NVOvrlrd_GD
18411        Animation           = NVOvrlrd_G.NVOvrlrd_G
18412        AnimationMode       = LOOP
18413        AnimationSpeedFactorRange = 0.3 0.3 ;set this state to animate  vryfst
18414        ParticleSysBone    = Muzzle01 GattlingMuzzleSmoke
18415        ParticleSysBone    = Muzzle02 GattlingMuzzleSmoke
18416      End
18417  
18418    End
18419  
18420    ; ***DESIGN parameters ***
18421    Side             = China
18422    EditorSorting    = SYSTEM
18423    TransportSlotCount = 1
18424    WeaponSet
18425      Conditions          = None 
18426      Weapon              = PRIMARY   GattlingBuildingGun
18427      Weapon              = SECONDARY GattlingBuildingGunAir
18428      PreferredAgainst    = SECONDARY BALLISTIC_MISSILE AIRCRAFT
18429    End
18430    
18431    ArmorSet
18432      Conditions     = None
18433      Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
18434    End
18435    VisionRange     = 200
18436  
18437    ; *** AUDIO Parameters ***
18438    UnitSpecificSounds
18439      TurretMoveStart = NoSound
18440      TurretMoveLoop  = NoSound ;TurretMoveLoop
18441      VoiceRapidFire  = NoSound
18442    End
18443  
18444    ; *** ENGINEERING Parameters ***
18445    KindOf            = PRELOAD PORTABLE_STRUCTURE CAN_ATTACK CLICK_THROUGH IGNORED_IN_GUI
18446      Body            = StructureBody ModuleTag_02
18447      MaxHealth       = 100.0
18448      InitialHealth   = 100.0
18449    End
18450  
18451    Behavior = AIUpdateInterface ModuleTag_03
18452      Turret
18453        ControlledWeaponSlots = PRIMARY SECONDARY
18454        TurretTurnRate      = 60   // turn rate, in degrees per sec
18455        TurretPitchRate     = 60
18456        AllowsPitch         = Yes
18457      End
18458      AutoAcquireEnemiesWhenIdle = Yes 
18459    End
18460  
18461    Behavior             = DestroyDie ModuleTag_04
18462      ;nothing
18463    End
18464  
18465    Behavior = WeaponBonusUpgrade ModuleTag_05
18466      TriggeredBy = Upgrade_ChinaChainGuns
18467    End
18468  
18469    Behavior = StealthDetectorUpdate ModuleTag_06
18470      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
18471      ;DetectionRange = ??? ;   Defaults to VisionRange
18472      CanDetectWhileContained   = Yes
18473    End
18474  
18475    Geometry            = BOX
18476    GeometryMajorRadius = 8.0
18477    GeometryMinorRadius = 8.0
18478    GeometryHeight      = 9.0
18479    GeometryIsSmall     = No      
18480    Shadow              = SHADOW_VOLUME
18481    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
18482  
18483  End
18484  
18485  ;------------------------------------------------------------------------------
18486  Object ChinaTankOverlordPropagandaTower
18487  
18488    ; *** ART Parameters ***
18489    SelectPortrait         = SNPropSpeaker_L
18490    ButtonImage            = SNPropSpeaker
18491    
18492    UpgradeCameo1 = Upgrade_Nationalism
18493    UpgradeCameo2 = Upgrade_ChinaUraniumShells
18494    UpgradeCameo3 = Upgrade_ChinaNuclearTanks
18495    ;UpgradeCameo4 = NONE
18496    UpgradeCameo5 = Upgrade_ChinaOverlordPropagandaTower
18497    
18498    Draw                    = W3DDependencyModelDraw ModuleTag_01
18499      OkToChangeModelColor  = Yes
18500      AttachToBoneInContainer = FIREPOINT01
18501  
18502      ConditionState = NONE
18503        Model         = NVOvrlrd_S
18504        Animation     = NVOvrlrd_S.NVOvrlrd_S
18505        AnimationMode = LOOP
18506      End
18507      ConditionState = REALLYDAMAGED
18508        Model         = NVOvrlrd_SD
18509        ParticleSysBone = Smoke01 SmolderingSmoke
18510        ParticleSysBone = Smoke02 SmolderingSmoke
18511        ParticleSysBone = Flame01 SmolderingFire
18512        ParticleSysBone = Flame01 SmolderingFlameCore
18513        ParticleSysBone = Spark01 LiveWireSparks
18514      End
18515      ; night
18516      ConditionState = NIGHT
18517        Model         = NVOvrlrd_S
18518        Animation     = NVOvrlrd_S.NVOvrlrd_S
18519        AnimationMode = LOOP
18520      End 
18521    End
18522  
18523    PlacementViewAngle = -45
18524  
18525    ; ***DESIGN parameters ***
18526    Side             = China
18527    EditorSorting    = SYSTEM
18528    TransportSlotCount = 1
18529    
18530    ArmorSet
18531      Conditions     = None
18532      Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
18533    End
18534    VisionRange     = 200
18535  
18536    ; *** AUDIO Parameters ***
18537    UnitSpecificSounds
18538     TurretMoveStart = NoSound
18539      TurretMoveLoop  = NoSound ;TurretMoveLoop
18540    End
18541  
18542    ; *** ENGINEERING Parameters ***
18543    KindOf            = PRELOAD PORTABLE_STRUCTURE CAN_ATTACK CLICK_THROUGH IGNORED_IN_GUI
18544      Body            = StructureBody ModuleTag_02
18545      MaxHealth       = 100.0
18546      InitialHealth   = 100.0
18547    End
18548  
18549    Behavior = AIUpdateInterface ModuleTag_03
18550      ;<No Data>
18551    End
18552    
18553    Behavior        = PropagandaTowerBehavior ModuleTag_04
18554      Radius                = 150.0
18555      DelayBetweenUpdates   = 2000 ; in milliseconds
18556      HealPercentEachSecond = 1%   ; get this % of max health every second 
18557      PulseFX               = FX_OverlordPropagandaTowerPropagandaPulse ;plays as often as DelayBetweenUpdates
18558      UpgradeRequired       = Upgrade_ChinaSubliminalMessaging
18559      UpgradedHealPercentEachSecond = 2%   ; get this % of max health every second 
18560      UpgradedPulseFX       = FX_OverlordPropagandaTowerSubliminalPulse ;plays as often as DelayBetweenUpdates
18561    End
18562    
18563    ;Behavior = HordeUpdate ModuleTag_OriginalPropaganda    ;NOTICE: made them nearly unstoppable in groups = not good
18564    ;  UpdateRate = 1000        ; how often to recheck horde status (msec)
18565    ;  RubOffRadius = 180       ; if I am this close to a real hordesman, I will get to be an honorary hordesman
18566    ;  Radius = 150             ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
18567    ;  KindOf = INFANTRY VEHICLE ; what KindOf's must match to count towards horde-ness
18568    ;  AlliesOnly = Yes         ; do we only count allies towards horde status? 
18569    ;  ExactMatch = No          ; do we only count units of our exact same type towards horde status? (overrides kindof)
18570    ;  Count = 1                ; how many units must be within Radius to grant us horde-ness
18571    ;  Action = HORDE ;ENTHUSIASTIC     ; when horde-ing, grant us the HORDE bonus
18572    ;End
18573  
18574    Behavior             = DestroyDie ModuleTag_05
18575      ;<No Data>
18576    End
18577  
18578    Geometry            = BOX
18579    GeometryMajorRadius = 6.0
18580    GeometryMinorRadius = 6.0
18581    GeometryHeight      = 10.0
18582    GeometryIsSmall     = No      
18583    Shadow              = SHADOW_VOLUME
18584    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
18585  
18586  End
18587  
18588  ;------------------------------------------------------------------------------
18589  Object ChinaTankOverlordBattleBunker
18590  
18591    ; *** ART Parameters ***
18592    SelectPortrait         = SNBunker_L
18593    ButtonImage            = SNBunker
18594    
18595    ;UpgradeCameo1 = Upgrade_Nationalism
18596    UpgradeCameo1 = Upgrade_ChinaUraniumShells
18597    UpgradeCameo2 = Upgrade_ChinaNuclearTanks
18598    ;UpgradeCameo4 = NONE
18599    UpgradeCameo5 = Upgrade_ChinaOverlordBattleBunker
18600    
18601    Draw                    = W3DDependencyModelDraw ModuleTag_01
18602      OkToChangeModelColor  = Yes
18603      AttachToBoneInContainer = FIREPOINT01
18604  
18605      ConditionState = NONE
18606        Model         = NVOvrlrd_B
18607      End
18608      ConditionState = REALLYDAMAGED
18609        Model         = NVOvrlrd_BD
18610        ParticleSysBone = Smoke01 SmolderingSmoke
18611        ParticleSysBone = Smoke02 SmolderingSmoke
18612        ParticleSysBone = Flame01 SmolderingFire
18613        ParticleSysBone = Flame01 SmolderingFlameCore
18614        ParticleSysBone = Spark01 LiveWireSparks
18615      End
18616      ; night
18617      ConditionState = NIGHT
18618        Model         = NVOvrlrd_B
18619      End 
18620      ConditionState = NIGHT REALLYDAMAGED
18621        Model         = NVOvrlrd_BD
18622        ParticleSysBone = Smoke01 SmolderingSmoke
18623        ParticleSysBone = Smoke02 SmolderingSmoke
18624        ParticleSysBone = Flame01 SmolderingFire
18625        ParticleSysBone = Flame01 SmolderingFlameCore
18626        ParticleSysBone = Spark01 LiveWireSparks
18627      End
18628    End
18629  
18630    PlacementViewAngle = -45
18631  
18632    ; ***DESIGN parameters ***
18633    Side             = China
18634    EditorSorting    = SYSTEM
18635    TransportSlotCount = 1
18636    
18637    ArmorSet
18638      Conditions     = None
18639      Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
18640    End
18641    VisionRange     = 200
18642  
18643    ; *** AUDIO Parameters ***
18644    UnitSpecificSounds
18645      TurretMoveStart = NoSound
18646      TurretMoveLoop  = NoSound ;TurretMoveLoop
18647      VoiceUnload     = OverlordTankVoiceUnload
18648    End
18649  
18650    ; *** ENGINEERING Parameters ***
18651    KindOf            = PRELOAD PORTABLE_STRUCTURE CLICK_THROUGH IGNORED_IN_GUI
18652      Body            = StructureBody ModuleTag_02
18653      MaxHealth       = 100.0
18654      InitialHealth   = 100.0
18655    End
18656  
18657    Behavior = TransportContain ModuleTag_03
18658      Slots                 = 5
18659      PassengersAllowedToFire = Yes
18660      AllowInsideKindOf  = INFANTRY
18661      AllowAlliesInside   = Yes
18662      AllowNeutralInside  = No
18663      AllowEnemiesInside  = No
18664      EnterSound      = GarrisonEnter
18665      ExitSound       = GarrisonExit
18666      DamagePercentToUnits  = 50%
18667    End
18668  
18669    Behavior             = DestroyDie ModuleTag_04
18670      ;nothing
18671    End
18672  
18673    Geometry            = BOX
18674    GeometryMajorRadius = 6.0
18675    GeometryMinorRadius = 6.0
18676    GeometryHeight      = 10.0
18677    GeometryIsSmall     = No      
18678    Shadow              = SHADOW_VOLUME
18679    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
18680  
18681  End
18682  
18683  ; -----------------------------------------------------------------------------
18684  
18685  Object ChinaTankOverlordBarrelDebris
18686  
18687    ; *** ART Parameters ***
18688    Draw = W3DModelDraw ModuleTag_01
18689      OkToChangeModelColor = Yes
18690  
18691      ConditionState = NONE
18692        Model = NVOvrlrd_D3
18693      End
18694    End
18695  
18696    ; ***DESIGN parameters ***
18697  ;  DisplayName      = OBJECT:RocketBuggyDebris
18698  
18699    EditorSorting   = DEBRIS
18700    Side = China
18701  
18702    ; *** AUDIO Parameters ***
18703    ; *** ENGINEERING Parameters ***
18704  ;  RadarPriority = UNIT
18705  ;  KindOf = PRELOAD CAN_CAST_REFLECTIONS 
18706  
18707    Body = ActiveBody ModuleTag_02
18708      MaxHealth       = 1.0
18709      InitialHealth   = 1.0
18710    End
18711  
18712    Behavior = PhysicsBehavior ModuleTag_03
18713      Mass = 50
18714      AllowBouncing = Yes
18715    End
18716  
18717    Behavior = LifetimeUpdate ModuleTag_04
18718      MinLifetime = 10000   ; min lifetime in msec
18719      MaxLifetime = 15000   ; max lifetime in msec
18720    End
18721  
18722  
18723    Behavior = SlowDeathBehavior ModuleTag_05
18724      SinkDelay = 1000
18725      SinkRate = 1     ; in Dist/Sec
18726      DestructionDelay = 2000
18727    End
18728  
18729    Geometry = BOX
18730    GeometryMajorRadius = 9.0
18731    GeometryMinorRadius = 6.0
18732    GeometryHeight = 7.5     
18733    GeometryIsSmall = Yes    
18734  
18735  
18736  End
18737  
18738  ;------------------------------------------------------------------------------
18739  Object ChinaTankOverlordDeadHull
18740  
18741    ; *** ART Parameters ***
18742    Draw = W3DModelDraw ModuleTag_01
18743      OkToChangeModelColor = Yes
18744  
18745      ConditionState = NONE
18746        Model = NVOvrlrd_D1
18747      End
18748    End
18749  
18750    ; ***DESIGN parameters ***
18751    DisplayName      = OBJECT:Overlord
18752    Side = China
18753    EditorSorting   = SYSTEM
18754    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
18755  
18756    ; *** AUDIO Parameters ***
18757    ; *** ENGINEERING Parameters ***
18758    RadarPriority = UNIT
18759    KindOf = CAN_CAST_REFLECTIONS NO_COLLIDE HULK
18760  
18761    Body = ActiveBody ModuleTag_02
18762      MaxHealth       = 1.0
18763      InitialHealth   = 1.0
18764    End
18765  
18766  
18767    Behavior = PhysicsBehavior ModuleTag_03
18768      Mass = 50
18769      AllowBouncing = Yes
18770    End
18771  
18772    Behavior = LifetimeUpdate ModuleTag_04
18773      MinLifetime = 0   ; min lifetime in msec
18774      MaxLifetime = 0   ; max lifetime in msec
18775    End
18776  
18777  
18778    Behavior = SlowDeathBehavior ModuleTag_05
18779      SinkDelay = 14000
18780      SinkRate = 2     ; in Dist/Sec
18781      DestructionDelay = 20000
18782    End
18783  
18784    Behavior = TransitionDamageFX ModuleTag_06
18785      RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
18786    End
18787  
18788    Geometry = BOX
18789    GeometryMajorRadius = 9.0
18790    GeometryMinorRadius = 6.0
18791    GeometryHeight = 7.5     
18792    GeometryIsSmall = Yes    
18793  
18794  End
18795  
18796  ;------------------------------------------------------------------------------
18797  ;China Dragon Tank
18798  Object ChinaTankDragon
18799  
18800    ; *** ART Parameters ***
18801    SelectPortrait         = SNDragonTank_L
18802    ButtonImage            = SNDragonTank
18803    
18804    UpgradeCameo1 = Upgrade_ChinaBlackNapalm
18805    ;UpgradeCameo2 = NONE
18806    ;UpgradeCameo3 = NONE
18807    ;UpgradeCameo4 = NONE
18808    ;UpgradeCameo5 = NONE
18809    
18810    Draw = W3DTankDraw ModuleTag_01
18811      OkToChangeModelColor = Yes
18812  
18813      DefaultConditionState
18814        Model = NVDragon
18815        Turret = Turret
18816        TurretPitch = TURRETEL
18817        WeaponFireFXBone = PRIMARY WeaponA
18818        WeaponLaunchBone = PRIMARY WeaponA
18819        WeaponFireFXBone = SECONDARY WeaponA
18820        WeaponLaunchBone = SECONDARY WeaponA
18821      End
18822      ConditionState = REALLYDAMAGED
18823        Model = NVDragon_D
18824        Turret = Turret
18825        TurretPitch = TURRETEL
18826        WeaponFireFXBone = PRIMARY WeaponA
18827        WeaponLaunchBone = PRIMARY WeaponA
18828        WeaponFireFXBone = SECONDARY WeaponA
18829        WeaponLaunchBone = SECONDARY WeaponA
18830      End
18831      ConditionState = RUBBLE
18832        Model = NVDragon_D
18833        Turret = Turret
18834        TurretPitch = TURRETEL
18835        WeaponFireFXBone = PRIMARY WeaponA
18836        WeaponLaunchBone = PRIMARY WeaponA
18837        WeaponFireFXBone = SECONDARY WeaponA
18838        WeaponLaunchBone = SECONDARY WeaponA
18839      End
18840      
18841      TrackMarks              = EXTnkTrack.tga
18842      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
18843      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
18844      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
18845    End
18846  
18847    ; ***DESIGN parameters ***
18848    DisplayName      = OBJECT:Dragon
18849    Side = China
18850    EditorSorting   = VEHICLE
18851    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
18852  
18853    WeaponSet
18854      Conditions = None 
18855      Weapon = PRIMARY DragonTankFlameWeapon
18856      Weapon = SECONDARY DragonTankFireWallWeapon
18857      AutoChooseSources = SECONDARY NONE
18858    End
18859    WeaponSet
18860      Conditions = PLAYER_UPGRADE 
18861      Weapon = PRIMARY DragonTankFlameWeaponUpgraded
18862      Weapon = SECONDARY DragonTankFireWallWeaponUpgraded
18863      AutoChooseSources = SECONDARY NONE
18864      WeaponLockSharedAcrossSets = Yes ; This set is so similar to the default set that it can hold the weapon lock
18865    End
18866  
18867    ArmorSet
18868      Conditions      = None
18869      Armor           = DragonTankArmor
18870      DamageFX        = TankDamageFX
18871    End
18872    BuildCost       = 800
18873    BuildTime       = 10.0          ;in seconds    
18874    VisionRange     = 100
18875    ShroudClearingRange = 200
18876    Prerequisites
18877      Object = ChinaWarFactory
18878    End
18879  
18880    ExperienceValue = 50 50 100 150    ;Experience point value at each level
18881    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
18882    IsTrainable = Yes             ;Can gain experience
18883    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
18884    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
18885    CommandSet    = ChinaTankDragonCommandSet
18886  
18887    ; *** AUDIO Parameters ***
18888    VoiceSelect = DragonTankVoiceSelect
18889    VoiceMove = DragonTankVoiceMove
18890    VoiceGuard = DragonTankVoiceMove
18891    VoiceAttack = DragonTankVoiceAttack
18892    SoundMoveStart = DragonTankMoveStart
18893    SoundMoveStartDamaged = DragonTankMoveStart
18894  
18895    UnitSpecificSounds
18896      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
18897      VoiceCreate     = DragonTankVoiceCreate
18898      TurretMoveStart = NoSound
18899      TurretMoveLoop = TurretMoveLoop
18900      VoiceEnter = DragonTankVoiceMove
18901      VoiceFlameLocation = DragonTankVoiceFireStorm
18902    End
18903  
18904  
18905    ; *** ENGINEERING Parameters ***
18906    RadarPriority = UNIT
18907    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
18908    
18909    Body = ActiveBody ModuleTag_02
18910      MaxHealth       = 280.0
18911      InitialHealth   = 280.0
18912    End
18913    Behavior = AIUpdateInterface ModuleTag_03
18914      Turret
18915        TurretTurnRate = 120
18916        TurretPitchRate = 120
18917        AllowsPitch = Yes
18918        MinPhysicalPitch = -15
18919  
18920        TurretFireAngleSweep = PRIMARY 10
18921        TurretFireAngleSweep = SECONDARY 60
18922        TurretSweepSpeedModifier = PRIMARY 0.5    ; Sweep slower than you turn (aim for 30 for art)
18923        TurretSweepSpeedModifier = SECONDARY 2.0  ; Sweep faster than you turn
18924        ControlledWeaponSlots = PRIMARY SECONDARY
18925      End
18926      AutoAcquireEnemiesWhenIdle = Yes
18927    End
18928  
18929    Locomotor = SET_NORMAL DragonLocomotor
18930  
18931    Behavior = PhysicsBehavior ModuleTag_04
18932      Mass = 50.0
18933    End
18934  
18935    Behavior = WeaponSetUpgrade ModuleTag_05
18936      TriggeredBy = Upgrade_ChinaBlackNapalm
18937    End
18938  
18939    ; A crushing defeat
18940    Behavior = DestroyDie ModuleTag_06
18941      DeathTypes = NONE +CRUSHED +SPLATTED
18942    End
18943    Behavior = FXListDie ModuleTag_07
18944      DeathTypes = NONE +CRUSHED +SPLATTED
18945      DeathFX = FX_CarCrush
18946    End
18947    Behavior = CreateObjectDie ModuleTag_08
18948      DeathTypes = NONE +CRUSHED +SPLATTED
18949      CreationList = OCL_CrusaderTank_CrushEffect
18950    End
18951    Behavior = CreateCrateDie ModuleTag_09
18952      CrateData = SalvageCrateData
18953      ;CrateData = EliteTankCrateData
18954      ;CrateData = HeroicTankCrateData
18955    End
18956  
18957    ; just explode death
18958    Behavior = SlowDeathBehavior ModuleTag_10
18959      DeathTypes = ALL -CRUSHED -SPLATTED
18960      ;ProbabilityModifier = 33
18961      DestructionDelay = 500
18962      DestructionDelayVariance = 500
18963      FX  = INITIAL  FX_BattleMasterExplosionOneFinal
18964      OCL = FINAL    OCL_DragonDebris
18965      FX  = FINAL    FX_DragonTankDeathExplosionFinal
18966    End
18967    
18968      ; Napalm spills out, and explode death
18969    Behavior = SlowDeathBehavior ModuleTag_11
18970      DeathTypes = ALL +CRUSHED +SPLATTED
18971      ;ProbabilityModifier = 34
18972      DestructionDelay = 2000
18973      DestructionDelayVariance = 300
18974      FX  = INITIAL  FX_DragonNapalmSpill
18975      OCL = FINAL    OCL_DragonDebris  
18976      FX  = FINAL    FX_DragonTankDeathExplosionFinal
18977    End
18978  
18979    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
18980      DetectionRate             = 500
18981      DetectionRange           = 75
18982      CanDetectWhileGarrisoned  = No
18983      CanDetectWhileContained   = No
18984      ExtraRequiredKindOf       = BOAT
18985    End
18986  
18987    Behavior = FlammableUpdate ModuleTag_12
18988      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
18989      AflameDamageAmount = 3       ; taking this much damage...
18990      AflameDamageDelay = 500       ; this often.
18991    End
18992  
18993    Behavior = TransitionDamageFX ModuleTag_13
18994  ;   ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
18995      ReallyDamagedParticleSystem2 = Bone:Smoke RandomBone:Yes Psys:DragonTransitionFire
18996      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_DragonDamageTransition
18997    End
18998  
18999    Geometry = BOX
19000    GeometryMajorRadius = 15.0
19001    GeometryMinorRadius = 10.0
19002    GeometryHeight = 11.0   ; Height set to allow clear clipping of projectile stream  
19003    GeometryIsSmall = Yes
19004    Shadow = SHADOW_VOLUME    
19005    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
19006  
19007  End
19008  
19009  ;------------------------------------------------------------------------------
19010  Object ChinaTankDragonDeadHull
19011  
19012    ; *** ART Parameters ***
19013    Draw = W3DModelDraw ModuleTag_01
19014      OkToChangeModelColor = Yes
19015  
19016      ConditionState = NONE
19017        Model = NVDragon_D1
19018      End
19019    End
19020  
19021    ; ***DESIGN parameters ***
19022    DisplayName      = OBJECT:Overlord
19023    Side = China
19024    EditorSorting   = SYSTEM
19025    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
19026  
19027    ; *** AUDIO Parameters ***
19028    ; *** ENGINEERING Parameters ***
19029    RadarPriority = UNIT
19030    KindOf = CAN_CAST_REFLECTIONS NO_COLLIDE HULK
19031  
19032    Body = ActiveBody ModuleTag_02
19033      MaxHealth       = 1.0
19034      InitialHealth   = 1.0
19035    End
19036  
19037  
19038    Behavior = PhysicsBehavior ModuleTag_03
19039      Mass = 50
19040      AllowBouncing = Yes
19041    End
19042  
19043    Behavior = LifetimeUpdate ModuleTag_04
19044      MinLifetime = 0   ; min lifetime in msec
19045      MaxLifetime = 0   ; max lifetime in msec
19046    End
19047  
19048  
19049    Behavior = SlowDeathBehavior ModuleTag_05
19050      SinkDelay = 14000
19051      SinkRate = 2     ; in Dist/Sec
19052      DestructionDelay = 20000
19053    End
19054  
19055    Behavior = TransitionDamageFX ModuleTag_06
19056      RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
19057    End
19058  
19059    Geometry = BOX
19060    GeometryMajorRadius = 9.0
19061    GeometryMinorRadius = 6.0
19062    GeometryHeight = 7.5     
19063    GeometryIsSmall = Yes    
19064  
19065  End
19066  
19067  ;------------------------------------------------------------------------------
19068  Object DragonTankFlameProjectile
19069  
19070  ; Explanation - Particles can't do damage, so this is a fast shooting low 
19071  ; damage invisible missile launcher with a flame trail for exhaust
19072  
19073    ; *** ART Parameters ***
19074    Draw = W3DModelDraw ModuleTag_01
19075      OkToChangeModelColor = Yes
19076      ConditionState = NONE
19077        Model = NULL 
19078      End
19079    End
19080    ; Must have a draw module to be allowed to draw detonation FX
19081  
19082    ; ***DESIGN parameters ***
19083    EditorSorting     = SYSTEM
19084    VisionRange       = 0.0  
19085    ArmorSet
19086      Conditions      = None
19087      Armor           = ProjectileArmor
19088      DamageFX        = None
19089    End
19090  
19091    ; *** ENGINEERING Parameters ***
19092    KindOf            = PROJECTILE
19093    Body              = ActiveBody ModuleTag_02
19094      MaxHealth       = 100.0
19095      InitialHealth   = 100.0
19096    End
19097  
19098    Behavior = DestroyDie ModuleTag_03
19099      ;nothing
19100    End
19101      
19102    Behavior = PhysicsBehavior ModuleTag_04
19103      Mass = 1
19104      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
19105    End
19106    Behavior = MissileAIUpdate ModuleTag_05
19107      TryToFollowTarget = No 
19108      FuelLifetime = 350
19109      DetonateOnNoFuel = Yes
19110      InitialVelocity = 120                ; in dist/sec
19111      IgnitionDelay = 0
19112      DistanceToTravelBeforeTurning = 2
19113      GarrisonHitKillRequiredKindOf = INFANTRY
19114      GarrisonHitKillForbiddenKindOf = NONE
19115      GarrisonHitKillCount = 2
19116      GarrisonHitKillFX = FX_DragonFlameGarrisonBuildingHit
19117      DistanceToTargetForLock = 0  ; If it gets within 100 of the target, it kills the target.
19118  
19119    End
19120    Locomotor = SET_NORMAL DragonTankFlameLocomotor
19121  
19122    Behavior = BoneFXUpdate ModuleTag_06
19123      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail01 ; Covers gap at beginning of line
19124      PristineParticleSystem2  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail02
19125      PristineParticleSystem3  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail03
19126      PristineParticleSystem4 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail04
19127      PristineParticleSystem5 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail06
19128  
19129      PristineParticleSystem6 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerSmoke01
19130    End
19131  
19132    Behavior = BoneFXDamage ModuleTag_07
19133      ;nothing
19134    End
19135  
19136    Geometry = Sphere
19137    GeometryIsSmall = Yes
19138    GeometryMajorRadius = 2.0
19139  
19140  End
19141  
19142  ;------------------------------------------------------------------------------
19143  Object FlamethrowerProjectileStream
19144  
19145    ; *** ART Parameters ***
19146    Draw = W3DProjectileStreamDraw ModuleTag_01
19147      Texture = EXfthrowerStream.tga
19148      Width = 1.5
19149      TileFactor = 3.0 ; put the texture on the line segment this many times
19150      ScrollRate = 2.0; scroll the texture offset this fast
19151      MaxSegments = 4 ; only play the first X if there are a ton of them. 0 means play all
19152    End
19153  
19154    ; *** ENGINEERING Parameters ***
19155    KindOf = INERT
19156    Behavior = ProjectileStreamUpdate ModuleTag_02
19157      ;nothing
19158    End
19159  
19160  End
19161  
19162  ;------------------------------------------------------------------------------
19163  Object DragonTankFlameProjectileUpgraded
19164  
19165  ; Explanation - Particles can't do damage, so this is a fast shooting low 
19166  ; damage invisible missile launcher with a flame trail for exhaust
19167  
19168    ; *** ART Parameters ***
19169    Draw = W3DModelDraw ModuleTag_01
19170      OkToChangeModelColor = Yes
19171      ConditionState = NONE
19172        Model = NULL 
19173      End
19174    End
19175    ; Must have a draw module to be allowed to draw detonation FX
19176  
19177    ; ***DESIGN parameters ***
19178    EditorSorting     = SYSTEM
19179    VisionRange       = 0.0  
19180    ArmorSet
19181      Conditions      = None
19182      Armor           = ProjectileArmor
19183      DamageFX        = None
19184    End
19185  
19186    ; *** ENGINEERING Parameters ***
19187    KindOf            = PROJECTILE
19188    Body              = ActiveBody ModuleTag_02
19189      MaxHealth       = 100.0
19190      InitialHealth   = 100.0
19191    End
19192  
19193    Behavior = DestroyDie ModuleTag_03
19194      ;nothing
19195    End
19196      
19197    Behavior = PhysicsBehavior ModuleTag_04
19198      Mass = 1
19199      AllowCollideForce = No  ; flames collide, but never apply forces when they do so
19200    End
19201    Behavior = MissileAIUpdate ModuleTag_05
19202      TryToFollowTarget = No 
19203      FuelLifetime = 350
19204      DetonateOnNoFuel = Yes
19205      InitialVelocity = 120                ; in dist/sec
19206      IgnitionDelay = 0
19207      DistanceToTravelBeforeTurning = 2
19208      GarrisonHitKillRequiredKindOf = INFANTRY
19209      GarrisonHitKillForbiddenKindOf = NONE
19210      GarrisonHitKillCount = 2
19211      GarrisonHitKillFX = FX_DragonFlameGarrisonBuildingHit
19212      DistanceToTargetForLock = 0  ; If it gets within 100 of the target, it kills the target.
19213  
19214    End
19215    Locomotor = SET_NORMAL DragonTankFlameLocomotor
19216  
19217    Behavior = BoneFXUpdate ModuleTag_06
19218      PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail01Upgraded ; Covers gap at beginning of line
19219      PristineParticleSystem2  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail02Upgraded
19220      PristineParticleSystem3  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail03Upgraded
19221      PristineParticleSystem4 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail04Upgraded
19222      PristineParticleSystem5 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail06Upgraded
19223  
19224      PristineParticleSystem6 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerSmoke01
19225    End
19226  
19227    Behavior = BoneFXDamage ModuleTag_07
19228      ;nothing
19229    End
19230  
19231    Geometry = Sphere
19232    GeometryIsSmall = Yes
19233    GeometryMajorRadius = 2.0
19234  
19235  End
19236  
19237  ;------------------------------------------------------------------------------
19238  Object FlamethrowerProjectileStreamUpgraded
19239  
19240    ; *** ART Parameters ***
19241    Draw = W3DProjectileStreamDraw ModuleTag_01
19242      Texture = EXfthrowerStreamUpgraded.tga
19243      Width = 1.5
19244      TileFactor = 3.0 ; put the texture on the line segment this many times
19245      ScrollRate = 2.0; scroll the texture offset this fast
19246      MaxSegments = 4 ; only play the first X if there are a ton of them. 0 means play all
19247    End
19248  
19249    ; *** ENGINEERING Parameters ***
19250    KindOf = INERT
19251    Behavior = ProjectileStreamUpdate ModuleTag_02
19252      ;nothing
19253    End
19254  
19255  End
19256  
19257  ;------------------------------------------------------------------------------
19258  Object PointDefenseLaserBeam
19259    ; *** ART Parameters ***
19260    Draw = W3DLaserDraw ModuleTag_01
19261      Texture = EXLaser.tga
19262      NumBeams = 3                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
19263  
19264      InnerBeamWidth = 0.4            ;The total width of beam
19265      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
19266  
19267      OuterBeamWidth = 1.2            ;The total width of beam
19268      OuterColor = R:255 G:0 B:0  A:150 ;The outside color of the laser (cool)
19269      
19270      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
19271      ;FadeLifetime = 0                ;Laser will fade and delete.
19272  
19273      ;@todo -- add shot ability functionality (instead of instant point A to B)
19274    End
19275  
19276    KindOf = IMMOBILE
19277    ClientUpdate = LaserUpdate ModuleTag_02
19278      MuzzleParticleSystem = PaladinPointDefenseLaserFlare
19279      ParentFireBoneName   = Laser
19280      ParentFireBoneOnTurret = Yes
19281    End
19282  
19283    ;Used as a weapon, this is essentially a fast pulse laser. Adjusting
19284    ;the lifetime values will determine how long it renders. The damage
19285    ;is applied immediately, so lifetime doesn't matter.
19286    Behavior = LifetimeUpdate ModuleTag_03
19287      MinLifetime = 95   ; min lifetime in msec
19288      MaxLifetime = 95   ; max lifetime in msec
19289    End
19290  End
19291  
19292  
19293  ;------------------------------------------------------------------------------
19294  Object LaserBeam
19295    ; *** ART Parameters ***
19296    Draw = W3DLaserDraw ModuleTag_01
19297      Texture = EXLaser.tga
19298      NumBeams = 3                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
19299  
19300      InnerBeamWidth = 0.4            ;The total width of beam
19301      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
19302  
19303      OuterBeamWidth = 1.2            ;The total width of beam
19304      OuterColor = R:255 G:0 B:0  A:150 ;The outside color of the laser (cool)
19305      
19306      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
19307      ;FadeLifetime = 0                ;Laser will fade and delete.
19308  
19309      ;@todo -- add shot ability functionality (instead of instant point A to B)
19310    End
19311  
19312    KindOf = IMMOBILE
19313    ClientUpdate = LaserUpdate ModuleTag_02
19314      MuzzleParticleSystem = GenericLaserFlare
19315      ParentFireBoneName   = Muzzle01
19316      TargetParticleSystem = GenericLaserFlare
19317    End
19318  End
19319  
19320  ;------------------------------------------------------------------------------
19321  Object ParticleUplinkCannon_MediumConnectorLaser
19322    ; *** ART Parameters ***
19323    Draw = W3DLaserDraw ModuleTag_01
19324      Texture = EXLaser.tga
19325      NumBeams = 4                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
19326  
19327      InnerBeamWidth = 0.4            ;The total width of beam
19328      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
19329  
19330      OuterBeamWidth = 1.2            ;The total width of beam
19331      OuterColor = R:0 G:0 B:255  A:150 ;The outside color of the laser (cool)
19332      
19333      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
19334      ;FadeLifetime = 0                ;Laser will fade and delete.
19335  
19336      ;@todo -- add shot ability functionality (instead of instant point A to B)
19337    End
19338  
19339    KindOf = IMMOBILE
19340  
19341    ClientUpdate = LaserUpdate ModuleTag_02
19342      ;MuzzleParticleSystem = None
19343      ;TargetParticleSystem = None
19344    End
19345  End
19346  
19347  ;------------------------------------------------------------------------------
19348  Object ParticleUplinkCannon_IntenseConnectorLaser
19349    ; *** ART Parameters ***
19350    Draw = W3DLaserDraw ModuleTag_01
19351      Texture = EXLaser.tga
19352      NumBeams = 5                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
19353  
19354      InnerBeamWidth = 0.6            ;The total width of beam
19355      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
19356  
19357      OuterBeamWidth = 2.0            ;The total width of beam
19358      OuterColor = R:0 G:0 B:255  A:150 ;The outside color of the laser (cool)
19359      
19360      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
19361      ;FadeLifetime = 0                ;Laser will fade and delete.
19362  
19363      ;@todo -- add shot ability functionality (instead of instant point A to B)
19364    End
19365  
19366    KindOf = IMMOBILE
19367  
19368    ClientUpdate = LaserUpdate ModuleTag_02
19369      ;MuzzleParticleSystem = None
19370      ;TargetParticleSystem = None
19371    End
19372  End
19373  
19374  ;------------------------------------------------------------------------------
19375  Object ParticleUplinkCannon_OrbitalLaser
19376    ; *** ART Parameters ***
19377    Draw = W3DLaserDraw ModuleTag_01
19378      Texture = EXNoise02.tga
19379      NumBeams = 12                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
19380  
19381      Tile = Yes                        ;The height of the texture will determine how many times to tile the texture to fit without scaling.
19382      ScrollRate = -1.75                ;Scrolls the texture offset this fast -- towards(-) away(+)
19383      TilingScalar = 0.15               ;Stretches tiling if value > 1.0, otherwise shrinks it (1.0 is natural)
19384  
19385      InnerBeamWidth = 0.6            ;The total width of beam
19386      InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
19387  
19388      OuterBeamWidth = 26.0            ;The total width of beam
19389      OuterColor = R:0 G:0 B:255  A:150 ;The outside color of the laser (cool)
19390      
19391      ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
19392      ;FadeLifetime = 0                ;Laser will fade and delete.
19393  
19394      ;@todo -- add shot ability functionality (instead of instant point A to B)
19395    End
19396  
19397    ; *** DESIGN Parameters ***
19398    VisionRange = 100
19399    ShroudClearingRange = 120
19400  
19401    ; *** ENGINEERING Parameters ***
19402    KindOf = IMMOBILE
19403  
19404    ClientUpdate = LaserUpdate ModuleTag_02
19405      ;MuzzleParticleSystem = None
19406      ;TargetParticleSystem = None
19407    End
19408  End
19409  
19410  
19411  
19412  ;------------------------------------------------------------------------------
19413  Object BinaryDataStream
19414    ; *** ART Parameters ***
19415    Draw = W3DLaserDraw ModuleTag_01
19416      Texture = EXBinaryStream.tga
19417      NumBeams = 1                      ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data. Current max: 10
19418      InnerBeamWidth = 4                ;The total width of beam
19419      InnerColor = R:0 G:255 B:0 A:180  ;The inside color of the laser (hot)
19420      Tile = Yes                        ;The height of the texture will determine how many times to tile the texture to fit without scaling.
19421      ScrollRate = -0.25                 ;Scrolls the texture offset this fast -- towards(-) away(+)
19422      Segments = 20                     ;Number of segments -- more segments give smoother curve (but more joints) Current max: 20
19423      ArcHeight = 30.0                  ;The height of the arc
19424      SegmentOverlapRatio = 0.0000      ;This value overlaps(+) or separates(-) the segments by ratio
19425      TilingScalar = 0.25                ;Stretches tiling if value > 1.0, otherwise shrinks it (1.0 is natural)
19426   End
19427  
19428    KindOf = IMMOBILE
19429    ClientUpdate = LaserUpdate ModuleTag_02
19430      ;nothing
19431    End
19432  End
19433  
19434  ;------------------------------------------------------------------------------
19435  Object ChinaVehicleTroopCrawler
19436  
19437    ; *** ART Parameters ***
19438    SelectPortrait         = SNTransport_L
19439    ButtonImage            = SNTransport
19440    
19441    ;UpgradeCameo1 = NONE
19442    ;UpgradeCameo2 = NONE
19443    ;UpgradeCameo3 = NONE
19444    ;UpgradeCameo4 = NONE
19445    ;UpgradeCameo5 = NONE
19446    
19447    Draw = W3DTruckDraw ModuleTag_01
19448      OkToChangeModelColor = Yes
19449      ConditionState = NONE
19450        Model = NVTCrawler
19451        ;note, the IRSonar particle system is added in StealthDetectorUpdate.cpp, not here
19452      End
19453      ConditionState       = REALLYDAMAGED RUBBLE ; THIS IS VERY IMPORTANT... DO NOT REMOVE 'RUBBLE' UNDER PENALTY OF DEATH MLorenzen
19454                                                  ; @todo find out why a non-animating model like this has such trouble matching
19455                                                  ; reallydamaged against moving against rubble, etc.
19456        Model              = NVTCrawler_D
19457      End
19458  
19459      TrackMarks = EXTireTrack.tga
19460  
19461      Dust = RocketBuggyDust
19462      DirtSpray = RocketBuggyDirtSpray
19463      ; PowerslideSpray = RocketBuggyDirtPowerSlide doesn't powerslide
19464  
19465      ; These parameters are only used if the model has a separate suspension, 
19466      ; and the locomotor has HasSuspension = Yes.
19467      LeftFrontTireBone     = Wheel01
19468      RightFrontTireBone    = Wheel08
19469      LeftRearTireBone      = Wheel03
19470      RightRearTireBone     = Wheel05
19471      MidLeftFrontTireBone  = Wheel02
19472      MidRightFrontTireBone = Wheel07
19473      MidLeftRearTireBone   = Wheel04
19474      MidRightRearTireBone  = Wheel06
19475  
19476      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
19477      PowerslideRotationAddition  = 0   ; This vehicle doesn't powerslide.
19478  
19479    End
19480  
19481  
19482    ; ***DESIGN parameters ***
19483    DisplayName      = OBJECT:TroopCrawler
19484    Side = China
19485    EditorSorting   = VEHICLE
19486    TransportSlotCount = 8                 ;Just enough to fit into a Chinook.
19487    WeaponSet
19488      Conditions = None 
19489      Weapon = PRIMARY TroopCrawlerAssault
19490    End
19491    ArmorSet
19492      Conditions      = None
19493      Armor           = TankArmor
19494      DamageFX        = TankDamageFX
19495    End
19496    BuildCost       = 1400
19497    BuildTime       = 15.0          ;in seconds    
19498    VisionRange     = 175           ;Needs to see farther and match it's weapon range -- else troop crawlers will get slaughtered against tanks!
19499    ShroudClearingRange = 400
19500    Prerequisites
19501      Object = ChinaWarFactory
19502    End
19503    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
19504    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
19505    CommandSet = ChinaTroopCrawlerCommandSet
19506  
19507    ; *** AUDIO Parameters ***
19508    VoiceSelect = TroopCrawlerVoiceSelect
19509    VoiceMove = TroopCrawlerVoiceMove
19510    VoiceGuard = TroopCrawlerVoiceMove
19511    VoiceAttack = TroopCrawlerVoiceAttack
19512    SoundMoveStart = TroopCrawlerMoveStart
19513    SoundMoveStartDamaged = TroopCrawlerMoveStart
19514    SoundEnter = HumveeEnter
19515    SoundExit = HumveeExit
19516    UnitSpecificSounds
19517      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
19518      VoiceCreate     = TroopCrawlerVoiceCreate
19519      TurretMoveStart = NoSound
19520      TurretMoveLoop = TurretMoveLoop
19521      TruckLandingSound = NoSound ;RocketBuggyLand
19522      TruckPowerslideSound = NoSound ;RocketBuggyPowerslide
19523      VoiceCrush = TroopCrawlerVoiceCrush
19524      VoiceUnload   = TroopCrawlerVoiceUnload
19525      VoiceEnter = TroopCrawlerVoiceMove
19526    End
19527  
19528  
19529    ; *** ENGINEERING Parameters ***
19530    RadarPriority = UNIT
19531    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS TRANSPORT VEHICLE SCORE
19532    
19533    Body = ActiveBody ModuleTag_02
19534      MaxHealth       = 240.0
19535      InitialHealth   = 240.0
19536    End
19537    Behavior = StealthDetectorUpdate ModuleTag_03
19538      DetectionRate             = 900   ; how often to rescan for stealthed things in my sight (msec)
19539      ;DetectionRange           = ??? ;Dustin, enable this for independant balancing!
19540      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
19541      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
19542      PingSound                 = IRPing
19543      LoudPingSound             = IRPingLoud
19544      IRParticleSysName         = IRDetectSonar
19545      IRBrightParticleSysName   = IRDetectSonarBright
19546      IRGridParticleSysName     = IRDetectGrid
19547      IRBeaconParticleSysName   = IRLenzflare
19548      IRParticleSysBone         = IRFX
19549    End
19550  
19551  ;OBSOLETE
19552  ;  Behavior = AIUpdateInterface ModuleTag_04
19553  ;    Turret
19554  ;      ControlledWeaponSlots = PRIMARY
19555  ;    End
19556  ;  End
19557    Behavior = AssaultTransportAIUpdate ModuleTag_NewAI
19558      MembersGetHealedAtLifeRatio = 0.5
19559    End
19560  
19561    Locomotor = SET_NORMAL TroopCrawlerLocomotor
19562    Behavior = PhysicsBehavior ModuleTag_05
19563      Mass = 50.0
19564    End
19565    Behavior = TransportContain ModuleTag_06
19566      Slots                 = 8
19567      InitialPayload        = ChinaInfantryRedguard 8
19568      ScatterNearbyOnExit   = No
19569      HealthRegen%PerSec    = 10
19570      DamagePercentToUnits  = 10%
19571      AllowInsideKindOf     = INFANTRY
19572      AllowAlliesInside   = Yes
19573      AllowNeutralInside  = No
19574      AllowEnemiesInside  = No
19575      ExitDelay         = 250
19576      NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
19577      GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
19578    End
19579  
19580    Behavior = SlowDeathBehavior ModuleTag_07
19581      DeathTypes = ALL -CRUSHED -SPLATTED
19582      DestructionDelay = 1
19583      FX  = FINAL    FX_SupplyTruckExplosionOneFinal
19584      OCL = FINAL    OCL_FinalTroopCrawlerDebris
19585    End
19586  
19587    Behavior                 = TransitionDamageFX ModuleTag_08
19588      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
19589      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
19590    End
19591  
19592    Behavior = DestroyDie ModuleTag_09
19593      DeathTypes = NONE +CRUSHED +SPLATTED
19594    End
19595  
19596    Behavior = FXListDie ModuleTag_10
19597      DeathTypes = NONE +CRUSHED +SPLATTED
19598      DeathFX = FX_CarCrush
19599    End
19600  
19601    ; A crushing defeat
19602    Behavior = FXListDie ModuleTag_11
19603      DeathTypes = NONE +CRUSHED +SPLATTED
19604      DeathFX = FX_CarCrush
19605    End
19606  
19607    Behavior = CreateCrateDie ModuleTag_12
19608      CrateData = SalvageCrateData
19609      ;CrateData = EliteTankCrateData
19610      ;CrateData = HeroicTankCrateData
19611    End
19612  
19613    Behavior = FlammableUpdate ModuleTag_21
19614      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
19615      AflameDamageAmount = 3       ; taking this much damage...
19616      AflameDamageDelay = 500       ; this often.
19617    End
19618  
19619    Geometry = BOX
19620    GeometryMajorRadius = 22.0
19621    GeometryMinorRadius = 9.0
19622    GeometryHeight = 13.0     
19623    GeometryIsSmall = No
19624    Shadow = SHADOW_VOLUME
19625    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
19626  
19627  End
19628  
19629  ;------------------------------------------------------------------------------
19630  Object ChinaVehicleTroopCrawlerDeadHull
19631  
19632    ; *** ART Parameters ***
19633    Draw = W3DModelDraw ModuleTag_01
19634      OkToChangeModelColor = Yes
19635  
19636      ConditionState = NONE
19637        Model = NVTCrawler_D1
19638      End
19639    End
19640  
19641    ; ***DESIGN parameters ***
19642    Side = China
19643    EditorSorting   = SYSTEM
19644    TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
19645  
19646    ; *** AUDIO Parameters ***
19647    ; *** ENGINEERING Parameters ***
19648    RadarPriority = UNIT
19649    KindOf = CAN_CAST_REFLECTIONS IMMOBILE NO_COLLIDE HULK
19650  
19651    Body = ActiveBody ModuleTag_02
19652      MaxHealth       = 1.0
19653      InitialHealth   = 1.0
19654    End
19655  
19656    Behavior = PhysicsBehavior ModuleTag_Hulk03
19657      Mass = 100.0
19658      AllowBouncing = Yes
19659      KillWhenRestingOnGround = Yes
19660    End
19661    Behavior = LifetimeUpdate ModuleTag_Hulk04
19662      MinLifetime = 1500   ; min lifetime in msec
19663      MaxLifetime = 1600   ; max lifetime in msec
19664    End
19665  
19666    Behavior = SlowDeathBehavior ModuleTag_Hulk05
19667      SinkDelay         = 1500
19668      SinkRate          = 2     ; in Dist/Sec
19669      DestructionDelay  = 8000
19670    End
19671  
19672  
19673    Geometry = BOX
19674    GeometryMajorRadius = 9.0
19675    GeometryMinorRadius = 6.0
19676    GeometryHeight = 7.5     
19677    GeometryIsSmall = Yes    
19678  
19679  End
19680  
19681  ;------------------------------------------------------------------------------
19682  Object ChinaVehicleTroopCrawlerEmpty
19683  
19684    ; *** ART Parameters ***
19685    SelectPortrait         = SNTransport_L
19686    ButtonImage            = SNTransport
19687    Draw = W3DTankDraw ModuleTag_01
19688      OkToChangeModelColor = Yes
19689      TrackMarks = EXTireTrack.tga
19690      ConditionState = NONE
19691        Model = NVTCrawler
19692      End
19693      ConditionState       = REALLYDAMAGED
19694        Model              = NVTCrawler_D
19695      End
19696      ConditionState       = RUBBLE
19697        Model              = NVTCrawler_D
19698      End
19699    End
19700  
19701    ; ***DESIGN parameters ***
19702    DisplayName      = OBJECT:TroopCrawler
19703    Side = China
19704    EditorSorting   = VEHICLE
19705    TransportSlotCount = 8                 ;how many "slots" we take in a transport (0 == not transportable)
19706    WeaponSet
19707      Conditions = None 
19708      Weapon = PRIMARY TroopCrawlerAssault
19709    End
19710    ArmorSet
19711      Conditions      = None
19712      Armor           = TankArmor
19713      DamageFX        = TankDamageFX
19714    End
19715    BuildCost       = 700
19716    BuildTime       = 1.0          ;in seconds    
19717    VisionRange     = 150
19718    ShroudClearingRange = 150
19719    Prerequisites
19720      Object = ChinaWarFactory
19721    End
19722    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
19723    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
19724    CommandSet = ChinaTroopCrawlerCommandSet
19725  
19726    ; *** AUDIO Parameters ***
19727    VoiceSelect = TroopCrawlerVoiceSelect
19728    VoiceMove = TroopCrawlerVoiceMove
19729    VoiceGuard = TroopCrawlerVoiceMove
19730    VoiceAttack = TroopCrawlerVoiceAttack
19731    SoundMoveStart = TroopCrawlerMoveStart
19732    SoundMoveStartDamaged = TroopCrawlerMoveStart
19733  
19734    UnitSpecificSounds
19735      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
19736      VoiceCreate     = TroopCrawlerVoiceCreate
19737      TurretMoveStart = NoSound
19738      TurretMoveLoop  = TurretMoveLoop
19739      VoiceUnload     = TroopCrawlerVoiceUnload
19740      VoiceEnter = TroopCrawlerVoiceMove
19741    End
19742  
19743  
19744    ; *** ENGINEERING Parameters ***
19745    RadarPriority = UNIT
19746    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS TRANSPORT VEHICLE SCORE
19747    
19748    Body = ActiveBody ModuleTag_02
19749      MaxHealth       = 200.0
19750      InitialHealth   = 200.0
19751    End
19752    Behavior = AIUpdateInterface ModuleTag_03
19753      Turret
19754        ControlledWeaponSlots = PRIMARY
19755      End
19756    End
19757    Locomotor = SET_NORMAL TroopCrawlerLocomotor
19758    Behavior = PhysicsBehavior ModuleTag_04
19759      Mass = 50.0
19760    End
19761  
19762  
19763    Behavior = SlowDeathBehavior  ModuleTag_05
19764      DeathTypes = ALL -CRUSHED -SPLATTED
19765      ProbabilityModifier = 5
19766      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
19767      DestructionDelay = 0
19768      DestructionDelayVariance = 200
19769      FX = FINAL FX_BuggyNewDeathExplosion
19770      OCL = FINAL OCL_FinalTroopCrawlerDebris
19771    End
19772      
19773    Behavior = TransportContain ModuleTag_06
19774      Slots = 8
19775      HealthRegen%PerSec = 10
19776      DamagePercentToUnits = 10%
19777      AllowInsideKindOf  = INFANTRY
19778      AllowAlliesInside   = Yes
19779      AllowNeutralInside  = No
19780      AllowEnemiesInside  = No
19781    End
19782  
19783  
19784    ; A crushing defeat
19785    Behavior = FXListDie ModuleTag_07
19786      DeathTypes = NONE +CRUSHED +SPLATTED
19787      DeathFX = FX_CarCrush
19788    End
19789    Behavior = CreateObjectDie ModuleTag_08
19790      DeathTypes = NONE +CRUSHED +SPLATTED
19791      CreationList = OCL_CrusaderTank_CrushEffect
19792    End
19793    Behavior = CreateCrateDie ModuleTag_09
19794      CrateData = SalvageCrateData
19795      ;CrateData = EliteTankCrateData
19796      ;CrateData = HeroicTankCrateData
19797    End
19798  
19799    Behavior = FlammableUpdate ModuleTag_21
19800      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
19801      AflameDamageAmount = 3       ; taking this much damage...
19802      AflameDamageDelay = 500       ; this often.
19803    End
19804  
19805    Geometry = BOX
19806    GeometryMajorRadius = 22.0
19807    GeometryMinorRadius = 9.0
19808    GeometryHeight = 13.0     
19809    GeometryIsSmall = No
19810    Shadow = SHADOW_VOLUME 
19811    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length   
19812  
19813  End
19814  
19815  
19816  ;------------------------------------------------------------------------------
19817  Object ChinaVehicleInfernoCannon
19818  
19819    ; *** ART Parameters ***
19820    SelectPortrait         = SNInferno_L
19821    ButtonImage            = SNInferno
19822    
19823    UpgradeCameo1 = Upgrade_ChinaBlackNapalm
19824    ;UpgradeCameo2 = NONE
19825    ;UpgradeCameo3 = NONE
19826    ;UpgradeCameo4 = NONE
19827    ;UpgradeCameo5 = NONE
19828    
19829    Draw                    = W3DTankDraw ModuleTag_01
19830      OkToChangeModelColor  = Yes
19831      ConditionState        = NONE
19832        Model               = NVInferno
19833        Turret              = Turret
19834        TurretPitch         = TurretEL
19835        WeaponFireFXBone    = PRIMARY Muzzle
19836        WeaponRecoilBone    = PRIMARY Barrel
19837        WeaponMuzzleFlash   = PRIMARY MuzzleFX
19838        WeaponLaunchBone = PRIMARY Muzzle
19839      End
19840      
19841      ConditionState        = RUBBLE REALLYDAMAGED
19842        Model               = NVInferno_D
19843        Turret              = Turret
19844        TurretPitch         = TurretEL
19845        WeaponFireFXBone    = PRIMARY Muzzle
19846        WeaponRecoilBone    = PRIMARY Barrel
19847        WeaponMuzzleFlash   = PRIMARY MuzzleFX
19848        WeaponLaunchBone = PRIMARY Muzzle
19849      End
19850      
19851      TrackMarks           = EXTnkTrack.tga
19852      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
19853    End
19854  
19855    ; ***DESIGN parameters ***
19856    DisplayName        = OBJECT:InfernoCannon
19857    Side               = China
19858    EditorSorting      = VEHICLE
19859    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
19860    WeaponSet
19861      Conditions       = None 
19862      Weapon           = PRIMARY InfernoCannonGun
19863    End
19864    WeaponSet
19865      Conditions       = PLAYER_UPGRADE 
19866      Weapon           = PRIMARY InfernoCannonGunUpgraded
19867    End
19868    ArmorSet
19869      Conditions      = None
19870      Armor           = TankArmor
19871      DamageFX        = TankDamageFX
19872    End
19873    BuildCost          = 900
19874    BuildTime          = 15.0          ;in seconds    
19875    VisionRange        = 180
19876    ShroudClearingRange = 300
19877    Prerequisites
19878      Object           = ChinaWarFactory
19879      Object           = ChinaPropagandaCenter
19880    End
19881  
19882    ExperienceValue = 50 50 100 150    ;Experience point value at each level
19883    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
19884    IsTrainable = Yes             ;Can gain experience
19885    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
19886    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
19887    CommandSet      = ChinaVehicleInfernoCannonCommandSet
19888  
19889    ; *** AUDIO Parameters ***
19890    VoiceSelect       = InfernoCannonVoiceSelect
19891    VoiceMove         = InfernoCannonVoiceMove
19892    VoiceGuard        = InfernoCannonVoiceMove
19893    VoiceAttack       = InfernoCannonVoiceAttack
19894    SoundMoveStart    = InfernoCannonMoveStart
19895    SoundMoveStartDamaged = InfernoCannonMoveStart
19896    UnitSpecificSounds
19897      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
19898      VoiceCreate     = InfernoCannonVoiceCreate
19899      TurretMoveStart = NoSound
19900      TurretMoveLoop  = NoSound
19901      VoiceCrush          = InfernoCannonVoiceCrush
19902      VoiceEnter         = InfernoCannonVoiceMove
19903    End
19904  
19905  
19906    ; *** ENGINEERING Parameters ***
19907    RadarPriority     = UNIT
19908    KindOf            = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
19909    
19910    Body              = ActiveBody ModuleTag_02
19911      MaxHealth       = 120.0
19912      InitialHealth   = 120.0
19913    End
19914  
19915    Behavior = VeterancyGainCreate ModuleTag_03
19916      StartingLevel = VETERAN
19917      ScienceRequired = SCIENCE_ArtilleryTraining
19918    End
19919  
19920    Behavior = AIUpdateInterface ModuleTag_04
19921      Turret
19922        TurretTurnRate = 100
19923        TurretPitchRate = 100
19924        AllowsPitch = Yes
19925        FirePitch = 45
19926        ControlledWeaponSlots = PRIMARY
19927      End
19928      AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
19929    End
19930    Locomotor = SET_NORMAL InfernoLocomotor
19931    Behavior = PhysicsBehavior ModuleTag_05
19932      Mass = 50.0
19933    End
19934  
19935    ; A crushing defeat
19936    Behavior               = FXListDie ModuleTag_06
19937      DeathTypes = NONE +CRUSHED +SPLATTED
19938      DeathFX         = FX_CarCrush
19939    End
19940    Behavior               = CreateObjectDie ModuleTag_07
19941      DeathTypes = NONE +CRUSHED +SPLATTED
19942      CreationList    = OCL_CrusaderTank_CrushEffect
19943    End
19944    Behavior = SlowDeathBehavior ModuleTag_08
19945      DeathTypes = ALL -CRUSHED -SPLATTED
19946      ProbabilityModifier = 50
19947      DestructionDelay = 2000
19948      DestructionDelayVariance = 300
19949      FX  = INITIAL  FX_CrusaderCatchFire  
19950      FX  = FINAL    FX_GenericTankDeathExplosion 
19951      OCL = FINAL    OCL_InfernoCannonDeathEffect
19952    End
19953  
19954    Behavior                 = TransitionDamageFX ModuleTag_09
19955      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
19956      ReallyDamagedFXList1 = Loc: X:-7 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
19957    End
19958  
19959    Behavior         = CreateCrateDie ModuleTag_10
19960      CrateData = SalvageCrateData
19961      ;CrateData = EliteTankCrateData
19962      ;CrateData = HeroicTankCrateData
19963    End
19964  
19965    Behavior      = WeaponSetUpgrade ModuleTag_11
19966      TriggeredBy = Upgrade_ChinaBlackNapalm
19967    End
19968  
19969    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
19970      DetectionRate             = 500
19971      DetectionRange           = 75
19972      CanDetectWhileGarrisoned  = No
19973      CanDetectWhileContained   = No
19974      ExtraRequiredKindOf       = BOAT
19975    End
19976  
19977    Behavior = FlammableUpdate ModuleTag_21
19978      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
19979      AflameDamageAmount = 3       ; taking this much damage...
19980      AflameDamageDelay = 500       ; this often.
19981    End
19982  
19983    Behavior = DestroyDie ModuleTag_22
19984      DeathTypes = NONE +CRUSHED +SPLATTED
19985    End
19986  
19987    Geometry            = BOX
19988    GeometryMajorRadius = 15.0
19989    GeometryMinorRadius = 10.0
19990    GeometryHeight      = 15.0     
19991    GeometryIsSmall     = Yes
19992    Shadow              = SHADOW_VOLUME 
19993    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length   
19994  
19995  End
19996  
19997  ;------------------------------------------------------------------------------
19998  ;Also called NukeCannon
19999  Object ChinaVehicleNukeLauncher
20000  
20001    ; *** ART Parameters ***
20002    SelectPortrait         = SNNukeCannon_L
20003    ButtonImage            = SNNukeCannon2
20004    
20005    ;UpgradeCameo1 = NONE
20006    ;UpgradeCameo2 = NONE
20007    ;UpgradeCameo3 = NONE
20008    ;UpgradeCameo4 = NONE
20009    ;UpgradeCameo5 = NONE
20010  
20011    Draw = W3DTankDraw ModuleTag_01
20012      
20013      InitialRecoilSpeed   = 120
20014      MaxRecoilDistance    = 8
20015      RecoilSettleSpeed    = 6
20016  
20017      OkToChangeModelColor = Yes
20018  
20019      ExtraPublicBone = Turret01
20020  
20021      DefaultConditionState
20022        Model                           = NVNukeCn
20023        WeaponLaunchBone                = PRIMARY Muzzle
20024        WeaponMuzzleFlash               = PRIMARY MuzzleFX
20025        WeaponFireFXBone                = PRIMARY Muzzle
20026        WeaponRecoilBone                = PRIMARY Barrel
20027        HideSubObject                   = TURRET01      ;Hide controlled turret
20028        ShowSubObject                   = TURRETFRONT TURRETBACK  ;Show pack/unpack animated turret
20029        Turret                          = Turret01
20030        TurretPitch                     = TurretEL
20031      End
20032        
20033      ConditionState                    = RUBBLE
20034        Model                           = NVNukeCn_D
20035        WeaponLaunchBone                = PRIMARY Muzzle
20036        WeaponMuzzleFlash               = PRIMARY MuzzleFX
20037        WeaponRecoilBone                = PRIMARY Barrel
20038        HideSubObject                   = TURRET01      ;Hide controlled turret
20039        ShowSubObject                   = TURRETFRONT TURRETBACK  ;Show pack/unpack animated turret
20040        Turret                          = Turret01
20041        TurretPitch                     = TurretEL
20042      End
20043  
20044      ;*** PACKED STATE -- ready to move ***
20045      ConditionState    = MOVING
20046        Animation       = NVNukeCn.NVNukeCn
20047        AnimationMode   = ONCE_BACKWARDS
20048        Flags           = START_FRAME_FIRST
20049      End
20050      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
20051      AliasConditionState = BETWEEN_FIRING_SHOTS_A
20052      ;***
20053      ConditionState    = REALLYDAMAGED MOVING
20054        Model           = NVNukeCn_D
20055        Animation       = NVNukeCn_D.NVNukeCn_D
20056        AnimationMode   = ONCE_BACKWARDS
20057        Flags           = START_FRAME_FIRST
20058      End
20059      AliasConditionState = REALLYDAMAGED MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
20060       
20061  
20062      ;*** UNPACKING STATE  -- preparing to fire ***
20063      ConditionState    = UNPACKING
20064        Animation       = NVNukeCn.NVNukeCn
20065        AnimationMode   = ONCE
20066      End
20067      AliasConditionState = UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
20068      ;***
20069      ConditionState    = REALLYDAMAGED UNPACKING
20070        Model           = NVNukeCn_D
20071        Animation       = NVNukeCn_D.NVNukeCn_D
20072        AnimationMode   = ONCE
20073      End
20074      AliasConditionState = REALLYDAMAGED UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
20075  
20076      ;*** PACKING STATE -- preparing to move ***
20077      ConditionState    = PACKING
20078        Animation       = NVNukeCn.NVNukeCn
20079        AnimationMode   = ONCE_BACKWARDS
20080        Flags           = START_FRAME_LAST
20081      End
20082  
20083      AliasConditionState = PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
20084      ;***
20085      ConditionState    = REALLYDAMAGED PACKING
20086        Model           = NVNukeCn_D
20087        Animation       = NVNukeCn_D.NVNukeCn_D
20088        AnimationMode   = ONCE_BACKWARDS
20089        Flags           = START_FRAME_LAST
20090      End
20091      AliasConditionState = REALLYDAMAGED PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
20092  
20093      ;*** DEPLOYED STATE -- ready to fire ***
20094      ConditionState  = DEPLOYED 
20095        Animation       = NVNukeCn.NVNukeCn
20096        AnimationMode   = ONCE
20097        Flags           = START_FRAME_LAST
20098        TransitionKey   = TRANS_FIRING_A
20099        HideSubObject   = TURRETFRONT TURRETBACK   ;Hide pack/unpack animated turret
20100        ShowSubObject   = TURRET01      ;Show controlled turret
20101      End
20102      AliasConditionState = DEPLOYED FIRING_A
20103      AliasConditionState = DEPLOYED BETWEEN_FIRING_SHOTS_A
20104      AliasConditionState = DEPLOYED RELOADING_A
20105      AliasConditionState = DEPLOYED MOVING
20106  
20107      ConditionState  = DEPLOYED REALLYDAMAGED
20108        Model           = NVNukeCn_D
20109        Animation       = NVNukeCn_D.NVNukeCn_D
20110        AnimationMode   = ONCE
20111        Flags           = START_FRAME_LAST
20112        TransitionKey   = TRANS_FIRING_A
20113        HideSubObject   = TURRETFRONT TURRETBACK  ;Hide pack/unpack animated turret
20114        ShowSubObject   = TURRET01      ;Show controlled turret
20115      End
20116      AliasConditionState = DEPLOYED REALLYDAMAGED FIRING_A
20117      AliasConditionState = DEPLOYED REALLYDAMAGED BETWEEN_FIRING_SHOTS_A
20118      AliasConditionState = DEPLOYED REALLYDAMAGED RELOADING_A
20119      AliasConditionState = DEPLOYED REALLYDAMAGED MOVING
20120      
20121      TrackMarks              = EXTnkTrack.tga
20122      TreadAnimationRate      = 4.0  ; amount of tread texture to move per second
20123    End
20124  
20125    ; ***DESIGN parameters ***
20126    DisplayName      = OBJECT:NukeLauncher
20127    Side = China
20128    EditorSorting   = VEHICLE
20129    TransportSlotCount = 10                 ;how many "slots" we take in a transport (0 == not transportable)
20130    WeaponSet
20131      Conditions = None 
20132      Weapon = PRIMARY NukeCannonGun
20133      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
20134    End
20135    ArmorSet
20136      Conditions      = None
20137      Armor           = TankArmor
20138      DamageFX        = TankDamageFX
20139    End
20140    BuildCost       = 1600
20141    BuildTime       = 20.0          ;in seconds    
20142    VisionRange     = 180
20143    ShroudClearingRange = 350
20144    Prerequisites
20145      Object = ChinaWarFactory
20146      Object = ChinaPropagandaCenter
20147      Science = SCIENCE_NukeLauncher
20148    End
20149  
20150    ExperienceValue = 50 100 200 400    ;Experience point value at each level
20151    ExperienceRequired = 0 400 600 1000  ;Experience points needed to gain each level
20152    IsTrainable = Yes             ;Can gain experience
20153    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
20154    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
20155    CommandSet    = ChinaVehicleNukeCannonCommandSet
20156  
20157    ; *** AUDIO Parameters ***
20158    VoiceSelect           = NukeCannonVoiceSelect
20159    VoiceMove             = NukeCannonVoiceMove
20160    VoiceGuard            = NukeCannonVoiceMove
20161    VoiceAttack           = NukeCannonVoiceAttack
20162    SoundMoveStart        = NukeCannonMoveStart
20163    SoundMoveStartDamaged = NukeCannonMoveStart
20164    UnitSpecificSounds
20165      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
20166      VoiceCreate         = NukeCannonVoiceCreate
20167      TurretMoveStart     = NoSound
20168      TurretMoveLoop      = NukeCannonTurretMoveLoop
20169      VoiceEnter          = NukeCannonVoiceMove
20170      Deploy              = NukeCannonDeploy
20171      Undeploy            = NukeCannonUnDeploy
20172    End
20173  
20174  
20175    ; *** ENGINEERING Parameters ***
20176    RadarPriority = UNIT
20177    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
20178    
20179    Body = ActiveBody ModuleTag_02
20180      MaxHealth       = 240.0
20181      InitialHealth   = 240.0
20182    End
20183  
20184    Behavior = VeterancyGainCreate ModuleTag_03
20185      StartingLevel = VETERAN
20186      ScienceRequired = SCIENCE_ArtilleryTraining
20187    End
20188  
20189    Behavior = DeployStyleAIUpdate ModuleTag_04
20190      Turret
20191        TurretTurnRate        = 80
20192        TurretPitchRate       = 80
20193        FirePitch             = 0            ; Instead of aiming pitchwise at the target, it will aim here
20194        AllowsPitch           = Yes
20195        RecenterTime          = 5000         ; how long to wait during idle before recentering
20196        ControlledWeaponSlots = PRIMARY
20197        NaturalTurretAngle    = 0
20198        InitiallyDisabled     = Yes
20199      End
20200      AutoAcquireEnemiesWhenIdle = No
20201      PackTime = 3333
20202      UnpackTime = 3333
20203      TurretsFunctionOnlyWhenDeployed = Yes
20204      TurretsMustCenterBeforePacking = Yes
20205    End
20206  
20207    Locomotor = SET_NORMAL ChinaNukeCannonLocomotor
20208    Behavior = PhysicsBehavior ModuleTag_05
20209      Mass = 50.0
20210    End
20211  
20212    Behavior = SlowDeathBehavior ModuleTag_06
20213      DeathTypes = ALL -CRUSHED -SPLATTED
20214      DestructionDelay  = 500
20215      DestructionDelayVariance  = 100
20216      FX  = INITIAL  FX_BattleMasterExplosionOneFinal
20217      OCL = INITIAL  OCL_RadiationFieldSmall
20218      OCL = MIDPOINT OCL_ChinaVehicleNukeCannonDie
20219      OCL = FINAL    OCL_RadiationFieldSmall
20220      FX  = FINAL    FX_ChinaVehicleNukeCannonDeathExplosion
20221    End
20222      
20223    ; A crushing defeat
20224    Behavior = FXListDie ModuleTag_07
20225      DeathTypes = NONE +CRUSHED +SPLATTED
20226      DeathFX = FX_CarCrush
20227    End
20228    Behavior = CreateObjectDie ModuleTag_08
20229      DeathTypes = NONE +CRUSHED +SPLATTED
20230      CreationList = OCL_CrusaderTank_CrushEffect
20231    End
20232    Behavior = CreateCrateDie ModuleTag_09
20233      CrateData = SalvageCrateData
20234      ;CrateData = EliteTankCrateData
20235      ;CrateData = HeroicTankCrateData
20236    End
20237  
20238    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
20239      DetectionRate             = 500
20240      DetectionRange           = 75
20241      CanDetectWhileGarrisoned  = No
20242      CanDetectWhileContained   = No
20243      ExtraRequiredKindOf       = BOAT
20244    End
20245  
20246    Behavior                 = TransitionDamageFX ModuleTag_10
20247      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
20248      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
20249    End
20250  
20251    Behavior = DestroyDie ModuleTag_11
20252      DeathTypes = NONE +CRUSHED +SPLATTED
20253    End
20254  
20255    Behavior = FlammableUpdate ModuleTag_21
20256      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
20257      AflameDamageAmount = 3       ; taking this much damage...
20258      AflameDamageDelay = 500       ; this often.
20259    End
20260  
20261    Geometry = BOX
20262    GeometryMajorRadius = 32.0
20263    GeometryMinorRadius = 10.0
20264    GeometryHeight = 17.0     
20265    GeometryIsSmall = No
20266    Shadow = SHADOW_VOLUME
20267    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
20268  
20269  End
20270  
20271  ;------------------------------------------------------------------------------
20272  Object ChinaTankGattling
20273  
20274    ; *** ART Parameters ***
20275    SelectPortrait         = SNGatlingTank_L
20276    ButtonImage            = SNGatlingTank
20277    
20278    ;UpgradeCameo1 = Upgrade_Nationalism
20279    UpgradeCameo1 = Upgrade_ChinaChainGuns
20280    ;UpgradeCameo3 = NONE
20281    ;UpgradeCameo4 = NONE
20282    ;UpgradeCameo5 = NONE
20283    
20284    Draw                      = W3DTankDraw ModuleTag_01
20285      OkToChangeModelColor    = Yes
20286      
20287      DefaultConditionState        
20288        Model               = NVGattTank
20289        Animation           = NVGattTank.NVGattTank
20290        AnimationMode       = MANUAL
20291        Turret              = TURRET01
20292        TurretPitch         = TURRETEL01
20293        WeaponMuzzleFlash   = PRIMARY   MuzzleFX
20294        WeaponFireFXBone    = PRIMARY   Muzzle
20295        WeaponMuzzleFlash   = SECONDARY MuzzleFX
20296        WeaponFireFXBone    = SECONDARY Muzzle
20297      End
20298  
20299      ConditionState        = REALLYDAMAGED RUBBLE         
20300        Model               = NVGattTank_D
20301      End
20302  
20303  
20304      ;-----pristine attacking----------------------
20305      ConditionState        = ATTACKING
20306        Model               = NVGattTank
20307        Animation           = NVGattTank.NVGattTank
20308        AnimationMode       = LOOP
20309        AnimationSpeedFactorRange = 0.5 0.5 ;set this state to animate  s l o w l y
20310      End
20311  
20312      ConditionState        = CONTINUOUS_FIRE_SLOW ATTACKING
20313        Model               = NVGattTank
20314        Animation           = NVGattTank.NVGattTank
20315        AnimationMode       = LOOP
20316        AnimationSpeedFactorRange = 0.8 0.8 ;set this state to animate  s l o w l y
20317      End
20318  
20319      ConditionState        = CONTINUOUS_FIRE_MEAN ATTACKING
20320        Model               = NVGattTank
20321        Animation           = NVGattTank.NVGattTank
20322        AnimationMode       = LOOP
20323        AnimationSpeedFactorRange = 1.5 1.5 ;set this state to animate  medium-fast
20324      End
20325  
20326      ConditionState        = CONTINUOUS_FIRE_FAST ATTACKING
20327        Model               = NVGattTank
20328        Animation           = NVGattTank.NVGattTank
20329        AnimationMode       = LOOP
20330        ParticleSysBone     = Muzzle01 GattlingMuzzleSmoke
20331        AnimationSpeedFactorRange = 3.0 3.0 ;set this state to animate  vryfst
20332      End
20333  
20334      ;-----damaged attacking----------------------
20335      ConditionState  REALLYDAMAGED ATTACKING         
20336        Model               = NVGattTank_D
20337        Animation           = NVGattTank_D.NVGattTank_D
20338        AnimationMode       = LOOP
20339        AnimationSpeedFactorRange = 0.5 0.5 ;set this state to animate  extemely sloowly
20340      End
20341      ConditionState        = CONTINUOUS_FIRE_SLOW REALLYDAMAGED ATTACKING
20342        Model               = NVGattTank_D
20343        Animation           = NVGattTank_D.NVGattTank_D
20344        AnimationMode       = LOOP
20345        AnimationSpeedFactorRange = 0.8 0.8 ;set this state to animate  s l o w l y
20346      End
20347  
20348      ConditionState        = CONTINUOUS_FIRE_MEAN REALLYDAMAGED ATTACKING
20349        Model               = NVGattTank_D
20350        Animation           = NVGattTank_D.NVGattTank_D
20351        AnimationMode       = LOOP
20352        AnimationSpeedFactorRange = 1.5 1.5 ;set this state to animate  medium-fast
20353      End
20354  
20355      ConditionState        = CONTINUOUS_FIRE_FAST REALLYDAMAGED ATTACKING
20356        Model               = NVGattTank_D
20357        Animation           = NVGattTank_D.NVGattTank_D
20358        AnimationMode       = LOOP
20359        ParticleSysBone     = Muzzle01 GattlingMuzzleSmoke
20360        AnimationSpeedFactorRange = 3.0 3.0 ;set this state to animate  vryfst
20361      End
20362  
20363  
20364  
20365  
20366      TrackMarks              = EXTnkTrack.tga
20367      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
20368      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
20369      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
20370    End
20371  
20372    ; ***DESIGN parameters ***
20373    DisplayName               = OBJECT:GattlingTank
20374    Side                      = China
20375    EditorSorting             = VEHICLE
20376    TransportSlotCount        = 3            ;how many "slots" we take in a transport (0 == not transportable)
20377  
20378    WeaponSet
20379      Conditions              = None 
20380      Weapon                  = PRIMARY   GattlingTankGun
20381      PreferredAgainst        = PRIMARY   AIRCRAFT
20382      Weapon                  = SECONDARY GattlingTankGunAir
20383    End
20384  
20385    ArmorSet
20386      Conditions    = None
20387      Armor         = AntiAirVehicle
20388      DamageFX      = TankDamageFX
20389    End
20390    BuildCost       = 800
20391    BuildTime       = 10.0          ;in seconds    
20392    VisionRange     = 150
20393    ShroudClearingRange = 360
20394    Prerequisites
20395      Object        = ChinaWarFactory
20396    End
20397  
20398    ExperienceValue = 50 50 100 150  ;Experience point value at each level
20399    ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
20400    IsTrainable = Yes             ;Can gain experience
20401    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
20402    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
20403    CommandSet      = ChinaVehicleGattlingTankCommandSet
20404  
20405    Behavior = AIUpdateInterface ModuleTag_20
20406      AutoAcquireEnemiesWhenIdle = Yes
20407      MoodAttackCheckRate        = 250
20408    End
20409  
20410    ; *** AUDIO Parameters ***
20411    VoiceSelect     = GattlingTankVoiceSelect
20412    VoiceMove       = GattlingTankVoiceMove
20413    VoiceGuard      = GattlingTankVoiceMove
20414    VoiceAttack     = GattlingTankVoiceAttack
20415    SoundMoveStart  = GattlingTankMoveStart
20416    SoundMoveStartDamaged = GattlingTankMoveStart
20417  
20418    UnitSpecificSounds
20419      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
20420      VoiceCreate     = GattlingTankVoiceCreate
20421      TurretMoveStart = NoSound
20422      TurretMoveLoop  = TurretMoveLoopLoud
20423      VoiceCrush      = GattlingTankVoiceCrush
20424      VoiceEnter      = GattlingTankVoiceMove
20425      VoiceRapidFire  = GattlingTankVoiceRapid
20426    End
20427  
20428    ; *** ENGINEERING Parameters ***
20429    RadarPriority     = UNIT
20430    KindOf            = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
20431    
20432    Body              = ActiveBody ModuleTag_02
20433      MaxHealth       = 300.0
20434      InitialHealth   = 300.0
20435    End
20436    Behavior = AIUpdateInterface ModuleTag_03
20437      Turret
20438        ControlledWeaponSlots = PRIMARY SECONDARY
20439        TurretTurnRate      = 180   // turn rate, in degrees per sec
20440        TurretPitchRate     = 180
20441        AllowsPitch         = Yes
20442        FiresWhileTurning   = Yes
20443        NaturalTurretPitch  = 45 ; this keeps it aimed half way between land and sky
20444                                 ; since you never know from whence cometh danger
20445      End
20446      AutoAcquireEnemiesWhenIdle = Yes
20447    End
20448    Locomotor       = SET_NORMAL GattlingTankLocomotor
20449    Behavior          = PhysicsBehavior ModuleTag_04
20450      Mass            = 40.0
20451    End
20452  
20453  ;  Behavior               = DestroyDie 
20454  ;    ;nothing
20455  ;  End
20456      
20457    ; Just explode death
20458    Behavior = SlowDeathBehavior ModuleTag_05
20459      ProbabilityModifier = 19
20460      DestructionDelay = 200
20461      DestructionDelayVariance = 100
20462      SinkRate = 0.5 ; in Dist/Sec
20463      OCL = FINAL    OCL_ChinaTankGattlingDebris
20464      FX  = FINAL    FX_GattlingExplosionOneFinal
20465    End
20466  
20467    Behavior = CreateCrateDie ModuleTag_06
20468      CrateData = SalvageCrateData
20469      ;CrateData = EliteTankCrateData
20470      ;CrateData = HeroicTankCrateData
20471    End
20472  
20473    Behavior = TransitionDamageFX ModuleTag_07
20474      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
20475      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
20476    End
20477  
20478    Behavior = FlammableUpdate ModuleTag_21
20479      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
20480      AflameDamageAmount = 3       ; taking this much damage...
20481      AflameDamageDelay = 500       ; this often.
20482    End
20483  
20484    Behavior = WeaponBonusUpgrade ModuleTag_22
20485      TriggeredBy = Upgrade_ChinaChainGuns
20486    End
20487  
20488    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
20489      DetectionRate             = 500
20490      DetectionRange           = 75
20491      CanDetectWhileGarrisoned  = No
20492      CanDetectWhileContained   = No
20493      ExtraRequiredKindOf       = BOAT
20494    End
20495  
20496    Geometry            = BOX
20497    GeometryMajorRadius = 15.0
20498    GeometryMinorRadius = 10.0
20499    GeometryHeight      = 15.0     
20500    GeometryIsSmall     = Yes
20501    Shadow              = SHADOW_VOLUME
20502    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
20503  
20504  End
20505  
20506  ;------------------------------------------------------------------------------
20507  Object GLALightTank
20508  
20509    ; *** ART Parameters ***
20510    Draw                      = W3DTankDraw ModuleTag_01
20511      OkToChangeModelColor    = Yes
20512      
20513      DefaultConditionState          
20514        Model                 = UVLiteTank
20515        WeaponMuzzleFlash     = PRIMARY MuzzleFX
20516      End
20517  
20518      TrackMarks              = EXTnkTrack.tga
20519      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
20520      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
20521      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
20522    End
20523  
20524    ; ***DESIGN parameters ***
20525    DisplayName               = OBJECT:Scorpion
20526    Side                      = GLA
20527    EditorSorting             = VEHICLE
20528    TransportSlotCount        = 3            ;how many "slots" we take in a transport (0 == not transportable)
20529    WeaponSet
20530      Conditions              = None 
20531      Weapon                  = PRIMARY CrusaderTankGun
20532    End
20533    ArmorSet
20534      Conditions    = None
20535      Armor         = TruckArmor
20536      DamageFX      = TankDamageFX
20537    End
20538    BuildCost       = 900
20539    BuildTime       = 10.0          ;in seconds    
20540    VisionRange     = 200
20541    ShroudClearingRange = 200
20542    Prerequisites
20543      Object        = GLAArmsDealer
20544    End
20545  
20546    ExperienceValue = 50 100 150 400    ;Experience point value at each level
20547    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
20548    IsTrainable = Yes             ;Can gain experience
20549    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
20550    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
20551  
20552    ; *** AUDIO Parameters ***
20553  
20554    VoiceSelect     = ScorpionTankVoiceSelect
20555    VoiceMove       = ScorpionTankVoiceMove
20556    VoiceGuard      = ScorpionTankVoiceMove
20557    VoiceAttack     = ScorpionTankVoiceAttack
20558    SoundMoveStart  = ScorpionTankMoveStart
20559    SoundMoveStartDamaged = ScorpionTankMoveStart
20560  
20561    UnitSpecificSounds
20562      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
20563      VoiceCreate     = ScorpionTankVoiceCreate
20564      TurretMoveStart = NoSound
20565      TurretMoveLoop  = TurretMoveLoop
20566      VoiceCrush      = ScorpionTankVoiceCrush
20567      VoiceEnter      = ScorpionTankVoiceMove
20568    End
20569  
20570    ; *** ENGINEERING Parameters ***
20571    RadarPriority     = UNIT
20572    KindOf            = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
20573    
20574    Body              = ActiveBody ModuleTag_02
20575      MaxHealth       = 200.0
20576      InitialHealth   = 200.0
20577    End
20578    Behavior = AIUpdateInterface ModuleTag_03
20579      Turret
20580        ControlledWeaponSlots    = PRIMARY
20581      End
20582      AutoAcquireEnemiesWhenIdle = Yes
20583    End
20584    Locomotor       = SET_NORMAL BasicTankLocomotor
20585    Behavior          = PhysicsBehavior ModuleTag_04
20586      Mass            = 40.0
20587    End
20588  
20589    Behavior               = DestroyDie ModuleTag_05
20590      ;nothing
20591    End
20592      
20593    ; A crushing defeat
20594    Behavior             = FXListDie ModuleTag_06
20595      DeathTypes = NONE +CRUSHED +SPLATTED
20596      DeathFX       = FX_CarCrush
20597    End
20598    Behavior             = CreateObjectDie ModuleTag_07
20599      DeathTypes = NONE +CRUSHED +SPLATTED
20600      CreationList  = OCL_CrusaderTank_CrushEffect
20601    End
20602    Behavior             = CreateCrateDie ModuleTag_08
20603      CrateData     = SalvageCrateData
20604      ;CrateData     = EliteTankCrateData
20605      ;CrateData     = HeroicTankCrateData
20606    End
20607  
20608    Behavior = FlammableUpdate ModuleTag_21
20609      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
20610      AflameDamageAmount = 3       ; taking this much damage...
20611      AflameDamageDelay = 500       ; this often.
20612    End
20613  
20614    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
20615      DetectionRate             = 500
20616      DetectionRange           = 75
20617      CanDetectWhileGarrisoned  = No
20618      CanDetectWhileContained   = No
20619      ExtraRequiredKindOf       = BOAT
20620    End
20621  
20622    Geometry            = BOX
20623    GeometryMajorRadius = 15.0
20624    GeometryMinorRadius = 10.0
20625  
20626    GeometryHeight      = 15.0     
20627    GeometryIsSmall     = Yes
20628    Shadow              = SHADOW_VOLUME
20629    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
20630  
20631  End
20632  
20633  ;------------------------------------------------------------------------------
20634  ;China Supply Truck
20635  Object ChinaVehicleSupplyTruck
20636  
20637    ; *** ART Parameters ***
20638    
20639    SelectPortrait         = SNSupplyTruck_L
20640    ButtonImage            = SNSupplyTruck
20641    
20642    ;UpgradeCameo1 = NONE
20643    ;UpgradeCameo2 = NONE
20644    ;UpgradeCameo3 = NONE
20645    ;UpgradeCameo4 = NONE
20646    ;UpgradeCameo5 = NONE
20647    
20648    Draw = W3DTruckDraw ModuleTag_01
20649      OkToChangeModelColor = Yes
20650      
20651      DefaultConditionState
20652        Model           = NVSSUPPLYTK
20653        HideSubObject   = Cargo01
20654      End
20655      
20656      ConditionState    = REALLYDAMAGED
20657        Model           = NVSSUPPLYTK_D
20658      End
20659      
20660      ConditionState    = RUBBLE
20661        Model           = NVSSUPPLYTK_D
20662      End
20663      
20664      ConditionState    = CARRYING
20665        ShowSubObject   = Cargo01
20666      End
20667      
20668      ConditionState    = REALLYDAMAGED CARRYING
20669        Model           = NVSSUPPLYTK_D
20670        ShowSubObject   = Cargo01
20671      End
20672      
20673      ConditionState    = RUBBLE CARRYING
20674        Model           = NVSSUPPLYTK_D
20675        ShowSubObject   = Cargo01
20676      End
20677      
20678      TrackMarks              = EXTireTrack.tga
20679  
20680      LeftFrontTireBone           = Tire01
20681      RightFrontTireBone          = Tire02
20682      MidLeftRearTireBone         = Tire03
20683      MidRightRearTireBone        = Tire04
20684      LeftRearTireBone            = Tire05
20685      RightRearTireBone           = Tire06
20686      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
20687      PowerslideRotationAddition  = 2.5   ; This speed is added to the rotation speed when powersliding.
20688  
20689      Dust                    = RocketBuggyDust
20690      DirtSpray               = RocketBuggyDirtSpray
20691      PowerslideSpray         = RocketBuggyDirtPowerSlide
20692  
20693    End
20694  
20695    ; ***DESIGN parameters ***
20696    DisplayName         = OBJECT:SupplyTruck
20697    Side                = China
20698    EditorSorting       = VEHICLE
20699    TransportSlotCount  = 2                 ;how many "slots" we take in a transport (0 == not transportable)
20700    BuildCost           = 600
20701    BuildTime           = 10.0      ;in seconds
20702    VisionRange         = 150
20703    ShroudClearingRange = 300
20704    Prerequisites
20705      Object = ChinaSupplyCenter
20706    End
20707  
20708    ArmorSet
20709      Conditions      = None
20710      Armor           = TruckArmor
20711      DamageFX        = TankDamageFX
20712    End
20713    CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
20714    CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
20715    CommandSet              = ChinaSupplyTruckCommandSet
20716    ; *** AUDIO Parameters ***
20717    VoiceSelect             = SupplyTruckVoiceSelect
20718    VoiceMove               = SupplyTruckVoiceMove
20719    VoiceAttack             = SupplyTruckVoiceAttack
20720    SoundMoveStart          = SupplyTruckMoveStart
20721    SoundMoveStartDamaged = SupplyTruckMoveStart
20722    UnitSpecificSounds
20723      VoiceCreate           = SupplyTruckVoiceCreate
20724      TruckLandingSound     = NoSound
20725      TruckPowerslideSound  = NoSound
20726      VoiceSupply           = SupplyTruckVoiceSupply
20727      VoiceCrush            = SupplyTruckVoiceCrush
20728      VoiceEnter            = SupplyTruckVoiceMove
20729  
20730    End
20731  
20732    ; *** ENGINEERING Parameters ***
20733    RadarPriority = UNIT
20734    ;@todo lorenzen removed the CAN_ATTACK from the chinasupplytruck... ok?
20735    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE HARVESTER SCORE
20736    
20737    Body = ActiveBody ModuleTag_02
20738      MaxHealth       = 300.0
20739      InitialHealth   = 300.0
20740    End
20741    Behavior = SupplyTruckAIUpdate ModuleTag_03
20742      MaxBoxes = 4
20743      SupplyCenterActionDelay = 400     ; ms for whole thing (one transaction)
20744      SupplyWarehouseActionDelay = 1000 ; ms per box (many small transactions)
20745      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)
20746      SuppliesDepletedVoice = SupplyTruckVoiceSuppliesDepleted
20747    End
20748    Locomotor = SET_NORMAL SupplyTruckLocomotor
20749    Behavior = PhysicsBehavior ModuleTag_04
20750      Mass = 5.0
20751    End
20752  
20753    ExperienceValue    = 50 50 50 50 ;Experience point value at each level
20754  
20755    Behavior = SlowDeathBehavior ModuleTag_05
20756      DeathTypes = ALL -CRUSHED -SPLATTED
20757      DestructionDelay = 200
20758      DestructionDelayVariance = 100
20759      FX  = FINAL    FX_SupplyTruckExplosionOneFinal
20760      OCL = FINAL    OCL_ChinaSupplyTruckDeathEffect
20761    End
20762      
20763    Behavior = FXListDie ModuleTag_06
20764      DeathTypes = NONE +CRUSHED +SPLATTED
20765      DeathFX = FX_CarCrush
20766    End
20767    
20768    Behavior = CreateObjectDie ModuleTag_07
20769      DeathTypes = NONE +CRUSHED +SPLATTED
20770      CreationList = OCL_ChinaSupplyTruck_CrushEffect
20771    End
20772  
20773    Behavior                       = TransitionDamageFX ModuleTag_08
20774      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
20775      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
20776    End
20777  
20778    Behavior = FlammableUpdate ModuleTag_10
20779      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
20780      AflameDamageAmount = 3       ; taking this much damage...
20781      AflameDamageDelay = 500       ; this often.
20782    End
20783  
20784    ; A crushing defeat
20785    Behavior = DestroyDie ModuleTag_11
20786      DeathTypes = NONE +CRUSHED +SPLATTED
20787    End
20788  
20789    Behavior        = CreateCrateDie ModuleTag_12
20790      CrateData     = SalvageCrateData
20791    End
20792  
20793    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
20794      DetectionRate             = 500
20795      DetectionRange           = 75
20796      CanDetectWhileGarrisoned  = No
20797      CanDetectWhileContained   = No
20798      ExtraRequiredKindOf       = BOAT
20799    End
20800  
20801    Geometry = BOX
20802    GeometryMajorRadius = 17.0
20803    GeometryMinorRadius = 7.0
20804    GeometryHeight = 14.0     
20805    GeometryIsSmall = No
20806    Shadow = SHADOW_VOLUME
20807    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
20808  
20809  End
20810  
20811  ;------------------------------------------------------------------------------
20812  ;USA Construction Dozer or USDozer
20813  Object AmericaVehicleDozer
20814  
20815    ; *** ART Parameters ***
20816    SelectPortrait         = SACDozer_L
20817    ButtonImage            = SACDozer
20818    
20819    Draw = W3DTruckDraw ModuleTag_01
20820  
20821      OkToChangeModelColor = Yes
20822  
20823      ConditionState = NONE
20824        Model             = AVCONSTDOZ_A
20825        ParticleSysBone   = EXHAUSTFX01 DozerSmokeLight
20826        WaitForStateToFinishIfPossible = TRANS_DIGGING
20827      End
20828  
20829      ConditionState = REALLYDAMAGED RUBBLE
20830        Model             = AVCONSTDOZ_AD
20831        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
20832        WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
20833      End
20834  
20835      ConditionState = MOVING
20836        Model             = AVCONSTDOZ_A
20837        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
20838        WaitForStateToFinishIfPossible = TRANS_DIGGING
20839      End
20840  
20841      ConditionState = MOVING REALLYDAMAGED RUBBLE
20842        Model             = AVCONSTDOZ_AD
20843        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
20844        WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
20845      End
20846  
20847      ConditionState = PREATTACK_A
20848        Model             = AVCONSTDOZ_A
20849        Animation         = AVCONSTDOZ_A.AVCONSTDOZ_A
20850        AnimationMode     = ONCE
20851        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
20852        ParticleSysBone   = DIRTFX01 DozerDirtFall ;gush of dirt
20853        TransitionKey     = TRANS_DIGGING
20854      End
20855  
20856      ConditionState = PREATTACK_A REALLYDAMAGED RUBBLE
20857        Model             = AVCONSTDOZ_AD
20858        Animation         = AVCONSTDOZ_AD.AVCONSTDOZ_AD
20859        AnimationMode     = ONCE
20860        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
20861        TransitionKey     = TRANS_DIGGING_DAMAGED
20862      End
20863  
20864      ConditionState = ACTIVELY_CONSTRUCTING
20865        Model             = AVCONSTDOZ_A
20866        Animation         = AVCONSTDOZ_A.AVCONSTDOZ_A
20867        AnimationMode     = ONCE
20868        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
20869        ParticleSysBone   = DIRTFX01 DozerDirtFall
20870        WaitForStateToFinishIfPossible = TRANS_DIGGING
20871      End
20872  
20873      ConditionState = ACTIVELY_CONSTRUCTING REALLYDAMAGED RUBBLE
20874        Model             = AVCONSTDOZ_AD
20875        Animation         = AVCONSTDOZ_AD.AVCONSTDOZ_AD
20876        AnimationMode     = ONCE
20877        ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
20878        ParticleSysBone   = DIRTFX01 DozerDirtFall
20879        WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
20880      End
20881  
20882      TrackMarks            = EXTireTrack2.tga
20883      Dust                  = RocketBuggyDust
20884      DirtSpray             = RocketBuggyDirtSpray
20885  
20886      ; These parameters are only used if the model has a separate suspension, 
20887      ; and the locomotor has HasSuspension = Yes.
20888  
20889      LeftFrontTireBone     = TIRE01
20890      RightFrontTireBone    = TIRE02
20891      LeftRearTireBone      = TIRE03
20892      RightRearTireBone     = TIRE04
20893  
20894      TireRotationMultiplier      = 0.2   ; this * speed = rotation.
20895      PowerslideRotationAddition  = 0   ; This vehicle doesn't powerslide.
20896  
20897    End
20898  
20899    ; ***DESIGN parameters ***
20900    DisplayName         = OBJECT:Dozer
20901    Side                = America
20902    EditorSorting       = VEHICLE
20903    TransportSlotCount  = 5 ;how many "slots" we take in a transport (0 == not transportable)
20904    BuildCost           = 1000
20905    BuildTime           = 5.0 ; in seconds
20906    VisionRange         = 200
20907    ShroudClearingRange = 200
20908  
20909    WeaponSet
20910      Conditions = None 
20911      Weapon = PRIMARY None
20912    End
20913    WeaponSet
20914      Conditions = MINE_CLEARING_DETAIL 
20915      Weapon = PRIMARY DozerMineDisarmingWeapon
20916    End
20917  
20918    ArmorSet
20919      Conditions        = None
20920      Armor             = DozerArmor ;Special Explosion-Proof Armor
20921      DamageFX          = TankDamageFX
20922    End
20923    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
20924    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
20925    CommandSet          = AmericaDozerCommandSet
20926  
20927    ; *** AUDIO Parameters ***
20928    VoiceSelect         = DozerUSAVoiceSelect
20929    VoiceMove           = DozerUSAVoiceMove
20930    VoiceGuard          = DozerUSAVoiceMove
20931    VoiceTaskComplete   = DozerUSAVoiceBuildComplete
20932    SoundMoveStart      = DozerUSAMoveStart
20933    SoundMoveStartDamaged = DozerUSAMoveStart
20934    UnitSpecificSounds
20935      VoiceCreate           = DozerUSAVoiceCreate
20936      VoiceNoBuild          = DozerUSAVoiceBuildNot
20937      VoiceCrush            = DozerUSAVoiceCrush
20938      VoiceRepair           = DozerUSAVoiceRepair
20939      VoiceDisarm           = DozerUSAVoiceClearMine
20940      TruckLandingSound     = NoSound
20941      TruckPowerslideSound  = NoSound
20942      VoiceEnter            = DozerUSAVoiceMove
20943      VoiceBuildResponse    = DozerUSAVoiceBuild
20944    End
20945  
20946    ; *** ENGINEERING Parameters ***
20947    RadarPriority       = UNIT
20948    KindOf              = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER
20949   
20950    Body                = ActiveBody ModuleTag_02
20951      MaxHealth         = 250.0
20952      InitialHealth     = 250.0
20953    End
20954  
20955    Behavior = DozerAIUpdate ModuleTag_03
20956      RepairHealthPercentPerSecond = 2%    ; % of max health to repair each second
20957      BoredTime                    = 5000  ; in milliseconds
20958      BoredRange                   = 150   ; when bored, we look this far away to do something
20959      AutoAcquireEnemiesWhenIdle   = Yes
20960    End
20961  
20962    Locomotor = SET_NORMAL AmericaVehicleDozerLocomotor
20963  
20964    Behavior = PhysicsBehavior ModuleTag_04
20965      Mass = 75.0
20966    End
20967  
20968    Behavior = StealthDetectorUpdate ModuleTag_05
20969      DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
20970      ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
20971      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
20972      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
20973      ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
20974    End
20975  
20976    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
20977      DetectionRate             = 500
20978      DetectionRange           = 75
20979      CanDetectWhileGarrisoned  = No
20980      CanDetectWhileContained   = No
20981      ExtraRequiredKindOf       = BOAT
20982    End
20983  
20984    Behavior = TransitionDamageFX ModuleTag_06
20985      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
20986      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
20987    End
20988  
20989    ; Catch fire, and explode death
20990    Behavior = SlowDeathBehavior ModuleTag_07
20991      DeathTypes = ALL -CRUSHED -SPLATTED
20992      ProbabilityModifier = 100
20993      DestructionDelay = 1500
20994      DestructionDelayVariance = 600
20995      FX  = INITIAL  FX_CrusaderCatchFire
20996      OCL = FINAL    OCL_AmericaDozerExplode  
20997      FX  = FINAL    FX_BattleMasterExplosionOneFinal
20998    End   
20999  
21000    Behavior = CreateCrateDie ModuleTag_CratesChange
21001      CrateData = SalvageCrateData
21002    End
21003    
21004    Behavior = FlammableUpdate ModuleTag_21
21005      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
21006      AflameDamageAmount = 3       ; taking this much damage...
21007      AflameDamageDelay = 500       ; this often.
21008    End
21009  
21010    ClientUpdate = AnimatedParticleSysBoneClientUpdate ModuleTag_22
21011    End
21012  
21013    Behavior = FXListDie ModuleTag_23
21014      DeathTypes = NONE +CRUSHED +SPLATTED
21015      DeathFX = FX_CarCrush
21016    End
21017  
21018    Behavior = DestroyDie ModuleTag_24
21019      DeathTypes = NONE +CRUSHED +SPLATTED
21020    End
21021  
21022    ;----------------------- Command Set Changes -----------------------
21023    Behavior = CommandSetUpgrade ModuleTag_commandup
21024      CommandSet = AmericaDozerCommandSetTech
21025      TriggeredBy   = Upgrade_AmericaDozerUpgrade
21026    End
21027    Behavior = CommandSetUpgrade ModuleTag_commandup2
21028      CommandSet = AmericaDozerCommandSet
21029      TriggeredBy   = Upgrade_AmericaDozerUpgradeDefault
21030    End
21031    ; releases the upgrade otherwise you cannot switch between them since they've already been purchased
21032    Behavior = ObjectCreationUpgrade ModuleTag_commandup3
21033      UpgradeObject = OCL_AmericaCommandsetupgraderelease
21034      TriggeredBy   = Upgrade_AmericaDozerUpgrade Upgrade_AmericaDozerUpgradeDefault
21035    End
21036    ;------------------------------------------------------------------
21037  
21038    Behavior = ProductionUpdate ModuleTag_25
21039      ;MaxQueueEntries = 1
21040    End
21041  
21042    Geometry            = BOX
21043    GeometryMajorRadius = 15.0
21044    GeometryMinorRadius = 10.0
21045    GeometryHeight      = 15.0     
21046    GeometryIsSmall     = Yes
21047    Shadow              = SHADOW_VOLUME
21048    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
21049  
21050  End
21051  
21052  ;------------------------------------------------------------------------------
21053  ; Note, this is really a Civ dozer that's used only for eye-candy purposes.
21054  ; It doesn't have mine-disarming ability. It probably shouldn't even have Dozer
21055  ; ability, but I have left that in for now. But don't use this for true Dozer purposes.
21056  ;
21057  Object GLAVehicleDozer
21058  
21059    ; *** ART Parameters ***
21060    SelectPortrait         = SNDozer_L
21061    ButtonImage            = SNDozer
21062    Draw = W3DModelDraw ModuleTag_01
21063      OkToChangeModelColor = Yes
21064      DefaultConditionState
21065        Model = AVCONSTDOZ
21066      End
21067    End
21068  
21069    ; ***DESIGN parameters ***
21070    DisplayName      = OBJECT:Dozer
21071    Side = GLA
21072    EditorSorting   = VEHICLE
21073    TransportSlotCount = 5                 ;how many "slots" we take in a transport (0 == not transportable)
21074    BuildCost       = 100
21075    BuildTime       = 5.0 ;in seconds
21076    VisionRange     = 150
21077    ShroudClearingRange = 300
21078  
21079    ArmorSet
21080      Conditions        = None
21081      Armor             = TankArmor
21082      DamageFX          = TankDamageFX
21083    End
21084    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
21085    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
21086    CommandSet      = GLADozerCommandSet
21087  
21088    ; *** AUDIO Parameters ***
21089    SoundMoveStart   = NoSound
21090  
21091    ; *** ENGINEERING Parameters ***
21092    RadarPriority = UNIT
21093    KindOf = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER
21094    
21095    Body = ActiveBody ModuleTag_02
21096      MaxHealth       = 1000.0
21097      InitialHealth   = 1000.0
21098    End
21099    Behavior = DozerAIUpdate ModuleTag_03
21100      RepairHealthPercentPerSecond = 2%    ; % of max health to repair each second
21101      BoredTime                    = 5000  ; in milliseconds
21102      BoredRange                   = 150   ; when bored, we look this far away to do something
21103    End
21104    Locomotor                    = SET_NORMAL BasicTankLocomotor
21105    Behavior = PhysicsBehavior ModuleTag_04
21106      Mass = 75.0
21107    End
21108  
21109    Behavior = DestroyDie ModuleTag_05
21110      ;nothing
21111    End
21112      
21113    Behavior = FlammableUpdate ModuleTag_21
21114      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
21115      AflameDamageAmount = 3       ; taking this much damage...
21116      AflameDamageDelay = 500       ; this often.
21117    End
21118  
21119    Geometry = BOX
21120    GeometryMajorRadius = 15.0
21121    GeometryMinorRadius = 10.0
21122    GeometryHeight = 15.0     
21123    GeometryIsSmall = Yes    
21124    Shadow = SHADOW_VOLUME
21125    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
21126  
21127  End
21128  
21129  ;------------------------------------------------------------------------------
21130  ;China Construction Dozer
21131  Object ChinaVehicleDozer
21132  
21133    ; *** ART Parameters ***
21134    SelectPortrait         = SNDozer_L
21135    ButtonImage            = SNDozer
21136  
21137    Draw = W3DTankDraw ModuleTag_01
21138      OkToChangeModelColor    = Yes
21139  
21140      ConditionState = NONE
21141        Model             = NVCONSTDOZ_A
21142        ParticleSysBone   = EXHAUST01 DozerSmokeLight
21143        WaitForStateToFinishIfPossible = TRANS_DIGGING
21144      End
21145  
21146      ConditionState = REALLYDAMAGED RUBBLE
21147        Model             = NVCONSTDOZ_AD
21148        ParticleSysBone   = EXHAUST01 DozerSmokeHeavy
21149        WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
21150      End
21151  
21152      ConditionState = MOVING
21153        Model             = NVCONSTDOZ_A
21154        ParticleSysBone   = EXHAUST01 DozerSmokeHeavy
21155        WaitForStateToFinishIfPossible = TRANS_DIGGING
21156      End
21157  
21158      ConditionState = MOVING REALLYDAMAGED RUBBLE
21159        Model             = NVCONSTDOZ_AD
21160        ParticleSysBone   = EXHAUST01 DozerSmokeHeavy
21161        WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
21162      End
21163  
21164      ConditionState = PREATTACK_A
21165        Model             = NVCONSTDOZ_A
21166        Animation         = NVCONSTDOZ_A.NVCONSTDOZ_A
21167        AnimationMode     = ONCE
21168        ParticleSysBone   = EXHAUST01 DozerSmokeHeavy
21169        ParticleSysBone   = DIRTFX01 DozerDirtFall ;gush of dirt
21170        TransitionKey     = TRANS_DIGGING
21171      End
21172  
21173      ConditionState = PREATTACK_A REALLYDAMAGED RUBBLE
21174        Model             = NVCONSTDOZ_AD
21175        Animation         = NVCONSTDOZ_AD.NVCONSTDOZ_AD
21176        AnimationMode     = ONCE
21177        ParticleSysBone   = EXHAUST01 DozerSmokeHeavy
21178        TransitionKey     = TRANS_DIGGING_DAMAGED
21179      End
21180  
21181      ConditionState = ACTIVELY_CONSTRUCTING
21182        Model             = NVCONSTDOZ_A
21183        Animation         = NVCONSTDOZ_A.NVCONSTDOZ_A
21184        AnimationMode     = ONCE
21185        ParticleSysBone   = EXHAUST01 DozerSmokeHeavy
21186        ParticleSysBone   = DIRTFX01 DozerDirtFall
21187        WaitForStateToFinishIfPossible = TRANS_DIGGING
21188      End
21189  
21190      ConditionState = ACTIVELY_CONSTRUCTING REALLYDAMAGED RUBBLE
21191        Model             = NVCONSTDOZ_AD
21192        Animation         = NVCONSTDOZ_AD.NVCONSTDOZ_AD
21193        AnimationMode     = ONCE
21194        ParticleSysBone   = EXHAUST01 DozerSmokeHeavy
21195        ParticleSysBone   = DIRTFX01 DozerDirtFall
21196        WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
21197      End
21198      
21199      TrackMarks           = EXTnkTrack.tga
21200      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
21201    End
21202  
21203    ; ***DESIGN parameters ***
21204    DisplayName         = OBJECT:Dozer
21205    Side                = China
21206    EditorSorting       = VEHICLE
21207    TransportSlotCount  = 5                 ;how many "slots" we take in a transport (0 == not transportable)
21208    BuildCost           = 1000
21209    BuildTime           = 5.0 ;in seconds
21210    VisionRange         = 150
21211    ShroudClearingRange = 300
21212  
21213    WeaponSet
21214      Conditions = None 
21215      Weapon = PRIMARY None
21216    End
21217    WeaponSet
21218      Conditions = MINE_CLEARING_DETAIL 
21219      Weapon = PRIMARY DozerMineDisarmingWeapon
21220    End
21221  
21222    ArmorSet
21223      Conditions        = None
21224      Armor             = DozerArmor ;Special Explosion-Proof Armor
21225      DamageFX          = TankDamageFX
21226    End
21227    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
21228    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
21229    CommandSet          = ChinaDozerCommandSet
21230  
21231    ; *** AUDIO Parameters ***
21232    VoiceSelect         = DozerChinaVoiceSelect
21233    VoiceMove           = DozerChinaVoiceMove
21234    VoiceEnter          = DozerChinaVoiceMove
21235    VoiceTaskComplete   = DozerChinaVoiceBuildComplete
21236    SoundMoveStart      = DozerChinaMoveStart
21237    SoundMoveStartDamaged = DozerChinaMoveStart
21238  
21239    UnitSpecificSounds
21240      VoiceCreate       = DozerChinaVoiceCreate
21241      VoiceCrush        = DozerChinaVoiceCrush
21242      VoiceNoBuild      = DozerChinaVoiceBuildNot
21243      VoiceRepair       = DozerChinaVoiceRepair
21244      VoiceDisarm       = DozerChinaVoiceClearMine
21245      VoiceEnter        = DozerChinaVoiceMove
21246      VoiceBuildResponse = DozerChinaVoiceBuild
21247    End
21248  
21249    ; *** ENGINEERING Parameters ***
21250    RadarPriority       = UNIT
21251    KindOf              = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER 
21252    
21253    Body                = ActiveBody ModuleTag_02
21254      MaxHealth         = 250.0
21255      InitialHealth     = 250.0
21256    End
21257  
21258    Behavior = DozerAIUpdate ModuleTag_03
21259      RepairHealthPercentPerSecond = 2%    ; % of max health to repair each second
21260      BoredTime                    = 5000  ; in milliseconds
21261      BoredRange                   = 150   ; when bored, we look this far away to do something
21262      AutoAcquireEnemiesWhenIdle   = Yes
21263    End
21264  
21265    Locomotor = SET_NORMAL ChinaVehicleDozerLocomotor
21266  
21267    Behavior = PhysicsBehavior ModuleTag_04
21268      Mass = 75.0
21269    End
21270  
21271    Behavior = StealthDetectorUpdate ModuleTag_05
21272      DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
21273      ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
21274      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
21275      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
21276      ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
21277    End
21278    
21279    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
21280      DetectionRate             = 500
21281      DetectionRange           = 75
21282      CanDetectWhileGarrisoned  = No
21283      CanDetectWhileContained   = No
21284      ExtraRequiredKindOf       = BOAT
21285    End
21286  
21287    Behavior                 = TransitionDamageFX ModuleTag_06
21288      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
21289      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
21290    End
21291    
21292    ; Catch fire, and explode death
21293    Behavior = SlowDeathBehavior ModuleTag_07
21294      DeathTypes = ALL -CRUSHED -SPLATTED
21295      ProbabilityModifier = 100
21296      DestructionDelay = 1500
21297      DestructionDelayVariance = 600
21298      FX  = INITIAL  FX_CrusaderCatchFire
21299      OCL = FINAL    OCL_ChinaDozerExplode  
21300      FX  = FINAL    FX_BattleMasterExplosionOneFinal
21301    End 
21302  
21303    Behavior = CreateCrateDie ModuleTag_09
21304      CrateData = SalvageCrateData
21305    End
21306      
21307    Behavior = FlammableUpdate ModuleTag_21
21308      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
21309      AflameDamageAmount = 3       ; taking this much damage...
21310      AflameDamageDelay = 500       ; this often.
21311    End
21312  
21313    Behavior = FXListDie ModuleTag_22
21314      DeathTypes = NONE +CRUSHED +SPLATTED
21315      DeathFX = FX_CarCrush
21316    End
21317  
21318    Behavior = DestroyDie ModuleTag_23
21319      DeathTypes = NONE +CRUSHED +SPLATTED
21320    End
21321  
21322    ;----------------------- Command Set Changes -----------------------
21323    Behavior = CommandSetUpgrade ModuleTag_commandup
21324      CommandSet = ChinaDozerCommandSetTech
21325      TriggeredBy   = Upgrade_ChinaDozerUpgrade
21326    End
21327    Behavior = CommandSetUpgrade ModuleTag_commandup2
21328      CommandSet = ChinaDozerCommandSet
21329      TriggeredBy   = Upgrade_ChinaDozerUpgradeDefault
21330    End
21331    ; releases the upgrade otherwise you cannot switch between them since they've already been purchased
21332    Behavior = ObjectCreationUpgrade ModuleTag_commandup3
21333      UpgradeObject = OCL_ChinaCommandsetupgraderelease
21334      TriggeredBy   = Upgrade_ChinaDozerUpgrade Upgrade_ChinaDozerUpgradeDefault
21335    End
21336    ;------------------------------------------------------------------
21337  
21338    Behavior = ProductionUpdate ModuleTag_24
21339      ;MaxQueueEntries = 1
21340    End
21341  
21342    Geometry            = BOX
21343    GeometryMajorRadius = 17.0;new radius to align mine sweeping position
21344    ;GeometryMajorRadius = 21.0;old radius
21345    GeometryMinorRadius = 10.0
21346    GeometryHeight      = 15.0     
21347    GeometryIsSmall     = NO
21348    Shadow              = SHADOW_VOLUME
21349    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
21350  
21351  End
21352  
21353  ;------------------------------------------------------------------------------
21354  Object ScorpionMissile
21355  
21356    ; *** ART Parameters ***
21357    Draw = W3DModelDraw ModuleTag_01
21358      OkToChangeModelColor = Yes
21359      ConditionState = NONE
21360        Model = UVScorpion_m
21361      End
21362    End
21363  
21364    ; ***DESIGN parameters ***
21365    DisplayName      = OBJECT:Missile
21366    EditorSorting   = SYSTEM
21367    VisionRange = 0.0  
21368    ArmorSet
21369      Conditions      = None
21370      Armor           = ProjectileArmor
21371      DamageFX        = None
21372    End
21373  
21374    ; *** ENGINEERING Parameters ***
21375    KindOf = PROJECTILE SMALL_MISSILE
21376    Body = ActiveBody ModuleTag_02
21377      MaxHealth       = 100.0
21378      InitialHealth   = 100.0
21379    End
21380  
21381  ; ---- begin Projectile death behaviors
21382    Behavior = InstantDeathBehavior DeathModuleTag_01
21383      DeathTypes = NONE +DETONATED
21384      ; we detonated normally.
21385      ; no FX, just quiet destroy ourselves
21386    End
21387    Behavior = InstantDeathBehavior DeathModuleTag_02
21388      DeathTypes = NONE +LASERED
21389      ; shot down by laser.
21390      FX         = FX_GenericMissileDisintegrate
21391      OCL        = OCL_GenericMissileDisintegrate
21392    End
21393    Behavior = InstantDeathBehavior DeathModuleTag_03
21394      DeathTypes = ALL -LASERED -DETONATED
21395      ; shot down by nonlaser.
21396      FX         = FX_GenericMissileDeath
21397    End
21398  ; ---- end Projectile death behaviors
21399      
21400    Behavior = PhysicsBehavior ModuleTag_06
21401      Mass = 1
21402    End
21403    Behavior = MissileAIUpdate ModuleTag_07
21404      TryToFollowTarget = Yes 
21405      FuelLifetime = 4000
21406      InitialVelocity = 150                ; in dist/sec
21407      IgnitionDelay = 0
21408      DistanceToTravelBeforeTurning = 30
21409      IgnitionFX = FX_JetMissileIgnition
21410    End
21411    Locomotor = SET_NORMAL ScorpionMissileLocomotor
21412  
21413  
21414    Behavior = WeaponBonusUpgrade ModuleTag_08
21415      TriggeredBy = Upgrade_GLAAPRockets
21416    End
21417  
21418    Geometry = Sphere
21419    GeometryIsSmall = Yes
21420    GeometryMajorRadius = 1.0
21421    
21422  
21423  End
21424  
21425  ;------------------------------------------------------------------------------
21426  Object RangerFlashBangGrenade
21427  
21428    ; *** ART Parameters ***
21429    Draw = W3DModelDraw ModuleTag_01
21430      OkToChangeModelColor = Yes
21431      ConditionState = NONE
21432        Model = NVMBuggy_m
21433      End
21434    End
21435  
21436    ; ***DESIGN parameters ***
21437    DisplayName      = OBJECT:FlashBangGrenade
21438    EditorSorting   = SYSTEM
21439    ArmorSet
21440      Armor = ProjectileArmor
21441    End
21442    VisionRange = 0.0  
21443  
21444    ; *** ENGINEERING Parameters ***
21445    KindOf = PROJECTILE
21446    Body = ActiveBody ModuleTag_02
21447      MaxHealth       = 100.0
21448      InitialHealth   = 100.0
21449    End
21450  
21451    Behavior = DestroyDie ModuleTag_03
21452      ;nothing
21453    End
21454      
21455    Behavior = PhysicsBehavior ModuleTag_04
21456      Mass = 1
21457    End
21458  
21459    Behavior = DumbProjectileBehavior ModuleTag_05
21460      ; To tweak a Bezier path, please see GS
21461      FirstHeight                     = 50  ; Height of Bezier control points above highest intervening terrain
21462      SecondHeight                    = 150
21463      FirstPercentIndent              = 30% ; Percentage of shot distance control points are placed
21464      SecondPercentIndent             = 70%
21465      GarrisonHitKillRequiredKindOf   = INFANTRY
21466      GarrisonHitKillForbiddenKindOf  = NONE
21467      GarrisonHitKillCount            = 10  ; ensure that a single grenade clears out all garrisoned buildings.
21468      GarrisonHitKillFX               = FX_FlashBangGarrisonBuildingHit
21469      FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
21470    End
21471  
21472    Geometry = Sphere
21473    GeometryIsSmall = Yes
21474    GeometryMajorRadius = 1.0
21475  
21476  End
21477  
21478  ;------------------------------------------------------------------------------
21479  Object ScorpionTankShell
21480  
21481    ; *** ART Parameters ***
21482    Draw = W3DModelDraw ModuleTag_01
21483      ConditionState = NONE
21484        Model = AVTankShel
21485      End
21486    End
21487  
21488    ; ***DESIGN parameters ***
21489    DisplayName       = OBJECT:TankShell
21490    EditorSorting     = SYSTEM
21491    ArmorSet
21492      Armor = ProjectileArmor
21493    End
21494    VisionRange = 0.0
21495  
21496    ; *** ENGINEERING Parameters ***
21497    KindOf = PROJECTILE
21498    Body = ActiveBody ModuleTag_02
21499      MaxHealth       = 100.0
21500      InitialHealth   = 100.0
21501    End
21502  
21503    Behavior = DestroyDie ModuleTag_03
21504      ;nothing
21505    End
21506  
21507    Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
21508      DeathWeapon   = ToxinShellWeapon
21509      StartsActive  = No                      ; turned on by upgrade
21510      TriggeredBy   = Upgrade_GLAToxinShells    
21511      ConflictsWith = Upgrade_GLAAnthraxBeta      
21512    End
21513  
21514    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
21515      DeathWeapon   = ToxinShellWeaponUpgraded
21516      StartsActive  = No                      ; turned on by upgrade
21517      TriggeredBy   = Upgrade_GLAToxinShells Upgrade_GLAAnthraxBeta         
21518      RequiresAllTriggers = Yes ;TriggeredBy is an AND, not an OR like it normally is
21519    End
21520  
21521    Behavior = DumbProjectileBehavior ModuleTag_06
21522      DetonateCallsKill = Yes
21523      ; To tweak a Bezier path, please see GS
21524      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
21525      SecondHeight = 10
21526      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
21527      SecondPercentIndent = 90%
21528      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
21529    End
21530  
21531    Behavior = PhysicsBehavior ModuleTag_07
21532      Mass = 0.01 ; can't be zero, but we want it tiny so that it travels nearly straight
21533    End
21534  
21535  ; The Toxin explosions don't want to double up on particles, so only play this effect if we don't have Toxin
21536    Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
21537      DeathWeapon   = ScoprionTankGunFXWeapon
21538      StartsActive  = Yes
21539      ConflictsWith = Upgrade_GLAToxinShells      
21540    End
21541  
21542    Geometry = Sphere
21543    GeometryIsSmall = Yes
21544    GeometryMajorRadius = 1.0
21545  
21546  End
21547  
21548  ;------------------------------------------------------------------------------
21549  Object MarauderTankShell
21550  
21551    ; *** ART Parameters ***
21552    Draw = W3DModelDraw ModuleTag_01
21553      ConditionState = NONE
21554        Model = AVTankShel
21555      End
21556    End
21557  
21558    ; ***DESIGN parameters ***
21559    DisplayName       = OBJECT:TankShell
21560    EditorSorting     = SYSTEM
21561    ArmorSet
21562      Armor = ProjectileArmor
21563    End
21564    VisionRange = 0.0
21565  
21566    ; *** ENGINEERING Parameters ***
21567    KindOf = PROJECTILE
21568    Body = ActiveBody ModuleTag_02
21569      MaxHealth       = 100.0
21570      InitialHealth   = 100.0
21571    End
21572  
21573    Behavior = DestroyDie ModuleTag_03
21574      ;nothing
21575    End
21576  
21577    Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
21578      DeathWeapon   = ToxinShellWeapon
21579      StartsActive  = No                      ; turned on by upgrade
21580      TriggeredBy   = Upgrade_GLAToxinShells          
21581      ConflictsWith = Upgrade_GLAAnthraxBeta      
21582    End
21583  
21584    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
21585      DeathWeapon   = ToxinShellWeaponUpgraded
21586      StartsActive  = No                      ; turned on by upgrade
21587      TriggeredBy   = Upgrade_GLAToxinShells Upgrade_GLAAnthraxBeta         
21588      RequiresAllTriggers = Yes ;TriggeredBy is an AND, not an OR like it normally is
21589    End
21590  
21591    Behavior = DumbProjectileBehavior ModuleTag_06
21592      DetonateCallsKill = Yes
21593      ; To tweak a Bezier path, please see GS
21594      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
21595      SecondHeight = 10
21596      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
21597      SecondPercentIndent = 90%
21598      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
21599    End
21600  
21601   Behavior = PhysicsBehavior ModuleTag_07
21602      Mass = 0.01 ; can't be zero, but we want it tiny so that it travels nearly straight
21603    End
21604  
21605    Geometry = Sphere
21606    GeometryIsSmall = Yes
21607    GeometryMajorRadius = 1.0
21608  
21609  End
21610  
21611  ;------------------------------------------------------------------------------
21612  Object GenericTankShell
21613  
21614    ; *** ART Parameters ***
21615    Draw = W3DModelDraw ModuleTag_01
21616      ConditionState = NONE
21617        Model = AVTankShel
21618      End
21619    End
21620  
21621    ; ***DESIGN parameters ***
21622    DisplayName       = OBJECT:TankShell
21623    EditorSorting     = SYSTEM
21624    ArmorSet
21625      Armor = ProjectileArmor
21626    End
21627    VisionRange = 0.0  
21628  
21629    ; *** ENGINEERING Parameters ***
21630    KindOf = PROJECTILE
21631    Body = ActiveBody ModuleTag_02
21632      MaxHealth       = 100.0
21633      InitialHealth   = 100.0
21634    End
21635  
21636    Behavior = DestroyDie ModuleTag_03
21637      ;nothing
21638    End
21639      
21640    Behavior = DumbProjectileBehavior ModuleTag_04
21641      ; To tweak a Bezier path, please see GS
21642      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
21643      SecondHeight = 10
21644      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
21645      SecondPercentIndent = 90%
21646      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
21647    End
21648  
21649    Behavior = PhysicsBehavior ModuleTag_05
21650      Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
21651    End
21652  
21653    Geometry = Sphere
21654    GeometryIsSmall = Yes
21655    GeometryMajorRadius = 1.0
21656  
21657  End
21658  
21659  ;------------------------------------------------------------------------------
21660  Object BattleMasterTankShell
21661  
21662    ; *** ART Parameters ***
21663    Draw = W3DModelDraw ModuleTag_01
21664      ConditionState = NONE
21665        Model = AVTankShel
21666      End
21667    End
21668  
21669    ; ***DESIGN parameters ***
21670    DisplayName       = OBJECT:TankShell
21671    EditorSorting     = SYSTEM
21672    ArmorSet
21673      Armor = ProjectileArmor
21674    End
21675    VisionRange = 0.0  
21676  
21677    ; *** ENGINEERING Parameters ***
21678    KindOf = PROJECTILE
21679    Body = ActiveBody ModuleTag_02
21680      MaxHealth       = 100.0
21681      InitialHealth   = 100.0
21682    End
21683  
21684    Behavior = DestroyDie ModuleTag_03
21685      ;nothing
21686    End
21687      
21688    Behavior = DumbProjectileBehavior ModuleTag_04
21689      ; To tweak a Bezier path, please see GS
21690      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
21691      SecondHeight = 10
21692      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
21693      SecondPercentIndent = 90%
21694      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
21695    End
21696  
21697    Behavior = PhysicsBehavior ModuleTag_05
21698      Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
21699    End
21700  
21701    Behavior = WeaponBonusUpgrade ModuleTag_06 
21702      TriggeredBy = Upgrade_ChinaUraniumShells
21703    End
21704  
21705    Geometry = Sphere
21706    GeometryIsSmall = Yes
21707    GeometryMajorRadius = 1.0
21708  
21709  End
21710  
21711  ;------------------------------------------------------------------------------
21712  Object OverlordTankShell
21713  
21714    ; *** ART Parameters ***
21715    Draw = W3DModelDraw ModuleTag_01
21716      ConditionState = NONE
21717        Model = AVTankShel
21718      End
21719    End
21720  
21721    ; ***DESIGN parameters ***
21722    DisplayName       = OBJECT:TankShell
21723    EditorSorting     = SYSTEM
21724    ArmorSet
21725      Armor = ProjectileArmor
21726    End
21727    VisionRange = 0.0  
21728  
21729    ; *** ENGINEERING Parameters ***
21730    KindOf = PROJECTILE
21731    Body = ActiveBody ModuleTag_02
21732      MaxHealth       = 100.0
21733      InitialHealth   = 100.0
21734    End
21735  
21736    Behavior = DestroyDie ModuleTag_03
21737      ;nothing
21738    End
21739      
21740    Behavior = DumbProjectileBehavior ModuleTag_04
21741      ; To tweak a Bezier path, please see GS
21742      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
21743      SecondHeight = 10
21744      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
21745      SecondPercentIndent = 90%
21746      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
21747    End
21748  
21749    Behavior = PhysicsBehavior ModuleTag_05
21750      Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
21751    End
21752  
21753    Behavior = WeaponBonusUpgrade ModuleTag_06 
21754      TriggeredBy = Upgrade_ChinaUraniumShells
21755    End
21756  
21757    Geometry = Sphere
21758    GeometryIsSmall = Yes
21759    GeometryMajorRadius = 1.0
21760  
21761  End
21762  
21763  
21764  
21765  
21766  ;------------------------------------------------------------------------------
21767  Object NukeCannonShell
21768  
21769    ; *** ART Parameters ***
21770    Draw = W3DModelDraw ModuleTag_01
21771      ConditionState = NONE
21772        Model = AVTankShel
21773      End
21774    End
21775  
21776    ; ***DESIGN parameters ***
21777    DisplayName       = OBJECT:TankShell
21778    EditorSorting     = SYSTEM
21779    ArmorSet
21780      Armor = ProjectileArmor
21781    End
21782    VisionRange = 0.0  
21783  
21784  
21785    ; *** AUDIO Parameters ***
21786    SoundAmbient = NukeCannonIncomingWhistle
21787  
21788    ; *** ENGINEERING Parameters ***
21789    KindOf = PROJECTILE
21790    Body = ActiveBody ModuleTag_02
21791      MaxHealth       = 100.0
21792      InitialHealth   = 100.0
21793    End
21794  
21795    Behavior = DestroyDie ModuleTag_03
21796      ;nothing
21797    End
21798      
21799    Behavior = DumbProjectileBehavior ModuleTag_04
21800      ; To tweak a Bezier path, please see GS
21801      FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
21802      SecondHeight = 150
21803      FirstPercentIndent = 30% ; Percentage of shot distance control points are placed
21804      SecondPercentIndent = 70%
21805      FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
21806    End
21807  
21808    Behavior = PhysicsBehavior ModuleTag_05
21809      Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
21810    End
21811  
21812    Geometry = Sphere
21813    GeometryIsSmall = Yes
21814    GeometryMajorRadius = 1.0
21815  
21816  End
21817  
21818  ;------------------------------------------------------------------------------
21819  Object InfernoTankShell
21820  
21821    ; *** ART Parameters ***
21822    Draw = W3DModelDraw ModuleTag_01
21823      ConditionState        = NONE
21824        Model               = AVTankShel
21825        ParticleSysBone     = None InfernoTrail
21826      End
21827    End
21828  
21829    ; *** AUDIO Parameters ***
21830    SoundAmbient = InfernoCannonIncomingWhistle
21831  
21832    ; ***DESIGN parameters ***
21833    DisplayName       = OBJECT:TankShell
21834    EditorSorting     = SYSTEM
21835    ArmorSet
21836      Armor = ProjectileArmor
21837    End
21838    VisionRange = 0.0  
21839  
21840    ; *** ENGINEERING Parameters ***
21841    KindOf = PROJECTILE
21842    Body = ActiveBody ModuleTag_02
21843      MaxHealth       = 100.0
21844      InitialHealth   = 100.0
21845    End
21846  
21847    Behavior = DestroyDie ModuleTag_03
21848      ;nothing
21849    End
21850      
21851    Behavior = DumbProjectileBehavior ModuleTag_09
21852      DetonateCallsKill = Yes
21853      ; To tweak a Bezier path, please see GS
21854      FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
21855      SecondHeight = 150
21856      FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
21857      SecondPercentIndent = 90%
21858      FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
21859    End
21860  
21861    Behavior = PhysicsBehavior ModuleTag_05
21862      Mass = 10
21863    End
21864  
21865    Behavior = HeightDieUpdate ModuleTag_06
21866      TargetHeight = 1.0
21867      TargetHeightIncludesStructures = Yes
21868      OnlyWhenMovingDown = Yes
21869      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
21870    End
21871  
21872    Behavior = FireWeaponWhenDeadBehavior ModuleTag_07
21873      DeathWeapon   = SmallFireFieldCreationWeapon
21874      StartsActive  = Yes
21875    End
21876  
21877    Geometry = Sphere
21878    GeometryIsSmall = Yes
21879    GeometryMajorRadius = 1.0
21880  
21881  End
21882  
21883  
21884  ;------------------------------------------------------------------------------
21885  Object InfernoTankShellUpgraded
21886  
21887    ; *** ART Parameters ***
21888    Draw = W3DModelDraw ModuleTag_01
21889      ConditionState        = NONE
21890        Model               = AVTankShel
21891        ParticleSysBone     = None InfernoTrailUpgraded
21892      End
21893    End
21894  
21895    ; *** AUDIO Parameters ***
21896    SoundAmbient = InfernoCannonIncomingWhistle
21897  
21898    ; ***DESIGN parameters ***
21899    DisplayName       = OBJECT:TankShell
21900    EditorSorting     = SYSTEM
21901    ArmorSet
21902      Armor = ProjectileArmor
21903    End
21904    VisionRange = 0.0  
21905  
21906    ; *** ENGINEERING Parameters ***
21907    KindOf = PROJECTILE
21908    Body = ActiveBody ModuleTag_02
21909      MaxHealth       = 100.0
21910      InitialHealth   = 100.0
21911    End
21912  
21913    Behavior = DestroyDie ModuleTag_03
21914      ;nothing
21915    End
21916      
21917    Behavior = DumbProjectileBehavior ModuleTag_09
21918      DetonateCallsKill = Yes
21919      ; To tweak a Bezier path, please see GS
21920      FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
21921      SecondHeight = 150
21922      FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
21923      SecondPercentIndent = 90%
21924      FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
21925    End
21926  
21927    Behavior = PhysicsBehavior ModuleTag_05
21928      Mass = 10
21929    End
21930  
21931    Behavior = HeightDieUpdate ModuleTag_06
21932      TargetHeight = 1.0
21933      TargetHeightIncludesStructures = Yes
21934      OnlyWhenMovingDown = Yes
21935      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
21936    End
21937  
21938    Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
21939      DeathWeapon   = SmallFireFieldUpgradedCreationWeapon
21940      StartsActive  = Yes
21941    End
21942  
21943   
21944    Geometry = Sphere
21945    GeometryIsSmall = Yes
21946    GeometryMajorRadius = 1.0
21947  
21948  End
21949  
21950  ;------------------------------------------------------------------------------
21951  Object DeadTankHulk
21952  
21953    ; *** ART Parameters ***
21954    Draw = W3DModelDraw ModuleTag_01
21955      DefaultConditionState
21956        Model = GXMammoth_CH
21957      End
21958    End
21959  
21960    ; ***DESIGN parameters ***
21961    EditorSorting   = DEBRIS
21962  
21963    ; *** ENGINEERING Parameters ***
21964    KindOf =  NO_COLLIDE HULK
21965  
21966    Behavior = PhysicsBehavior ModuleTag_03
21967      Mass = 100.0
21968      AllowBouncing = Yes
21969      KillWhenRestingOnGround = Yes
21970    End
21971    Behavior = LifetimeUpdate ModuleTag_04
21972      MinLifetime = 1500   ; min lifetime in msec
21973      MaxLifetime = 1600   ; max lifetime in msec
21974    End
21975  
21976    Behavior = SlowDeathBehavior ModuleTag_05
21977      SinkDelay         = 1500
21978      SinkRate          = 2     ; in Dist/Sec
21979      DestructionDelay  = 8000
21980    End
21981  
21982  End
21983  
21984  ;------------------------------------------------------------------------------
21985  Object InfernoCannonHulk
21986  
21987    ; *** ART Parameters ***
21988    Draw = W3DModelDraw ModuleTag_01
21989      DefaultConditionState
21990        Model = NVInferno_D1
21991      End
21992    End
21993  
21994    ; ***DESIGN parameters ***
21995    EditorSorting   = DEBRIS
21996  
21997    ; *** ENGINEERING Parameters ***
21998    KindOf =  NO_COLLIDE HULK
21999  
22000    Behavior = PhysicsBehavior ModuleTag_03
22001      Mass = 100.0
22002      AllowBouncing = Yes
22003      KillWhenRestingOnGround = Yes
22004    End
22005    Behavior = LifetimeUpdate ModuleTag_04
22006      MinLifetime = 1500   ; min lifetime in msec
22007      MaxLifetime = 1600   ; max lifetime in msec
22008    End
22009  
22010    Behavior = SlowDeathBehavior ModuleTag_05
22011      SinkDelay         = 1500
22012      SinkRate          = 2     ; in Dist/Sec
22013      DestructionDelay  = 8000
22014    End
22015  
22016  End
22017  
22018  ;------------------------------------------------------------------------------
22019  Object DeadChinaSupplyTruckHulk
22020  
22021    ; *** ART Parameters ***
22022    Draw = W3DModelDraw ModuleTag_01
22023      DefaultConditionState
22024        Model = NVSSupplyTK_D1
22025      End
22026    End
22027  
22028    ; ***DESIGN parameters ***
22029    EditorSorting   = DEBRIS
22030  
22031    ; *** ENGINEERING Parameters ***
22032    KindOf =  NO_COLLIDE HULK
22033  
22034    Behavior = PhysicsBehavior ModuleTag_03
22035      Mass = 100.0
22036      AllowBouncing = Yes
22037      KillWhenRestingOnGround = Yes
22038    End
22039    Behavior = LifetimeUpdate ModuleTag_04
22040      MinLifetime = 1500   ; min lifetime in msec
22041      MaxLifetime = 1600   ; max lifetime in msec
22042    End
22043  
22044    Behavior = SlowDeathBehavior ModuleTag_05
22045      SinkDelay         = 1500
22046      SinkRate          = 2     ; in Dist/Sec
22047      DestructionDelay  = 8000
22048    End
22049  
22050  End
22051  
22052  ;------------------------------------------------------------------------------
22053  Object DeadChinaGattlingTankHulk
22054  
22055    ; *** ART Parameters ***
22056    Draw = W3DModelDraw ModuleTag_01
22057      DefaultConditionState
22058        Model = NVGattTank_D1
22059      End
22060    End
22061  
22062    ; ***DESIGN parameters ***
22063    EditorSorting   = DEBRIS
22064  
22065    ; *** ENGINEERING Parameters ***
22066    KindOf =  NO_COLLIDE HULK
22067  
22068    Behavior = PhysicsBehavior ModuleTag_03
22069      Mass = 100.0
22070      AllowBouncing = Yes
22071      KillWhenRestingOnGround = Yes
22072    End
22073    Behavior = LifetimeUpdate ModuleTag_04
22074      MinLifetime = 1500   ; min lifetime in msec
22075      MaxLifetime = 1600   ; max lifetime in msec
22076    End
22077  
22078    Behavior = SlowDeathBehavior ModuleTag_05
22079      SinkDelay                 = 1500
22080      SinkDelayVariance         = 1500
22081      SinkRate                  = 2     ; in Dist/Sec
22082      DestructionDelay          = 12000
22083      DestructionDelayVariance  = 4000
22084    End
22085  
22086  End
22087  
22088  ;------------------------------------------------------------------------------
22089  Object AmericaVehicleAmbulanceDeadHull
22090  
22091    ; *** ART Parameters ***
22092    Draw = W3DModelDraw ModuleTag_01
22093      ConditionState = NONE
22094        Model = AVAmbulance_D1
22095      End
22096    End
22097  
22098    ; ***DESIGN parameters ***
22099    EditorSorting   = DEBRIS
22100  
22101    ; *** ENGINEERING Parameters ***
22102    KindOf =  NO_COLLIDE HULK
22103  
22104    Behavior = PhysicsBehavior ModuleTag_03
22105      Mass = 100.0
22106      AllowBouncing = Yes
22107      KillWhenRestingOnGround = Yes
22108    End
22109    Behavior = LifetimeUpdate ModuleTag_04
22110      MinLifetime = 1500   ; min lifetime in msec
22111      MaxLifetime = 1600   ; max lifetime in msec
22112    End
22113  
22114    Behavior = SlowDeathBehavior ModuleTag_05
22115      SinkDelay                 = 1500
22116      SinkDelayVariance         = 1500
22117      SinkRate                  = 2     ; in Dist/Sec
22118      DestructionDelay          = 12000
22119      DestructionDelayVariance  = 4000
22120    End
22121    
22122  
22123  End
22124  
22125  ;------------------------------------------------------------------------------
22126  Object DeadSCUDLauncherHulk
22127  
22128    ; *** ART Parameters ***
22129    Draw = W3DModelDraw ModuleTag_01
22130      DefaultConditionState
22131        Model = UVScudLchr_d1
22132      End
22133    End
22134  
22135    ; ***DESIGN parameters ***
22136    EditorSorting   = DEBRIS
22137  
22138    ; *** ENGINEERING Parameters ***
22139    KindOf =  NO_COLLIDE HULK
22140  
22141    Behavior = PhysicsBehavior ModuleTag_03
22142      Mass = 100.0
22143      AllowBouncing = Yes
22144      KillWhenRestingOnGround = Yes
22145    End
22146    Behavior = LifetimeUpdate ModuleTag_04
22147      MinLifetime = 1500   ; min lifetime in msec
22148      MaxLifetime = 1600   ; max lifetime in msec
22149    End
22150  
22151    Behavior = SlowDeathBehavior ModuleTag_05
22152      SinkDelay         = 1500
22153      SinkRate          = 2     ; in Dist/Sec
22154      DestructionDelay  = 8000
22155    End
22156  
22157  End
22158  
22159  ;------------------------------------------------------------------------------
22160  Object DeadToxinTractorHulk
22161  
22162    ; *** ART Parameters ***
22163    Draw = W3DModelDraw ModuleTag_01
22164      DefaultConditionState
22165        Model = UVToxinTrk_d1
22166      End
22167    End
22168  
22169    ; ***DESIGN parameters ***
22170    EditorSorting   = DEBRIS
22171  
22172    ; *** ENGINEERING Parameters ***
22173    KindOf =  NO_COLLIDE HULK
22174  
22175    Behavior = PhysicsBehavior ModuleTag_03
22176      Mass = 100.0
22177      AllowBouncing = Yes
22178      KillWhenRestingOnGround = Yes
22179    End
22180    Behavior = LifetimeUpdate ModuleTag_04
22181      MinLifetime = 1500   ; min lifetime in msec
22182      MaxLifetime = 1600   ; max lifetime in msec
22183    End
22184  
22185    Behavior = SlowDeathBehavior ModuleTag_05
22186      SinkDelay         = 1500
22187      SinkRate          = 2    ; in Dist/Sec
22188      DestructionDelay  = 16000
22189    End
22190  
22191  End
22192  
22193  ;------------------------------------------------------------------------------
22194  Object DeadQuadCannonHulk
22195  
22196    ; *** ART Parameters ***
22197    Draw = W3DModelDraw ModuleTag_01
22198      DefaultConditionState
22199        Model = UVQuadCann_d1
22200      End
22201    End
22202  
22203    ; ***DESIGN parameters ***
22204    EditorSorting   = DEBRIS
22205  
22206    ; *** ENGINEERING Parameters ***
22207    KindOf =  NO_COLLIDE HULK
22208  
22209    Behavior = PhysicsBehavior ModuleTag_03
22210      Mass = 100.0
22211      AllowBouncing = Yes
22212      KillWhenRestingOnGround = Yes
22213    End
22214    Behavior = LifetimeUpdate ModuleTag_04
22215      MinLifetime = 1500   ; min lifetime in msec
22216      MaxLifetime = 1600   ; max lifetime in msec
22217    End
22218  
22219    Behavior = SlowDeathBehavior ModuleTag_05
22220      SinkDelay         = 1500
22221      SinkRate          = 2    ; in Dist/Sec
22222      DestructionDelay  = 16000
22223    End
22224  
22225  End
22226  
22227  ;------------------------------------------------------------------------------
22228  Object DeadBombTruckHulk
22229  
22230    ; *** ART Parameters ***
22231    Draw = W3DModelDraw ModuleTag_01
22232      DefaultConditionState
22233        Model = UVBmbTruk_d1
22234      End
22235    End
22236  
22237    ; ***DESIGN parameters ***
22238    EditorSorting   = DEBRIS
22239  
22240    ; *** ENGINEERING Parameters ***
22241    KindOf =  NO_COLLIDE HULK
22242  
22243    Behavior = PhysicsBehavior ModuleTag_03
22244      Mass = 100.0
22245      AllowBouncing = Yes
22246      KillWhenRestingOnGround = Yes
22247    End
22248    Behavior = LifetimeUpdate ModuleTag_04
22249      MinLifetime = 1500   ; min lifetime in msec
22250      MaxLifetime = 1600   ; max lifetime in msec
22251    End
22252  
22253    Behavior = SlowDeathBehavior ModuleTag_05
22254      SinkDelay         = 1500
22255      SinkRate          = 2    ; in Dist/Sec
22256      DestructionDelay  = 16000
22257    End
22258  
22259  End
22260  
22261  ;------------------------------------------------------------------------------
22262  Object DeadTechnicalVanHulk
22263  
22264    ; *** ART Parameters ***
22265    Draw = W3DModelDraw ModuleTag_01
22266      DefaultConditionState
22267        Model = UVTECHVAN_d1
22268      End
22269    End
22270  
22271    ; ***DESIGN parameters ***
22272    EditorSorting   = DEBRIS
22273  
22274    ; *** ENGINEERING Parameters ***
22275    KindOf =  NO_COLLIDE HULK
22276  
22277    Behavior = PhysicsBehavior ModuleTag_03
22278      Mass = 100.0
22279      AllowBouncing = Yes
22280      KillWhenRestingOnGround = Yes
22281    End
22282    Behavior = LifetimeUpdate ModuleTag_04
22283      MinLifetime = 1500   ; min lifetime in msec
22284      MaxLifetime = 1600   ; max lifetime in msec
22285    End
22286  
22287    Behavior = SlowDeathBehavior ModuleTag_05
22288      SinkDelay         = 1500
22289      SinkRate          = 2    ; in Dist/Sec
22290      DestructionDelay  = 16000
22291    End
22292  
22293  End
22294  
22295  ;------------------------------------------------------------------------------
22296  Object DeadTechnicalJeepHulk
22297  
22298    ; *** ART Parameters ***
22299    Draw = W3DModelDraw ModuleTag_01
22300      DefaultConditionState
22301        Model = UVTECHJEEP_d1
22302      End
22303    End
22304  
22305    ; ***DESIGN parameters ***
22306    EditorSorting   = DEBRIS
22307  
22308    ; *** ENGINEERING Parameters ***
22309    KindOf =  NO_COLLIDE HULK
22310  
22311    Behavior = PhysicsBehavior ModuleTag_03
22312      Mass = 100.0
22313      AllowBouncing = Yes
22314      KillWhenRestingOnGround = Yes
22315    End
22316    Behavior = LifetimeUpdate ModuleTag_04
22317      MinLifetime = 1500   ; min lifetime in msec
22318      MaxLifetime = 1600   ; max lifetime in msec
22319    End
22320  
22321    Behavior = SlowDeathBehavior ModuleTag_05
22322      SinkDelay         = 1500
22323      SinkRate          = 2    ; in Dist/Sec
22324      DestructionDelay  = 16000
22325    End
22326  
22327  End
22328  
22329  ;------------------------------------------------------------------------------
22330  Object DeadTechnicalTruckHulk
22331  
22332    ; *** ART Parameters ***
22333    Draw = W3DModelDraw ModuleTag_01
22334      DefaultConditionState
22335        Model = UVTECHTRCK_d1
22336      End
22337    End
22338  
22339    ; ***DESIGN parameters ***
22340    EditorSorting   = DEBRIS
22341  
22342    ; *** ENGINEERING Parameters ***
22343    KindOf =  NO_COLLIDE HULK
22344  
22345    Behavior = PhysicsBehavior ModuleTag_03
22346      Mass = 100.0
22347      AllowBouncing = Yes
22348      KillWhenRestingOnGround = Yes
22349    End
22350    Behavior = LifetimeUpdate ModuleTag_04
22351      MinLifetime = 1500   ; min lifetime in msec
22352      MaxLifetime = 1600   ; max lifetime in msec
22353    End
22354  
22355    Behavior = SlowDeathBehavior ModuleTag_05
22356      SinkDelay         = 1500
22357      SinkRate          = 2    ; in Dist/Sec
22358      DestructionDelay  = 16000
22359    End
22360  
22361  End
22362  
22363  ;------------------------------------------------------------------------------
22364  Object DeadRocketBuggyHulk
22365  
22366    ; *** ART Parameters ***
22367    Draw = W3DModelDraw ModuleTag_01
22368      DefaultConditionState
22369        Model = UVRockBug_D1
22370      End
22371    End
22372  
22373    ; ***DESIGN parameters ***
22374    EditorSorting   = DEBRIS
22375  
22376    ; *** ENGINEERING Parameters ***
22377    KindOf =  NO_COLLIDE HULK
22378  
22379    Behavior = PhysicsBehavior ModuleTag_03
22380      Mass = 100.0
22381      AllowBouncing = Yes
22382      KillWhenRestingOnGround = Yes
22383    End
22384    Behavior = LifetimeUpdate ModuleTag_04
22385      MinLifetime = 1500   ; min lifetime in msec
22386      MaxLifetime = 1600   ; max lifetime in msec
22387    End
22388  
22389    Behavior = SlowDeathBehavior ModuleTag_05
22390      SinkDelay         = 1500
22391      SinkRate          = 2    ; in Dist/Sec
22392      DestructionDelay  = 16000
22393    End
22394  
22395  End
22396  
22397  ;------------------------------------------------------------------------------
22398  Object DeadGLAPOWTruckHulk
22399    ; *** ART Parameters ***
22400    Draw = W3DModelDraw ModuleTag_01
22401      DefaultConditionState
22402        Model = UVPOWTruck_d1
22403      End
22404    End
22405    ; ***DESIGN parameters ***
22406    EditorSorting   = DEBRIS
22407    ; *** ENGINEERING Parameters ***
22408    KindOf =  NO_COLLIDE HULK
22409    Behavior = PhysicsBehavior ModuleTag_03
22410      Mass = 100.0
22411      AllowBouncing = Yes
22412      KillWhenRestingOnGround = Yes
22413    End
22414    Behavior = LifetimeUpdate ModuleTag_04
22415      MinLifetime = 1500   ; min lifetime in msec
22416      MaxLifetime = 1600   ; max lifetime in msec
22417    End
22418    Behavior = SlowDeathBehavior ModuleTag_05
22419      SinkDelay         = 1500
22420      SinkRate          = 2    ; in Dist/Sec
22421      DestructionDelay  = 16000
22422    End
22423  End
22424  
22425  ;---------------------------------------------------------------------------
22426  Object DeadChinaPOWTruckHulk
22427    ; *** ART Parameters ***
22428    Draw = W3DModelDraw ModuleTag_01
22429      ConditionState = NONE
22430        Model = NVPOWTrck_d1
22431      End
22432    End
22433  
22434    ; ***DESIGN parameters ***
22435    EditorSorting   = DEBRIS
22436    ; *** ENGINEERING Parameters ***
22437    KindOf =  NO_COLLIDE HULK
22438    Behavior = PhysicsBehavior ModuleTag_03
22439      Mass = 100.0
22440      AllowBouncing = Yes
22441      KillWhenRestingOnGround = Yes
22442    End
22443    Behavior = LifetimeUpdate ModuleTag_04
22444      MinLifetime = 1500   ; min lifetime in msec
22445      MaxLifetime = 1600   ; max lifetime in msec
22446    End
22447    Behavior = SlowDeathBehavior ModuleTag_05
22448      SinkDelay         = 1500
22449      SinkRate          = 2    ; in Dist/Sec
22450      DestructionDelay  = 16000
22451    End
22452  End
22453  
22454  ;---------------------------------------------------------------------------
22455  Object DeadCrusaderHulk
22456  
22457    ; *** ART Parameters ***
22458    Draw = W3DModelDraw ModuleTag_01
22459      ConditionState = NONE
22460        Model = AVLeopard_D1
22461      End
22462    End
22463  
22464    ; ***DESIGN parameters ***
22465    EditorSorting   = DEBRIS
22466  
22467    ; *** ENGINEERING Parameters ***
22468    KindOf =  NO_COLLIDE HULK
22469  
22470    Behavior = PhysicsBehavior ModuleTag_03
22471      Mass = 100.0
22472      AllowBouncing = Yes
22473      KillWhenRestingOnGround = Yes
22474    End
22475    Behavior = LifetimeUpdate ModuleTag_04
22476      MinLifetime = 1500   ; min lifetime in msec
22477      MaxLifetime = 1600   ; max lifetime in msec
22478    End
22479  
22480    Behavior = SlowDeathBehavior ModuleTag_05
22481      SinkDelay         = 1500
22482      SinkRate          = 2     ; in Dist/Sec
22483      DestructionDelay  = 8000
22484    End
22485  End
22486  
22487  ;------------------------------------------------------------------------------
22488  Object DeadPaladinHulk
22489  
22490    ; *** ART Parameters ***
22491    Draw = W3DModelDraw ModuleTag_01
22492      ConditionState = NONE
22493        Model = AVPaladin_D1
22494      End
22495    End
22496  
22497    ; ***DESIGN parameters ***
22498    EditorSorting   = DEBRIS
22499  
22500    ; *** ENGINEERING Parameters ***
22501    KindOf =  NO_COLLIDE HULK
22502  
22503    Behavior = PhysicsBehavior ModuleTag_03
22504      Mass = 100.0
22505      AllowBouncing = Yes
22506      KillWhenRestingOnGround = Yes
22507    End
22508    Behavior = LifetimeUpdate ModuleTag_04
22509      MinLifetime = 1500   ; min lifetime in msec
22510      MaxLifetime = 1600   ; max lifetime in msec
22511    End
22512  
22513    Behavior = SlowDeathBehavior ModuleTag_05
22514      SinkDelay         = 1500
22515      SinkRate          = 2     ; in Dist/Sec
22516      DestructionDelay  = 8000
22517    End
22518  End
22519  
22520  ;------------------------------------------------------------------------------
22521  Object DeadMarauderHulk
22522  
22523    ; *** ART Parameters ***
22524    Draw = W3DModelDraw ModuleTag_01
22525      ConditionState = NONE
22526        Model = UVMarauder_D1
22527      End
22528    End
22529  
22530    ; ***DESIGN parameters ***
22531    EditorSorting   = DEBRIS
22532  
22533    ; *** ENGINEERING Parameters ***
22534    KindOf =  NO_COLLIDE HULK
22535  
22536    Behavior = PhysicsBehavior ModuleTag_03
22537      Mass = 100.0
22538      AllowBouncing = Yes
22539      KillWhenRestingOnGround = Yes
22540    End
22541    Behavior = LifetimeUpdate ModuleTag_04
22542      MinLifetime = 1500   ; min lifetime in msec
22543      MaxLifetime = 1600   ; max lifetime in msec
22544    End
22545  
22546    Behavior = SlowDeathBehavior ModuleTag_05
22547      SinkDelay         = 1500
22548      SinkRate          = 2     ; in Dist/Sec
22549      DestructionDelay  = 12000
22550    End
22551  End
22552  
22553  ;------------------------------------------------------------------------------
22554  Object DeadScorpionHulk
22555  
22556    ; *** ART Parameters ***
22557    Draw = W3DModelDraw ModuleTag_01
22558      ConditionState = NONE
22559        Model = UVLiteTank_D1
22560      End
22561    End
22562  
22563    ; ***DESIGN parameters ***
22564    EditorSorting   = DEBRIS
22565  
22566    ; *** ENGINEERING Parameters ***
22567    KindOf =  NO_COLLIDE HULK
22568  
22569    Behavior = PhysicsBehavior ModuleTag_03
22570      Mass = 100.0
22571      AllowBouncing = Yes
22572      KillWhenRestingOnGround = Yes
22573    End
22574    Behavior = LifetimeUpdate ModuleTag_04
22575      MinLifetime = 1500   ; min lifetime in msec
22576      MaxLifetime = 1600   ; max lifetime in msec
22577    End
22578  
22579    Behavior = SlowDeathBehavior ModuleTag_05
22580      SinkDelay         = 1500
22581      SinkRate          = 2     ; in Dist/Sec
22582      DestructionDelay  = 12000
22583    End
22584  End
22585  
22586  ;------------------------------------------------------------------------------
22587  Object DeadAmericanPOWTruckHulk
22588    ; *** ART Parameters ***
22589    Draw = W3DModelDraw ModuleTag_01
22590      ConditionState = NONE
22591        Model = AVPOWTruck_D1
22592      End
22593    End
22594    ; ***DESIGN parameters ***
22595    EditorSorting   = DEBRIS
22596    ; *** ENGINEERING Parameters ***
22597    KindOf =  NO_COLLIDE HULK
22598    Behavior = PhysicsBehavior ModuleTag_03
22599      Mass = 100.0
22600      AllowBouncing = Yes
22601      KillWhenRestingOnGround = Yes
22602    End
22603    Behavior = LifetimeUpdate ModuleTag_04
22604      MinLifetime = 1500   ; min lifetime in msec
22605      MaxLifetime = 1600   ; max lifetime in msec
22606    End
22607    Behavior = SlowDeathBehavior ModuleTag_05
22608      SinkDelay         = 1500
22609      SinkRate          = 2     ; in Dist/Sec
22610      DestructionDelay  = 12000
22611    End
22612  End
22613  
22614  ;------------------------------------------------------------------------------
22615  Object DestroyedMilitiaTank
22616  
22617    ; *** ART Parameters ***
22618    Draw = W3DModelDraw ModuleTag_01
22619      ConditionState = NONE
22620        Model = CVTank_D1
22621      End
22622    End
22623  
22624    ; ***DESIGN parameters ***
22625    EditorSorting   = DEBRIS
22626  
22627    ; *** ENGINEERING Parameters ***
22628    KindOf = NONE HULK
22629  
22630    Behavior = PhysicsBehavior ModuleTag_03
22631      Mass = 100.0
22632      AllowBouncing = Yes
22633      KillWhenRestingOnGround = Yes
22634    End
22635    Behavior = LifetimeUpdate ModuleTag_04
22636      MinLifetime = 10000   ; min lifetime in msec
22637      MaxLifetime = 15000   ; max lifetime in msec
22638    End
22639  
22640    Behavior = SlowDeathBehavior ModuleTag_05
22641      SinkDelay = 4000
22642      SinkRate = 2     ; in Dist/Sec
22643      DestructionDelay = 8000
22644    End
22645  End
22646  
22647  ;------------------------------------------------------------------------------
22648  Object DeadRadarVanHulk
22649  
22650    ; *** ART Parameters ***
22651    Draw = W3DModelDraw ModuleTag_01
22652      ConditionState = NONE
22653        Model = UVRadarVan_D1
22654      End
22655    End
22656  
22657    ; ***DESIGN parameters ***
22658    EditorSorting   = DEBRIS
22659  
22660    ; *** ENGINEERING Parameters ***
22661    KindOf =  NO_COLLIDE HULK
22662  
22663    Behavior = PhysicsBehavior ModuleTag_03
22664      Mass = 100.0
22665      AllowBouncing = Yes
22666      KillWhenRestingOnGround = Yes
22667    End
22668    Behavior = LifetimeUpdate ModuleTag_04
22669      MinLifetime = 1500   ; min lifetime in msec
22670      MaxLifetime = 1600   ; max lifetime in msec
22671    End
22672  
22673    Behavior = SlowDeathBehavior ModuleTag_05
22674      SinkDelay         = 1500
22675      SinkRate          = 2     ; in Dist/Sec
22676      DestructionDelay  = 16000
22677    End
22678  
22679  End
22680  
22681  ;------------------------------------------------------------------------------
22682  Object ChinaDeadDozerHulk
22683  
22684    ; *** ART Parameters ***
22685    Draw                = W3DModelDraw ModuleTag_01
22686      ConditionState    = NONE
22687        Model           = nvconstdoz_D1
22688      End
22689    End
22690  
22691    ; ***DESIGN parameters ***
22692    EditorSorting       = DEBRIS
22693  
22694    ; *** ENGINEERING Parameters ***
22695    KindOf              =  NO_COLLIDE HULK
22696  
22697    Behavior                  = PhysicsBehavior ModuleTag_03
22698      Mass                    = 100.0
22699      AllowBouncing           = Yes
22700      KillWhenRestingOnGround = Yes
22701    End
22702    Behavior = LifetimeUpdate ModuleTag_04
22703      MinLifetime = 1500   ; min lifetime in msec
22704      MaxLifetime = 1600   ; max lifetime in msec
22705    End
22706  
22707    Behavior = SlowDeathBehavior ModuleTag_05
22708      SinkDelay        = 1500
22709      SinkRate            = 2     ; in Dist/Sec
22710      DestructionDelay = 8000
22711    End
22712  
22713  End
22714  
22715  ;------------------------------------------------------------------------------
22716  Object AmericaDeadDozerHulk
22717  
22718    ; *** ART Parameters ***
22719    Draw                = W3DModelDraw ModuleTag_01
22720      ConditionState    = NONE
22721        Model           = avconstdoz_D1
22722      End
22723    End
22724  
22725    ; ***DESIGN parameters ***
22726    EditorSorting       = DEBRIS
22727  
22728    ; *** ENGINEERING Parameters ***
22729    KindOf              =  NO_COLLIDE HULK
22730  
22731    Behavior                  = PhysicsBehavior ModuleTag_03
22732      Mass                    = 100.0
22733      AllowBouncing           = Yes
22734      KillWhenRestingOnGround = Yes
22735    End
22736    Behavior = LifetimeUpdate ModuleTag_04
22737      MinLifetime = 1500   ; min lifetime in msec
22738      MaxLifetime = 1600   ; max lifetime in msec
22739    End
22740  
22741    Behavior = SlowDeathBehavior ModuleTag_05
22742      SinkDelay        = 1500
22743      SinkRate            = 2     ; in Dist/Sec
22744      DestructionDelay = 8000
22745    End
22746  
22747  End
22748  
22749  ;------------------------------------------------------------------------------
22750  Object AmericaScoutDroneHulk
22751    ; *** ART Parameters ***
22752    Draw                = W3DModelDraw ModuleTag_01
22753      ConditionState    = NONE
22754        Model           = AVScoutDr_D1
22755      End
22756    End
22757  
22758    ; ***DESIGN parameters ***
22759    EditorSorting       = DEBRIS
22760  
22761    ; *** ENGINEERING Parameters ***
22762    KindOf              =  NO_COLLIDE HULK
22763  
22764    Behavior                  = PhysicsBehavior ModuleTag_03
22765      Mass                    = 10.0
22766      AllowBouncing           = Yes
22767      KillWhenRestingOnGround = Yes
22768    End
22769    Behavior = LifetimeUpdate ModuleTag_04
22770      MinLifetime = 1500   ; min lifetime in msec
22771      MaxLifetime = 1600   ; max lifetime in msec
22772    End
22773  
22774    Behavior = SlowDeathBehavior ModuleTag_05
22775      SinkDelay        = 1500
22776      SinkRate            = 2     ; in Dist/Sec
22777      DestructionDelay = 8000
22778    End
22779  End
22780  
22781  ;------------------------------------------------------------------------------
22782  Object AmericaBattleDroneHulk
22783    ; *** ART Parameters ***
22784    Draw                = W3DModelDraw ModuleTag_01
22785      ConditionState    = NONE
22786        Model           = AVBattleDr_D1
22787      End
22788    End
22789  
22790    ; ***DESIGN parameters ***
22791    EditorSorting       = DEBRIS
22792  
22793    ; *** ENGINEERING Parameters ***
22794    KindOf              =  NO_COLLIDE HULK
22795  
22796    Behavior                  = PhysicsBehavior ModuleTag_03
22797      Mass                    = 10.0
22798      AllowBouncing           = Yes
22799      KillWhenRestingOnGround = Yes
22800    End
22801    Behavior = LifetimeUpdate ModuleTag_04
22802      MinLifetime = 1500   ; min lifetime in msec
22803      MaxLifetime = 1600   ; max lifetime in msec
22804    End
22805  
22806    Behavior = SlowDeathBehavior ModuleTag_05
22807      SinkDelay        = 1500
22808      SinkRate            = 2     ; in Dist/Sec
22809      DestructionDelay = 8000
22810    End
22811  End
22812  
22813  ;------------------------------------------------------------------------------
22814  Object AmericaJetA10Thunderbolt
22815  
22816    ; *** ART Parameters ***
22817    SelectPortrait         = SAWarthog_L
22818    ButtonImage            = SAWarthog
22819  
22820    Draw = W3DModelDraw ModuleTag_01
22821  
22822      OkToChangeModelColor = Yes
22823  
22824      ExtraPublicBone = WeaponA01
22825      ExtraPublicBone = WeaponA02
22826      ExtraPublicBone = WeaponA03
22827      ExtraPublicBone = WeaponA04
22828      ExtraPublicBone = WeaponA05
22829      ExtraPublicBone = WeaponA06
22830  
22831      DefaultConditionState
22832        Model             = AVWarthog
22833        WeaponMuzzleFlash = PRIMARY MuzzleFX01
22834        WeaponFireFXBone  = PRIMARY Muzzle01
22835        ParticleSysBone = Engine01 JetBlackTrailThin
22836        ParticleSysBone = Engine02 JetBlackTrailThin
22837        ParticleSysBone = Wingtip01 JetContrailThin
22838        ParticleSysBone = Wingtip02 JetContrailThin
22839      End
22840  
22841      ConditionState      = REALLYDAMAGED
22842        Model             = AVWarthog_D
22843        WeaponMuzzleFlash = PRIMARY MuzzleFX01
22844        WeaponFireFXBone  = PRIMARY Muzzle01
22845      End
22846      AliasConditionState  = RUBBLE
22847  
22848    End
22849  
22850    ; ***DESIGN parameters ***
22851    DisplayName         = OBJECT:A10Thunderbolt
22852    EditorSorting       = VEHICLE
22853    Side                = America
22854    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
22855    VisionRange         = 300.0 
22856    ShroudClearingRange = 300
22857    Prerequisites
22858      Object = AmericaAirfield
22859    End
22860    WeaponSet
22861      Conditions = None 
22862      Weapon = PRIMARY A10ThunderboltVulcan
22863    End
22864    ArmorSet
22865      Conditions      = None
22866      Armor           = AirplaneArmor
22867      DamageFX        = None
22868    End
22869  
22870    ExperienceValue = 50 100 150 400    ;Experience point value at each level
22871    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
22872    IsTrainable = Yes             ;Can gain experience
22873  
22874    ; *** AUDIO Parameters ***
22875    SoundAmbient = A10ThunderboltAmbientLoop
22876    SoundAmbientRubble    = NoSound
22877    UnitSpecificSounds
22878      SoundEject = PilotSoundEject
22879      VoiceEject = PilotVoiceEject
22880      StartDive  = A10ThunderboltDive
22881    End
22882  
22883    ; *** ENGINEERING Parameters ***
22884    RadarPriority = UNIT
22885    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE AIRCRAFT SCORE IGNORED_IN_GUI
22886    Body = ActiveBody ModuleTag_02
22887      MaxHealth       = 600.0
22888      InitialHealth   = 600.0
22889    End
22890  
22891    ExperienceValue     = 40 40 40 40  ; Experience point value at each level
22892  
22893    Behavior                          = JetSlowDeathBehavior ModuleTag_03
22894      DestructionDelay                = 99999999  ; destruction will happen when we
22895      RollRate                        = 0.0
22896      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
22897      PitchRate                       = 0.0
22898      FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
22899      FXInitialDeath                  = FX_JetDeathInitial
22900      OCLInitialDeath                 = None
22901      DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
22902      FXSecondary                     = FX_JetDeathSecondary
22903      OCLSecondary                    = None
22904      FXHitGround                     = FX_JetDeathHitGround
22905      OCLHitGround                    = OCL_A10DeathHitGround
22906      DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
22907      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
22908      OCLFinalBlowUp                  = OCL_A10DeathFinalBlowUp
22909    End
22910  
22911    Behavior = PhysicsBehavior ModuleTag_05
22912      Mass = 500.0
22913    End
22914  
22915    ;SCRIPTED SUPPORT: These special power is triggered directly 
22916    ;from the transport without creating a transport. This is done 
22917    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
22918    ;which also prevents creating the payload transport.
22919    Behavior    = OCLSpecialPower ModuleTag_06
22920      SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike ;@@KRIS@@
22921      UpgradeOCL           = SCIENCE_A10ThunderboltMissileStrike3 SUPERWEAPON_A10ThunderboltMissileStrike3
22922      UpgradeOCL           = SCIENCE_A10ThunderboltMissileStrike2 SUPERWEAPON_A10ThunderboltMissileStrike2
22923      OCL                  = SUPERWEAPON_A10ThunderboltMissileStrike1
22924      CreateLocation       = USE_OWNER_OBJECT
22925    End
22926  
22927    Behavior = DeliverPayloadAIUpdate ModuleTag_07
22928    End
22929    Locomotor = SET_NORMAL A10ThunderboltLocomotor
22930  
22931    Behavior = FlammableUpdate ModuleTag_21
22932      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
22933      AflameDamageAmount = 3       ; taking this much damage...
22934      AflameDamageDelay = 500       ; this often.
22935    End
22936  
22937    ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_22
22938    End
22939  
22940    Geometry = Cylinder
22941    GeometryIsSmall = Yes
22942    GeometryMajorRadius = 10.0
22943    GeometryMinorRadius = 10.0
22944    GeometryHeight = 10.0
22945    Shadow = SHADOW_VOLUME
22946    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
22947  
22948  End
22949  
22950  ;------------------------------------------------------------------------------
22951  Object AmericaVehicleChinook
22952  
22953    ; *** ART Parameters ***
22954    SelectPortrait         = SAChinook_L
22955    ButtonImage            = SAChinook
22956    
22957    ;UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
22958    ;UpgradeCameo2 = NONE
22959    ;UpgradeCameo3 = NONE
22960    ;UpgradeCameo4 = NONE
22961    ;UpgradeCameo5 = NONE
22962  
22963    Draw = W3DModelDraw                         ModuleTag_01 ; Helicopter 
22964  
22965      ExtraPublicBone = RopeStart
22966      ExtraPublicBone = RopeEnd
22967  
22968      DefaultConditionState
22969        Model = AVChinook
22970        Animation = AVChinook.AVChinook
22971        AnimationMode = LOOP
22972      End
22973  
22974      ConditionState = REALLYDAMAGED
22975        Model = AVChinook_d
22976        Animation = AVChinook_d.AVChinook_d
22977        AnimationMode = LOOP
22978      End
22979  
22980      ConditionState = RUBBLE
22981        Model = AVChinook_d
22982        Animation = AVChinook_d.AVChinook_d
22983        AnimationMode = LOOP
22984      End
22985  
22986      ConditionState = RUBBLE SPECIAL_DAMAGED
22987        Model = AVChinook_d
22988        HideSubObject = Props01
22989        HideSubObject = Props02
22990      End
22991  
22992      OkToChangeModelColor = Yes
22993    End
22994  
22995    Draw = W3DModelDraw                         ModuleTag_02 ; Cargo net 
22996      ConditionState = NONE
22997        Model = None  ; Nothing here
22998        TransitionKey = TRANS_Empty
22999        WaitForStateToFinishIfPossible = TRANS_Unloading
23000      End
23001  
23002      ConditionState = DYING 
23003        Model = None  ; Nothing here
23004      End
23005      AliasConditionState = RUBBLE
23006      AliasConditionState = CARRYING RUBBLE
23007      AliasConditionState = DOCKING RUBBLE
23008      AliasConditionState = DOCKING CARRYING RUBBLE
23009   
23010       ConditionState = CARRYING
23011        Model = AVChinook_A ;Carrying a full wobbly net of stuff
23012        Animation = AVChinook_A.AVChinook_A
23013        AnimationMode = LOOP
23014        TransitionKey = TRANS_Full
23015        WaitForStateToFinishIfPossible = TRANS_PickingUp
23016      End
23017  
23018      ConditionState = DOCKING
23019        Model = AVChinook_A1MSH ;Lowering an empty net, pulling up with stuff
23020        Animation = AVChinook_A1SK.AVChinook_A1
23021        AnimationMode = ONCE_BACKWARDS
23022        Flags = START_FRAME_LAST
23023        AnimationSpeedFactorRange = .75 .75
23024        TransitionKey = TRANS_PickingUp
23025        WaitForStateToFinishIfPossible = TRANS_Unloading  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
23026      End
23027  
23028      ConditionState = DOCKING CARRYING
23029        Model = AVChinook_A1MSH ; Lowering a full net, letting stuff fall out, and pulling up an empty net
23030        Animation = AVChinook_A1SK.AVChinook_A1
23031        AnimationMode = ONCE
23032        AnimationSpeedFactorRange = 2.75 2.75
23033        TransitionKey = TRANS_Unloading
23034        WaitForStateToFinishIfPossible = TRANS_PickingUp  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
23035      End
23036    End
23037  
23038    ; ***DESIGN parameters ***
23039    DisplayName         = OBJECT:Chinook
23040    EditorSorting       = VEHICLE
23041    Side                = America
23042    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
23043    VisionRange         = 300.0 
23044    ShroudClearingRange = 600
23045    BuildCost           = 1200
23046    BuildTime           = 10.0          ;in seconds  
23047    Prerequisites
23048      Object = AmericaSupplyCenter
23049    End
23050    ExperienceValue     = 50 50 50 50 ;Experience point value at each level
23051    IsTrainable         = No  
23052    CommandSet          = AmericaVehicleChinookCommandSet
23053    ArmorSet
23054      Conditions      = None
23055      Armor           = ChinookArmor
23056      DamageFX        = None
23057    End
23058  
23059    ; *** AUDIO Parameters ***
23060    VoiceSelect     = ChinookVoiceSelect
23061    VoiceMove       = ChinookVoiceMove
23062    VoiceAttack     = ChinookVoiceAttack
23063    SoundAmbient    = ChinookAmbientLoop
23064    SoundAmbientRubble    = NoSound
23065    SoundDie        = ChinookVoiceFalling
23066    SoundEnter      = HumveeEnter
23067    SoundExit       = HumveeExit
23068    UnitSpecificSounds
23069      VoiceCreate         = ChinookVoiceCreate
23070      VoiceSupply         = ChinookVoiceSupply
23071      VoiceUnload         = ChinookVoiceUnload
23072      VoiceCombatDrop     = ChinookVoiceCombatDrop
23073      VoiceClearBuilding  = RangerVoiceClearBuilding ;Special combat drop that clears buildings!
23074      VoiceGarrison       = ChinookVoiceMove
23075    End
23076  
23077    ; *** ENGINEERING Parameters ***
23078    RadarPriority   = UNIT
23079    ; note that, although Chinooks aren't produced at helipads, we want to set this KINDOF so that they can land at
23080    ; (well, "near" actually) an Airfield to get healed...
23081    ; also note that we should NOT set CAN_ATTACK for chinooks. they can't attack. so there.
23082    KindOf          = PRELOAD CAN_CAST_REFLECTIONS SELECTABLE VEHICLE TRANSPORT AIRCRAFT HARVESTER SCORE PRODUCED_AT_HELIPAD
23083  
23084    Body = ActiveBody ModuleTag_03
23085      MaxHealth       = 300.0
23086      InitialHealth   = 300.0
23087    End
23088  
23089    Behavior = FXListDie ModuleTag_05
23090      DeathFX = FX_HelicopterStartDeath
23091    End
23092  
23093    Behavior                       = TransitionDamageFX ModuleTag_06
23094      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
23095      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
23096    End
23097  
23098    Behavior = ChinookAIUpdate ModuleTag_07
23099      MaxBoxes                = 8
23100      SupplyCenterActionDelay = 3000     ; ms for whole thing (one transaction)
23101      SupplyWarehouseActionDelay = 1250  ; 875 ; ms per box (many small transactions)
23102      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)
23103      SuppliesDepletedVoice = ChinookVoiceSuppliesDepleted
23104      NumRopes                = 4
23105      ; these define how long we can wait, once a guy is on-rope, before throwing another
23106      ; guy onto that same rope. (Hint: you don't want to use zero.) Omit entirely
23107      ; and we'll wait for each guy to clear before spawning another.
23108      PerRopeDelayMin         = 900
23109      PerRopeDelayMax         = 1500
23110      RopeWidth               = 0.5
23111      RopeColor               = R:0 G:0 B:0
23112      RopeWobbleLen           = 10
23113      RopeWobbleAmplitude     = 0.25
23114      RopeWobbleRate          = 180
23115      RopeFinalHeight         = 10    ; stop this far above ground
23116      RappelSpeed             = 30
23117      MinDropHeight           = 40      ; if dropping into a tall bldg, go at least this far above it
23118  
23119    End
23120    Locomotor = SET_NORMAL    ChinookLocomotor
23121    Locomotor = SET_TAXIING   BasicHelicopterTaxiLocomotor
23122  
23123    Behavior = TransportContain ModuleTag_08
23124      Slots                 = 8
23125      DamagePercentToUnits  = 100%
23126      AllowInsideKindOf     = INFANTRY VEHICLE
23127      ForbidInsideKindOf    = AIRCRAFT HUGE_VEHICLE
23128      AllowAlliesInside     = Yes
23129      AllowNeutralInside    = No
23130      AllowEnemiesInside    = No
23131      ExitDelay             = 100
23132      NumberOfExitPaths     = 1
23133    End
23134    Behavior = PhysicsBehavior ModuleTag_09
23135      Mass = 50.0
23136    End
23137    Behavior = HelicopterSlowDeathBehavior ModuleTag_10
23138      DestructionDelay                = 99999999        ; the destruction delay
23139      SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
23140      SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
23141      SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
23142      MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
23143      SoundDeathLoop                  = ComancheDamagedLoop
23144      MinSelfSpin                     = 100                     ; in degrees per second
23145      MaxSelfSpin                     = 300                     ; in degrees per second
23146      SelfSpinUpdateDelay             = 100                     ; in milliseconds
23147      SelfSpinUpdateAmount            = 10                      ; in degrees   
23148      FallHowFast                     = 12.0%                   ; fraction of gravity, lower = take longer to fall
23149      MinBladeFlyOffDelay             = 1500                    ; in milliseconds
23150      MaxBladeFlyOffDelay             = 1500                    ; in milliseconds
23151      AttachParticle                  = SootySmokeTrail
23152      AttachParticleBone              = Propeller02
23153      BladeObjectName                 = ComancheBlades
23154      BladeBoneName                   = Propeller01    
23155      FXBlade                         = FX_HelicopterBladeExplosion
23156      OCLBlade                        = OCL_HelicopterBladeExplosion
23157      FXHitGround                     = FX_HelicopterHitGround
23158      OCLHitGround                    = OCL_HelicopterHitGround
23159      FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
23160      OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
23161      DelayFromGroundToFinalDeath     = 30
23162      FinalRubbleObject               = ChinookRubbleHull
23163    End
23164  
23165    Behavior = FlammableUpdate ModuleTag_21
23166      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
23167      AflameDamageAmount = 3       ; taking this much damage...
23168      AflameDamageDelay = 500       ; this often.
23169    End
23170  
23171    Geometry              = BOX
23172    GeometryMajorRadius   = 20.0
23173    GeometryMinorRadius   = 6.0
23174    GeometryHeight        = 12.0     
23175    GeometryIsSmall       = No
23176    Shadow                = SHADOW_VOLUME    
23177    ShadowSizeX           = 89  ; minimum elevation angle above horizon. Used to limit shadow length
23178  
23179  End
23180  
23181  ;------------------------------------------------------------------------------
23182  Object AmericaTankPaladin
23183  
23184    ; *** ART Parameters ***
23185    SelectPortrait         = SAPaladin_L
23186    ButtonImage            = SAPaladin
23187    
23188    UpgradeCameo1 = Upgrade_AmericaBattleDrone
23189    UpgradeCameo2 = Upgrade_AmericaScoutDrone
23190    UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
23191    UpgradeCameo4 = Upgrade_AmericaCompositeArmor
23192    ;UpgradeCameo5 = NONE
23193  
23194    Draw = W3DTankDraw ModuleTag_01
23195      
23196      ExtraPublicBone = Laser 
23197  
23198      ConditionState        = NONE
23199        Model               = AVPaladiu ;AVPaladin
23200        Turret              = Turret01
23201        ;AltTurret           = Turret02
23202        ;AltTurretPitch      = TurretEL02
23203        WeaponFireFXBone    = PRIMARY TurretMS
23204        WeaponRecoilBone    = PRIMARY Barrel
23205        WeaponMuzzleFlash   = PRIMARY TurretFX
23206        WeaponLaunchBone = PRIMARY TurretMS
23207      End
23208      
23209      ConditionState        = REALLYDAMAGED
23210        Model               = AVPaladiu_d ;AVPaladin_D
23211        Turret              = Turret01
23212        ;AltTurret           = Turret02
23213        ;AltTurretPitch      = TurretEL02
23214        WeaponFireFXBone    = PRIMARY TurretMS
23215        WeaponRecoilBone    = PRIMARY Barrel
23216        WeaponMuzzleFlash   = PRIMARY TurretFX
23217        WeaponLaunchBone = PRIMARY TurretMS
23218      End
23219      
23220      ConditionState        = RUBBLE
23221        Model               = AVPaladiu_d ;AVPaladin_D
23222        Turret              = Turret01
23223        ;AltTurret           = Turret02
23224        ;AltTurretPitch      = TurretEL02
23225        WeaponFireFXBone    = PRIMARY TurretMS
23226        WeaponRecoilBone    = PRIMARY Barrel
23227        WeaponMuzzleFlash   = PRIMARY TurretFX
23228        WeaponLaunchBone = PRIMARY TurretMS
23229      End
23230      
23231      TrackMarks           = EXTnkTrack.tga
23232      TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
23233      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
23234      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
23235      OkToChangeModelColor = Yes
23236    End
23237  
23238    ; ***DESIGN parameters ***
23239    DisplayName      = OBJECT:Paladin
23240    Side = America
23241    EditorSorting   = VEHICLE
23242    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
23243    WeaponSet
23244      Conditions = None 
23245      Weapon = PRIMARY PaladinTankGun
23246    End
23247    ArmorSet
23248      Conditions      = None
23249      Armor           = TankArmor
23250      DamageFX        = TankDamageFX
23251    End
23252    ;ArmorSet
23253    ;  Conditions      = PLAYER_UPGRADE
23254    ;  Armor           = UpgradedTankArmor
23255    ;  DamageFX        = TankDamageFX
23256    ;End
23257    BuildCost       = 1250 ;1100
23258    BuildTime       = 14.0 ;12.0          ;in seconds    
23259    VisionRange     = 150
23260    ShroudClearingRange = 300
23261    Prerequisites
23262      Object = AmericaWarFactory
23263      Science = SCIENCE_PaladinTank
23264    End
23265  
23266    ExperienceValue        = 100 100 200 400 ;Experience point value at each level
23267    ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level
23268  
23269    IsTrainable     = Yes  ;Can gain experience
23270    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
23271    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
23272    CommandSet      = AmericaTankPaladinCommandSet
23273      
23274    ; *** AUDIO Parameters ***
23275    VoiceSelect = PaladinTankVoiceSelect
23276    VoiceMove = PaladinTankVoiceMove
23277    VoiceGuard = PaladinTankVoiceMove
23278    VoiceAttack = PaladinTankVoiceAttack
23279    SoundMoveStart = PaladinTankMoveStart
23280    SoundMoveStartDamaged = PaladinTankMoveStart
23281  
23282    UnitSpecificSounds
23283      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
23284      VoiceCreate     = PaladinTankVoiceCreate
23285      TurretMoveLoop = TurretMoveLoop
23286      SoundEject = PilotSoundEject
23287      VoiceEject = PilotVoiceEject
23288      VoiceCrush = PaladinTankVoiceCrush
23289      VoiceEnter = PaladinTankVoiceMove
23290    End
23291  
23292    ; *** ENGINEERING Parameters ***
23293    RadarPriority = UNIT
23294    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
23295    
23296    Body = ActiveBody ModuleTag_02
23297      MaxHealth       = 600.0
23298      InitialHealth   = 600.0
23299    End
23300  
23301    Behavior = AIUpdateInterface ModuleTag_03
23302      Turret
23303        TurretTurnRate = 180 ;60   // turn rate, in degrees per sec
23304        ControlledWeaponSlots = PRIMARY
23305      End
23306      ;AltTurret
23307      ;  TurretTurnRate         = 900
23308      ;  ControlledWeaponSlots = SECONDARY
23309      ;End
23310      AutoAcquireEnemiesWhenIdle = Yes
23311    End
23312    Locomotor = SET_NORMAL CrusaderLocomotor
23313    Behavior = PhysicsBehavior ModuleTag_04
23314      Mass = 50.0
23315    End
23316    
23317    ; Turret fly off death
23318    Behavior = SlowDeathBehavior ModuleTag_05
23319      DeathTypes = ALL -CRUSHED -SPLATTED
23320      ProbabilityModifier = 50
23321  ;    ModifierBonusPerOverkillPercent = 30%  ; negative means less likely to pick this in the face of much damage, positive means more likely
23322      DestructionDelay = 500
23323      DestructionDelayVariance = 100
23324      FX  = INITIAL  FX_GenericTankDeathEffect
23325      FX  = FINAL    FX_GenericTankDeathExplosion
23326      OCL = FINAL    OCL_PaladinTankDeathEffect
23327    End
23328    
23329    ; Catch fire, and explode death
23330    Behavior = SlowDeathBehavior ModuleTag_06
23331      DeathTypes = ALL -CRUSHED -SPLATTED
23332      ProbabilityModifier = 50
23333      DestructionDelay = 2000
23334      DestructionDelayVariance = 300
23335      FX  = INITIAL  FX_CrusaderCatchFire
23336      OCL = FINAL    OCL_PaladinTankDeathEffect
23337      FX  = FINAL    FX_GenericTankDeathExplosion 
23338    End
23339  
23340    Behavior = PointDefenseLaserUpdate ModuleTag_07
23341      WeaponTemplate        = PaladinPointDefenseLaser
23342      PrimaryTargetTypes    = BALLISTIC_MISSILE SMALL_MISSILE ;AIRCRAFT
23343      SecondaryTargetTypes  = INFANTRY
23344      ScanRate              = 500
23345      ScanRange             = 120.0
23346      PredictTargetVelocityFactor = 3.0
23347    End
23348  
23349    Behavior = ObjectCreationUpgrade ModuleTag_08
23350      UpgradeObject = OCL_AmericanBattleDrone
23351      TriggeredBy   = Upgrade_AmericaBattleDrone
23352      ConflictsWith = Upgrade_AmericaScoutDrone
23353    End
23354    Behavior = ObjectCreationUpgrade ModuleTag_09
23355      UpgradeObject = OCL_AmericanScoutDrone
23356      TriggeredBy   = Upgrade_AmericaScoutDrone
23357      ConflictsWith = Upgrade_AmericaBattleDrone
23358    End
23359    Behavior = ProductionUpdate ModuleTag_10
23360      MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
23361    End
23362  
23363    Behavior = ExperienceScalarUpgrade ModuleTag_11
23364      TriggeredBy = Upgrade_AmericaAdvancedTraining
23365      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
23366    End
23367  
23368    Behavior = TransitionDamageFX ModuleTag_12
23369      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
23370      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
23371    End
23372  
23373    Behavior = FXListDie ModuleTag_13
23374      DeathTypes = NONE +CRUSHED +SPLATTED
23375      DeathFX = FX_CarCrush
23376    End
23377    Behavior = CreateObjectDie ModuleTag_14
23378      DeathTypes = NONE +CRUSHED +SPLATTED
23379      CreationList = OCL_CrusaderTank_CrushEffect
23380    End
23381    Behavior = DestroyDie ModuleTag_15
23382      DeathTypes = NONE +CRUSHED +SPLATTED
23383    End
23384    Behavior = CreateCrateDie ModuleTag_16
23385      CrateData = SalvageCrateData
23386      ;CrateData = EliteTankCrateData
23387      ;CrateData = HeroicTankCrateData
23388    End
23389    Behavior = EjectPilotDie ModuleTag_17
23390      DeathTypes = ALL -CRUSHED -SPLATTED
23391      ExemptStatus = HIJACKED
23392      GroundCreationList = OCL_EjectPilotOnGround
23393      AirCreationList = OCL_EjectPilotViaParachute
23394      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
23395    End
23396  
23397    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
23398      DetectionRate             = 500
23399      DetectionRange           = 75
23400      CanDetectWhileGarrisoned  = No
23401      CanDetectWhileContained   = No
23402      ExtraRequiredKindOf       = BOAT
23403    End
23404  
23405    Behavior = MaxHealthUpgrade ModuleTag_18
23406      TriggeredBy   = Upgrade_AmericaCompositeArmor
23407      AddMaxHealth  = 100.0
23408      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
23409    End
23410  
23411    Behavior = FlammableUpdate ModuleTag_21
23412      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
23413      AflameDamageAmount = 3       ; taking this much damage...
23414      AflameDamageDelay = 500       ; this often.
23415    End
23416  
23417    Geometry = BOX
23418    GeometryMajorRadius = 15.0
23419    GeometryMinorRadius = 10.0
23420    GeometryHeight = 10.0     
23421    GeometryIsSmall = Yes    
23422    Shadow = SHADOW_VOLUME
23423    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
23424  
23425  End
23426  
23427  ;------------------------------------------------------------------------------
23428  Object AmericaTankLeopard    ;careful not to confuse with Crusader which was at one time the Leopard
23429  
23430    ; *** ART Parameters ***
23431    SelectPortrait         = NONE
23432    ButtonImage            = SCTempDefaultCommand
23433    
23434    UpgradeCameo1 = Upgrade_AmericaBattleDrone
23435    UpgradeCameo2 = Upgrade_AmericaScoutDrone
23436    UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
23437    UpgradeCameo4 = Upgrade_AmericaCompositeArmor
23438    
23439    Draw = W3DTankDraw ModuleTag_01
23440      ConditionState        = NONE
23441        Model               = gxmammoth_a
23442        Animation           = gxmammoth_a.gxmammoth_a
23443        AnimationMode       = LOOP
23444        Turret              = Turret01
23445        WeaponFireFXBone    = PRIMARY Muzzle
23446        WeaponRecoilBone    = PRIMARY Barrel
23447        WeaponMuzzleFlash   = PRIMARY MuzzleFX
23448        WeaponLaunchBone    = PRIMARY Muzzle
23449      End
23450      ConditionState        = REALLYDAMAGED
23451        Model               = gxmammoth_Hi
23452        Animation           = gxmammoth_Hi.gxmammoth_Hi
23453        AnimationMode       = LOOP
23454        Turret              = Turret01
23455        WeaponFireFXBone    = PRIMARY Muzzle
23456        WeaponRecoilBone    = PRIMARY Barrel
23457        WeaponMuzzleFlash   = PRIMARY MuzzleFX
23458        WeaponLaunchBone    = PRIMARY Muzzle
23459      End
23460  
23461      ConditionState        = RUBBLE
23462        Model               = gxmammoth_Hi
23463        Turret              = Turret01
23464        WeaponFireFXBone    = PRIMARY Muzzle
23465        WeaponRecoilBone    = PRIMARY Barrel
23466        WeaponMuzzleFlash   = PRIMARY MuzzleFX
23467        WeaponLaunchBone    = PRIMARY Muzzle
23468      End
23469  
23470      TrackMarks           = EXTnkTrack.tga
23471      OkToChangeModelColor = Yes
23472      TreadAnimationRate = 2.0         ; amount of tread texture to move per second
23473      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
23474      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
23475    End
23476  
23477    ; ***DESIGN parameters ***
23478    DisplayName         = OBJECT:Leopard
23479    Side                = America
23480    EditorSorting       = VEHICLE
23481    TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
23482  
23483    WeaponSet
23484      Conditions        = None 
23485      Weapon            = PRIMARY MammothTankGun
23486    End
23487    ArmorSet
23488      Conditions        = None
23489      Armor             = TankArmor
23490      DamageFX          = TankDamageFX
23491    End
23492  
23493    BuildCost       = 1700
23494    BuildTime       = 20.0          ;in seconds    
23495    VisionRange     = 150
23496    ShroudClearingRange = 200
23497    Prerequisites
23498      Object = AmericaWarFactory
23499      Object = AmericaDetentionCamp
23500      ;Science = SCIENCE_LeopardTank
23501    End
23502  
23503    ExperienceValue = 175 175 250 400   ;Experience point value at each level
23504    ExperienceRequired = 0 200 300 450  ;Experience points needed to gain each level
23505    IsTrainable = Yes             ;Can gain experience
23506    CrusherLevel           = 3  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
23507    CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
23508    CommandSet = AmericaTankMammothCommandSet
23509  
23510    ; *** AUDIO Parameters ***
23511    VoiceSelect = PaladinTankVoiceSelect
23512    VoiceMove = PaladinTankVoiceMove
23513    VoiceGuard = PaladinTankVoiceMove
23514    VoiceAttack = PaladinTankVoiceAttack
23515    SoundMoveStart = OverlordTankMoveStart
23516    SoundMoveStartDamaged = OverlordTankMoveStart
23517  
23518    UnitSpecificSounds
23519      VoiceCreate     = PaladinTankVoiceCreate
23520      TurretMoveLoop = OverlordTankTurretMoveLoop
23521      SoundEject = PilotSoundEject
23522      VoiceEject = PilotVoiceEject
23523      VoiceCrush = PaladinTankVoiceCrush
23524      VoiceEnter = PaladinTankVoiceMove
23525    End
23526  
23527    ; *** ENGINEERING Parameters ***
23528    RadarPriority = UNIT
23529    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE ;HUGE_VEHICLE
23530    
23531    Body = ActiveBody ModuleTag_02
23532      MaxHealth       = 850.0
23533      InitialHealth   = 850.0
23534    End
23535  
23536    Behavior = TransportAIUpdate ModuleTag_03
23537      Turret
23538        TurretTurnRate = 90
23539        ControlledWeaponSlots = PRIMARY
23540      End
23541      AutoAcquireEnemiesWhenIdle = Yes
23542    End
23543  
23544    Locomotor = SET_NORMAL MammothLocomotor
23545  
23546    Behavior = ProductionUpdate ModuleTag_10
23547      MaxQueueEntries = 1        ; So you can't build multiple upgrades in the same frame
23548    End
23549  
23550    Behavior = PhysicsBehavior ModuleTag_14
23551      Mass = 50.0
23552    End
23553    
23554    ; Catch fire, smoke and explode death
23555    Behavior = SlowDeathBehavior ModuleTag_16
23556      ProbabilityModifier = 30
23557      DestructionDelay = 2500
23558      DestructionDelayVariance = 500
23559      FX  = INITIAL  FX_CrusaderCatchFire
23560      FX  = INITIAL  FX_OverlordSmoke
23561      OCL = FINAL    OCL_PaladinTankDeathEffect
23562      FX  = FINAL    FX_OverlordExplosionOneFinal
23563    End
23564  
23565    Behavior = CreateCrateDie ModuleTag_17
23566      CrateData = SalvageCrateData
23567    End
23568  
23569    Behavior = ObjectCreationUpgrade ModuleTag_19
23570      UpgradeObject = OCL_AmericanBattleDrone
23571      TriggeredBy   = Upgrade_AmericaBattleDrone
23572      ConflictsWith = Upgrade_AmericaScoutDrone
23573    End
23574    Behavior = ObjectCreationUpgrade ModuleTag_20
23575      UpgradeObject = OCL_AmericanScoutDrone
23576      TriggeredBy   = Upgrade_AmericaScoutDrone
23577      ConflictsWith = Upgrade_AmericaBattleDrone
23578    End
23579  
23580    Behavior = EjectPilotDie ModuleTag_22
23581      DeathTypes = ALL
23582      ExemptStatus = HIJACKED
23583      GroundCreationList = OCL_EjectPilotOnGround
23584      AirCreationList = OCL_EjectPilotViaParachute
23585      VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
23586    End
23587  
23588    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
23589      DetectionRate             = 500
23590      DetectionRange           = 75
23591      CanDetectWhileGarrisoned  = No
23592      CanDetectWhileContained   = No
23593      ExtraRequiredKindOf       = BOAT
23594    End
23595  
23596    Behavior = MaxHealthUpgrade ModuleTag_23
23597      TriggeredBy   = Upgrade_AmericaCompositeArmor
23598      AddMaxHealth  = 100.0
23599      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
23600    End
23601    Behavior = ExperienceScalarUpgrade ModuleTag_24
23602      TriggeredBy = Upgrade_AmericaAdvancedTraining
23603      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
23604    End
23605  
23606    Behavior = TransitionDamageFX ModuleTag_18
23607      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
23608      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_OverlordDamageTransition
23609    End
23610  
23611    Behavior = FlammableUpdate ModuleTag_21
23612      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
23613      AflameDamageAmount = 3       ; taking this much damage...
23614      AflameDamageDelay = 500       ; this often.
23615    End
23616  
23617    Geometry = BOX
23618    GeometryMajorRadius = 26.0
23619    GeometryMinorRadius = 13.0
23620    GeometryHeight = 12.0     
23621    GeometryIsSmall = No
23622    Shadow = SHADOW_VOLUME     
23623    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
23624  
23625  End
23626  
23627  ;------------------------------------------------------------------------------
23628  ;
23629  ; Jason Bender sez:
23630  ; This unit is used in GLA04. It is part of a secondary objective. The player gets a medal for capturing him.
23631  ; This unit is never human-controllable!
23632  ;
23633  Object ChinaAmbassador
23634  
23635      ; *** ART Parameters ***
23636    Draw = W3DModelDraw ModuleTag_01
23637      OkToChangeModelColor = Yes
23638  
23639      DefaultConditionState
23640        Model = NIAMBSDR_SKN
23641        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
23642        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
23643        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
23644        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
23645        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
23646        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
23647        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
23648        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDA
23649        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDB
23650        AnimationMode = ONCE
23651        TransitionKey = TRANS_Stand
23652      End
23653          
23654      ConditionState = MOVING
23655        Animation = NIAMBSDR_SKL.NIAMBSDR_RNA ;***was using WKA but it doesn't exist so I changed it to kill the assert -- Kris 
23656        AnimationMode = LOOP
23657        Flags = RANDOMSTART
23658      End
23659  
23660      ConditionState = MOVING PANICKING
23661        Animation = NIAMBSDR_SKL.NIAMBSDR_RNA 
23662        AnimationMode = LOOP
23663        Flags = RANDOMSTART
23664      End
23665  
23666      ConditionState = DYING
23667        Animation = NIAMBSDR_SKL.NIAMBSDR_DTA
23668        Animation = NIAMBSDR_SKL.NIAMBSDR_DTB
23669        AnimationMode = ONCE
23670        TransitionKey = TRANS_Dying
23671      End
23672  
23673      ;TransitionState = TRANS_Dying TRANS_Flailing
23674      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD1
23675      ;  AnimationMode = ONCE
23676      ;End
23677  
23678      ;ConditionState = DYING EXPLODED_FLAILING
23679      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD2
23680      ;  AnimationMode = LOOP
23681      ;  TransitionKey = TRANS_Flailing
23682      ;End
23683  
23684      ;ConditionState = DYING EXPLODED_BOUNCING
23685      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD3
23686      ;  AnimationMode = ONCE
23687      ;  TransitionKey = None
23688      ;End
23689    End
23690  
23691    ; ***DESIGN parameters ***
23692    Buildable           = No
23693    DisplayName         = OBJECT:Ambassador
23694    Side                = China
23695    EditorSorting       = INFANTRY
23696    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
23697    WeaponSet
23698      ; no weapons
23699    End
23700    ArmorSet
23701      Conditions      = None
23702      Armor           = HumanArmor
23703      DamageFX        = InfantryDamageFX
23704    End
23705    VisionRange = 150
23706    ShroudClearingRange = 150
23707  
23708    ExperienceValue = 50 100 150 400    ;Experience point value at each level
23709    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
23710    IsTrainable = Yes             ;Can gain experience
23711  
23712    ; *** AUDIO Parameters ***
23713    SoundDie = RedGuardVoiceDie
23714  
23715    ; *** ENGINEERING Parameters ***
23716    RadarPriority = UNIT
23717    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
23718  
23719    Body = ActiveBody ModuleTag_02
23720      MaxHealth       = 50.0
23721      InitialHealth   = 50.0
23722    End
23723  
23724    Behavior = AIUpdateInterface ModuleTag_03
23725      AutoAcquireEnemiesWhenIdle = Yes
23726    End
23727    Locomotor = SET_NORMAL BasicHumanLocomotor
23728    Behavior = PhysicsBehavior ModuleTag_04
23729      Mass = 5.0
23730    End
23731    Behavior = SlowDeathBehavior ModuleTag_05
23732      SinkDelay = 3000
23733      SinkRate = 0.5     ; in Dist/Sec
23734      DestructionDelay = 8000
23735    End
23736   
23737    Behavior = SquishCollide ModuleTag_06
23738      ;nothing
23739    End
23740  
23741    Behavior = FXListDie ModuleTag_07
23742      DeathTypes = ALL -CRUSHED -SPLATTED
23743      DeathFX = FX_GIDie
23744    End
23745    Behavior = FXListDie ModuleTag_08
23746      DeathTypes = NONE +CRUSHED +SPLATTED
23747      DeathFX = FX_GIDieCrushed
23748    End
23749  
23750    Behavior = PoisonedBehavior ModuleTag_09
23751      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
23752      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
23753    End
23754   
23755    Geometry = CYLINDER
23756    GeometryMajorRadius = 10.0
23757    GeometryMinorRadius = 10.0
23758    GeometryHeight = 12.0
23759    GeometryIsSmall = Yes
23760    Shadow = SHADOW_DECAL
23761    ShadowSizeX = 14
23762    ShadowSizeY = 14
23763    ShadowTexture = ShadowI
23764    BuildCompletion = APPEARS_AT_RALLY_POINT
23765  
23766  End
23767  
23768  ;------------------------------------------------------------------------------
23769  Object AmericaInfantryBiohazardTech
23770  
23771    ; This unit is by default NOT buildable. In GLA06 this is buildable from the
23772    ; barracks of the enemy AI. (The map.ini file is overridden there make it 
23773    ; buildable = Yes (jkmcd)
23774    Buildable = No
23775  
23776      ; *** ART Parameters ***
23777    Draw = W3DModelDraw ModuleTag_01
23778      OkToChangeModelColor = Yes
23779  
23780      ;NORMAL STANDING
23781      DefaultConditionState
23782        Model = AITECH_SKN
23783        IdleAnimation = AITECH_SKL.AITECH_STA 0 21
23784        ;Regular spice animations
23785        IdleAnimation = AITECH_SKL.AITECH_IDA
23786        IdleAnimation = AITECH_SKL.AITECH_IDB
23787        AnimationMode = ONCE
23788        WeaponLaunchBone = PRIMARY BIOGUNFX
23789        TransitionKey = TRANS_Stand
23790      End
23791  
23792      ; NORMAL ATTACK
23793      ConditionState = FIRING_A
23794        Animation = AITECH_SKL.AITECH_STA
23795        AnimationMode = LOOP
23796        TransitionKey = TRANS_FiringA
23797      End
23798      AliasConditionState = BETWEEN_FIRING_SHOTS_A
23799      AliasConditionState = RELOADING_A
23800      AliasConditionState = FIRING_A REALLYDAMAGED
23801      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
23802      AliasConditionState = RELOADING_A REALLYDAMAGED
23803  
23804  
23805      ConditionState = MOVING FIRING_A 
23806        Animation = AITECH_SKL.AITECH_WKB 15
23807        AnimationMode = LOOP
23808        Flags = RANDOMSTART
23809        TransitionKey = None
23810        ParticleSysBone     = None InfantryDustTrails
23811      End
23812      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
23813      AliasConditionState = MOVING RELOADING_A
23814  
23815      ConditionState = MOVING
23816        Animation = AITECH_SKL.AITECH_WKA 15
23817        AnimationMode = LOOP
23818        Flags = RANDOMSTART
23819        TransitionKey = None
23820        ParticleSysBone     = None InfantryDustTrails
23821      End
23822  
23823      ConditionState = DYING
23824        Animation = AITECH_SKL.AITECH_DTA
23825        Animation = AITECH_SKL.AITECH_DTB
23826        AnimationMode = ONCE
23827        TransitionKey = TRANS_Dying
23828      End
23829  
23830      TransitionState = TRANS_Dying TRANS_Flailing
23831        Animation = AITECH_SKL.AITECH_ADTD1
23832        AnimationMode = ONCE
23833      End
23834  
23835      ConditionState = DYING EXPLODED_FLAILING
23836        Animation = AITECH_SKL.AITECH_ADTD2
23837        AnimationMode = LOOP
23838        TransitionKey = TRANS_Flailing
23839      End
23840  
23841      ConditionState = DYING EXPLODED_BOUNCING
23842        Animation = AITECH_SKL.AITECH_ADTD3
23843        AnimationMode = ONCE
23844        TransitionKey = None
23845      End
23846  
23847      ConditionState = SPECIAL_CHEERING
23848        Animation = AITECH_SKL.AITECH_CHA
23849        AnimationMode = LOOP
23850      End
23851  
23852      ;PARACHUTING ANIMATIONS
23853      ConditionState = FREEFALL
23854        Animation = AITECH_SKL.AITECH_PFL
23855        AnimationMode = LOOP
23856        TransitionKey = TRANS_Falling
23857      End
23858      AliasConditionState = FREEFALL REALLYDAMAGED
23859      AliasConditionState = FREEFALL DYING
23860      ConditionState = PARACHUTING
23861        Animation = AITECH_SKL.AITECH_PHG
23862        AnimationMode = LOOP
23863        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
23864        TransitionKey = TRANS_Chute
23865      End
23866      AliasConditionState = PARACHUTING REALLYDAMAGED
23867      AliasConditionState = PARACHUTING DYING
23868      TransitionState = TRANS_Falling TRANS_Chute
23869        Animation = AITECH_SKL.AITECH_POP
23870        AnimationMode = ONCE
23871        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
23872      End
23873      TransitionState = TRANS_Chute TRANS_Stand
23874        Animation = AITECH_SKL.AITECH_PDN
23875        AnimationMode = ONCE
23876      End
23877  
23878      ;SURRENDER ANIMATIONS
23879  ; surrender is cut. sorry. (srj)
23880  ;    ConditionState = SURRENDER
23881  ;      Animation = AITECH_SKL.AITECH_SST
23882  ;      AnimationMode = ONCE
23883  ;      TransitionKey = TRANS_SurrenderKneeling
23884  ;    End
23885  ;    ConditionState = SURRENDER MOVING
23886  ;      Animation = AITECH_SKL.AITECH_SWK
23887  ;      AnimationMode = ONCE
23888  ;      TransitionKey = TRANS_SurrenderMoving
23889  ;    End
23890  ;    TransitionState = TRANS_Stand TRANS_SurrenderKneeling
23891  ;      Animation = AITECH_SKL.AITECH_SUR
23892  ;      AnimationMode = ONCE
23893  ;    End
23894      
23895    End
23896  
23897    ; ***DESIGN parameters ***
23898    DisplayName         = OBJECT:BioHazardTech
23899    Side                = America
23900    EditorSorting       = INFANTRY
23901    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
23902    
23903    WeaponSet 
23904      ;*** Fully automated and driven by the CleanupHazardUpdate ***
23905      Conditions        = None 
23906      Weapon            = PRIMARY BioHazardTechCleanHazardWeapon 
23907      AutoChooseSources = PRIMARY NONE
23908    End
23909    ArmorSet
23910      Conditions      = None
23911      Armor           = HazMatHumanArmor
23912      DamageFX        = InfantryDamageFX
23913    End
23914  
23915    VisionRange = 100
23916    ShroudClearingRange = 400
23917    Prerequisites
23918      Object = AmericaBarracks
23919    End
23920    BuildCost = 200
23921    BuildTime = 5.0          ;in seconds  
23922    
23923    ExperienceValue = 50 100 150 400    ;Experience point value at each level
23924    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
23925    IsTrainable = Yes             ;Can gain experience
23926    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
23927    CommandSet          = AmericaInfantryHazMatCommandSet
23928  
23929    ; *** AUDIO Parameters ***
23930    VoiceSelect   = NoSound
23931    VoiceMove     = NoSound
23932    VoiceAttack   = NoSound
23933    SoundDie      = RebelVoiceDie
23934    UnitSpecificFX
23935      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
23936    End
23937  
23938    ; *** ENGINEERING Parameters ***
23939    RadarPriority = UNIT
23940    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
23941  
23942    Body = ActiveBody ModuleTag_02
23943  
23944      MaxHealth       = 100.0
23945      InitialHealth   = 100.0
23946    End
23947  
23948    Behavior = CleanupHazardUpdate ModuleTag_03
23949      WeaponSlot            = PRIMARY
23950      ScanRate              = 1000
23951      ScanRange             = 100.0
23952    End
23953  
23954    ;Can be ordered to clean up a larger area with the ability to move around at an extended range.
23955    Behavior = CleanupAreaPower ModuleTag_04
23956      SpecialPowerTemplate          = SpecialAbilityAmbulanceCleanupArea
23957      MaxMoveDistanceFromLocation   = 300.0 ;allows the unit to move around while cleaning up
23958    End
23959  
23960    Behavior = AIUpdateInterface ModuleTag_05
23961      AutoAcquireEnemiesWhenIdle = No
23962    End
23963    Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
23964      ScanRate = 1000 ; once a second.
23965      ScanRange = 300 ;
23966      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
23967      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
23968    End
23969  
23970    Locomotor = SET_NORMAL HazMatHumanLocomotor
23971  
23972    Behavior = ExperienceScalarUpgrade ModuleTag_07
23973      TriggeredBy = Upgrade_AmericaAdvancedTraining
23974      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
23975    End
23976  
23977    Behavior = PhysicsBehavior ModuleTag_08
23978      Mass = 5.0
23979    End
23980    Behavior = ProductionUpdate ModuleTag_09
23981      ; nothing
23982    End
23983  
23984    Behavior = SquishCollide ModuleTag_10
23985      ;nothing
23986    End
23987  
23988  ; --- begin Death modules ---
23989    Behavior = SlowDeathBehavior ModuleTag_Death01
23990      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
23991      SinkDelay           = 3000
23992      SinkRate            = 0.5     ; in Dist/Sec
23993      DestructionDelay    = 8000
23994      FX                  = INITIAL FX_GIDie
23995    End
23996    Behavior = SlowDeathBehavior ModuleTag_Death02
23997      DeathTypes          = NONE +CRUSHED +SPLATTED
23998      SinkDelay           = 3000
23999      SinkRate            = 0.5     ; in Dist/Sec
24000      DestructionDelay    = 8000
24001      FX                  = INITIAL FX_GIDieCrushed
24002    End
24003    Behavior = SlowDeathBehavior ModuleTag_Death03
24004      DeathTypes          = NONE +EXPLODED
24005      SinkDelay           = 3000
24006      SinkRate            = 0.5     ; in Dist/Sec
24007      DestructionDelay    = 8000
24008      FX                  = INITIAL FX_GIDie
24009      FlingForce          = 8
24010      FlingForceVariance  = 3
24011      FlingPitch          = 60
24012      FlingPitchVariance  = 10
24013    End
24014    Behavior = SlowDeathBehavior ModuleTag_Death04
24015      DeathTypes          = NONE +BURNED
24016      DestructionDelay    = 0
24017      FX                  = INITIAL FX_GIDie
24018      OCL                 = INITIAL OCL_FlamingInfantry
24019    End
24020    Behavior = SlowDeathBehavior ModuleTag_Death05
24021      DeathTypes          = NONE +POISONED
24022      DestructionDelay    = 0
24023      FX                  = INITIAL FX_GIDie
24024      OCL                 = INITIAL OCL_ToxicInfantry
24025    End
24026  ; --- end Death modules ---
24027  
24028    Geometry = CYLINDER
24029    GeometryMajorRadius = 10.0
24030    GeometryMinorRadius = 10.0
24031    GeometryHeight = 13.0
24032  
24033    GeometryIsSmall = Yes
24034    Shadow = SHADOW_DECAL
24035    ShadowSizeX = 14;
24036    ShadowSizeY = 14;
24037    ShadowTexture = ShadowI;
24038    BuildCompletion = APPEARS_AT_RALLY_POINT
24039  End
24040  
24041  ;------------------------------------------------------------------------------
24042  Object CINE_AmericaInfantryBiohazardTech
24043  
24044    ; This unit is by default NOT buildable. In GLA06 this is buildable from the
24045    ; barracks of the enemy AI. (The map.ini file is overridden there make it 
24046    ; buildable = Yes (jkmcd)
24047    Buildable = No
24048  
24049      ; *** ART Parameters ***
24050    Draw = W3DModelDraw ModuleTag_01
24051      OkToChangeModelColor = Yes
24052  
24053      ;NORMAL STANDING
24054      DefaultConditionState
24055        Model = AITECH_SKN
24056        IdleAnimation = AITECH_SKL.AITECH_STA 0 21
24057        ;Regular spice animations
24058        IdleAnimation = AITECH_SKL.AITECH_IDA
24059        IdleAnimation = AITECH_SKL.AITECH_IDB
24060        AnimationMode = ONCE
24061        WeaponLaunchBone = PRIMARY BIOGUNFX
24062        TransitionKey = TRANS_Stand
24063      End
24064  
24065      ; NORMAL ATTACK
24066      ConditionState = FIRING_A
24067        Animation = AITECH_SKL.AITECH_ATA
24068        AnimationMode = LOOP
24069        TransitionKey = TRANS_FiringA
24070      End
24071      AliasConditionState = BETWEEN_FIRING_SHOTS_A
24072      AliasConditionState = RELOADING_A
24073      AliasConditionState = FIRING_A REALLYDAMAGED
24074      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
24075      AliasConditionState = RELOADING_A REALLYDAMAGED
24076  
24077  
24078      ConditionState = MOVING FIRING_A 
24079        Animation = AITECH_SKL.AITECH_WKB 15
24080        AnimationMode = LOOP
24081        Flags = RANDOMSTART
24082        TransitionKey = None
24083        ParticleSysBone     = None InfantryDustTrails
24084      End
24085      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
24086      AliasConditionState = MOVING RELOADING_A
24087  
24088      ConditionState = MOVING
24089        Animation = AITECH_SKL.AITECH_WKA 15
24090        AnimationMode = LOOP
24091        Flags = RANDOMSTART
24092        TransitionKey = None
24093        ParticleSysBone     = None InfantryDustTrails
24094      End
24095  
24096      ConditionState = DYING
24097        Animation = AITECH_SKL.AITECH_DTA
24098        Animation = AITECH_SKL.AITECH_DTB
24099        AnimationMode = ONCE
24100        TransitionKey = TRANS_Dying
24101      End
24102  
24103      TransitionState = TRANS_Dying TRANS_Flailing
24104        Animation = AITECH_SKL.AITECH_ADTD1
24105        AnimationMode = ONCE
24106      End
24107  
24108      ConditionState = DYING EXPLODED_FLAILING
24109        Animation = AITECH_SKL.AITECH_ADTD2
24110        AnimationMode = LOOP
24111        TransitionKey = TRANS_Flailing
24112      End
24113  
24114      ConditionState = DYING EXPLODED_BOUNCING
24115        Animation = AITECH_SKL.AITECH_ADTD3
24116        AnimationMode = ONCE
24117        TransitionKey = None
24118      End
24119  
24120      ConditionState = SPECIAL_CHEERING
24121        Animation = AITECH_SKL.AITECH_CHA
24122        AnimationMode = LOOP
24123      End
24124  
24125      ;PARACHUTING ANIMATIONS
24126      ConditionState = FREEFALL
24127        Animation = AITECH_SKL.AITECH_PFL
24128        AnimationMode = LOOP
24129        TransitionKey = TRANS_Falling
24130      End
24131      AliasConditionState = FREEFALL REALLYDAMAGED
24132      AliasConditionState = FREEFALL DYING
24133      ConditionState = PARACHUTING
24134        Animation = AITECH_SKL.AITECH_PHG
24135        AnimationMode = LOOP
24136        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
24137        TransitionKey = TRANS_Chute
24138      End
24139      AliasConditionState = PARACHUTING REALLYDAMAGED
24140      AliasConditionState = PARACHUTING DYING
24141      TransitionState = TRANS_Falling TRANS_Chute
24142        Animation = AITECH_SKL.AITECH_POP
24143        AnimationMode = ONCE
24144        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
24145      End
24146      TransitionState = TRANS_Chute TRANS_Stand
24147        Animation = AITECH_SKL.AITECH_PDN
24148        AnimationMode = ONCE
24149      End
24150  
24151      ;SURRENDER ANIMATIONS
24152  ; surrender is cut. sorry. (srj)
24153  ;    ConditionState = SURRENDER
24154  ;      Animation = AITECH_SKL.AITECH_SST
24155  ;      AnimationMode = ONCE
24156  ;      TransitionKey = TRANS_SurrenderKneeling
24157  ;    End
24158  ;    ConditionState = SURRENDER MOVING
24159  ;      Animation = AITECH_SKL.AITECH_SWK
24160  ;      AnimationMode = ONCE
24161  ;      TransitionKey = TRANS_SurrenderMoving
24162  ;    End
24163  ;    TransitionState = TRANS_Stand TRANS_SurrenderKneeling
24164  ;      Animation = AITECH_SKL.AITECH_SUR
24165  ;      AnimationMode = ONCE
24166  ;    End
24167      
24168    End
24169  
24170    ; ***DESIGN parameters ***
24171    DisplayName         = OBJECT:BioHazardTech
24172    Side                = America
24173    EditorSorting       = INFANTRY
24174    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
24175    
24176    WeaponSet 
24177      ;*** Fully automated and driven by the CleanupHazardUpdate ***
24178      Conditions        = None 
24179      Weapon            = PRIMARY BioHazardTechCleanHazardWeapon 
24180      AutoChooseSources = PRIMARY NONE
24181    End
24182    ArmorSet
24183      Conditions      = None
24184      Armor           = HazMatHumanArmor
24185      DamageFX        = InfantryDamageFX
24186    End
24187  
24188    VisionRange = 100
24189    ShroudClearingRange = 400
24190    Prerequisites
24191      Object = AmericaBarracks
24192    End
24193    BuildCost = 200
24194    BuildTime = 5.0          ;in seconds  
24195    
24196    ExperienceValue = 50 100 150 400    ;Experience point value at each level
24197    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
24198    IsTrainable = Yes             ;Can gain experience
24199    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
24200    CommandSet          = AmericaInfantryHazMatCommandSet
24201  
24202    ; *** AUDIO Parameters ***
24203    VoiceSelect   = NoSound
24204    VoiceMove     = NoSound
24205    VoiceAttack   = NoSound
24206    SoundDie      = RebelVoiceDie
24207    UnitSpecificFX
24208      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
24209    End
24210  
24211    ; *** ENGINEERING Parameters ***
24212    RadarPriority = UNIT
24213    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
24214  
24215    Body = ActiveBody ModuleTag_02
24216  
24217      MaxHealth       = 100.0
24218      InitialHealth   = 100.0
24219    End
24220  
24221    Behavior = CleanupHazardUpdate ModuleTag_03
24222      WeaponSlot            = PRIMARY
24223      ScanRate              = 1000
24224      ScanRange             = 100.0
24225    End
24226  
24227    ;Can be ordered to clean up a larger area with the ability to move around at an extended range.
24228    Behavior = CleanupAreaPower ModuleTag_04
24229      SpecialPowerTemplate          = SpecialAbilityAmbulanceCleanupArea
24230      MaxMoveDistanceFromLocation   = 300.0 ;allows the unit to move around while cleaning up
24231    End
24232  
24233    Behavior = AIUpdateInterface ModuleTag_05
24234      AutoAcquireEnemiesWhenIdle = No
24235    End
24236    Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
24237      ScanRate = 1000 ; once a second.
24238      ScanRange = 300 ;
24239      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
24240      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
24241    End
24242  
24243    Locomotor = SET_NORMAL CINE_HazMatHumanLocomotor
24244  
24245    Behavior = ExperienceScalarUpgrade ModuleTag_07
24246      TriggeredBy = Upgrade_AmericaAdvancedTraining
24247      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
24248    End
24249  
24250    Behavior = PhysicsBehavior ModuleTag_08
24251      Mass = 5.0
24252    End
24253    Behavior = ProductionUpdate ModuleTag_09
24254      ; nothing
24255    End
24256  
24257    Behavior = SquishCollide ModuleTag_10
24258      ;nothing
24259    End
24260  
24261  ; --- begin Death modules ---
24262    Behavior = SlowDeathBehavior ModuleTag_Death01
24263      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
24264      SinkDelay           = 3000
24265      SinkRate            = 0.5     ; in Dist/Sec
24266      DestructionDelay    = 8000
24267      FX                  = INITIAL FX_GIDie
24268    End
24269    Behavior = SlowDeathBehavior ModuleTag_Death02
24270      DeathTypes          = NONE +CRUSHED +SPLATTED
24271      SinkDelay           = 3000
24272      SinkRate            = 0.5     ; in Dist/Sec
24273      DestructionDelay    = 8000
24274      FX                  = INITIAL FX_GIDieCrushed
24275    End
24276    Behavior = SlowDeathBehavior ModuleTag_Death03
24277      DeathTypes          = NONE +EXPLODED
24278      SinkDelay           = 3000
24279      SinkRate            = 0.5     ; in Dist/Sec
24280      DestructionDelay    = 8000
24281      FX                  = INITIAL FX_GIDie
24282      FlingForce          = 8
24283      FlingForceVariance  = 3
24284      FlingPitch          = 60
24285      FlingPitchVariance  = 10
24286    End
24287    Behavior = SlowDeathBehavior ModuleTag_Death04
24288      DeathTypes          = NONE +BURNED
24289      DestructionDelay    = 0
24290      FX                  = INITIAL FX_GIDie
24291      OCL                 = INITIAL OCL_FlamingInfantry
24292    End
24293    Behavior = SlowDeathBehavior ModuleTag_Death05
24294      DeathTypes          = NONE +POISONED
24295      DestructionDelay    = 0
24296      FX                  = INITIAL FX_GIDie
24297      OCL                 = INITIAL OCL_ToxicInfantry
24298    End
24299  ; --- end Death modules ---
24300  
24301    Geometry = CYLINDER
24302    GeometryMajorRadius = 10.0
24303    GeometryMinorRadius = 10.0
24304    GeometryHeight = 13.0
24305  
24306    GeometryIsSmall = Yes
24307    Shadow = SHADOW_DECAL
24308    ShadowSizeX = 14;
24309    ShadowSizeY = 14;
24310    ShadowTexture = ShadowI;
24311    BuildCompletion = APPEARS_AT_RALLY_POINT
24312  End
24313  
24314  ;------------------------------------------------------------------------------
24315  ;
24316  ;
24317  ; Jason Bender sez:
24318  ; This unit is used in a mission for "color".
24319  ; This unit is never human-controllable!
24320  ;
24321  Object ChinaInfantryOfficer
24322  
24323      ; *** ART Parameters ***
24324    Draw = W3DModelDraw ModuleTag_01
24325      OkToChangeModelColor = Yes
24326  
24327      ;NORMAL STANDING
24328      DefaultConditionState
24329        Model = NIOFCR_SKN
24330        IdleAnimation = NIOFCR_SKL.NIOFCR_STA 0 21
24331        ;Regular spice animations
24332        IdleAnimation = NIOFCR_SKL.NIOFCR_IDA
24333        IdleAnimation = NIOFCR_SKL.NIOFCR_IDB
24334        AnimationMode = ONCE
24335        WeaponFireFXBone = PRIMARY Muzzle
24336        WeaponMuzzleFlash = PRIMARY MuzzleFX
24337        TransitionKey = TRANS_STAND
24338      End
24339  
24340      ConditionState    = MOVING
24341        Animation       = NIOFCR_SKL.NIOFCR_RNA
24342        AnimationMode   = LOOP
24343        ParticleSysBone     = None InfantryDustTrails
24344      End
24345  
24346      ; NORMAL ATTACK
24347      ;--------------------------------------------------------
24348      ; Drawing gun
24349      ConditionState  = PREATTACK_A
24350        Animation     = NIOFCR_SKL.NIOFCR_ATAST
24351        AnimationMode = ONCE
24352      End
24353      AliasConditionState = PREATTACK_A MOVING
24354      AliasConditionState = PREATTACK_A FIRING_A
24355      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
24356  
24357      ; Firing gun
24358      ConditionState  = FIRING_A
24359        Animation     = NIOFCR_SKL.NIOFCR_ATALP
24360        AnimationMode = LOOP
24361        TransitionKey = TRANS_FIRING_A
24362      End
24363      ConditionState  = BETWEEN_FIRING_SHOTS_A
24364        Animation     = NIOFCR_SKL.NIOFCR_ATALP
24365        AnimationMode = LOOP
24366        TransitionKey = TRANS_FIRING_A
24367      End
24368      AliasConditionState = RELOADING_A
24369      AliasConditionState = MOVING FIRING_A
24370      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
24371      AliasConditionState = MOVING RELOADING_A
24372  
24373      ; This transition allows him to put his gun away when he's finished attacking.
24374      TransitionState = TRANS_FIRING_A TRANS_STAND
24375        Animation     = NIOFCR_SKL.NIOFCR_ATAED
24376        AnimationMode = ONCE
24377      End
24378      ;--------------------------------------------------------
24379  
24380      ConditionState  = DYING
24381        Animation     = NIOFCR_SKL.NIOFCR_DTA
24382        Animation     = NIOFCR_SKL.NIOFCR_DTB
24383        AnimationMode = ONCE
24384        TransitionKey = TRANS_Dying
24385      End
24386  
24387      TransitionState = TRANS_Dying TRANS_Flailing
24388        Animation = NIOFCR_SKL.NIOFCR_ADTE1
24389        AnimationMode = ONCE
24390      End
24391  
24392      ConditionState = DYING EXPLODED_FLAILING
24393        Animation = NIOFCR_SKL.NIOFCR_ADTE2
24394        AnimationMode = LOOP
24395        TransitionKey = TRANS_Flailing
24396      End
24397  
24398      ConditionState = DYING EXPLODED_BOUNCING
24399        Animation = NIOFCR_SKL.NIOFCR_ADTE3
24400        AnimationMode = ONCE
24401        TransitionKey = None
24402      End
24403  
24404      ConditionState  = SPECIAL_CHEERING
24405        Animation     = NIOFCR_SKL.NIOFCR_CHA
24406        AnimationMode = LOOP
24407      End
24408  
24409      ;PARACHUTING ANIMATIONS
24410  
24411      ;@TODO - MISSING ANIMATION FILE
24412      ;ConditionState   = FREEFALL
24413      ;  Animation      = NIOFCR_SKL.NIOFCR_PFL
24414      ;  AnimationMode  = LOOP
24415      ;  TransitionKey  = TRANS_Falling
24416      ;End
24417      ;AliasConditionState = FREEFALL REALLYDAMAGED
24418      ;AliasConditionState = FREEFALL DYING
24419      ConditionState  = PARACHUTING
24420        Animation     = NIOFCR_SKL.NIOFCR_PHG
24421        AnimationMode = LOOP
24422        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
24423        TransitionKey = TRANS_Chute
24424      End
24425      AliasConditionState = PARACHUTING REALLYDAMAGED
24426      AliasConditionState = PARACHUTING DYING
24427      TransitionState = TRANS_Falling TRANS_Chute
24428        Animation     = NIOFCR_SKL.NIOFCR_POP
24429        AnimationMode = ONCE
24430        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
24431      End
24432      TransitionState = TRANS_Chute TRANS_STAND
24433        Animation     = NIOFCR_SKL.NIOFCR_PTD
24434        AnimationMode = ONCE
24435      End
24436  
24437      ;SURRENDER ANIMATIONS
24438  ; surrender is cut. sorry. (srj)
24439  ;    ConditionState  = SURRENDER
24440  ;      Animation     = NIOFCR_SKL.NIOFCR_SLP
24441  ;      AnimationMode = LOOP
24442  ;      TransitionKey = TRANS_SurrenderStand
24443  ;    End
24444  ;    ConditionState  = SURRENDER MOVING
24445  ;      Animation     = NIOFCR_SKL.NIOFCR_SWKLP
24446  ;      AnimationMode = LOOP
24447  ;      TransitionKey = TRANS_SurrenderMoving
24448  ;    End
24449  ;    TransitionState = TRANS_SurrenderStand TRANS_SurrenderMoving
24450  ;      Animation     = NIOFCR_SKL.NIOFCR_SWKST
24451  ;      AnimationMode = ONCE
24452  ;    End
24453  ;    TransitionState = TRANS_STAND TRANS_SurrenderStand
24454  ;      Animation     = NIOFCR_SKL.NIOFCR_SST
24455  ;      AnimationMode = ONCE
24456  ;    End
24457      
24458    End
24459  
24460    ; ***DESIGN parameters ***
24461    DisplayName      = OBJECT:Officer
24462    Side = China
24463    EditorSorting = INFANTRY
24464    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
24465    WeaponSet
24466      Conditions = None 
24467      Weapon = PRIMARY ChinaOfficerMachineGun
24468    End
24469    ArmorSet
24470      Conditions      = None
24471      Armor           = HumanArmor
24472      DamageFX        = InfantryDamageFX
24473    End
24474    VisionRange = 150
24475    ShroudClearingRange = 150
24476    Prerequisites
24477      Object = ChinaBarracks
24478    End
24479  
24480    BuildCost     = 400
24481    BuildTime     = 10.0          ;in seconds      
24482  
24483    ; *** AUDIO Parameters ***
24484    VoiceSelect = RedGuardVoiceSelect
24485    VoiceGroupSelect = BattleCrySound
24486    VoiceMove = RedGuardVoiceMove
24487    VoiceAttack = RedGuardVoiceAttack
24488    SoundDie = RedGuardVoiceDie
24489    SoundDieFire = DieByFireChina
24490    SoundDieToxin = DieByToxinChina
24491  
24492    ; *** ENGINEERING Parameters ***
24493    RadarPriority = UNIT
24494    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY 
24495    Body = ActiveBody ModuleTag_02
24496      MaxHealth       = 100.0
24497      InitialHealth   = 100.0
24498    End
24499  
24500    Behavior = AIUpdateInterface ModuleTag_03
24501      AutoAcquireEnemiesWhenIdle = Yes
24502    End
24503    Locomotor = SET_NORMAL BasicHumanLocomotor
24504    Behavior = PhysicsBehavior ModuleTag_04
24505      Mass = 5.0
24506    End
24507   
24508    Behavior = SquishCollide ModuleTag_06
24509      ;nothing
24510    End
24511  
24512  
24513  ; --- begin Death modules ---
24514    Behavior = SlowDeathBehavior ModuleTag_Death01
24515      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
24516      SinkDelay           = 3000
24517      SinkRate            = 0.5     ; in Dist/Sec
24518      DestructionDelay    = 8000
24519      FX                  = INITIAL FX_GIDie
24520    End
24521    Behavior = SlowDeathBehavior ModuleTag_Death02
24522      DeathTypes          = NONE +CRUSHED +SPLATTED
24523      SinkDelay           = 3000
24524      SinkRate            = 0.5     ; in Dist/Sec
24525      DestructionDelay    = 8000
24526      FX                  = INITIAL FX_GIDieCrushed
24527    End
24528    Behavior = SlowDeathBehavior ModuleTag_Death03
24529      DeathTypes          = NONE +EXPLODED
24530      SinkDelay           = 3000
24531      SinkRate            = 0.5     ; in Dist/Sec
24532      DestructionDelay    = 8000
24533      FX                  = INITIAL FX_GIDie
24534      FlingForce          = 8
24535      FlingForceVariance  = 3
24536      FlingPitch          = 60
24537      FlingPitchVariance  = 10
24538    End
24539    Behavior = SlowDeathBehavior ModuleTag_Death04
24540      DeathTypes          = NONE +BURNED
24541      DestructionDelay    = 0
24542      FX                  = INITIAL FX_GIDie
24543      OCL                 = INITIAL OCL_FlamingInfantry
24544    End
24545    Behavior = SlowDeathBehavior ModuleTag_Death05
24546      DeathTypes          = NONE +POISONED
24547      DestructionDelay    = 0
24548      FX                  = INITIAL FX_GIDie
24549      OCL                 = INITIAL OCL_ 
24550    End
24551  ; --- end Death modules ---
24552  
24553    Behavior = PoisonedBehavior ModuleTag_09
24554      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
24555      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
24556    End
24557   
24558    Geometry = CYLINDER
24559    GeometryMajorRadius = 10.0
24560    GeometryMinorRadius = 10.0
24561    GeometryHeight = 12.0
24562    GeometryIsSmall = Yes
24563    Shadow = SHADOW_DECAL
24564    ShadowSizeX = 14;
24565    ShadowSizeY = 14;
24566    ShadowTexture = ShadowI;
24567    BuildCompletion = APPEARS_AT_RALLY_POINT
24568  
24569  End
24570  
24571  ;------------------------------------------------------------------------------
24572  ;
24573  ; ??? This unit is used in a mission for "color".
24574  ; This unit is never human-controllable!
24575  ;
24576  Object AmericaInfantryOfficer
24577      ; *** ART Parameters ***
24578    Draw = W3DModelDraw ModuleTag_01
24579      OkToChangeModelColor = Yes
24580  
24581      ;NORMAL STANDING
24582      DefaultConditionState
24583        Model = AIOFCR_SKN
24584        IdleAnimation = AIOFCR_SKL.AIOFCR_STA 0 21
24585        ;Regular spice animations
24586        IdleAnimation = AIOFCR_SKL.AIOFCR_IDA
24587        IdleAnimation = AIOFCR_SKL.AIOFCR_IDB
24588        AnimationMode = ONCE
24589        WeaponFireFXBone = PRIMARY Muzzle
24590        WeaponMuzzleFlash = PRIMARY MuzzleFX
24591        TransitionKey = TRANS_STAND
24592      End
24593  
24594      ConditionState    = MOVING
24595        Animation       = AIOFCR_SKL.AIOFCR_RNA
24596        AnimationMode   = LOOP
24597        ParticleSysBone     = None InfantryDustTrails
24598      End
24599  
24600      ; NORMAL ATTACK
24601      ;--------------------------------------------------------
24602      ; Drawing gun
24603      ConditionState  = PREATTACK_A
24604        Animation     = AIOFCR_SKL.AIOFCR_ATAST
24605        AnimationMode = ONCE
24606      End
24607      AliasConditionState = PREATTACK_A MOVING
24608      AliasConditionState = PREATTACK_A FIRING_A
24609      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
24610  
24611      ; Firing gun
24612      ConditionState  = FIRING_A
24613        Animation     = AIOFCR_SKL.AIOFCR_ATALP
24614        AnimationMode = LOOP
24615        TransitionKey = TRANS_FIRING_A
24616      End
24617      ConditionState  = BETWEEN_FIRING_SHOTS_A
24618        Animation     = AIOFCR_SKL.AIOFCR_ATALP
24619        AnimationMode = LOOP
24620        TransitionKey = TRANS_FIRING_A
24621      End
24622      AliasConditionState = RELOADING_A
24623      AliasConditionState = MOVING FIRING_A
24624      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
24625      AliasConditionState = MOVING RELOADING_A
24626  
24627      ; This transition allows him to put his gun away when he's finished attacking.
24628      TransitionState = TRANS_FIRING_A TRANS_STAND
24629        Animation     = AIOFCR_SKL.AIOFCR_ATAED
24630        AnimationMode = ONCE
24631      End
24632      ;--------------------------------------------------------
24633  
24634      ConditionState  = DYING
24635        Animation     = AIOFCR_SKL.AIOFCR_DTA
24636        Animation     = AIOFCR_SKL.AIOFCR_DTB
24637        AnimationMode = ONCE
24638        TransitionKey = TRANS_Dying
24639      End
24640  
24641      TransitionState = TRANS_Dying TRANS_Flailing
24642        Animation = AIOFCR_SKL.AIOFCR_ADTE1
24643        AnimationMode = ONCE
24644      End
24645  
24646      ConditionState = DYING EXPLODED_FLAILING
24647        Animation = AIOFCR_SKL.AIOFCR_ADTE2
24648        AnimationMode = LOOP
24649        TransitionKey = TRANS_Flailing
24650      End
24651  
24652      ConditionState = DYING EXPLODED_BOUNCING
24653        Animation = AIOFCR_SKL.AIOFCR_ADTE3
24654        AnimationMode = ONCE
24655        TransitionKey = None
24656      End
24657  
24658      ConditionState  = SPECIAL_CHEERING
24659        Animation     = AIOFCR_SKL.AIOFCR_CHA
24660        AnimationMode = LOOP
24661      End
24662  
24663      ;PARACHUTING ANIMATIONS
24664  
24665      ;@TODO - MISSING ANIMATION FILE
24666      ;ConditionState   = FREEFALL
24667      ;  Animation      = AIOFCR_SKL.AIOFCR_PFL
24668      ;  AnimationMode  = LOOP
24669      ;  TransitionKey  = TRANS_Falling
24670      ;End
24671      ;AliasConditionState = FREEFALL REALLYDAMAGED
24672      ;AliasConditionState = FREEFALL DYING
24673      ConditionState  = PARACHUTING
24674        Animation     = AIOFCR_SKL.AIOFCR_PHG
24675        AnimationMode = LOOP
24676        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
24677        TransitionKey = TRANS_Chute
24678  
24679      End
24680      AliasConditionState = PARACHUTING REALLYDAMAGED
24681      AliasConditionState = PARACHUTING DYING
24682      TransitionState = TRANS_Falling TRANS_Chute
24683        Animation     = AIOFCR_SKL.AIOFCR_POP
24684        AnimationMode = ONCE
24685        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
24686      End
24687      TransitionState = TRANS_Chute TRANS_Stand
24688        Animation     = AIOFCR_SKL.AIOFCR_PTD
24689        AnimationMode = ONCE
24690      End
24691  
24692      ;SURRENDER ANIMATIONS
24693  ; surrender is cut. sorry. (srj)
24694  ;    ConditionState  = SURRENDER
24695  ;      Animation     = AIOFCR_SKL.AIOFCR_SLP
24696  ;      AnimationMode = LOOP
24697  ;      TransitionKey = TRANS_SurrenderStand
24698  ;    End
24699  ;    ConditionState  = SURRENDER MOVING
24700  ;      Animation     = AIOFCR_SKL.AIOFCR_SWKLP
24701  ;      AnimationMode = LOOP
24702  ;      TransitionKey = TRANS_SurrenderMoving
24703  ;    End
24704  ;    TransitionState = TRANS_SurrenderStand TRANS_SurrenderMoving
24705  ;      Animation     = AIOFCR_SKL.AIOFCR_SWKST
24706  ;      AnimationMode = ONCE
24707  ;    End
24708  ;    TransitionState = TRANS_Stand TRANS_SurrenderStand
24709  ;      Animation     = AIOFCR_SKL.AIOFCR_SST
24710  ;      AnimationMode = ONCE
24711  ;    End
24712      
24713    End
24714  
24715    ; ***DESIGN parameters ***
24716    DisplayName      = OBJECT:Officer
24717    Side = America
24718    EditorSorting = INFANTRY
24719    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
24720    WeaponSet
24721      Conditions = None 
24722      Weapon = PRIMARY AmericaOfficerMachineGun
24723    End
24724    ArmorSet
24725      Conditions      = None
24726      Armor           = HumanArmor
24727      DamageFX        = InfantryDamageFX
24728    End
24729    VisionRange = 150
24730    ShroudClearingRange = 150
24731  
24732    BuildCost     = 400
24733    BuildTime     = 10.0          ;in seconds      
24734  
24735    ; *** AUDIO Parameters ***
24736    VoiceSelect = RangerVoiceSelect
24737    VoiceGroupSelect = BattleCrySound
24738    VoiceMove = RangerVoiceMove
24739    VoiceAttack = RangerVoiceAttack
24740    SoundDie = RangerVoiceDie
24741    SoundDieFire = DieByFireUSA
24742    SoundDieToxin = DieByToxinChina
24743  
24744    ; *** ENGINEERING Parameters ***
24745    RadarPriority = UNIT
24746    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
24747  
24748    Body = ActiveBody ModuleTag_02
24749      MaxHealth       = 100.0
24750      InitialHealth   = 100.0
24751    End
24752  
24753    Behavior = AIUpdateInterface ModuleTag_03
24754      AutoAcquireEnemiesWhenIdle = Yes
24755    End
24756    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
24757      ScanRate = 1000 ; once a second.
24758      ScanRange = 300 ;
24759      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
24760      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
24761    End
24762  
24763    Locomotor = SET_NORMAL BasicHumanLocomotor
24764    Behavior = PhysicsBehavior ModuleTag_05
24765      Mass = 5.0
24766    End
24767   
24768    Behavior = SquishCollide ModuleTag_07
24769      ;nothing
24770    End
24771  
24772  ; --- begin Death modules ---
24773    Behavior = SlowDeathBehavior ModuleTag_Death01
24774      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
24775      SinkDelay           = 3000
24776      SinkRate            = 0.5     ; in Dist/Sec
24777      DestructionDelay    = 8000
24778      FX                  = INITIAL FX_GIDie
24779    End
24780    Behavior = SlowDeathBehavior ModuleTag_Death02
24781      DeathTypes          = NONE +CRUSHED +SPLATTED
24782      SinkDelay           = 3000
24783      SinkRate            = 0.5     ; in Dist/Sec
24784      DestructionDelay    = 8000
24785      FX                  = INITIAL FX_GIDieCrushed
24786    End
24787    Behavior = SlowDeathBehavior ModuleTag_Death03
24788      DeathTypes          = NONE +EXPLODED
24789      SinkDelay           = 3000
24790      SinkRate            = 0.5     ; in Dist/Sec
24791      DestructionDelay    = 8000
24792      FX                  = INITIAL FX_GIDie
24793      FlingForce          = 8
24794      FlingForceVariance  = 3
24795      FlingPitch          = 60
24796      FlingPitchVariance  = 10
24797    End
24798    Behavior = SlowDeathBehavior ModuleTag_Death04
24799      DeathTypes          = NONE +BURNED
24800      DestructionDelay    = 0
24801      FX                  = INITIAL FX_GIDie
24802      OCL                 = INITIAL OCL_FlamingInfantry
24803    End
24804    Behavior = SlowDeathBehavior ModuleTag_Death05
24805      DeathTypes          = NONE +POISONED
24806      DestructionDelay    = 0
24807      FX                  = INITIAL FX_GIDie
24808      OCL                 = INITIAL OCL_ToxicInfantry
24809    End
24810  ; --- end Death modules ---
24811  
24812    Behavior = PoisonedBehavior ModuleTag_10
24813      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
24814      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
24815    End
24816   
24817    Geometry = CYLINDER
24818    GeometryMajorRadius = 10.0
24819    GeometryMinorRadius = 10.0
24820    GeometryHeight = 12.0
24821    GeometryIsSmall = Yes
24822    Shadow = SHADOW_DECAL
24823    ShadowSizeX = 14;
24824    ShadowSizeY = 14;
24825    ShadowTexture = ShadowI;
24826    BuildCompletion = APPEARS_AT_RALLY_POINT
24827  
24828  End
24829  
24830  
24831  ;------------------------------------------------------------------------------
24832  Object AmericaInfantrySecretService
24833  
24834      ; *** ART Parameters ***
24835    Draw = W3DModelDraw ModuleTag_01
24836      OkToChangeModelColor = Yes
24837  
24838      DefaultConditionState
24839        Model = AISSRV_SKN
24840        IdleAnimation = AISSRV_SKL.AISSRV_STA
24841        AnimationMode = ONCE
24842        TransitionKey = TRANS_Stand
24843      End
24844    End
24845  
24846    ; ***DESIGN parameters ***
24847    DisplayName      = OBJECT:BioHazardTech
24848    Side = America
24849    EditorSorting = INFANTRY
24850    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
24851    WeaponSet
24852      Conditions = None 
24853      Weapon = PRIMARY None
24854    End
24855    ArmorSet
24856      Conditions      = None
24857      Armor           = HumanArmor
24858      DamageFX        = InfantryDamageFX
24859    End
24860    VisionRange = 150
24861    ShroudClearingRange = 150
24862    Prerequisites
24863      Object = AmericaBarracks
24864    End
24865    BuildCost = 100
24866    BuildTime = 1.0          ;in seconds    
24867  
24868    ; *** AUDIO Parameters ***
24869    VoiceSelect = RangerVoiceSelect
24870    VoiceMove = RangerVoiceMove
24871    VoiceAttack = RangerVoiceAttack
24872    SoundDie = RangerVoiceDie
24873    SoundDieFire = DieByFireUSA
24874    SoundDieToxin = DieByToxinUSA
24875  
24876    ; *** ENGINEERING Parameters ***
24877    RadarPriority = UNIT
24878    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
24879  
24880    Body = ActiveBody ModuleTag_02
24881      MaxHealth       = 50.0
24882      InitialHealth   = 50.0
24883    End
24884  
24885    Behavior = AIUpdateInterface ModuleTag_03
24886      AutoAcquireEnemiesWhenIdle = Yes
24887    End
24888    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
24889      ScanRate = 1000 ; once a second.
24890      ScanRange = 300 ;
24891      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
24892      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
24893    End
24894  
24895    Locomotor = SET_NORMAL BasicHumanLocomotor
24896    Behavior = PhysicsBehavior ModuleTag_05
24897      Mass = 5.0
24898    End
24899    Behavior = SlowDeathBehavior ModuleTag_06
24900      SinkDelay = 3000
24901      SinkRate = 0.5     ; in Dist/Sec
24902      DestructionDelay = 8000
24903    End
24904  
24905    Behavior = ExperienceScalarUpgrade ModuleTag_07
24906      TriggeredBy = Upgrade_AmericaAdvancedTraining
24907      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
24908    End
24909   
24910    Behavior = SquishCollide ModuleTag_08
24911      ;nothing
24912    End
24913  
24914  
24915    Behavior = FXListDie ModuleTag_09
24916      DeathTypes = ALL -CRUSHED -SPLATTED
24917      DeathFX = FX_GIDie
24918    End
24919    Behavior = FXListDie ModuleTag_10
24920      DeathTypes = NONE +CRUSHED +SPLATTED
24921      DeathFX = FX_GIDieCrushed
24922    End
24923  
24924    Behavior = PoisonedBehavior ModuleTag_11
24925      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
24926      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
24927    End
24928   
24929    Geometry = CYLINDER
24930    GeometryMajorRadius = 10.0
24931    GeometryMinorRadius = 10.0
24932    GeometryHeight = 12.0
24933    GeometryIsSmall = Yes
24934    Shadow = SHADOW_DECAL
24935    ShadowSizeX = 14;
24936    ShadowSizeY = 14;
24937    ShadowTexture = ShadowI;
24938    BuildCompletion = APPEARS_AT_RALLY_POINT
24939  
24940  End
24941  
24942  ;------------------------------------------------------------------------------
24943  ;
24944  ; ??? This unit is used in a mission for "color".
24945  ; This unit is never human-controllable!
24946  ; @todo srj -- is this used for ANYTHING?
24947  ;
24948  Object ChinaInfantryAgent
24949  
24950      ; *** ART Parameters ***
24951    Draw = W3DModelDraw ModuleTag_01
24952      OkToChangeModelColor = Yes
24953  
24954      ;NORMAL STANDING
24955      DefaultConditionState
24956        Model = AIRngr_SKN
24957        IdleAnimation = AIRngr_SKL.AIRngr_STA 0 21
24958        ;Regular spice animations
24959        IdleAnimation = AIRngr_SKL.AIRngr_IDA
24960        IdleAnimation = AIRngr_SKL.AIRngr_IDB
24961        AnimationMode = ONCE
24962        WeaponFireFXBone = PRIMARY Muzzle
24963        WeaponMuzzleFlash = PRIMARY MuzzleFX
24964        TransitionKey = TRANS_Stand
24965      End
24966  
24967      ; NORMAL ATTACK (Cutting fence via wirecutters)
24968      ConditionState = PREATTACK_A 
24969        Animation = AIRngr_SKL.AIRngr_ATA
24970        AnimationMode = ONCE
24971        TransitionKey = TRANS_FiringA
24972      End
24973      AliasConditionState = FIRING_A
24974      AliasConditionState = BETWEEN_FIRING_SHOTS_A
24975      AliasConditionState = RELOADING_A
24976      AliasConditionState = MOVING FIRING_A
24977      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
24978      AliasConditionState = MOVING RELOADING_A
24979      AliasConditionState = FIRING_A REALLYDAMAGED
24980      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
24981      AliasConditionState = RELOADING_A REALLYDAMAGED
24982  
24983      ; SECONDARY ATTACK (Flash-bang grenades)
24984      ConditionState = FIRING_B 
24985        Animation = AIRngr_SKL.AIRngr_ATB 
24986        AnimationMode = ONCE
24987        WeaponFireFXBone = SECONDARY Muzzle
24988        WeaponLaunchBone = SECONDARY Muzzle
24989        TransitionKey = TRANS_FiringB
24990      End
24991  
24992      AliasConditionState = BETWEEN_FIRING_SHOTS_B
24993      AliasConditionState = RELOADING_B
24994  
24995      ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
24996      AliasConditionState = MOVING FIRING_B
24997      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
24998      AliasConditionState = MOVING RELOADING_B
24999  
25000      ConditionState = MOVING
25001        Animation = AIRngr_SKL.AIRngr_RNA 15
25002        AnimationMode = LOOP
25003        Flags = RANDOMSTART
25004        TransitionKey = None
25005        ParticleSysBone     = None InfantryDustTrails
25006      End
25007  
25008      ConditionState = MOVING REALLYDAMAGED
25009        ;
25010        ; there is a new, optional number following the animation...
25011        ; it represents the distance that a single loop the animation would
25012        ; cover. (ie, maybe it has the solder taking three strides, for a 
25013        ; distance of 30 or so)
25014        ;
25015        ; how to tweak the number:
25016        ;   -- "skidding"?          reduce the number
25017        ;   -- "running in place"?  increase the number
25018        ;
25019        ; note that playing animations at abormal speeds may look odd in some cases.
25020        ; (e.g., a "limping" animation played too fast looks really odd.)
25021        ;
25022        Animation = AIRngr_SKL.AIRngr_RNB 30
25023        AnimationMode = LOOP
25024        Flags = RANDOMSTART
25025        TransitionKey = None
25026        ParticleSysBone     = None InfantryDustTrails
25027      End
25028  
25029      ConditionState = DYING
25030        Animation = AIRngr_SKL.AIRngr_DTA
25031        Animation = AIRngr_SKL.AIRngr_DTB
25032        AnimationMode = ONCE
25033        TransitionKey = None
25034      End
25035  
25036      ConditionState = SPECIAL_CHEERING
25037        Animation = AIRngr_SKL.AIRngr_CHA
25038        AnimationMode = LOOP
25039      End
25040  
25041      ;PARACHUTING ANIMATIONS
25042      ConditionState = FREEFALL
25043        Animation = AIRngr_SKL.AIRngr_PFL
25044        AnimationMode = LOOP
25045        TransitionKey = TRANS_Falling
25046      End
25047      AliasConditionState = FREEFALL REALLYDAMAGED
25048      AliasConditionState = FREEFALL DYING
25049      ConditionState = PARACHUTING
25050        Animation = AIRngr_SKL.AIRngr_PHG
25051        AnimationMode = LOOP
25052        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
25053        TransitionKey = TRANS_Chute
25054      End
25055      AliasConditionState = PARACHUTING REALLYDAMAGED
25056      AliasConditionState = PARACHUTING DYING
25057      TransitionState = TRANS_Falling TRANS_Chute
25058        Animation = AIRngr_SKL.AIRngr_POP
25059        AnimationMode = ONCE
25060        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
25061      End
25062      TransitionState = TRANS_Chute TRANS_Stand
25063        Animation = AIRngr_SKL.AIRngr_PTD
25064        AnimationMode = ONCE
25065      End
25066  
25067      ;SURRENDER ANIMATIONS
25068  ; surrender is cut. sorry. (srj)
25069  ;    ConditionState = SURRENDER
25070  ;      Animation = AIRngr_SKL.AIRngr_SST
25071  ;      AnimationMode = ONCE
25072  ;      TransitionKey = TRANS_SurrenderKneeling
25073  ;    End
25074  ;    ConditionState = SURRENDER MOVING
25075  ;      Animation = AIRngr_SKL.AIRngr_SWKB
25076  ;      AnimationMode = ONCE
25077  ;      TransitionKey = TRANS_SurrenderMoving
25078  ;      ParticleSysBone     = None InfantryDustTrails
25079  ;    End
25080  ;    TransitionState = TRANS_Stand TRANS_SurrenderKneeling
25081  ;      Animation = AIRngr_SKL.AIRngr_SUR
25082  ;      AnimationMode = ONCE
25083  ;    End
25084      
25085      ; RAPPELLING ANIMATIONS
25086      ConditionState = RAPPELLING
25087        Animation = AIRngr_SKL.AIRngr_RPL1 ;30
25088        AnimationMode = LOOP
25089        Flags = RANDOMSTART
25090        TransitionKey = TRANS_Rappelling
25091      End
25092      AliasConditionState = MOVING RAPPELLING
25093  
25094      TransitionState = TRANS_Rappelling TRANS_Stand
25095        Animation = AIRngr_SKL.AIRngr_RPL2
25096        AnimationMode = ONCE
25097      End
25098  
25099    End
25100  
25101    ; ***DESIGN parameters ***
25102    DisplayName      = OBJECT:Agent
25103    Side = China
25104    EditorSorting = INFANTRY
25105    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
25106    WeaponSet
25107      Conditions = None 
25108      Weapon = PRIMARY RedguardMachineGun
25109    End
25110  ; sorry, no stun bullets, cut for this version (srj)
25111  ;  WeaponSet
25112  ;    Conditions = PLAYER_UPGRADE
25113  ;    Weapon = PRIMARY RedguardStunBulletsMachineGun
25114  ;  End
25115    ArmorSet
25116      Conditions      = None
25117      Armor           = HumanArmor
25118      DamageFX        = InfantryDamageFX
25119    End
25120    VisionRange = 150
25121    ShroudClearingRange = 150
25122    Prerequisites
25123      Object = ChinaBarracks
25124      Object = ChinaPropagandaCenter
25125    End
25126  
25127    BuildCost     = 600
25128    BuildTime     = 20.0          ;in seconds      
25129  
25130    ExperienceValue = 50 100 150 400    ;Experience point value at each level
25131    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
25132    IsTrainable = Yes             ;Can gain experience
25133  
25134    ; *** AUDIO Parameters ***
25135    VoiceSelect = RedGuardVoiceSelect
25136    VoiceGroupSelect = BattleCrySound
25137    VoiceMove = RedGuardVoiceMove
25138    VoiceAttack = RedGuardVoiceAttack
25139    SoundDie = RedGuardVoiceDie
25140    SoundDieFire = DieByFireChina
25141    SoundDieToxin = DieByToxinChina
25142  
25143    ; *** ENGINEERING Parameters ***
25144    RadarPriority = UNIT
25145    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
25146  
25147    Body = ActiveBody ModuleTag_02
25148      MaxHealth       = 100.0
25149      InitialHealth   = 100.0
25150    End
25151  
25152    Behavior = VeterancyGainCreate ModuleTag_03
25153      StartingLevel = VETERAN
25154    End
25155  
25156    Behavior = StealthUpdate ModuleTag_04
25157      StealthDelay                = 2000 ; msec
25158      StealthForbiddenConditions  = ATTACKING
25159      FriendlyOpacityMin          = 50.0%
25160      InnateStealth               = Yes
25161      OrderIdleEnemiesToAttackMeUponReveal  = Yes
25162    End
25163  
25164    Behavior = AIUpdateInterface ModuleTag_05
25165      AutoAcquireEnemiesWhenIdle = Yes
25166    End
25167    Locomotor = SET_NORMAL BasicHumanLocomotor
25168    Behavior = PhysicsBehavior ModuleTag_06
25169      Mass = 5.0
25170    End
25171    Behavior = SlowDeathBehavior ModuleTag_07
25172      SinkDelay = 3000
25173      SinkRate = 0.5     ; in Dist/Sec
25174      DestructionDelay = 8000
25175    End
25176  
25177   
25178    Behavior = SquishCollide ModuleTag_08
25179      ;nothing
25180    End
25181  
25182  
25183    Behavior = FXListDie ModuleTag_09
25184      DeathTypes = ALL -CRUSHED -SPLATTED
25185      DeathFX = FX_GIDie
25186    End
25187    Behavior = FXListDie ModuleTag_10
25188      DeathTypes = NONE +CRUSHED +SPLATTED
25189      DeathFX = FX_GIDieCrushed
25190    End
25191  
25192    Behavior = PoisonedBehavior ModuleTag_11
25193      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
25194      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
25195    End
25196   
25197    Geometry = CYLINDER
25198    GeometryMajorRadius = 10.0
25199    GeometryMinorRadius = 10.0
25200    GeometryHeight = 12.0
25201    GeometryIsSmall = Yes
25202    Shadow = SHADOW_DECAL
25203    ShadowSizeX = 14;
25204    ShadowSizeY = 14;
25205    ShadowTexture = ShadowI;
25206    BuildCompletion = APPEARS_AT_RALLY_POINT
25207  
25208  End
25209  
25210  ;------------------------------------------------------------------------------
25211  ;The Marauder Tank, for the Warlord General.  
25212  Object GLATankMarauder
25213  
25214    ; *** ART Parameters ***
25215    SelectPortrait         = SUMarauder_L
25216    ButtonImage            = SUMarauder
25217    
25218    UpgradeCameo1 = Upgrade_GLAToxinShells
25219    UpgradeCameo2 = Upgrade_GLAJunkRepair
25220    ;UpgradeCameo3 = NONE
25221    ;UpgradeCameo4 = NONE
25222    ;UpgradeCameo5 = NONE
25223    
25224    Draw = W3DTankDraw ModuleTag_01
25225      OkToChangeModelColor = Yes
25226  
25227  ; no crate upgrade
25228      ConditionState = NONE
25229        Model = UVMarauder
25230        Turret = Turret
25231        ShowSubObject = Turret
25232        HideSubObject = TurretUp01 TurretUp02 BarrelFX01 ; Since we are showing one of three turrets, we need to then hide the subobject muzzleflash
25233        WeaponFireFXBone = PRIMARY BarrelMS
25234        WeaponRecoilBone = PRIMARY Barrel
25235        WeaponMuzzleFlash = PRIMARY BarrelFX
25236        WeaponLaunchBone = PRIMARY BarrelMS
25237      End
25238  
25239      ConditionState = REALLYDAMAGED
25240        Model = UVMarauder_d
25241        Turret = Turret
25242        ShowSubObject = Turret
25243        HideSubObject = TurretUp01 TurretUp02 BarrelFX01
25244        WeaponFireFXBone = PRIMARY BarrelMS
25245        WeaponRecoilBone = PRIMARY Barrel
25246        WeaponMuzzleFlash = PRIMARY BarrelFX
25247        WeaponLaunchBone = PRIMARY BarrelMS
25248      End
25249  
25250      ConditionState = RUBBLE
25251        Model = UVMarauder_d
25252        Turret = Turret
25253        ShowSubObject = Turret
25254        HideSubObject = TurretUp01 TurretUp02 BarrelFX01
25255        WeaponFireFXBone = PRIMARY BarrelMS
25256        WeaponRecoilBone = PRIMARY Barrel
25257        WeaponMuzzleFlash = PRIMARY BarrelFX
25258        WeaponLaunchBone = PRIMARY BarrelMS
25259      End
25260  
25261  ; crate upgrade 1
25262      ConditionState = WEAPONSET_CRATEUPGRADE_ONE
25263        Model = UVMarauder
25264        Turret = TurretUp01
25265        ShowSubObject = TurretUp01
25266        HideSubObject = Turret TurretUp02 BarrelUp01FX01
25267        WeaponFireFXBone = PRIMARY BarrelUp01MS
25268        WeaponRecoilBone = PRIMARY BarrelUp01
25269        WeaponMuzzleFlash = PRIMARY BarrelUp01FX
25270        WeaponLaunchBone = PRIMARY BarrelUp01MS
25271      End
25272  
25273      ConditionState = REALLYDAMAGED WEAPONSET_CRATEUPGRADE_ONE
25274        Model = UVMarauder_d
25275        Turret = TurretUp01
25276        ShowSubObject = TurretUp01
25277        HideSubObject = Turret TurretUp02 BarrelUp01FX01
25278        WeaponFireFXBone = PRIMARY BarrelUp01MS
25279        WeaponRecoilBone = PRIMARY BarrelUp01
25280        WeaponMuzzleFlash = PRIMARY BarrelUp01FX
25281        WeaponLaunchBone = PRIMARY BarrelUp01MS
25282      End
25283  
25284      ConditionState = RUBBLE WEAPONSET_CRATEUPGRADE_ONE
25285        Model = UVMarauder_d
25286        Turret = TurretUp01
25287        ShowSubObject = TurretUp01
25288        HideSubObject = Turret TurretUp02 BarrelUp01FX01
25289        WeaponFireFXBone = PRIMARY BarrelUp01MS
25290        WeaponRecoilBone = PRIMARY BarrelUp01
25291        WeaponMuzzleFlash = PRIMARY BarrelUp01FX
25292        WeaponLaunchBone = PRIMARY BarrelUp01MS
25293      End
25294  
25295  ; crate upgrade 2
25296      ConditionState = WEAPONSET_CRATEUPGRADE_TWO
25297        Model = UVMarauder
25298        Turret = TurretUp02
25299        ShowSubObject = TurretUp02
25300        HideSubObject = Turret TurretUp01 BarrelUp02FX01 BarrelUp02FX02
25301        WeaponFireFXBone = PRIMARY BarrelUp02MS
25302        WeaponRecoilBone = PRIMARY BarrelUp02
25303        WeaponMuzzleFlash = PRIMARY BarrelUp02FX
25304        WeaponLaunchBone = PRIMARY BarrelUp02MS
25305      End
25306  
25307      ConditionState = REALLYDAMAGED WEAPONSET_CRATEUPGRADE_TWO
25308        Model = UVMarauder_d
25309        Turret = TurretUp02
25310        ShowSubObject = TurretUp02
25311        HideSubObject = Turret TurretUp01 BarrelUp02FX01 BarrelUp02FX02
25312        WeaponFireFXBone = PRIMARY BarrelUp02MS
25313        WeaponRecoilBone = PRIMARY BarrelUp02
25314        WeaponMuzzleFlash = PRIMARY BarrelUp02FX
25315        WeaponLaunchBone = PRIMARY BarrelUp02MS
25316      End
25317  
25318      ConditionState = RUBBLE WEAPONSET_CRATEUPGRADE_TWO
25319        Model = UVMarauder_d
25320        Turret = TurretUp02
25321        ShowSubObject = TurretUp02
25322        HideSubObject = Turret TurretUp01 BarrelUp02FX01 BarrelUp02FX02
25323        WeaponFireFXBone = PRIMARY BarrelUp02MS
25324        WeaponRecoilBone = PRIMARY BarrelUp02
25325        WeaponMuzzleFlash = PRIMARY BarrelUp02FX
25326        WeaponLaunchBone = PRIMARY BarrelUp02MS
25327      End
25328  
25329      TrackMarks = EXTnkTrack.tga
25330      TreadAnimationRate = 2.0;  amount of tread texture to move per second
25331      TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
25332      TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
25333  
25334    End
25335  
25336    ; ***DESIGN parameters ***
25337    DisplayName           = OBJECT:Marauder
25338    Side                  = GLA
25339    EditorSorting         = VEHICLE
25340    TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
25341    WeaponSet
25342      Conditions = None 
25343      Weapon = PRIMARY MarauderTankGun
25344    End
25345    WeaponSet
25346      Conditions = CRATEUPGRADE_ONE
25347      Weapon = PRIMARY MarauderTankGunUpgradeOne
25348  
25349    End
25350    WeaponSet
25351      Conditions = CRATEUPGRADE_TWO 
25352      Weapon = PRIMARY MarauderTankGunUpgradeTwo
25353    End
25354    ArmorSet
25355      Conditions      = None
25356      Armor           = TankArmor
25357      DamageFX        = TankDamageFX
25358    End
25359    BuildCost       = 800
25360    BuildTime       = 10.0          ;in seconds    
25361    VisionRange     = 125
25362    ShroudClearingRange = 300
25363    Prerequisites
25364      Object = GLAArmsDealer
25365      Science = SCIENCE_MarauderTank
25366    End
25367  
25368    ExperienceValue = 100 100 200 300    ;Experience point value at each level
25369    ExperienceRequired = 0 200 300 600  ;Experience points needed to gain each level
25370    IsTrainable = Yes             ;Can gain experience
25371    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
25372    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
25373    CommandSet           = GLATankMarauderCommandSet
25374  
25375    ; *** AUDIO Parameters ***
25376    VoiceSelect = MarauderTankVoiceSelect
25377    VoiceMove = MarauderTankVoiceMove
25378    VoiceGuard = MarauderTankVoiceMove
25379    VoiceAttack = MarauderTankVoiceAttack
25380    SoundMoveStart = MarauderTankMoveStart
25381    SoundMoveStartDamaged = MarauderTankMoveStart
25382  
25383    UnitSpecificSounds
25384      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
25385      VoiceCreate     = MarauderTankVoiceCreate
25386      ;TurretMoveStart = NoSound
25387      TurretMoveLoop = TurretMoveLoop
25388      VoiceSalvage = MarauderTankVoiceSalvage      
25389      VoiceCrush = MarauderTankVoiceCrush
25390      VoiceEnter = MarauderTankVoiceMove
25391    End
25392  
25393    ; *** ENGINEERING Parameters ***
25394    RadarPriority = UNIT
25395    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE
25396  
25397    Body = ActiveBody ModuleTag_02
25398      MaxHealth       = 490.0  ;was 430.0
25399      InitialHealth   = 490.0
25400    End
25401  
25402    Behavior = AIUpdateInterface ModuleTag_03
25403      AutoAcquireEnemiesWhenIdle = Yes
25404    End
25405    Locomotor = SET_NORMAL MarauderLocomotor
25406    Behavior = PhysicsBehavior ModuleTag_04
25407      Mass = 50.0
25408    End
25409    Behavior = AutoHealBehavior ModuleTag_05
25410      HealingAmount = 2
25411      HealingDelay = 1000 ; msec
25412      TriggeredBy = Upgrade_GLAJunkRepair
25413    End
25414  
25415    ; Catch fire, and explode death
25416    Behavior = SlowDeathBehavior ModuleTag_06
25417      DeathTypes = ALL -CRUSHED -SPLATTED
25418      ProbabilityModifier = 50
25419      DestructionDelay = 1000
25420      DestructionDelayVariance = 300
25421      FX  = INITIAL  FX_CrusaderCatchFire
25422      OCL = FINAL    OCL_MaruaderTankDeathEffect  
25423      FX  = FINAL    FX_BattleMasterExplosionOneFinal
25424    End
25425  
25426    Behavior = CreateCrateDie ModuleTag_07
25427      CrateData = SalvageCrateData
25428      ;CrateData = EliteTankCrateData
25429      ;CrateData = HeroicTankCrateData
25430    End
25431    
25432    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
25433      DetectionRate             = 500
25434      DetectionRange           = 75
25435      CanDetectWhileGarrisoned  = No
25436      CanDetectWhileContained   = No
25437      ExtraRequiredKindOf       = BOAT
25438    End
25439  
25440    Behavior                 = TransitionDamageFX ModuleTag_08
25441      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
25442      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
25443    End
25444    
25445    ; A crushing defeat
25446    Behavior = FXListDie ModuleTag_09
25447      DeathTypes = NONE +CRUSHED +SPLATTED
25448      DeathFX = FX_CarCrush
25449    End
25450  
25451    Behavior = FlammableUpdate ModuleTag_21
25452      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
25453      AflameDamageAmount = 3       ; taking this much damage...
25454      AflameDamageDelay = 500       ; this often.
25455    End
25456  
25457    Geometry = BOX
25458    GeometryMajorRadius = 17.0
25459    GeometryMinorRadius = 10.0
25460    GeometryHeight = 9.5     
25461    GeometryIsSmall = Yes 
25462    Shadow = SHADOW_VOLUME   
25463    ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
25464  
25465  End
25466  
25467  ;------------------------------------------------------------------------------
25468  Object ChinaInfantryHacker
25469  
25470    ; *** ART Parameters ***
25471    SelectPortrait         = SNHacker2_L
25472    ButtonImage            = SNHacker2
25473    
25474    ;UpgradeCameo1 = NONE
25475    ;UpgradeCameo2 = NONE
25476    ;UpgradeCameo3 = NONE
25477    ;UpgradeCameo4 = NONE
25478    ;UpgradeCameo5 = NONE
25479  
25480    Draw = W3DModelDraw ModuleTag_01
25481      OkToChangeModelColor = Yes
25482  
25483      ;NORMAL STANDING
25484      DefaultConditionState
25485        Model = NIHCKR_SKN
25486        IdleAnimation = NIHCKR_SKL.NIHCKR_STA 0 25
25487        ;Regular spice animations
25488        IdleAnimation = NIHCKR_SKL.NIHCKR_IDA
25489        IdleAnimation = NIHCKR_SKL.NIHCKR_IDB
25490        AnimationMode = ONCE
25491        WeaponFireFXBone = PRIMARY Bone_SatCom
25492        TransitionKey = TRANS_Stand
25493      End
25494      AliasConditionState = REALLYDAMAGED
25495  
25496      ConditionState = MOVING
25497        Animation = NIHCKR_SKL.NIHCKR_RNA 14
25498        AnimationMode = LOOP
25499        Flags = RANDOMSTART
25500        TransitionKey = None
25501        ParticleSysBone   = None InfantryDustTrails
25502      End
25503      AliasConditionState = MOVING UNPACKING
25504      AliasConditionState = MOVING UNPACKING REALLYDAMAGED
25505  
25506      ConditionState = UNPACKING
25507        Animation = NIHCKR_SKL.NIHCKR_ATB1
25508        AnimationMode = ONCE
25509      End
25510      AliasConditionState = UNPACKING FIRING_A
25511      AliasConditionState = UNPACKING REALLYDAMAGED
25512      AliasConditionState = UNPACKING FIRING_A REALLYDAMAGED
25513  
25514      ;HACKING ATTACK
25515      ConditionState = FIRING_A
25516        Animation = NIHCKR_SKL.NIHCKR_ATB2
25517        AnimationMode = LOOP
25518        TransitionKey = TRANS_FiringA
25519      End
25520      AliasConditionState = FIRING_A REALLYDAMAGED
25521  
25522      ConditionState = PACKING
25523        Animation = NIHCKR_SKL.NIHCKR_ATB3
25524        AnimationMode = ONCE
25525      End
25526      AliasConditionState = PACKING FIRING_A
25527      AliasConditionState = PACKING REALLYDAMAGED
25528      AliasConditionState = PACKING FIRING_A REALLYDAMAGED
25529  
25530  
25531  
25532      TransitionState = TRANS_FiringA TRANS_Stand ; I was stopped by a stop command, so I get no proper PACKING state
25533        Animation = NIHCKR_SKL.NIHCKR_ATB3
25534        AnimationMode = ONCE
25535      End
25536  
25537  
25538      ConditionState = FREEFALL
25539        Animation = NIHCKR_SKL.NIHCKR_PFL
25540        AnimationMode = LOOP
25541        TransitionKey = TRANS_Falling
25542      End
25543      AliasConditionState = FREEFALL REALLYDAMAGED
25544      AliasConditionState = FREEFALL DYING
25545  
25546      ConditionState = PARACHUTING
25547        Animation = NIHCKR_SKL.NIHCKR_PHG
25548        AnimationMode = LOOP
25549        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
25550        TransitionKey = TRANS_Chute
25551      End
25552      AliasConditionState = PARACHUTING REALLYDAMAGED
25553      AliasConditionState = PARACHUTING DYING
25554  
25555  
25556      ConditionState = DYING
25557        Animation = NIHCKR_SKL.NIHCKR_DTA
25558        Animation = NIHCKR_SKL.NIHCKR_DTB
25559        AnimationMode = ONCE
25560        TransitionKey = TRANS_Dying
25561      End
25562  
25563      TransitionState = TRANS_Dying TRANS_Flailing
25564        Animation = NIHCKR_SKL.NIHCKR_ADTG1
25565        AnimationMode = ONCE
25566      End
25567  
25568      ConditionState = DYING EXPLODED_FLAILING
25569        Animation = NIHCKR_SKL.NIHCKR_ADTG2
25570        AnimationMode = LOOP
25571        TransitionKey = TRANS_Flailing
25572      End
25573  
25574      ConditionState = DYING EXPLODED_BOUNCING
25575        Animation = NIHCKR_SKL.NIHCKR_ADTG3
25576        AnimationMode = ONCE
25577        TransitionKey = None
25578      End
25579  
25580      ConditionState = SPECIAL_CHEERING
25581        Animation = NIHCKR_SKL.NIHCKR_CHA
25582        AnimationMode = LOOP
25583      End
25584  
25585  ; surrender is cut. sorry. (srj)
25586  ;    ConditionState = SURRENDER
25587  ;      Animation = NIHCKR_SKL.NIHCKR_SST
25588  ;      AnimationMode = ONCE
25589  ;      TransitionKey = TRANS_SurrenderKneeling
25590  ;    End
25591  ;    ;@TODO -- ANIMATION FILE MISSING
25592  ;    ;ConditionState = SURRENDER MOVING
25593  ;    ;  Animation = NIHCKR_SKL.NIHCKR_SWKB
25594  ;    ;  AnimationMode = ONCE
25595  ;    ;  TransitionKey = TRANS_SurrenderMoving
25596  ;    ;End
25597  ;    TransitionState = TRANS_Stand TRANS_SurrenderKneeling
25598  ;      Animation = NIHCKR_SKL.NIHCKR_SUR
25599  ;      AnimationMode = ONCE
25600  ;    End
25601  
25602  
25603      TransitionState = TRANS_Falling TRANS_Chute
25604        Animation = NIHCKR_SKL.NIHCKR_POP
25605        AnimationMode = ONCE
25606        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
25607      End
25608  
25609      TransitionState = TRANS_Chute TRANS_Stand
25610        Animation = NIHCKR_SKL.NIHCKR_PTD
25611        AnimationMode = ONCE
25612      End
25613  
25614    End
25615  
25616    ; ***DESIGN parameters ***
25617    DisplayName      = OBJECT:Hacker
25618    Side = China
25619    EditorSorting = INFANTRY
25620    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
25621  
25622    ArmorSet
25623      Conditions      = None
25624      Armor           = HumanArmor
25625      DamageFX        = InfantryDamageFX
25626    End
25627    VisionRange = 150
25628    ShroudClearingRange = 300
25629    Prerequisites
25630      Object = ChinaBarracks
25631      Object = ChinaPropagandaCenter
25632    End
25633    BuildCost = 625
25634    BuildTime = 20.0          ;in seconds    
25635    ExperienceValue = 50 100 150 400    ;Experience point value at each level
25636    ExperienceRequired = 0 100 300 500  ;Experience points needed to gain each level
25637    IsTrainable = Yes             ;Can gain experience
25638  
25639    CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
25640    CommandSet      = ChinaInfantryHackerCommandSet
25641  
25642    ; *** AUDIO Parameters ***
25643    VoiceSelect = HackerVoiceSelect
25644    VoiceMove = HackerVoiceMove
25645    VoiceAttack = HackerVoiceAttack
25646    SoundDie = HackerVoiceDie
25647    SoundDieFire = DieByFireChina
25648    SoundDieToxin = DieByToxinChina
25649    VoiceGuard = HackerVoiceMove
25650  ; surrender is cut. sorry. (srj)
25651  ;  VoiceSurrender = HackerVoiceMove
25652    VoiceFear = HackerVoiceFear
25653    VoiceTaskComplete = HackerVoiceHackComplete
25654    UnitSpecificSounds
25655      VoiceGarrison = HackerVoiceGarrison
25656      VoiceCreate     = HackerVoiceCreate
25657      UnitPack        = HackerPack
25658      UnitUnpack      = HackerUnpack
25659      UnitCashPing    = HackerCashPing
25660      VoiceEnter = HackerVoiceMove
25661      VoiceEnterHostile = HackerVoiceMove
25662      VoiceGetHealed      = HackerVoiceMove
25663      VoiceHackInternet   = HackerVoiceModeInternet
25664    End
25665  
25666    ; *** ENGINEERING Parameters ***
25667    RadarPriority = UNIT
25668    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE IGNORES_SELECT_ALL
25669  
25670    Body = ActiveBody ModuleTag_02
25671      MaxHealth       = 100.0
25672      InitialHealth   = 100.0
25673    End
25674  
25675    Behavior = HackInternetAIUpdate ModuleTag_03
25676      UnpackTime          = 7300 ;animation time is 7300 (changing this will scale anim speed)
25677      PackTime            = 5133 ;animation time is 5133 (changing this will scale anim speed)
25678      CashUpdateDelay     = 2000
25679      RegularCashAmount   = 5
25680      VeteranCashAmount   = 6
25681      EliteCashAmount     = 8
25682      HeroicCashAmount    = 10
25683      XpPerCashUpdate     = 1
25684      PackUnpackVariationFactor = 0.5 ;Adds + or - 20% to pack and unpack time randomly.
25685    End
25686    Locomotor = SET_NORMAL BasicHumanLocomotor
25687   
25688    Behavior = SpecialAbility ModuleTag_04
25689      SpecialPowerTemplate = SpecialAbilityHackerDisableBuilding
25690      UpdateModuleStartsAttack = Yes
25691      InitiateSound         = HackerVoiceHack
25692    End
25693  
25694    Behavior = SpecialAbilityUpdate ModuleTag_05
25695      SpecialPowerTemplate = SpecialAbilityHackerDisableBuilding
25696      StartAbilityRange = 150.0
25697      UnpackTime      = 7300 ;animation time is 7300 (changing this will scale anim speed)
25698      PackTime        = 5133 ;animation time is 5133 (changing this will scale anim speed)
25699      PreparationTime = 3000
25700  
25701      ;PersistentPrepTime = 500 ; old setting
25702      PersistentPrepTime = 333 ; NOTE! This drives how often the disable effect gets triggered
25703                               ; This is also how often a new particle system effect is spawned
25704      EffectDuration = 2000
25705      SpecialObject = BinaryDataStream
25706      DisableFXParticleSystem = DisabledEffectBinaryShower0
25707      PackSound       = HackerPack
25708      UnpackSound     = HackerUnpack
25709      PrepSoundLoop   = HackerPrepLoop
25710      AwardXPForTriggering  = 0    ;Careful, this is persistant so it's a DoT xp gain!
25711      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
25712    End
25713  
25714  
25715    Behavior = PhysicsBehavior ModuleTag_06
25716      Mass = 5.0
25717    End
25718  
25719    Behavior = SquishCollide ModuleTag_08
25720      ;nothing
25721    End
25722  
25723  
25724  ; --- begin Death modules ---
25725    Behavior = SlowDeathBehavior ModuleTag_Death01
25726      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
25727      SinkDelay           = 3000
25728      SinkRate            = 0.5     ; in Dist/Sec
25729      DestructionDelay    = 8000
25730      FX                  = INITIAL FX_GIDie
25731    End
25732    Behavior = SlowDeathBehavior ModuleTag_Death02
25733      DeathTypes          = NONE +CRUSHED +SPLATTED
25734      SinkDelay           = 3000
25735      SinkRate            = 0.5     ; in Dist/Sec
25736      DestructionDelay    = 8000
25737      FX                  = INITIAL FX_GIDieCrushed
25738    End
25739    Behavior = SlowDeathBehavior ModuleTag_Death03
25740      DeathTypes          = NONE +EXPLODED
25741      SinkDelay           = 3000
25742      SinkRate            = 0.5     ; in Dist/Sec
25743      DestructionDelay    = 8000
25744      FX                  = INITIAL FX_GIDie
25745      FlingForce          = 8
25746      FlingForceVariance  = 3
25747      FlingPitch          = 60
25748      FlingPitchVariance  = 10
25749    End
25750    Behavior = SlowDeathBehavior ModuleTag_Death04
25751      DeathTypes          = NONE +BURNED
25752      DestructionDelay    = 0
25753      FX                  = INITIAL FX_GIDie
25754      OCL                 = INITIAL OCL_FlamingInfantry
25755    End
25756    Behavior = SlowDeathBehavior ModuleTag_Death05
25757      DeathTypes          = NONE +POISONED
25758      DestructionDelay    = 0
25759      FX                  = INITIAL FX_GIDie
25760      OCL                 = INITIAL OCL_ToxicInfantry
25761    End
25762    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
25763      DeathTypes          = NONE +POISONED_BETA
25764      DestructionDelay    = 0
25765      FX                  = INITIAL FX_GIDie
25766      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
25767    End
25768  ; --- end Death modules ---
25769  
25770    Behavior = PoisonedBehavior ModuleTag_11
25771      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
25772      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
25773    End
25774   
25775    Geometry = CYLINDER
25776    GeometryMajorRadius = 10.0
25777    GeometryMinorRadius = 10.0
25778    GeometryHeight = 12.0
25779    GeometryIsSmall = Yes
25780    Shadow = SHADOW_DECAL
25781    ShadowSizeX = 14;
25782    ShadowSizeY = 14;
25783    ShadowTexture = ShadowI;
25784    BuildCompletion = APPEARS_AT_RALLY_POINT
25785  
25786  End
25787  
25788  ;------------------------------------------------------------------------------
25789  ;GLA Radar Van
25790  Object GLAVehicleRadarVan
25791  
25792    ; *** ART Parameters ***
25793    SelectPortrait         = SURadarVan_L
25794    ButtonImage            = SURadarVan
25795    
25796    UpgradeCameo1 = Upgrade_GLARadarVanScan
25797    UpgradeCameo2 = Upgrade_GLAJunkRepair
25798    ;UpgradeCameo3 = NONE
25799    ;UpgradeCameo4 = NONE
25800    ;UpgradeCameo5 = NONE
25801    
25802    Draw = W3DTruckDraw ModuleTag_01
25803      OkToChangeModelColor = Yes
25804  
25805      DefaultConditionState
25806        Model = UVRadarVan
25807        Animation = UVRadarVan.UVRadarVan
25808        AnimationMode = LOOP
25809      End
25810      
25811      ConditionState = REALLYDAMAGED
25812        Model = UVRadarVan_D
25813        Animation = UVRadarVan_D.UVRadarVan_D
25814        AnimationMode = LOOP
25815      End
25816      
25817      ConditionState = RUBBLE
25818        Model = UVRadarVan_D
25819        Animation = UVRadarVan_D.UVRadarVan_D
25820        AnimationMode = LOOP
25821      End
25822      
25823      TrackMarks       = EXTireTrack.tga
25824      Dust           = TechnicalDust
25825      DirtSpray       = RocketBuggyDirtSpray
25826      PowerslideSpray = RocketBuggyDirtPowerSlide
25827  
25828      ; These parameters are only used if the model has a separate suspension, 
25829      ; and the locomotor has HasSuspension = Yes.
25830      LeftFrontTireBone = Tire01
25831      RightFrontTireBone = Tire02
25832      LeftRearTireBone = Tire03
25833      RightRearTireBone = Tire04
25834      TireRotationMultiplier = 0.2   ; this * speed = rotation.
25835      PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
25836    End
25837  
25838    ; ***DESIGN parameters ***
25839    DisplayName      = OBJECT:RadarVan
25840    Side = GLA
25841    EditorSorting   = VEHICLE
25842    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
25843    ArmorSet
25844      Conditions      = None
25845      Armor           = TruckArmor
25846      DamageFX        = TankDamageFX
25847    End
25848    BuildCost       = 500
25849    BuildTime       = 10.0          ;in seconds    
25850    VisionRange     = 200
25851    ShroudClearingRange = 500
25852    Prerequisites
25853      Object = GLAArmsDealer
25854    End
25855    IsTrainable = No
25856    CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
25857    CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
25858    CommandSet      = GLAVehicleRadarVanCommandSet
25859  
25860    ; *** AUDIO Parameters ***
25861    VoiceSelect = RadarVanVoiceSelect
25862    VoiceMove = RadarVanVoiceMove
25863    VoiceAttack = RadarVanVoiceMove
25864    SoundMoveStart = RadarVanMoveStart
25865    SoundMoveStartDamaged = RadarVanMoveStart
25866  
25867    UnitSpecificSounds
25868      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
25869      VoiceCreate     = RadarVanVoiceCreate
25870      TurretMoveStart = NoSound
25871      TurretMoveLoop = TurretMoveLoop  
25872    ; Required for the W3DTruckDraw module
25873      TruckLandingSound = NoSound ;RocketBuggyLand
25874      TruckPowerslideSound = NoSound ;RocketBuggyPowerslide
25875      VoiceCrush      = RadarVanVoiceCrush
25876      VoiceEnter = RadarVanVoiceMove
25877    End
25878  
25879    ; *** ENGINEERING Parameters ***
25880    RadarPriority = UNIT
25881    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE IGNORES_SELECT_ALL
25882  
25883    Body = ActiveBody ModuleTag_02
25884      MaxHealth       = 200
25885      InitialHealth   = 200
25886    End
25887  
25888    ExperienceValue     = 20 20 20 20  ; Experience point value at each level
25889  
25890    Behavior = GrantUpgradeCreate ModuleTag_03
25891      UpgradeToGrant     = Upgrade_GLARadar
25892    End
25893    Behavior        = RadarUpgrade ModuleTag_05
25894      TriggeredBy   = Upgrade_GLARadar
25895      DisableProof  = Yes ; Won't be disabled by power low
25896    End
25897  
25898    Behavior           = OCLSpecialPower ModuleTag_06
25899      SpecialPowerTemplate = SpecialPowerRadarVanScan
25900      OCL                  = SUPERWEAPON_RadarVanScan
25901      CreateLocation       = CREATE_AT_LOCATION
25902      StartsPaused         = Yes ; Unpaused by upgrade module
25903    End
25904  
25905    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_07
25906      SpecialPowerTemplate = SpecialPowerRadarVanScan
25907      TriggeredBy = Upgrade_GLARadarVanScan
25908    End
25909  
25910    ;Of course, the developers HAD to remove the code :|
25911    ;Behavior               = TechRadioStationRadioJam ModuleTag_12
25912    ;  SpecialPowerTemplate = SpecialWeaponRadioJam
25913    ;  StunDistance         = 200.0  ; distance to stun from center of click
25914    ;  HeldTime             = 15000
25915    ;End
25916  
25917    Behavior = AutoHealBehavior ModuleTag_08
25918      HealingAmount = 2
25919      HealingDelay = 1000 ; msec
25920      TriggeredBy = Upgrade_GLAJunkRepair
25921    End
25922  
25923    Behavior = AIUpdateInterface ModuleTag_09
25924      Turret
25925        TurretTurnRate = 100
25926        ControlledWeaponSlots = PRIMARY
25927      End
25928    End
25929    Locomotor = SET_NORMAL RadarVanLocomotor
25930  
25931    Behavior = PhysicsBehavior ModuleTag_10
25932      Mass = 50.0
25933    End
25934  
25935  ; The default explosion
25936    Behavior = SlowDeathBehavior  ModuleTag_11
25937      DeathTypes = ALL -CRUSHED -SPLATTED
25938      ProbabilityModifier = 5
25939      ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
25940      DestructionDelay = 0
25941      DestructionDelayVariance = 200
25942      FX = FINAL FX_BuggyNewDeathExplosion
25943      OCL = FINAL OCL_RadarVanDeathEffect
25944    End
25945  
25946  
25947    Behavior = FlammableUpdate ModuleTag_13
25948      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
25949      AflameDamageAmount = 3       ; taking this much damage...
25950      AflameDamageDelay = 500       ; this often.
25951    End
25952  
25953    Behavior = DestroyDie ModuleTag_14
25954      DeathTypes = NONE +CRUSHED +SPLATTED
25955    End
25956    Behavior = CreateCrateDie ModuleTag_15
25957      CrateData = SalvageCrateData
25958      ;CrateData = EliteTankCrateData
25959      ;CrateData = HeroicTankCrateData
25960    End
25961  
25962    Behavior = StealthDetectorUpdate ModuleTag_16
25963      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
25964      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
25965      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
25966      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
25967    End
25968  
25969    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
25970      DetectionRate             = 500
25971      DetectionRange           = 75
25972      CanDetectWhileGarrisoned  = No
25973      CanDetectWhileContained   = No
25974      ExtraRequiredKindOf       = BOAT
25975    End
25976  
25977    ; A crushing defeat
25978    Behavior = FXListDie ModuleTag_17
25979      DeathTypes = NONE +CRUSHED +SPLATTED
25980      DeathFX = FX_CarCrush
25981    End
25982    Behavior = CreateObjectDie ModuleTag_18
25983      DeathTypes = NONE +CRUSHED +SPLATTED
25984      CreationList = OCL_CrusaderTank_CrushEffect
25985    End
25986  
25987    Behavior                 = TransitionDamageFX ModuleTag_19
25988      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
25989      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_CrusaderDamageTransition
25990    End
25991    
25992    Geometry = BOX
25993    GeometryMajorRadius = 16.0
25994    GeometryMinorRadius = 6.0
25995    GeometryHeight = 12.5     
25996    GeometryIsSmall = Yes    
25997    Shadow = SHADOW_VOLUME
25998    ShadowSizeX = 45  ;minimum elevation angle above horizon. Used to limit shadow length
25999  
26000  End
26001  
26002  
26003  ;------------------------------------------------------------------------------
26004  Object AmericaVehicleBattleShip
26005  
26006    ; *** ART Parameters ***
26007    Draw                   = W3DTankDraw ModuleTag_01
26008      OkToChangeModelColor = Yes
26009      InitialRecoilSpeed   = 120
26010      MaxRecoilDistance    = 8
26011      RecoilSettleSpeed    = 6
26012      ConditionState       = NONE
26013        Model              = AVBattleSh
26014        Animation          = AVBattleSh.AVBattleSh
26015        AnimationMode      = LOOP
26016        Turret             = Turret01
26017        TurretPitch        = TurretEL01
26018        TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
26019        AltTurret          = Turret02
26020        AltTurretPitch     = TurretEL02
26021        WeaponFireFXBone   = PRIMARY Tur1Muzzle
26022        WeaponRecoilBone   = PRIMARY Tur1Barrel
26023        WeaponFireFXBone   = SECONDARY Tur2Muzzle
26024        WeaponRecoilBone   = SECONDARY Tur2Barrel
26025  ;      ParticleSysBone   = TreadFX01 WaveSpray01
26026  ;      ParticleSysBone   = TreadFX02 WaveSpray01
26027  ;      ParticleSysBone   = TreadFX03 WaveSpray01
26028  ;      ParticleSysBone   = TreadFX04 WaveSpray01
26029  ;      ParticleSysBone   = TreadFX05 WaveSpray01
26030  ;      ParticleSysBone   = TreadFX06 WaveSpray01
26031  ;      ParticleSysBone   = TreadFX07 WaveSpray01
26032  ;      ParticleSysBone   = TreadFX08 WaveSpray01
26033  ;      ParticleSysBone   = TreadFX09 WaveSpray01
26034  ;      ParticleSysBone   = TreadFX10 WaveSpray01
26035  ;      ParticleSysBone   = TreadFX11 WaveSpray01
26036  ;      ParticleSysBone   = TreadFX12 WaveSpray01
26037      End
26038    End
26039  
26040    ; ***DESIGN parameters ***
26041    DisplayName            = OBJECT:Battleship
26042    Side                   = America
26043    EditorSorting          = VEHICLE
26044    TransportSlotCount     = 0                 ;how many "slots" we take in a transport (0 == not transportable)
26045    WeaponSet
26046      Conditions           = None 
26047      Weapon               = PRIMARY BattleshipBogusGun
26048      Weapon               = SECONDARY BattleshipBogusGun
26049    End
26050    ArmorSet
26051      Conditions           = None
26052      Armor                = InvulnerableArmor
26053    End
26054    VisionRange            = 300
26055    ShroudClearingRange = 300
26056  
26057    ; *** AUDIO Parameters ***
26058    SoundAmbient           = BattleshipAmbientLoop
26059  
26060    UnitSpecificSounds
26061      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
26062      TurretMoveLoop       = TurretMoveLoop
26063    End
26064  
26065    ; *** ENGINEERING Parameters ***
26066    RadarPriority          = UNIT
26067    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE
26068  
26069    Body = ActiveBody ModuleTag_02
26070      MaxHealth            = 99999.0
26071      InitialHealth        = 99999.0
26072    End
26073    Behavior = AIUpdateInterface ModuleTag_03
26074      Turret
26075        TurretTurnRate     = 80
26076        TurretPitchRate    = 80
26077        FirePitch          = 12            ; Instead of aiming pitchwise at the target, it will aim here
26078        AllowsPitch        = Yes
26079        RecenterTime       = 5000       ; how long to wait during idle before recentering
26080        ControlledWeaponSlots = PRIMARY
26081        NaturalTurretAngle = 180  ; this turret points backwards normally
26082      End
26083      AltTurret
26084        TurretTurnRate     = 80
26085        TurretPitchRate    = 80
26086        FirePitch          = 15          ; Instead of aiming pitchwise at the target, it will aim here
26087        AllowsPitch        = Yes
26088        RecenterTime       = 5000     ; how long to wait during idle before recentering
26089        ControlledWeaponSlots = SECONDARY
26090      End
26091    End
26092    Locomotor = SET_NORMAL None
26093  
26094    Behavior               = PhysicsBehavior ModuleTag_04
26095      Mass                 = 5000.0
26096    End
26097  
26098    Geometry               = BOX
26099    GeometryMajorRadius    = 200.0
26100    GeometryMinorRadius    = 20.0
26101    GeometryHeight         = 40     
26102    GeometryIsSmall        = No 
26103    Shadow                 = SHADOW_VOLUME   
26104  
26105  End
26106  
26107  ;------------------------------------------------------------------------------
26108  ; an invisible object that exists solely for the Battleship to target.
26109  Object AmericaBattleshipBogusTarget
26110  
26111    ; *** ART Parameters ***
26112    Draw = W3DModelDraw ModuleTag_01
26113      DefaultConditionState
26114        Model = None
26115      End    
26116    End
26117  
26118    ; ***DESIGN parameters ***
26119    EditorSorting   = STRUCTURE
26120    Side            = America
26121    ArmorSet
26122      Conditions      = None
26123      Armor           = InvulnerableArmor
26124      DamageFX        = None
26125    End
26126  
26127    ; *** ENGINEERING Parameters ***  
26128    RadarPriority       = NOT_ON_RADAR
26129    KindOf              = IMMOBILE
26130  
26131    Body                = ImmortalBody ModuleTag_02
26132      MaxHealth         = 99999.0
26133      InitialHealth     = 99999.0
26134    End
26135  
26136    Behavior = FireWeaponWhenDamagedBehavior ModuleTag_03
26137      StartsActive = Yes
26138      ReactionWeaponPristine = BattleshipTargetDamagedWeapon
26139      ReactionWeaponDamaged = BattleshipTargetDamagedWeapon
26140      ReactionWeaponReallyDamaged = BattleshipTargetDamagedWeapon
26141      DamageTypes = ALL
26142  ;
26143  ; want this object to "explode" (ie, fire BattleshipTargetDamagedWeapon)
26144  ; when targeted by the gun? change DamageAmount to zero. (normally the gun
26145  ; does a nonzero but tiny damage, due to the InvulnerableArmor we wear, so
26146  ; this weapon isn't fired... to trigger it, you must do damage under Script
26147  ; control, which ignores our armor.)
26148  ;
26149      DamageAmount = 1  ; if damage is >= this value, fire the weapon
26150    End
26151  
26152    Geometry            = SPHERE
26153    GeometryMajorRadius = 10.0
26154    GeometryIsSmall     = Yes
26155  
26156  End
26157  
26158  
26159  ;------------------------------------------------------------------------------
26160  ; **data here is a copy and paste of AmericaVehicleBattleDrone**
26161  Object AmericaVehicleRepairDrone
26162  
26163    ; *** ART Parameters ***
26164    Draw = W3DTankDraw ModuleTag_01
26165      ConditionState = NONE
26166        Model = AVRepairDr
26167      End
26168      TrackMarks = EXTireTrack.tga
26169      OkToChangeModelColor = Yes
26170    End
26171  
26172    ; ***DESIGN parameters ***
26173    DisplayName      = OBJECT:RepairDrone
26174    Side = America
26175    EditorSorting   = VEHICLE
26176  
26177    TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
26178    WeaponSet
26179      Conditions = None 
26180      Weapon = PRIMARY CrusaderTankGun
26181    End
26182    ArmorSet
26183      Conditions      = None
26184      Armor           = TankArmor
26185      DamageFX        = TankDamageFX
26186    End
26187    BuildCost       = 700
26188    BuildTime       = 5.0          ;in seconds    
26189    VisionRange     = 150
26190    ShroudClearingRange = 150
26191    Prerequisites
26192      Object = AmericaWarFactory
26193    End
26194    ExperienceValue    = 50 100 150 400 ;Experience point value at each level
26195    ExperienceRequired = 0 150 450 900 ;Experience points needed to gain each level
26196    IsTrainable     = Yes  ;Can gain experience
26197    
26198    ; *** AUDIO Parameters ***
26199    VoiceSelect = NoSound
26200    VoiceMove = NoSound
26201    VoiceAttack = NoSound
26202    SoundMoveStart = NoSound
26203  
26204    UnitSpecificSounds
26205    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
26206      TurretMoveStart = NoSound
26207      TurretMoveLoop = NoSound
26208    End
26209  
26210  
26211    ; *** ENGINEERING Parameters ***
26212    RadarPriority = UNIT
26213    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE DRONE
26214    
26215    Body = ActiveBody ModuleTag_02
26216      MaxHealth       = 100.0
26217      InitialHealth   = 100.0
26218    End
26219  
26220    Behavior = AIUpdateInterface ModuleTag_03
26221      Turret
26222        TurretTurnRate = 60   // turn rate, in degrees per sec
26223        ControlledWeaponSlots = PRIMARY
26224      End
26225      AutoAcquireEnemiesWhenIdle = Yes
26226    End
26227    Locomotor = SET_NORMAL BasicTankLocomotor
26228  
26229    Behavior = PhysicsBehavior ModuleTag_04
26230      Mass = 50.0
26231    End
26232    Behavior = SlowDeathBehavior ModuleTag_05
26233      DestructionDelay = 500
26234      FX = FINAL FX_GenericTankDeathExplosion
26235    End
26236  
26237    Behavior = MaxHealthUpgrade ModuleTag_06
26238      TriggeredBy   = Upgrade_AmericaDroneArmor
26239      AddMaxHealth  = 50.0
26240      ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
26241    End
26242  
26243    Behavior = FXListDie ModuleTag_07
26244      DeathFX = FX_GenericTankDeathEffect
26245    End
26246    Behavior = CreateObjectDie ModuleTag_08
26247      CreationList = OCL_GenericTankDeathEffect
26248    End
26249    Behavior = CreateCrateDie ModuleTag_09
26250      CrateData = SalvageCrateData
26251     ;CrateData = EliteTankCrateData
26252     ;CrateData = HeroicTankCrateData
26253    End
26254  
26255    Behavior = FlammableUpdate ModuleTag_21
26256      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
26257      AflameDamageAmount = 3       ; taking this much damage...
26258      AflameDamageDelay = 500       ; this often.
26259    End
26260  
26261    Geometry = BOX
26262    GeometryMajorRadius = 11.0
26263    GeometryMinorRadius = 7.0
26264    GeometryHeight = 10.0     
26265    GeometryIsSmall = Yes 
26266    Shadow = SHADOW_VOLUME
26267  
26268  End
26269  
26270  ;------------------------------------------------------------------------------
26271  Object AmericaJetCargoPlane
26272  
26273    ; *** ART Parameters ***
26274    Draw = W3DModelDraw ModuleTag_01
26275      DefaultConditionState
26276        Model            = AVCargoPln
26277        Animation       = AVCargoPln.AVCargoPln
26278        AnimationMode   = LOOP
26279        ParticleSysBone = Propeller01 JetBlackTrailThin
26280        ParticleSysBone = Propeller02 JetBlackTrailThin
26281        ParticleSysBone = Propeller03 JetBlackTrailThin
26282        ParticleSysBone = Propeller04 JetBlackTrailThin
26283        ParticleSysBone = WingTip01 JetContrailThin
26284        ParticleSysBone = WingTip02 JetContrailThin
26285      End
26286  
26287      ConditionState = DAMAGED
26288        Model           = AVCargoPln_D
26289        Animation       = AVCargoPln_D.AVCargoPln_D
26290        AnimationMode   = LOOP
26291        ;Flags           = START_FRAME_FIRST
26292        ParticleSysBone = Smoke01 JetFireLarge
26293        ParticleSysBone = Smoke02 JetFireLarge
26294        ParticleSysBone = Propeller03 JetBlackTrailThin
26295        ParticleSysBone = Propeller04 JetBlackTrailThin
26296        ParticleSysBone = Smoke01 JetSmokeLarge
26297        ParticleSysBone = Smoke02 JetSmokeLarge
26298      End
26299  
26300      ConditionState = REALLYDAMAGED
26301        Model           = AVCargoPln_D
26302        Animation       = AVCargoPln_D.AVCargoPln_D
26303        AnimationMode   = LOOP
26304        ;Flags           = START_FRAME_FIRST
26305        ParticleSysBone = Smoke01 JetFireLarge
26306        ParticleSysBone = Smoke02 JetFireLarge
26307        ParticleSysBone = Smoke03 JetFireLarge
26308        ParticleSysBone = Smoke05 JetFireLarge
26309        ParticleSysBone = Propeller03 JetBlackTrailThin
26310        ParticleSysBone = Propeller04 JetBlackTrailThin
26311        ParticleSysBone = Smoke01 JetSmokeLarge
26312        ParticleSysBone = Smoke02 JetSmokeLarge
26313        ParticleSysBone = Smoke03 JetSmokeLarge
26314        ParticleSysBone = Smoke05 JetSmokeLarge
26315      End
26316  
26317      ConditionState = RUBBLE
26318        Model           = AVCargoPln_D1
26319        Animation       = AVCargoPln_D.AVCargoPln_D
26320        AnimationMode   = LOOP
26321        ;Flags           = START_FRAME_FIRST
26322        ParticleSysBone = Smoke01 JetFireLarge
26323        ParticleSysBone = Smoke06 JetFireLarge
26324        ParticleSysBone = Smoke03 JetFireLarge
26325        ParticleSysBone = Smoke05 JetFireLarge
26326        ParticleSysBone = Smoke01 JetSmokeLarge
26327        ParticleSysBone = Smoke06 JetSmokeLarge
26328        ParticleSysBone = Smoke03 JetSmokeLarge
26329        ParticleSysBone = Smoke05 JetSmokeLarge
26330      End
26331      
26332      OkToChangeModelColor = Yes
26333    End
26334  
26335    Draw = W3DModelDraw ModuleTag_02
26336      DefaultConditionState
26337        Model           = AVCargoPln_A2
26338        Animation       = AVCargoPln_A2.AVCargoPln_A2
26339        AnimationMode   = MANUAL
26340        Flags           = START_FRAME_FIRST
26341      End
26342      ConditionState = DOOR_1_OPENING
26343        Model           = AVCargoPln_A2
26344        Animation       = AVCargoPln_A2.AVCargoPln_A2
26345        AnimationMode   = ONCE
26346        Flags           = START_FRAME_FIRST
26347      End
26348      ConditionState = DOOR_1_CLOSING
26349        Model           = AVCargoPln_A2
26350        Animation       = AVCargoPln_A2.AVCargoPln_A2
26351        AnimationMode   = ONCE_BACKWARDS
26352        Flags           = START_FRAME_LAST
26353      End
26354    End
26355    
26356    ; ***DESIGN parameters ***
26357    DisplayName         = OBJECT:CargoPlane
26358    EditorSorting       = VEHICLE
26359    Side                = America
26360    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
26361    VisionRange         = 150.0 ;0.0 
26362    ArmorSet
26363      Conditions      = None
26364      Armor           = AirplaneArmor
26365      DamageFX        = TankDamageFX
26366    End
26367    CommandSet        = Command_ScriptedTransportDrops
26368  
26369    ; *** AUDIO Parameters ***
26370    SoundAmbient = C130AmbientLoop
26371    SoundAmbientRubble    = NoSound
26372  
26373    ; *** ENGINEERING Parameters ***
26374    RadarPriority = UNIT
26375    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT FORCEATTACKABLE IGNORED_IN_GUI
26376    Body = ActiveBody ModuleTag_03
26377      MaxHealth       = 1000.0
26378      InitialHealth   = 1000.0
26379    End
26380  
26381    ExperienceValue     = 40 40 40 40  ; Experience point value at each level
26382  
26383    Behavior = PhysicsBehavior ModuleTag_04
26384      Mass = 500.0
26385    End
26386  
26387    ;SCRIPTED SUPPORT: These special powers are triggered directly 
26388    ;from the transport without creating a transport. This is done 
26389    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
26390    ;which also prevents creating the payload transport.
26391    Behavior    = OCLSpecialPower ModuleTag_05
26392      SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@
26393      OCL                  = SUPERWEAPON_DaisyCutter
26394      CreateLocation       = USE_OWNER_OBJECT
26395    End
26396    Behavior    = OCLSpecialPower ModuleTag_06
26397      SpecialPowerTemplate = SuperweaponParadropAmerica
26398      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
26399      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
26400      OCL                  = SUPERWEAPON_Paradrop1
26401      CreateLocation       = USE_OWNER_OBJECT
26402    End 
26403    Behavior    = OCLSpecialPower ModuleTag_07
26404      SpecialPowerTemplate = SuperweaponCarpetBomb
26405      OCL                  = SUPERWEAPON_CarpetBomb
26406      CreateLocation       = USE_OWNER_OBJECT
26407    End 
26408    Behavior    = OCLSpecialPower ModuleTag_08
26409      SpecialPowerTemplate = SuperweaponCrateDrop
26410      OCL                  = SUPERWEAPON_CrateDrop
26411      CreateLocation       = USE_OWNER_OBJECT
26412    End 
26413  
26414    Behavior = DeliverPayloadAIUpdate ModuleTag_09
26415      DoorDelay         = 500
26416      MaxAttempts       = 4
26417      DropOffset        = X:0 Y:0 Z:-10
26418      DropDelay         = 300 ; time in between each item dropped (if more than one)
26419      PutInContainer    = AmericaParachute
26420      DeliveryDistance  = 150
26421    End
26422    Locomotor = SET_NORMAL B52Locomotor
26423  
26424    Behavior = TransportContain ModuleTag_10
26425      Slots = 100                     ; hey, it's a BIG transport
26426      ScatterNearbyOnExit = No
26427      OrientLikeContainerOnExit = Yes
26428      KeepContainerVelocityOnExit = Yes
26429      ExitPitchRate = 30
26430      ExitBone = WeaponA01
26431      AllowInsideKindOf  = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE 
26432      ;gs I added parachutable as a catch all to prevent making new kindofs (like CRATE)
26433      DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
26434      NumberOfExitPaths = 0
26435      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
26436    End
26437      
26438    Behavior                          = JetSlowDeathBehavior ModuleTag_11
26439      DestructionDelay                = 2000 
26440      RollRate                        = 0.0
26441      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
26442      PitchRate                       = 0
26443      FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
26444      FXInitialDeath                  = FX_JetBigDeathInitial
26445      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
26446      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
26447      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
26448      FXSecondary                     = FX_BigPlaneDeath
26449  ;   FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
26450  ;   OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
26451  ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
26452    End
26453  
26454    ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_12
26455    End
26456  
26457    Behavior = TransitionDamageFX ModuleTag_17
26458      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
26459      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
26460    End
26461  
26462  
26463    Geometry = Box
26464    GeometryIsSmall = No
26465    GeometryMajorRadius = 40.0
26466    GeometryMinorRadius = 10.0
26467    GeometryHeight = 10.0
26468    Shadow = SHADOW_VOLUME
26469    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
26470  End
26471  
26472  ;----------------------------------------------------------
26473  Object AmericaJetCargoHulk
26474    ; *** ART Parameters ***
26475    Draw                = W3DModelDraw ModuleTag_01
26476      ConditionState    = NONE
26477        Model           = AVCargoPln_D1
26478      End
26479    End
26480  
26481    ; ***DESIGN parameters ***
26482    EditorSorting       = DEBRIS
26483  
26484    ; *** ENGINEERING Parameters ***
26485    KindOf              =  NO_COLLIDE HULK
26486  
26487    Behavior                  = PhysicsBehavior ModuleTag_03
26488      Mass                    = 1.0
26489      AllowBouncing           = Yes
26490      KillWhenRestingOnGround = No
26491    End
26492    Behavior = LifetimeUpdate ModuleTag_04
26493      MinLifetime = 500   ; min lifetime in msec
26494      MaxLifetime = 1500   ; max lifetime in msec
26495    End
26496  
26497    Behavior = InstantDeathBehavior ModuleTag_05
26498      DeathTypes = ALL
26499  ;    FX         = FX_BigPlaneDeath
26500  ;   OCL        = OCL_AmericaJetCargoHulkDeath
26501    End
26502  
26503  End
26504  
26505  ;------------------------------------------------------------------------------
26506  Object GLAJetCargoPlane
26507  
26508    ; *** ART Parameters ***
26509    Draw = W3DModelDraw ModuleTag_01
26510      DefaultConditionState
26511        Model           = UVCargoPln
26512        Animation       = UVCargoPln.UVCargoPln
26513        AnimationMode   = LOOP
26514        ParticleSysBone = Engine01 JetBlackTrail
26515        ParticleSysBone = Engine02 JetBlackTrail
26516        ParticleSysBone = Engine03 JetBlackTrail
26517        ParticleSysBone = Engine04 JetBlackTrail      
26518      End
26519      ConditionState = DAMAGED
26520        Model           = UVCargoPln_D
26521        Animation       = UVCargoPln_D.UVCargoPln_D
26522        AnimationMode   = LOOP
26523        ;Flags           = START_FRAME_FIRST
26524        ParticleSysBone = Smoke01 JetFireLarge
26525        ParticleSysBone = Smoke02 JetFireLarge
26526        ParticleSysBone = Propeller03 JetBlackTrailThin
26527        ParticleSysBone = Propeller04 JetBlackTrailThin
26528        ParticleSysBone = Smoke01 JetSmokeLarge
26529        ParticleSysBone = Smoke02 JetSmokeLarge
26530        ParticleSysBone = Smoke03 JetSmokeLarge
26531      End
26532      ConditionState = REALLYDAMAGED
26533        Model           = UVCargoPln_D
26534        Animation       = UVCargoPln_D.UVCargoPln_D
26535        AnimationMode   = LOOP
26536        ;Flags           = START_FRAME_FIRST
26537        ParticleSysBone = Smoke01 JetFireLarge
26538        ParticleSysBone = Smoke02 JetFireLarge
26539        ParticleSysBone = Propeller03 JetBlackTrailThin
26540        ParticleSysBone = Propeller04 JetBlackTrailThin
26541        ParticleSysBone = Smoke01 JetSmokeLarge
26542        ParticleSysBone = Smoke02 JetSmokeLarge
26543        ParticleSysBone = Smoke03 JetSmokeLarge
26544      End
26545      ConditionState = RUBBLE
26546        Model           = UVCargoPln_D1
26547        ParticleSysBone = Smoke01 JetFireLarge
26548        ParticleSysBone = Smoke02 JetFireLarge
26549        ParticleSysBone = Smoke03 JetFireLarge
26550        ParticleSysBone = Smoke04 JetFireLarge
26551        ParticleSysBone = Smoke01 JetSmokeLarge
26552        ParticleSysBone = Smoke02 JetSmokeLarge
26553        ParticleSysBone = Smoke03 JetSmokeLarge
26554        ParticleSysBone = Smoke04 JetSmokeLarge
26555      End
26556      
26557      OkToChangeModelColor = Yes
26558    End
26559  
26560    Draw = W3DModelDraw ModuleTag_02
26561      DefaultConditionState
26562        Model           = UVCargoPln_A2
26563        Animation       = UVCargoPln_A2.UVCargoPln_A2
26564        AnimationMode   = MANUAL
26565        Flags           = START_FRAME_FIRST
26566      End
26567      ConditionState = DOOR_1_OPENING
26568        Model           = UVCargoPln_A2
26569        Animation       = UVCargoPln_A2.UVCargoPln_A2
26570        AnimationMode   = ONCE
26571        Flags           = START_FRAME_FIRST
26572      End
26573      ConditionState = DOOR_1_CLOSING
26574        Model           = UVCargoPln_A2
26575        Animation       = UVCargoPln_A2.UVCargoPln_A2
26576        AnimationMode   = ONCE_BACKWARDS
26577        Flags           = START_FRAME_LAST
26578      End
26579    End
26580    
26581    ; ***DESIGN parameters ***
26582    DisplayName         = OBJECT:CargoPlane
26583    EditorSorting       = VEHICLE
26584    Side                = GLA
26585    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
26586    VisionRange         = 150.0 ;0.0 
26587    ArmorSet
26588      Conditions      = None
26589      Armor           = AirplaneArmor
26590      DamageFX        = None
26591    End
26592    CommandSet          = Command_ScriptedTransportDrops
26593  
26594    ; *** AUDIO Parameters ***
26595    SoundAmbient = C130AmbientLoop
26596    SoundAmbientRubble    = NoSound
26597  
26598    ; *** ENGINEERING Parameters ***
26599    RadarPriority = UNIT
26600    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT FORCEATTACKABLE IGNORED_IN_GUI
26601    Body = ActiveBody ModuleTag_03
26602      MaxHealth       = 1000.0
26603      InitialHealth   = 1000.0
26604    End
26605  
26606    ExperienceValue     = 40 40 40 40  ; Experience point value at each level
26607   
26608    Behavior = PhysicsBehavior ModuleTag_04
26609      Mass = 500.0
26610    End
26611  
26612    Behavior = DeliverPayloadAIUpdate ModuleTag_05
26613      DoorDelay = 500
26614      MaxAttempts = 4
26615      DropOffset = X:0 Y:0 Z:-10
26616      DropDelay = 300 ;500 ; time in between each item dropped (if more than one)
26617      PutInContainer = AmericaParachute
26618      DeliveryDistance = 150
26619    End
26620    Locomotor = SET_NORMAL B52Locomotor
26621  
26622    Behavior = TransportContain ModuleTag_06
26623      Slots = 100                     ; hey, it's a BIG transport
26624      ScatterNearbyOnExit = No
26625      OrientLikeContainerOnExit = Yes
26626      KeepContainerVelocityOnExit = Yes
26627      ExitPitchRate = 30
26628      ExitBone = WeaponA01
26629      AllowInsideKindOf  = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE FORCEATTACKABLE
26630      DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
26631      NumberOfExitPaths = 0
26632      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
26633    End
26634  
26635    ;SCRIPTED SUPPORT: These special powers are triggered directly 
26636    ;from the transport without creating a transport. This is done 
26637    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
26638    ;which also prevents creating the payload transport.
26639    Behavior    = OCLSpecialPower ModuleTag_07
26640      SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@
26641      OCL                  = SUPERWEAPON_DaisyCutter
26642      CreateLocation       = USE_OWNER_OBJECT
26643    End
26644    Behavior    = OCLSpecialPower ModuleTag_08
26645      SpecialPowerTemplate = SuperweaponParadropAmerica
26646      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
26647      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
26648      OCL                  = SUPERWEAPON_Paradrop1
26649      CreateLocation       = USE_OWNER_OBJECT
26650    End 
26651    Behavior    = OCLSpecialPower ModuleTag_09
26652      SpecialPowerTemplate = SuperweaponCarpetBomb
26653      OCL                  = SUPERWEAPON_CarpetBomb
26654      CreateLocation       = USE_OWNER_OBJECT
26655    End 
26656  
26657    Behavior                          = JetSlowDeathBehavior ModuleTag_10
26658      DestructionDelay                = 2000 
26659      RollRate                        = 0.0
26660      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
26661      PitchRate                       = 0
26662      FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
26663      FXInitialDeath                  = FX_JetBigDeathInitial
26664      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
26665      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
26666      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
26667      FXSecondary                     = FX_BigPlaneDeath
26668    End
26669  
26670    ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_11
26671    End
26672  
26673    Behavior = TransitionDamageFX ModuleTag_12
26674      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
26675      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
26676    End
26677  
26678    Geometry = Box
26679    GeometryIsSmall = No
26680    GeometryMajorRadius = 40.0
26681    GeometryMinorRadius = 10.0
26682    GeometryHeight = 10.0
26683    Shadow = SHADOW_VOLUME
26684    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
26685  
26686  End
26687  
26688  ;------------------------------------------------------------------------------
26689  Object ChinaJetCargoPlane
26690  
26691    ; *** ART Parameters ***
26692    Draw = W3DModelDraw ModuleTag_01
26693      DefaultConditionState
26694        Model           = NVCargoPln
26695        Animation       = NVCargoPln.NVCargoPln
26696        AnimationMode   = LOOP
26697        ParticleSysBone = Propeller01 JetBlackTrailThin
26698        ParticleSysBone = Propeller02 JetBlackTrailThin
26699        ParticleSysBone = Propeller03 JetBlackTrailThin
26700        ParticleSysBone = Propeller04 JetBlackTrailThin
26701        ParticleSysBone = WingTip01 JetContrailThin
26702        ParticleSysBone = WingTip02 JetContrailThin
26703      End
26704      ConditionState = DAMAGED
26705        Model           = NVCargoPln_D
26706        Animation       = NVCargoPln_D.NVCargoPln_D
26707        AnimationMode   = LOOP
26708        ;Flags           = START_FRAME_FIRST
26709        ParticleSysBone = Smoke01 JetFireLarge
26710        ParticleSysBone = Smoke03 JetFireLarge
26711        ParticleSysBone = Propeller01 JetBlackTrailThin
26712        ParticleSysBone = Propeller02 JetBlackTrailThin
26713        ParticleSysBone = Propeller03 JetBlackTrailThin
26714        ParticleSysBone = Propeller04 JetBlackTrailThin
26715        ParticleSysBone = Smoke01 JetSmokeLarge
26716        ParticleSysBone = Smoke03 JetSmokeLarge
26717        ParticleSysBone = WingTip01 JetContrailThin
26718        ParticleSysBone = WingTip02 JetContrailThin
26719      End
26720      ConditionState = REALLYDAMAGED
26721        Model           = NVCargoPln_D
26722        Animation       = NVCargoPln_D.NVCargoPln_D
26723        AnimationMode   = LOOP
26724        ;Flags           = START_FRAME_FIRST
26725        ParticleSysBone = Smoke01 JetFireLarge
26726        ParticleSysBone = Smoke03 JetFireLarge
26727        ParticleSysBone = Smoke04 JetFireLarge
26728        ParticleSysBone = Propeller03 JetBlackTrailThin
26729        ParticleSysBone = Propeller04 JetBlackTrailThin
26730        ParticleSysBone = Smoke01 JetSmokeLarge
26731        ParticleSysBone = Smoke03 JetSmokeLarge
26732        ParticleSysBone = Smoke04 JetSmokeLarge
26733        ParticleSysBone = WingTip01 JetContrailThin
26734        ParticleSysBone = WingTip02 JetContrailThin
26735      End
26736      ConditionState = RUBBLE
26737        Model           = NVCargoPln_D1
26738        ParticleSysBone = Smoke01 JetFireLarge
26739        ParticleSysBone = Smoke06 JetFireLarge
26740        ParticleSysBone = Smoke03 JetFireLarge
26741        ParticleSysBone = Smoke04 JetFireLarge
26742        ParticleSysBone = Smoke01 JetSmokeLarge
26743        ParticleSysBone = Smoke06 JetSmokeLarge
26744        ParticleSysBone = Smoke03 JetSmokeLarge
26745        ParticleSysBone = Smoke04 JetSmokeLarge
26746      End
26747      
26748      OkToChangeModelColor = Yes
26749    End
26750  
26751    Draw = W3DModelDraw ModuleTag_02
26752      DefaultConditionState
26753        Model           = NVCargoPln_A2
26754        Animation       = NVCargoPln_A2.NVCargoPln_A2
26755        AnimationMode   = MANUAL
26756        Flags           = START_FRAME_FIRST
26757      End
26758      ConditionState = DOOR_1_OPENING
26759        Model           = NVCargoPln_A2
26760        Animation       = NVCargoPln_A2.NVCargoPln_A2
26761        AnimationMode   = ONCE
26762        Flags           = START_FRAME_FIRST
26763      End
26764      ConditionState = DOOR_1_CLOSING
26765        Model           = NVCargoPln_A2
26766        Animation       = NVCargoPln_A2.NVCargoPln_A2
26767        AnimationMode   = ONCE_BACKWARDS
26768        Flags           = START_FRAME_LAST
26769      End
26770    End
26771  
26772    
26773    ; ***DESIGN parameters ***
26774    DisplayName         = OBJECT:CargoPlane
26775    EditorSorting       = VEHICLE
26776    Side                = China
26777    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
26778    VisionRange         = 150.0 ;0.0 
26779    ArmorSet
26780      Conditions      = None
26781      Armor           = AirplaneArmor
26782      DamageFX        = None
26783    End
26784    CommandSet        = Command_ScriptedTransportDrops
26785  
26786    ; *** AUDIO Parameters ***
26787    SoundAmbient = C130AmbientLoop
26788    SoundAmbientRubble    = NoSound
26789  
26790    ; *** ENGINEERING Parameters ***
26791    RadarPriority = UNIT
26792    KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT FORCEATTACKABLE IGNORED_IN_GUI
26793    Body = ActiveBody ModuleTag_03
26794      MaxHealth       = 1000.0
26795      InitialHealth   = 1000.0
26796    End
26797  
26798    ExperienceValue     = 40 40 40 40  ; Experience point value at each level
26799   
26800    Behavior = PhysicsBehavior ModuleTag_04
26801      Mass = 500.0
26802    End
26803  
26804    Behavior = DeliverPayloadAIUpdate ModuleTag_05
26805      DoorDelay = 500
26806      MaxAttempts = 4
26807      DropOffset = X:0 Y:0 Z:-10
26808      DropDelay = 300 ;500 ; time in between each item dropped (if more than one)
26809      PutInContainer = AmericaParachute
26810      DeliveryDistance = 150
26811    End
26812    Locomotor = SET_NORMAL B52Locomotor
26813  
26814    Behavior = TransportContain ModuleTag_06
26815      Slots = 100                     ; hey, it's a BIG transport
26816      ScatterNearbyOnExit = No
26817      OrientLikeContainerOnExit = Yes
26818      KeepContainerVelocityOnExit = Yes
26819      ExitPitchRate = 30
26820      ExitBone = WeaponA01
26821      AllowInsideKindOf  = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE
26822      DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
26823      NumberOfExitPaths = 0
26824      DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
26825    End
26826  
26827    ;SCRIPTED SUPPORT: These special powers are triggered directly 
26828    ;from the transport without creating a transport. This is done 
26829    ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
26830    ;which also prevents creating the payload transport.
26831    Behavior    = OCLSpecialPower ModuleTag_07
26832      SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@
26833      OCL                  = SUPERWEAPON_DaisyCutter
26834      CreateLocation       = USE_OWNER_OBJECT
26835    End
26836    Behavior    = OCLSpecialPower ModuleTag_08
26837      SpecialPowerTemplate = SuperweaponParadropAmerica
26838      UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
26839      UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
26840      OCL                  = SUPERWEAPON_Paradrop1
26841      CreateLocation       = USE_OWNER_OBJECT
26842    End 
26843    Behavior    = OCLSpecialPower ModuleTag_09
26844      SpecialPowerTemplate = SuperweaponCarpetBomb
26845      OCL                  = SUPERWEAPON_CarpetBomb
26846      CreateLocation       = USE_OWNER_OBJECT
26847    End 
26848    Behavior    = OCLSpecialPower ModuleTag_10
26849      SpecialPowerTemplate = SuperweaponClusterMines
26850      OCL                  = SUPERWEAPON_ClusterMines
26851      CreateLocation       = USE_OWNER_OBJECT
26852    End 
26853    Behavior    = OCLSpecialPower ModuleTag_11
26854      SpecialPowerTemplate = SuperweaponEMPPulse
26855      OCL                  = SUPERWEAPON_EMPPulse
26856      CreateLocation       = USE_OWNER_OBJECT
26857    End 
26858      
26859    Behavior                          = JetSlowDeathBehavior ModuleTag_12
26860      DestructionDelay                = 2000 
26861      RollRate                        = 0.0
26862      RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
26863      PitchRate                       = 0
26864      FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
26865      FXInitialDeath                  = FX_JetBigDeathInitial
26866      OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
26867      DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
26868      OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
26869      FXSecondary                     = FX_BigPlaneDeath
26870    End
26871  
26872    ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_13
26873    End
26874  
26875    Behavior = TransitionDamageFX ModuleTag_14
26876      DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
26877      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
26878    End
26879  
26880    Geometry = Box
26881    GeometryIsSmall = No
26882    GeometryMajorRadius = 40.0
26883    GeometryMinorRadius = 10.0
26884    GeometryHeight = 10.0
26885    Shadow = SHADOW_VOLUME
26886    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
26887  
26888  End
26889  
26890  ;------------------------------------------------------------------------------
26891  Object AmericaVehiclePOWTruck
26892    ; *** ART Parameters ***
26893    SelectPortrait         = SAPowTruck
26894    ButtonImage            = SAPowTruck
26895  
26896    ;UpgradeCameo1 = NONE
26897    ;UpgradeCameo2 = NONE
26898    ;UpgradeCameo3 = NONE
26899    ;UpgradeCameo4 = NONE
26900    ;UpgradeCameo5 = NONE
26901    Draw                   = W3DTruckDraw ModuleTag_01
26902      OkToChangeModelColor = Yes
26903      ConditionState       = NONE
26904        Model              = AVPOWTRUCK
26905      End
26906      ConditionState       = REALLYDAMAGED
26907        Model              = AVPOWTRUCK_D
26908      End
26909      ConditionState       = RUBBLE
26910        Model              = AVPOWTruck_D
26911      End
26912      TrackMarks           = EXTireTrack.tga
26913      Dust                 = RocketBuggyDust
26914      DirtSpray            = RocketBuggyDirtSpray
26915      PowerslideSpray      = RocketBuggyDirtPowerSlide
26916      ; These parameters are only used if the model has a separate suspension, 
26917      ; and the locomotor has HasSuspension = Yes.
26918      LeftFrontTireBone          = Tire01
26919      RightFrontTireBone         = Tire02
26920      MidLeftRearTireBone        = Tire03
26921      MidRightRearTireBone       = Tire05
26922      LeftRearTireBone           = Tire04
26923      RightRearTireBone          = Tire06
26924      TireRotationMultiplier     = 0.2   ; this * speed = rotation.
26925      PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
26926    End
26927    ; ***DESIGN parameters ***
26928    DisplayName          = OBJECT:POWTruck
26929    Side                 = America
26930    EditorSorting        = VEHICLE
26931    TransportSlotCount   = 3                 ;how many "slots" we take in a transport (0 == not transportable)
26932    ArmorSet
26933      Conditions         = None
26934      Armor              = TruckArmor
26935      DamageFX           = TankDamageFX
26936    End
26937    BuildCost            = 500
26938    BuildTime            = 10.0          ;in seconds    
26939    VisionRange          = 200
26940    ShroudClearingRange  = 300
26941    ExperienceValue      = 50 50 50 50    ;Experience point value at each level
26942    ExperienceRequired   = 0 150 450 900  ;Experience points needed to gain each level
26943    IsTrainable          = Yes             ;Can gain experience
26944    CrusherLevel         = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
26945    CrushableLevel       = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
26946    
26947    CommandSet           = VehiclePOWTruckCommandSet
26948  
26949    ; *** AUDIO Parameters ***
26950    VoiceSelect = POWTruckUSAVoiceSelect
26951    VoiceMove = POWTruckUSAVoiceMove
26952    VoiceGuard = POWTruckUSAVoiceMove
26953    SoundEnter = POWTruckEnter
26954    SoundExit = POWTruckExit
26955    UnitSpecificSounds
26956      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
26957      VoiceCreate          = POWTruckUSAVoiceCreate
26958      TurretMoveLoop       = TurretMoveLoop
26959      SoundMoveStart       = POWTruckUSAMoveStart
26960      SoundMoveStartDamaged = POWTruckUSAMoveStart
26961      SoundEject           = PilotSoundEject
26962      VoiceEject           = PilotVoiceEject
26963      VoiceCrush           = POWTruckUSAVoiceCrush
26964      ; Required for the W3DTruckDraw module
26965      TruckLandingSound    = RocketBuggyLand
26966      TruckPowerslideSound = POWTruckUSAMoveStart
26967      VoiceEnter           = POWTruckUSAVoiceMove
26968    End
26969    ; *** ENGINEERING Parameters ***
26970    RadarPriority          = UNIT
26971    KindOf                 = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE TRANSPORT SCORE ;POW_TRUCK
26972    Body                   = ActiveBody ModuleTag_02
26973      MaxHealth            = 500.0
26974      InitialHealth        = 500.0
26975    End
26976    
26977    ;Behavior               = POWTruckBehavior ModuleTag_03
26978    ;  ContainMax           = 10
26979    ;  EnterSound           = EnterPOWTruck
26980    ;  ExitSound            = ExitPOWTruck
26981    ;End
26982    
26983    ;Behavior = POWTruckAIUpdate ModuleTag_04
26984    ;  BoredTime            = 10000  ; in milliseconds
26985    ;  AtPrisonDistance     = 160.0 ; This close to a prison is close enough to be doing nothing at
26986    ;End
26987    
26988    Behavior = AIUpdateInterface ModuleTag_04
26989      ; no data
26990    End
26991    Locomotor              = SET_NORMAL POWTruckLocomotor
26992    Behavior               = PhysicsBehavior ModuleTag_05
26993      Mass                 = 50.0
26994    End
26995    Behavior               = SlowDeathBehavior ModuleTag_06
26996      DeathTypes           = ALL -CRUSHED -SPLATTED
26997      ProbabilityModifier  = 25
26998      DestructionDelay     = 1
26999      FX                   = FINAL    FX_BattleMasterExplosionOneFinal
27000      OCL                  = FINAL    OCL_AmericanPOWTruckDeathEffect
27001    End
27002    Behavior               = FXListDie ModuleTag_07
27003      DeathTypes           = NONE +CRUSHED +SPLATTED
27004      DeathFX              = FX_CarCrush
27005    End
27006    Behavior = TransitionDamageFX ModuleTag_09
27007      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
27008      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
27009    End
27010    Behavior = ExperienceScalarUpgrade ModuleTag_10
27011      TriggeredBy = Upgrade_AmericaAdvancedTraining
27012      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
27013    End
27014    Behavior = FlammableUpdate ModuleTag_21
27015      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
27016      AflameDamageAmount = 3       ; taking this much damage...
27017      AflameDamageDelay = 500       ; this often.
27018    End
27019    Geometry               = BOX
27020    GeometryMajorRadius    = 15.0
27021    GeometryMinorRadius    = 7.0
27022    GeometryHeight         = 13.5     
27023    GeometryIsSmall        = Yes 
27024    Shadow                 = SHADOW_VOLUME   
27025  End
27026  
27027  ;------------------------------------------------------------------------------
27028  Object ChinaVehiclePOWTruck
27029    ; *** ART Parameters ***
27030    SelectPortrait         = SNPowTruck
27031    ButtonImage            = SNPowTruck
27032  
27033    ;UpgradeCameo1 = NONE
27034    ;UpgradeCameo2 = NONE
27035    ;UpgradeCameo3 = NONE
27036    ;UpgradeCameo4 = NONE
27037    ;UpgradeCameo5 = NONE
27038    Draw                   = W3DTruckDraw ModuleTag_01
27039      OkToChangeModelColor = Yes
27040      ConditionState       = NONE
27041        Model              = NVPOWTRCK
27042      End
27043      ConditionState       = REALLYDAMAGED
27044        Model              = NVPOWTRCK_D
27045      End   
27046      ConditionState       = RUBBLE
27047        Model              = NVPOWTRCK_D
27048      End
27049      TrackMarks           = EXTireTrack.tga
27050      Dust                 = RocketBuggyDust
27051      DirtSpray            = RocketBuggyDirtSpray
27052      PowerslideSpray      = RocketBuggyDirtPowerSlide
27053      ; These parameters are only used if the model has a separate suspension, 
27054      ; and the locomotor has HasSuspension = Yes.
27055      LeftFrontTireBone          = Tire01
27056      RightFrontTireBone         = Tire04
27057      MidLeftRearTireBone        = Tire02
27058      MidRightRearTireBone       = Tire05
27059      LeftRearTireBone           = Tire03
27060      RightRearTireBone          = Tire06
27061      TireRotationMultiplier     = 0.2   ; this * speed = rotation.
27062      PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
27063    End
27064    ; ***DESIGN parameters ***
27065    DisplayName          = OBJECT:POWTruck
27066    Side                 = China
27067    EditorSorting        = VEHICLE
27068    TransportSlotCount   = 3                 ;how many "slots" we take in a transport (0 == not transportable)
27069    ArmorSet
27070      Conditions         = None
27071      Armor              = TruckArmor
27072      DamageFX           = TankDamageFX
27073    End
27074    BuildCost            = 500
27075    BuildTime            = 10.0          ;in seconds    
27076    VisionRange          = 200
27077    ShroudClearingRange = 300
27078    ExperienceValue      = 50 50 50 50    ;Experience point value at each level
27079    ExperienceRequired   = 0 150 450 900  ;Experience points needed to gain each level
27080    IsTrainable          = Yes             ;Can gain experience
27081    CrusherLevel         = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
27082    CrushableLevel       = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
27083  
27084    CommandSet           = VehiclePOWTruckCommandSet    
27085  
27086    ; *** AUDIO Parameters ***
27087    VoiceSelect = POWTruckChinaVoiceSelect
27088    VoiceMove = POWTruckChinaVoiceMove
27089    VoiceGuard = POWTruckChinaVoiceMove
27090    UnitSpecificSounds
27091      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
27092      ;TurretMoveStart     = NoSound
27093      VoiceCreate          = POWTruckChinaVoiceCreate
27094      TurretMoveLoop       = TurretMoveLoop
27095      SoundMoveStart       = POWTruckUSAMoveStart
27096      SoundMoveStartDamaged = POWTruckUSAMoveStart
27097      SoundEject           = PilotSoundEject
27098      VoiceEject           = PilotVoiceEject
27099      ; Required for the W3DTruckDraw module
27100      TruckLandingSound    = RocketBuggyLand
27101      TruckPowerslideSound = POWTruckUSAMoveStart
27102      VoiceCrush           = POWTruckChinaVoiceCrush
27103      ;VoicePickup          = POWTruckChinaVoicePickup
27104      VoiceEnter = POWTruckChinaVoiceMove
27105    End
27106    ; *** ENGINEERING Parameters ***
27107    RadarPriority          = UNIT
27108    KindOf                 = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE TRANSPORT SCORE ;POW_TRUCK
27109    Body                   = ActiveBody ModuleTag_02
27110      MaxHealth            = 500.0
27111      InitialHealth        = 500.0
27112    End
27113  
27114    ;Behavior               = POWTruckBehavior ModuleTag_03
27115    ;  ContainMax           = 10
27116    ;  EnterSound           = EnterPOWTruck
27117    ;  ExitSound            = ExitPOWTruck
27118    ;End
27119  
27120    ;Behavior = POWTruckAIUpdate ModuleTag_04
27121    ;  BoredTime            = 10000  ; in milliseconds
27122    ;  AtPrisonDistance     = 160.0 ; This close to a prison is close enough to be doing nothing at
27123    ;End
27124  
27125    Behavior = AIUpdateInterface ModuleTag_04
27126      ; no data
27127    End
27128  
27129    Locomotor              = SET_NORMAL POWTruckLocomotor
27130    Behavior               = PhysicsBehavior ModuleTag_05
27131      Mass                 = 50.0
27132    End
27133    Behavior               = SlowDeathBehavior ModuleTag_06
27134      DeathTypes = ALL -CRUSHED -SPLATTED
27135      ProbabilityModifier  = 25
27136      DestructionDelay     = 1
27137      FX                   = FINAL    FX_BattleMasterExplosionOneFinal
27138      OCL                  = FINAL    OCL_ChinaPOWTruckDeathEffect
27139    End
27140    Behavior                    = FXListDie ModuleTag_07
27141      DeathTypes = NONE +CRUSHED +SPLATTED
27142      DeathFX              = FX_CarCrush
27143    End
27144    Behavior                 = TransitionDamageFX ModuleTag_09
27145      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
27146      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
27147    End
27148    Behavior = FlammableUpdate ModuleTag_21
27149      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
27150      AflameDamageAmount = 3       ; taking this much damage...
27151      AflameDamageDelay = 500       ; this often.
27152    End
27153    Geometry               = BOX
27154    GeometryMajorRadius    = 15.0
27155    GeometryMinorRadius    = 7.0
27156    GeometryHeight         = 13.5     
27157    GeometryIsSmall        = Yes 
27158    Shadow                 = SHADOW_VOLUME   
27159  End
27160  
27161  ;------------------------------------------------------------------------------
27162  Object GLAVehiclePOWTruck
27163    ; *** ART Parameters ***
27164    SelectPortrait         = SUPowTruck
27165    ButtonImage            = SUPowTruck
27166  
27167    ;UpgradeCameo1 = NONE
27168    ;UpgradeCameo2 = NONE
27169    ;UpgradeCameo3 = NONE
27170    ;UpgradeCameo4 = NONE
27171    ;UpgradeCameo5 = NONE
27172    Draw                   = W3DTruckDraw ModuleTag_01
27173      OkToChangeModelColor = Yes
27174      ConditionState       = NONE
27175        Model              = UVPOWTRUCK
27176      End
27177      ConditionState       = REALLYDAMAGED
27178        Model              = UVPOWTRUCK_D
27179      End
27180      TrackMarks           = EXTireTrack.tga
27181      Dust                 = RocketBuggyDust
27182      DirtSpray            = RocketBuggyDirtSpray
27183      PowerslideSpray      = RocketBuggyDirtPowerSlide
27184      ; These parameters are only used if the model has a separate suspension, 
27185      ; and the locomotor has HasSuspension = Yes.
27186      LeftFrontTireBone          = Tire01
27187      RightFrontTireBone         = Tire02
27188      MidLeftRearTireBone        = Tire03
27189      MidRightRearTireBone       = Tire04
27190      LeftRearTireBone           = Tire05
27191      RightRearTireBone          = Tire06
27192      TireRotationMultiplier     = 0.2   ; this * speed = rotation.
27193      PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
27194    End
27195    ; ***DESIGN parameters ***
27196    DisplayName          = OBJECT:POWTruck
27197    Side                 = GLA
27198    EditorSorting        = VEHICLE
27199    TransportSlotCount   = 3 ;how many "slots" we take in a transport (0 == not transportable)
27200    ArmorSet
27201      Conditions         = None
27202      Armor              = TruckArmor
27203      DamageFX           = TankDamageFX
27204    End
27205    BuildCost            = 500
27206    BuildTime            = 10.0          ;in seconds    
27207    VisionRange          = 200
27208    ShroudClearingRange  = 300
27209    ExperienceValue      = 50 50 50 50    ;Experience point value at each level
27210    ExperienceRequired   = 0 150 450 900  ;Experience points needed to gain each level
27211    IsTrainable          = Yes             ;Can gain experience
27212    CrusherLevel         = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
27213    CrushableLevel       = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
27214  
27215    CommandSet           = VehiclePOWTruckCommandSet
27216  
27217    ; *** AUDIO Parameters ***
27218    VoiceSelect = POWTruckGLAVoiceSelect
27219    VoiceMove = POWTruckGLAVoiceMove
27220    VoiceGuard = POWTruckGLAVoiceMove
27221    UnitSpecificSounds
27222      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
27223      ;TurretMoveStart     = RocketBuggyLand
27224      VoiceCreate          = POWTruckGLAVoiceCreate
27225      SoundMoveStart       = POWTruckUSAMoveStart
27226      SoundMoveStartDamaged = POWTruckUSAMoveStart
27227      TurretMoveLoop       = TurretMoveLoop
27228      SoundEject           = PilotSoundEject
27229      VoiceEject           = PilotVoiceEject
27230      ; Required for the W3DTruckDraw module
27231      TruckLandingSound    = NoSound
27232      TruckPowerslideSound = POWTruckUSAMoveStart
27233      VoiceCrush           = POWTruckGLAVoiceCrush
27234      ;VoicePickup          = POWTruckGLAVoicePickup
27235      VoiceEnter           = POWTruckGLAVoiceMove
27236    End
27237    ; *** ENGINEERING Parameters ***
27238    RadarPriority          = UNIT
27239    KindOf                 = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER TRANSPORT SCORE ;POW_TRUCK
27240    Body                   = ActiveBody ModuleTag_02
27241      MaxHealth            = 500.0
27242      InitialHealth        = 500.0
27243    End
27244  
27245  ;  Behavior               = POWTruckBehavior ModuleTag_03
27246  ;    ContainMax           = 10
27247  ;    EnterSound           = EnterPOWTruck
27248  ;    ExitSound            = ExitPOWTruck
27249  ;  End
27250  
27251  ;  Behavior = POWTruckAIUpdate ModuleTag_04
27252  ;    BoredTime            = 10000  ; in milliseconds
27253  ;    AtPrisonDistance     = 160.0  ; This close to a prison is close enough to be doing nothing at
27254  ;  End
27255  
27256    Behavior = AIUpdateInterface ModuleTag_04
27257      ; no data
27258    End
27259  
27260    Locomotor              = SET_NORMAL POWTruckLocomotor
27261    Behavior               = PhysicsBehavior ModuleTag_05
27262      Mass                 = 50.0
27263    End
27264    Behavior               = SlowDeathBehavior ModuleTag_06
27265      DeathTypes = ALL -CRUSHED -SPLATTED
27266      ProbabilityModifier  = 25
27267      DestructionDelay  = 1
27268      FX                   = FINAL    FX_BattleMasterExplosionOneFinal
27269      OCL                  = FINAL    OCL_GLAPOWTruckDeathEffect
27270    End
27271    Behavior                    = FXListDie ModuleTag_07
27272      DeathTypes = NONE +CRUSHED +SPLATTED
27273      DeathFX              = FX_CarCrush
27274    End
27275    Behavior                 = TransitionDamageFX ModuleTag_08
27276      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
27277      ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
27278    End
27279    Behavior = FlammableUpdate ModuleTag_21
27280      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
27281      AflameDamageAmount = 3       ; taking this much damage...
27282      AflameDamageDelay = 500       ; this often.
27283    End
27284  
27285    Behavior = StealthDetectorUpdate ModuleTag_HijackerDetect
27286      DetectionRate             = 500
27287      DetectionRange           = 75
27288      CanDetectWhileGarrisoned  = No
27289      CanDetectWhileContained   = No
27290      ExtraRequiredKindOf       = BOAT
27291    End
27292  
27293    Geometry               = BOX
27294    GeometryMajorRadius    = 15.0
27295    GeometryMinorRadius    = 7.0
27296    GeometryHeight         = 13.5     
27297    GeometryIsSmall        = Yes 
27298    Shadow                 = SHADOW_VOLUME   
27299  End
27300  
27301  ;------------------------------------------------------------------------------
27302  Object GLAAngryMobRockProjectileObject
27303  
27304    ; *** ART Parameters ***
27305  
27306    Draw = W3DModelDraw ModuleTag_01
27307      ConditionState = NONE
27308        Model = Mob_Rock
27309      End
27310    End
27311  
27312    ; ***DESIGN parameters ***
27313    DisplayName       = OBJECT:GLARock
27314    EditorSorting     = SYSTEM
27315    ArmorSet
27316      Armor = ProjectileArmor
27317    End
27318    VisionRange = 0.0
27319  
27320    ; *** ENGINEERING Parameters ***
27321    KindOf = PROJECTILE
27322    Body = ActiveBody ModuleTag_02
27323      MaxHealth       = 100.0
27324      InitialHealth   = 100.0
27325    End
27326  
27327    Behavior = DestroyDie ModuleTag_03
27328      ;nothing
27329    End
27330  
27331    Behavior = DumbProjectileBehavior ModuleTag_04
27332      TumbleRandomly = Yes    ; not implemented, alas
27333      DetonateCallsKill = Yes
27334      ; To tweak a Bezier path, please see GS
27335      FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
27336      SecondHeight = 10
27337      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
27338      SecondPercentIndent = 90%
27339      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
27340    End
27341  
27342   Behavior = PhysicsBehavior ModuleTag_05;lorenzen sez, please keep this, it allows tumbling
27343      Mass = 0.1 ; about the weight of a rock
27344    End
27345  
27346    Geometry = Sphere
27347    GeometryIsSmall = Yes
27348    GeometryMajorRadius = 1.0
27349  
27350  End
27351  
27352  
27353  ;------------------------------------------------------------------------------
27354  Object GLAAngryMobMolotovCocktailProjectileObject
27355  
27356    ; *** ART Parameters ***
27357    Draw = W3DModelDraw ModuleTag_01
27358      ConditionState = NONE
27359        Model = Mob_Botl
27360        ParticleSysBone = BONE_FX MolotovBurningRag
27361      End
27362    End
27363  
27364    ; ***DESIGN parameters ***
27365    DisplayName       = OBJECT:GLARock
27366    EditorSorting     = SYSTEM
27367    ArmorSet
27368      Armor = ProjectileArmor
27369    End
27370    VisionRange = 0.0
27371  
27372    ; *** ENGINEERING Parameters ***
27373    KindOf = PROJECTILE
27374    Body = ActiveBody ModuleTag_02
27375      MaxHealth       = 100.0
27376      InitialHealth   = 100.0
27377    End
27378  
27379  
27380    Behavior = DumbProjectileBehavior ModuleTag_03
27381      TumbleRandomly = Yes ; not implemented, alas
27382      DetonateCallsKill = Yes
27383      ; To tweak a Bezier path, please see GS
27384      FirstHeight = 30  //TALL ARC LOOK GOOD
27385      SecondHeight = 30 //TALL ARC LOOK GOOD
27386      FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
27387      SecondPercentIndent = 90%
27388      FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
27389    End
27390  
27391    Behavior = PhysicsBehavior ModuleTag_04;lorenzen sez, please keep this, it allows tumbling
27392      Mass = 0.1 ; about the weight of a rock
27393    End
27394  
27395  ;  Behavior = FireWeaponWhenDeadBehavior
27396  ;    DeathWeapon   = GLAAngryMobMolotovCocktailPersistentFlameWeapon
27397  ;    StartsActive  = Yes 
27398  ;  End
27399  
27400    Behavior = DestroyDie ModuleTag_05
27401      ;nothing
27402    End
27403  
27404  
27405    Geometry = Sphere
27406    GeometryIsSmall = Yes
27407    GeometryMajorRadius = 1.0
27408  
27409  End
27410  
27411  ;------------------------------------------------------------------------------
27412  Object ChinaArtilleryCannon
27413  
27414    ; *** ART Parameters ***
27415  ;  Draw = W3DModelDraw
27416  ;    DefaultConditionState
27417  ;      Model             = AVBomber_B
27418  ;    End
27419  ;  End
27420  
27421    ; ***DESIGN parameters ***
27422    ;DisplayName        = OBJECT:A10Thunderbolt
27423    EditorSorting       = VEHICLE
27424    Side                = China
27425    TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
27426    VisionRange         = 99999.0 
27427    ShroudClearingRange = 0
27428    ArmorSet
27429      Conditions      = None
27430      Armor           = AirplaneArmor
27431      DamageFX        = None
27432    End
27433  
27434  
27435    ; *** AUDIO Parameters ***
27436    ; In the Activation of the superweapon, where it plays only once instead of once per missile.
27437  ;  SoundMoveStart = FireArtilleryCannonSound
27438  
27439  
27440    ; *** ENGINEERING Parameters ***
27441    RadarPriority = UNIT
27442    KindOf = PRELOAD CAN_ATTACK VEHICLE AIRCRAFT UNATTACKABLE IGNORED_IN_GUI
27443    Body = ActiveBody ModuleTag_01
27444      MaxHealth       = 200.0
27445      InitialHealth   = 200.0
27446    End
27447  
27448    Behavior = DestroyDie ModuleTag_02
27449      ;nothing
27450    End
27451   
27452    Behavior = PhysicsBehavior ModuleTag_03
27453      Mass = 0.001 ; about the weight of grain of salt
27454    End
27455  
27456    Behavior = DeliverPayloadAIUpdate ModuleTag_05
27457    End
27458  
27459    Locomotor = SET_NORMAL ChinaArtilleryBarrageCannonLocomotor
27460  
27461    Geometry = Cylinder
27462    GeometryIsSmall = Yes
27463    GeometryMajorRadius = 1.0
27464    GeometryMinorRadius = 1.0
27465    GeometryHeight = 1.0
27466    Shadow = SHADOW_DECAL
27467    ShadowSizeX = 1;
27468    ShadowSizeY = 1;
27469    ShadowTexture = ShadowI;
27470  
27471  End
27472  
27473  ;------------------------------------------------------------------------------
27474  
27475  
27476  
27477  ;------------------------------------------------------------------------------
27478  Object ChinaArtilleryBarrageShell
27479  
27480    ; *** ART Parameters ***
27481    Draw = W3DModelDraw ModuleTag_01
27482      OkToChangeModelColor = Yes
27483      ConditionState = NONE
27484        Model = AVTankShel
27485        ParticleSysBone = NONE ArtilleryBarrageTrail
27486        ParticleSysBone = NONE ArtilleryBarrageTrailRing
27487      End
27488    End
27489  
27490    ; ***DESIGN parameters ***
27491    DisplayName      = OBJECT:Missile
27492    Side = China
27493    EditorSorting   = SYSTEM
27494    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
27495    VisionRange = 0.0  
27496    ArmorSet
27497      Conditions      = None
27498      Armor           = ProjectileArmor
27499      DamageFX        = None
27500    End
27501  
27502  
27503    ; *** AUDIO Parameters ***
27504    SoundAmbient = ArtilleryBarrageIncomingWhistle
27505  
27506  
27507    ; *** ENGINEERING Parameters ***
27508    KindOf            = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE ;SMALL_MISSILE
27509    Body = ActiveBody ModuleTag_02
27510      MaxHealth       = 100.0
27511      InitialHealth   = 100.0
27512    End
27513  
27514  ; ---- begin Projectile death behaviors
27515    Behavior = InstantDeathBehavior DeathModuleTag_01
27516      DeathTypes = NONE +DETONATED
27517      ; we detonated normally.  No effect, since it is in weapon.  Don't want to double.
27518      ; FX        = FX_ArtilleryBarrage
27519    End
27520    Behavior = InstantDeathBehavior DeathModuleTag_02
27521      DeathTypes = NONE +LASERED
27522      ; shot down by laser.
27523      FX         = FX_GenericMissileDisintegrate
27524      OCL        = OCL_GenericMissileDisintegrate
27525    End
27526    Behavior = InstantDeathBehavior DeathModuleTag_03
27527      DeathTypes = ALL -LASERED -DETONATED
27528      ; shot down by nonlaser.
27529      FX         = FX_GenericMissileDeath
27530    End
27531  ; ---- end Projectile death behaviors
27532  
27533  ; Besides being the wrong weapon, the weapon is fired from the DeliverPayload listing in OCL.ini
27534  ;  Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
27535  ;    DeathWeapon   = A10ThunderboltMissileWeapon
27536  ;    StartsActive  = Yes
27537  ;  End
27538  
27539    Behavior = PhysicsBehavior ModuleTag_08
27540      Mass = 1
27541    End
27542    Behavior = MissileAIUpdate ModuleTag_09
27543      TryToFollowTarget = Yes 
27544      FuelLifetime = 10000
27545      InitialVelocity = 30                ; in dist/sec
27546      IgnitionDelay = 0
27547    End
27548    ; It's a missile, it needs to hit so it can +DETONATED
27549  ;  Behavior = HeightDieUpdate ModuleTag_10
27550  ;    TargetHeight = 1.0
27551  ;    TargetHeightIncludesStructures = No
27552  ;  End
27553    Locomotor = SET_NORMAL A10ThunderboltMissileLocomotor
27554  
27555    Geometry = Sphere
27556    GeometryIsSmall = Yes
27557    GeometryMajorRadius = 1.0
27558  
27559    Behavior = SpecialPowerCompletionDie ModuleTag_11
27560      SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike
27561    End
27562  
27563  End
27564  
27565  ;------------------------------------------------------------------------------
27566  ;*************************** Cinematic-only unit ******************************
27567  Object CINE_AmericaInfantryOfficer
27568      ; *** ART Parameters ***
27569    Draw = W3DModelDraw ModuleTag_01
27570      OkToChangeModelColor = Yes
27571  
27572      ;NORMAL STANDING
27573      DefaultConditionState
27574        Model = AIOFCR_SKN
27575        IdleAnimation = AIOFCR_SKL.AIOFCR_STA 0 21
27576        ;Regular spice animations
27577        IdleAnimation = AIOFCR_SKL.AIOFCR_IDA
27578        IdleAnimation = AIOFCR_SKL.AIOFCR_IDB
27579        AnimationMode = ONCE
27580        WeaponFireFXBone = PRIMARY Muzzle
27581        WeaponMuzzleFlash = PRIMARY MuzzleFX
27582        TransitionKey = TRANS_STAND
27583      End
27584  
27585      ConditionState    = MOVING
27586        Animation       = AIOFCR_SKL.AIOFCR_RNA
27587        AnimationMode   = LOOP
27588        ParticleSysBone     = None InfantryDustTrails
27589      End
27590  
27591      ; NORMAL ATTACK
27592      ;--------------------------------------------------------
27593      ; Drawing gun
27594      ConditionState  = PREATTACK_A
27595        Animation     = AIOFCR_SKL.AIOFCR_ATAST
27596        AnimationMode = ONCE
27597      End
27598      AliasConditionState = PREATTACK_A MOVING
27599      AliasConditionState = PREATTACK_A FIRING_A
27600      AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
27601  
27602      ; Firing gun
27603      ConditionState  = FIRING_A
27604        Animation     = AIOFCR_SKL.AIOFCR_ATALP
27605        AnimationMode = LOOP
27606        TransitionKey = TRANS_FIRING_A
27607      End
27608      ConditionState  = BETWEEN_FIRING_SHOTS_A
27609        Animation     = AIOFCR_SKL.AIOFCR_ATALP
27610        AnimationMode = LOOP
27611        TransitionKey = TRANS_FIRING_A
27612      End
27613      AliasConditionState = RELOADING_A
27614      AliasConditionState = MOVING FIRING_A
27615      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
27616      AliasConditionState = MOVING RELOADING_A
27617  
27618      ; This transition allows him to put his gun away when he's finished attacking.
27619      TransitionState = TRANS_FIRING_A TRANS_STAND
27620        Animation     = AIOFCR_SKL.AIOFCR_ATAED
27621        AnimationMode = ONCE
27622      End
27623      ;--------------------------------------------------------
27624  
27625      ConditionState  = DYING
27626        Animation     = AIOFCR_SKL.AIOFCR_DTA
27627        Animation     = AIOFCR_SKL.AIOFCR_DTB
27628        AnimationMode = ONCE
27629        TransitionKey = TRANS_Dying
27630      End
27631  
27632      TransitionState = TRANS_Dying TRANS_Flailing
27633        Animation = AIOFCR_SKL.AIOFCR_ADTE1
27634        AnimationMode = ONCE
27635      End
27636  
27637      ConditionState = DYING EXPLODED_FLAILING
27638        Animation = AIOFCR_SKL.AIOFCR_ADTE2
27639        AnimationMode = LOOP
27640        TransitionKey = TRANS_Flailing
27641      End
27642  
27643      ConditionState = DYING EXPLODED_BOUNCING
27644        Animation = AIOFCR_SKL.AIOFCR_ADTE3
27645        AnimationMode = ONCE
27646        TransitionKey = None
27647      End
27648  
27649      ConditionState  = SPECIAL_CHEERING
27650        Animation     = AIOFCR_SKL.AIOFCR_CHA
27651        AnimationMode = LOOP
27652      End
27653  
27654      ;PARACHUTING ANIMATIONS
27655  
27656      ;@TODO - MISSING ANIMATION FILE
27657      ;ConditionState   = FREEFALL
27658      ;  Animation      = AIOFCR_SKL.AIOFCR_PFL
27659      ;  AnimationMode  = LOOP
27660      ;  TransitionKey  = TRANS_Falling
27661      ;End
27662      ;AliasConditionState = FREEFALL REALLYDAMAGED
27663      ;AliasConditionState = FREEFALL DYING
27664      ConditionState  = PARACHUTING
27665        Animation     = AIOFCR_SKL.AIOFCR_PHG
27666        AnimationMode = LOOP
27667        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
27668        TransitionKey = TRANS_Chute
27669  
27670      End
27671      AliasConditionState = PARACHUTING REALLYDAMAGED
27672      AliasConditionState = PARACHUTING DYING
27673      TransitionState = TRANS_Falling TRANS_Chute
27674        Animation     = AIOFCR_SKL.AIOFCR_POP
27675        AnimationMode = ONCE
27676        Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
27677      End
27678      TransitionState = TRANS_Chute TRANS_Stand
27679        Animation     = AIOFCR_SKL.AIOFCR_PTD
27680        AnimationMode = ONCE
27681      End
27682  
27683      ;SURRENDER ANIMATIONS
27684  ; surrender is cut. sorry. (srj)
27685  ;    ConditionState  = SURRENDER
27686  ;      Animation     = AIOFCR_SKL.AIOFCR_SLP
27687  ;      AnimationMode = LOOP
27688  ;      TransitionKey = TRANS_SurrenderStand
27689  ;    End
27690  ;    ConditionState  = SURRENDER MOVING
27691  ;      Animation     = AIOFCR_SKL.AIOFCR_SWKLP
27692  ;      AnimationMode = LOOP
27693  ;      TransitionKey = TRANS_SurrenderMoving
27694  ;    End
27695  ;    TransitionState = TRANS_SurrenderStand TRANS_SurrenderMoving
27696  ;      Animation     = AIOFCR_SKL.AIOFCR_SWKST
27697  ;      AnimationMode = ONCE
27698  ;    End
27699  ;    TransitionState = TRANS_Stand TRANS_SurrenderStand
27700  ;      Animation     = AIOFCR_SKL.AIOFCR_SST
27701  ;      AnimationMode = ONCE
27702  ;    End
27703      
27704    End
27705  
27706    ; ***DESIGN parameters ***
27707    DisplayName      = OBJECT:Officer
27708    Side = America
27709    EditorSorting = INFANTRY
27710    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
27711    WeaponSet
27712      Conditions = None 
27713      Weapon = PRIMARY AmericaOfficerMachineGun
27714    End
27715    ArmorSet
27716      Conditions      = None
27717      Armor           = HumanArmor
27718      DamageFX        = InfantryDamageFX
27719    End
27720    VisionRange = 150
27721    ShroudClearingRange = 150
27722  
27723    BuildCost     = 400
27724    BuildTime     = 10.0          ;in seconds      
27725  
27726    ; *** AUDIO Parameters ***
27727    VoiceSelect = RangerVoiceSelect
27728    VoiceGroupSelect = BattleCrySound
27729    VoiceMove = RangerVoiceMove
27730    VoiceAttack = RangerVoiceAttack
27731    SoundDie = RangerVoiceDie
27732    SoundDieFire = DieByFireUSA
27733    SoundDieToxin = DieByToxinChina
27734  
27735    ; *** ENGINEERING Parameters ***
27736    RadarPriority = UNIT
27737    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
27738  
27739    Body = ActiveBody ModuleTag_02
27740      MaxHealth       = 100.0
27741      InitialHealth   = 100.0
27742    End
27743  
27744    Behavior = AIUpdateInterface ModuleTag_03
27745      AutoAcquireEnemiesWhenIdle = Yes
27746    End
27747    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
27748      ScanRate = 1000 ; once a second.
27749      ScanRange = 300 ;
27750      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
27751      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
27752    End
27753  
27754    Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
27755    Behavior = PhysicsBehavior ModuleTag_05
27756      Mass = 5.0
27757    End
27758   
27759    Behavior = SquishCollide ModuleTag_07
27760      ;nothing
27761    End
27762  
27763  ; --- begin Death modules ---
27764    Behavior = SlowDeathBehavior ModuleTag_Death01
27765      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
27766      SinkDelay           = 3000
27767      SinkRate            = 0.5     ; in Dist/Sec
27768      DestructionDelay    = 8000
27769      FX                  = INITIAL FX_GIDie
27770    End
27771    Behavior = SlowDeathBehavior ModuleTag_Death02
27772      DeathTypes          = NONE +CRUSHED +SPLATTED
27773      SinkDelay           = 3000
27774      SinkRate            = 0.5     ; in Dist/Sec
27775      DestructionDelay    = 8000
27776      FX                  = INITIAL FX_GIDieCrushed
27777    End
27778    Behavior = SlowDeathBehavior ModuleTag_Death03
27779      DeathTypes          = NONE +EXPLODED
27780      SinkDelay           = 3000
27781      SinkRate            = 0.5     ; in Dist/Sec
27782      DestructionDelay    = 8000
27783      FX                  = INITIAL FX_GIDie
27784      FlingForce          = 8
27785      FlingForceVariance  = 3
27786      FlingPitch          = 60
27787      FlingPitchVariance  = 10
27788    End
27789    Behavior = SlowDeathBehavior ModuleTag_Death04
27790      DeathTypes          = NONE +BURNED
27791      DestructionDelay    = 0
27792      FX                  = INITIAL FX_GIDie
27793      OCL                 = INITIAL OCL_FlamingInfantry
27794    End
27795    Behavior = SlowDeathBehavior ModuleTag_Death05
27796      DeathTypes          = NONE +POISONED
27797      DestructionDelay    = 0
27798      FX                  = INITIAL FX_GIDie
27799      OCL                 = INITIAL OCL_ToxicInfantry
27800    End
27801  ; --- end Death modules ---
27802  
27803    Behavior = PoisonedBehavior ModuleTag_10
27804      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
27805      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
27806    End
27807   
27808    Geometry = CYLINDER
27809    GeometryMajorRadius = 10.0
27810    GeometryMinorRadius = 10.0
27811    GeometryHeight = 12.0
27812    GeometryIsSmall = Yes
27813    Shadow = SHADOW_DECAL
27814    ShadowSizeX = 14;
27815    ShadowSizeY = 14;
27816    ShadowTexture = ShadowI;
27817    BuildCompletion = APPEARS_AT_RALLY_POINT
27818  
27819  End
27820  
27821  ;------------------------------------------------------------------------------
27822  ;************************ Cinematic-only unit *********************************
27823  Object CINE_ChinaAmbassador
27824  
27825      ; *** ART Parameters ***
27826    Draw = W3DModelDraw ModuleTag_01
27827      OkToChangeModelColor = Yes
27828  
27829      DefaultConditionState
27830        Model = NIAMBSDR_SKN
27831        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
27832        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
27833        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
27834        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
27835        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
27836        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
27837        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
27838        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDA
27839        IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDB
27840        AnimationMode = ONCE
27841        TransitionKey = TRANS_Stand
27842      End
27843          
27844      ConditionState = MOVING
27845        Animation = NIAMBSDR_SKL.NIAMBSDR_RNA ;***was using WKA but it doesn't exist so I changed it to kill the assert -- Kris 
27846        AnimationMode = LOOP
27847        Flags = RANDOMSTART
27848      End
27849  
27850      ConditionState = MOVING PANICKING
27851        Animation = NIAMBSDR_SKL.NIAMBSDR_RNA 
27852        AnimationMode = LOOP
27853        Flags = RANDOMSTART
27854      End
27855  
27856      ConditionState = DYING
27857        Animation = NIAMBSDR_SKL.NIAMBSDR_DTA
27858        Animation = NIAMBSDR_SKL.NIAMBSDR_DTB
27859        AnimationMode = ONCE
27860        TransitionKey = TRANS_Dying
27861      End
27862  
27863      ;TransitionState = TRANS_Dying TRANS_Flailing
27864      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD1
27865      ;  AnimationMode = ONCE
27866      ;End
27867  
27868      ;ConditionState = DYING EXPLODED_FLAILING
27869      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD2
27870      ;  AnimationMode = LOOP
27871      ;  TransitionKey = TRANS_Flailing
27872      ;End
27873  
27874      ;ConditionState = DYING EXPLODED_BOUNCING
27875      ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD3
27876      ;  AnimationMode = ONCE
27877      ;  TransitionKey = None
27878      ;End
27879    End
27880  
27881    ; ***DESIGN parameters ***
27882    Buildable           = No
27883    DisplayName         = OBJECT:Ambassador
27884    Side                = China
27885    EditorSorting       = INFANTRY
27886    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
27887    WeaponSet
27888      ; no weapons
27889    End
27890    ArmorSet
27891      Conditions      = None
27892      Armor           = HumanArmor
27893      DamageFX        = InfantryDamageFX
27894    End
27895    VisionRange = 150
27896    ShroudClearingRange = 150
27897  
27898    ExperienceValue = 50 100 150 400    ;Experience point value at each level
27899    ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
27900    IsTrainable = Yes             ;Can gain experience
27901  
27902    ; *** AUDIO Parameters ***
27903    SoundDie = RedGuardVoiceDie
27904  
27905    ; *** ENGINEERING Parameters ***
27906    RadarPriority = UNIT
27907    KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
27908  
27909    Body = ActiveBody ModuleTag_02
27910      MaxHealth       = 50.0
27911      InitialHealth   = 50.0
27912    End
27913  
27914    Behavior = AIUpdateInterface ModuleTag_03
27915      AutoAcquireEnemiesWhenIdle = Yes
27916    End
27917    Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
27918    Behavior = PhysicsBehavior ModuleTag_04
27919      Mass = 5.0
27920    End
27921    Behavior = SlowDeathBehavior ModuleTag_05
27922      SinkDelay = 3000
27923      SinkRate = 0.5     ; in Dist/Sec
27924      DestructionDelay = 8000
27925    End
27926   
27927    Behavior = SquishCollide ModuleTag_06
27928      ;nothing
27929    End
27930  
27931    Behavior = FXListDie ModuleTag_07
27932      DeathTypes = ALL -CRUSHED -SPLATTED
27933      DeathFX = FX_GIDie
27934    End
27935    Behavior = FXListDie ModuleTag_08
27936      DeathTypes = NONE +CRUSHED +SPLATTED
27937      DeathFX = FX_GIDieCrushed
27938    End
27939  
27940    Behavior = PoisonedBehavior ModuleTag_09
27941      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
27942      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
27943    End
27944   
27945    Geometry = CYLINDER
27946    GeometryMajorRadius = 10.0
27947    GeometryMinorRadius = 10.0
27948    GeometryHeight = 12.0
27949    GeometryIsSmall = Yes
27950    Shadow = SHADOW_DECAL
27951    ShadowSizeX = 14
27952    ShadowSizeY = 14
27953    ShadowTexture = ShadowI
27954    BuildCompletion = APPEARS_AT_RALLY_POINT
27955  
27956  End
27957  
27958  ;------------------------------------------------------------------------------
27959  
27960  ; ************** Nova Unit Objects *******************
27961  
27962  ;------------------------------------------------------------------------------
27963  
27964  Object NeutronMissileOP        ; *note* is now hydrogen missile
27965  
27966    ; *** ART Parameters ***
27967    Draw               = W3DModelDraw ModuleTag_01
27968      OkToChangeModelColor = Yes
27969      ConditionState   = NONE
27970        Model          = NBNRocket
27971      End
27972      ConditionState   = DAMAGED REALLYDAMAGED RUBBLE
27973        Model          = NONE
27974      End
27975      
27976    End
27977  
27978    ; ***DESIGN parameters ***
27979    DisplayName        = OBJECT:NeutronMissileOP
27980    KindOf             = UNATTACKABLE
27981    EditorSorting      = SYSTEM
27982    VisionRange = 300.0  
27983    ShroudClearingRange = 0
27984    TransportSlotCount = 10
27985    ArmorSet
27986      Conditions       = None
27987      Armor            = ProjectileArmor
27988      DamageFX         = None
27989    End
27990      
27991    ; *** ENGINEERING Parameters ***
27992    Body = ActiveBody ModuleTag_02
27993      MaxHealth        = 99999999.0
27994      InitialHealth    = 99999999.0
27995    End
27996  
27997    Behavior = NeutronMissileUpdate ModuleTag_03
27998      DistanceToTravelBeforeTurning = 300       ; goes straight up a long ways first
27999      MaxTurnRate = 7200                        ; huge, since it turns off-camera
28000      ForwardDamping = 0.1
28001      RelativeSpeed = 2.0
28002      LaunchFX = FX_NeutronMissileLaunch
28003      IgnitionFX = FX_NeutronMissileIgnition
28004      TargetFromDirectlyAbove = 500      ; aim for an intermed spot directly above the target, so we come straight down onto it
28005      SpecialAccelFactor = 1
28006      SpecialSpeedTime = 1500
28007      SpecialSpeedHeight = 160
28008      SpecialJitterDistance = 0.4
28009      DeliveryDecalRadius = 210
28010      DeliveryDecal
28011        Texture           = SCCNuclearMissile_China
28012        Style             = SHADOW_ALPHA_DECAL
28013        OpacityMin        = 25%
28014        OpacityMax        = 50%
28015        OpacityThrobTime  = 500
28016        Color             = R:200 G:200 B:50 A:255 
28017        OnlyVisibleToOwningPlayer = Yes
28018      End
28019    End
28020  
28021    Behavior = HeightDieUpdate ModuleTag_04
28022      TargetHeight        = 100.0
28023      TargetHeightIncludesStructures = No
28024      OnlyWhenMovingDown  = Yes
28025      SnapToGroundOnDeath = Yes
28026      InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
28027    End
28028  
28029    Behavior = SpecialPowerCompletionDie ModuleTag_05
28030      SpecialPowerTemplate = SuperweaponNeutronMissile
28031    End
28032  
28033    Behavior = NeutronMissileSlowDeathBehavior ModuleTag_06
28034      DestructionDelay    = 3501
28035      ScorchMarkSize      = 400 ;380
28036      FXList              = FX_NukeOP
28037      
28038      Blast1Enabled       = Yes
28039      Blast1Delay         = 580     ;in milliseconds
28040      Blast1ScorchDelay   = 100     ;in milliseconds
28041      Blast1InnerRadius   = 60.0    ;objects inside this get the full damage
28042      Blast1OuterRadius   = 60.0    ;objects inside this get some of the full damage
28043      Blast1MaxDamage     = 100.0     ;damage within inner radius of blast
28044      Blast1MinDamage     = 20.0     ;always do at least this much damage to objects
28045      Blast1ToppleSpeed   = 0.5     ;higher #'s topple faster
28046      Blast1PushForce     = 30.0    ;higher #'s push more
28047      
28048      Blast2Enabled       = Yes
28049      Blast2Delay         = 660    ;in milliseconds
28050      Blast2ScorchDelay   = 180     ;in milliseconds
28051      Blast2InnerRadius   = 90.0    ;objects inside this get the full damage
28052      Blast2OuterRadius   = 90.0    ;objects inside this get some of the full damage
28053      Blast2MaxDamage     = 100.0     ;damage within inner radius of blast
28054      Blast2MinDamage     = 20.0     ;always do at least this much damage to objects
28055      Blast2ToppleSpeed   = 0.45    ;higher #'s topple faster
28056      Blast2PushForce     = 8.0     ;higher #'s push more
28057      
28058      Blast3Enabled       = Yes
28059      Blast3Delay         = 720    ;in milliseconds
28060      Blast3ScorchDelay   = 260     ;in milliseconds
28061      Blast3InnerRadius   = 120.0   ;objects inside this get the full damage
28062      Blast3OuterRadius   = 120.0   ;objects inside this get some of the full damage
28063      Blast3MaxDamage     = 100.0     ;damage within inner radius of blast
28064      Blast3MinDamage     = 20.0     ;always do at least this much damage to objects
28065      Blast3ToppleSpeed   = 0.42    ;higher #'s topple faster
28066      Blast3PushForce     = 6.0     ;higher #'s push more
28067  
28068      Blast4Enabled       = Yes
28069      Blast4Delay         = 850    ;in milliseconds
28070      Blast4ScorchDelay   = 340     ;in milliseconds
28071      Blast4InnerRadius   = 150.0   ;objects inside this get the full damage
28072      Blast4OuterRadius   = 150.0   ;objects inside this get some of the full damage
28073      Blast4MaxDamage     = 100.0     ;damage within inner radius of blast
28074      Blast4MinDamage     = 20.0     ;always do at least this much damage to objects
28075      Blast4ToppleSpeed   = 0.40    ;higher #'s topple faster
28076      Blast4PushForce     = 6.0     ;higher #'s push more
28077  
28078      Blast5Enabled       = Yes
28079      Blast5Delay         = 1000    ;in milliseconds
28080      Blast5ScorchDelay   = 420     ;in milliseconds
28081      Blast5InnerRadius   = 180.0   ;objects inside this get the full damage
28082      Blast5OuterRadius   = 180.0   ;objects inside this get some of the full damage
28083      Blast5MaxDamage     = 100.0     ;damage within inner radius of blast
28084      Blast5MinDamage     = 20.0     ;always do at least this much damage to objects
28085      Blast5ToppleSpeed   = 0.38    ;higher #'s topple faster
28086      Blast5PushForce     = 6.0     ;higher #'s push more
28087      
28088      Blast6Enabled       = Yes
28089      Blast6Delay         = 1180    ;in milliseconds
28090      Blast6ScorchDelay   = 500     ;in milliseconds
28091      Blast6InnerRadius   = 80.0    ;objects inside this get the full damage
28092      Blast6OuterRadius   = 260.0   ;objects inside this get some of the full damage
28093      Blast6MaxDamage     = 3500.0  ;damage within inner radius of blast
28094      Blast6MinDamage     = 300.0   ;always do at least this much damage to objects
28095      Blast6ToppleSpeed   = 0.35    ;higher #'s topple faster
28096      Blast6PushForce     = 4.0     ;higher #'s push more
28097  
28098      Blast7Enabled       = Yes
28099      Blast7Delay         = 1600  ;in milliseconds, don't do the damage wave
28100      Blast7ScorchDelay   = 620     ;in milliseconds
28101      Blast7InnerRadius   = 80.0   ;objects inside this get the full damage
28102      Blast7OuterRadius   = 260.0   ;objects inside this get some of the full damage
28103      Blast7MaxDamage     = 300.0     ;damage within inner radius of blast
28104      Blast7MinDamage     = 100.0     ;always do at least this much damage to objects
28105      Blast7ToppleSpeed   = 0.38    ;higher #'s topple faster
28106      Blast7PushForce     = 6.0     ;higher #'s push more
28107  
28108      Blast8Enabled       = Yes
28109      Blast8Delay         = 2000  ;in milliseconds, don't do the damage wave    
28110      Blast8ScorchDelay   = 700     ;in milliseconds
28111      Blast8InnerRadius   = 80.0   ;objects inside this get the full damage
28112      Blast8OuterRadius   = 260.0   ;objects inside this get some of the full damage
28113      Blast8MaxDamage     = 300.0     ;damage within inner radius of blast
28114      Blast8MinDamage     = 100.0     ;always do at least this much damage to objects
28115      Blast8ToppleSpeed   = 0.38    ;higher #'s topple faster
28116      Blast8PushForce     = 6.0     ;higher #'s push more
28117  
28118      Blast9Enabled       = Yes
28119      Blast9Delay         = 999999  ;in milliseconds, don't do the damage wave    
28120      Blast9ScorchDelay   = 800     ;in milliseconds
28121      Blast9OuterRadius   = 250.0   ;objects inside this get some of the full damage
28122      
28123      OCL = MIDPOINT   OCL_RadiationFieldMedium
28124  
28125    End
28126  
28127    Geometry = CYLINDER
28128    GeometryIsSmall = Yes
28129    GeometryMajorRadius = 7.0
28130    GeometryHeight = 60.0
28131  
28132  End
28133  
28134  ;------------------------------------------------------------------------------
28135  Object NeutronBomb
28136  
28137    ; *** ART Parameters ***
28138    Draw = W3DModelDraw ModuleTag_01
28139      OkToChangeModelColor = Yes
28140      DefaultConditionState
28141        Model = AVBomber_B
28142      End
28143    End
28144  
28145    ; ***DESIGN parameters ***
28146    DisplayName         = OBJECT:NeutronBomb
28147    Side                = GLA
28148    EditorSorting       = SYSTEM
28149    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
28150    VisionRange         = 300.0  
28151    ShroudClearingRange = 0
28152    ArmorSet
28153      Conditions      = None
28154      Armor           = ProjectileArmor
28155      DamageFX        = None
28156    End
28157  
28158    ; *** AUDIO Parameters ***
28159    SoundFallingFromPlane = DaisyCutterWeapon
28160      
28161    ; *** ENGINEERING Parameters ***
28162    KindOf            = PROJECTILE
28163    Body = ActiveBody ModuleTag_02
28164      MaxHealth       = 100.0
28165      InitialHealth   = 100.0
28166    End
28167    
28168    Behavior = AIUpdateInterface ModuleTag_03
28169    End
28170    Locomotor = SET_NORMAL None
28171  
28172    Behavior = PhysicsBehavior ModuleTag_04
28173      Mass                  = 75.0
28174      AerodynamicFriction   = 1  ; this is now friction-per-sec
28175      ForwardFriction       = 33     ; this is now friction-per-sec
28176      CenterOfMassOffset    = 1  ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
28177    End
28178  
28179    Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
28180      DeathWeapon   = NeutronBombWeapon
28181      StartsActive  = Yes
28182    End
28183  
28184    Behavior = HeightDieUpdate ModuleTag_06
28185      TargetHeight = 40.0
28186      TargetHeightIncludesStructures = No
28187    End
28188  
28189    Behavior = SpecialPowerCompletionDie ModuleTag_07
28190      SpecialPowerTemplate = SuperweaponNeutronBomb
28191    End
28192    Behavior = DestroyDie ModuleTag_08
28193      ;nothing
28194    End
28195  
28196     Behavior = FXListDie ModuleTag_09
28197      DeathFX = FX_NeutronBomb
28198    End
28199  
28200  ;  Geometry = Sphere
28201   ; GeometryIsSmall = Yes
28202    ;GeometryMajorRadius = 12.0
28203  
28204  End
28205  
28206  ;------------------------------------------------------------------------------
28207  Object NeutronEmissionField
28208  
28209    ; *** ART Parameters ***
28210    Draw = W3DModelDraw ModuleTag_01
28211      DefaultConditionState
28212        Model = NONE
28213      End
28214    End
28215  
28216    ; ***DESIGN parameters ***
28217    EditorSorting = SYSTEM
28218    KindOf = IMMOBILE CLEANUP_HAZARD STICK_TO_TERRAIN_SLOPE INERT NO_COLLIDE
28219    ArmorSet
28220      Conditions      = None
28221      Armor           = HazardousMaterialArmor
28222    End
28223  
28224    ; ***AUDIO parameters ***
28225    SoundAmbient      = AnthraxPoolAmbientLoop
28226    SoundDie          = AnthraxPoolDie
28227  
28228    ; *** ENGINEERING Parameters ***
28229    Body = ActiveBody ModuleTag_02
28230      MaxHealth        = 120.0
28231      InitialHealth    = 120.0
28232    End
28233    Behavior = FireWeaponUpdate ModuleTag_03
28234      Weapon = NeutronBombEmissionFieldWeapon
28235    End
28236  
28237    Behavior = FireWeaponUpdate ModuleTag_04
28238      Weapon = NeutronBombEmissionFieldWeaponPoison
28239    End
28240  
28241    Behavior = LifetimeUpdate ModuleTag_05
28242      MinLifetime = 20000
28243      MaxLifetime = 20000
28244    End
28245    
28246    Behavior = FireWeaponUpdate ModuleTag_06
28247      Weapon = HazardFieldCoreWeapon ; Prevents stacking of fields with a small blast of cleaning at the core at startup
28248    End
28249  
28250    Behavior = DestroyDie ModuleTag_07
28251    End
28252  
28253    Geometry            = CYLINDER
28254    GeometryMajorRadius = 150.0
28255    GeometryHeight      = 1.0
28256    GeometryIsSmall     = No
28257    
28258  End
28259  
28260  ;------------------------------------------------------------------------------
28261  Object TomahawkMissileFromB52
28262  
28263    ; *** ART Parameters ***
28264    Draw = W3DModelDraw ModuleTag_01
28265      OkToChangeModelColor = Yes
28266      ConditionState = NONE
28267        Model = AVTomahawk_M
28268      End
28269    End
28270  
28271    ; ***DESIGN parameters ***
28272    DisplayName      = OBJECT:TomahawkMissile
28273    EditorSorting   = SYSTEM
28274    VisionRange = 0.0
28275    TransportSlotCount  = 1
28276    ArmorSet
28277      Conditions      = None
28278      Armor           = BallisticMissileArmor 
28279      DamageFX        = None
28280    End
28281  
28282    ; *** AUDIO Parameters ***
28283    ;SoundFallingFromPlane = TomahawkWeapon
28284  
28285    ; *** ENGINEERING Parameters ***
28286    KindOf = PROJECTILE SMALL_MISSILE
28287    Body = ActiveBody ModuleTag_02
28288      MaxHealth       = 200.0
28289      InitialHealth   = 200.0
28290    End
28291  
28292  ; ---- begin Projectile death behaviors
28293    Behavior = InstantDeathBehavior DeathModuleTag_01
28294      DeathTypes = NONE +DETONATED
28295      ; we detonated normally.
28296      FX          = WeaponFX_TomahawkMissileDetonation
28297    End
28298    Behavior = InstantDeathBehavior DeathModuleTag_02
28299      DeathTypes = NONE +LASERED
28300      ; shot down by laser.
28301      FX         = FX_GenericMissileDisintegrate
28302      OCL        = OCL_GenericMissileDisintegrate
28303    End
28304    Behavior = InstantDeathBehavior DeathModuleTag_03
28305      DeathTypes = ALL -LASERED -DETONATED
28306      ; shot down by nonlaser.
28307      FX         = FX_GenericMissileDeath
28308    End
28309  ; ---- end Projectile death behaviors
28310      
28311    Behavior = PhysicsBehavior ModuleTag_06
28312      Mass = 1
28313    End
28314    Behavior = MissileAIUpdate ModuleTag_07
28315      TryToFollowTarget = Yes 
28316      FuelLifetime = 10000
28317      IgnitionDelay = 300
28318      IgnitionFX = FX_TomahawkIgnition
28319      InitialVelocity = 70                ; in dist/sec
28320      ;DistanceToTravelBeforeTurning = 80
28321      DistanceToTargetBeforeDiving = 100
28322      DistanceToTargetForLock = 20
28323    End
28324  
28325    Locomotor = SET_NORMAL B52TomahawkMissileLocomotor
28326  
28327    Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
28328    GeometryMajorRadius = 8.0
28329    GeometryHeight = 4.0
28330    GeometryIsSmall = Yes    
28331  
28332    Shadow = SHADOW_DECAL
28333  End
28334  
28335  ;------------------------------------------------------------------------------
28336  Object GLAPlaneSuicide
28337  
28338    ; *** ART Parameters ***
28339    SelectPortrait         = 
28340    ButtonImage            = SCTempDefaultCommand
28341    
28342    UpgradeCameo1 = Upgrade_GLAAnthraxBeta
28343    ;UpgradeCameo2 = 
28344    ;UpgradeCameo3 = NONE
28345    ;UpgradeCameo4 = NONE
28346    ;UpgradeCameo5 = NONE
28347    
28348    Draw = W3DModelDraw ModuleTag_01
28349   
28350      DefaultConditionState
28351        Model             = CVCDTPLN
28352        ;HideSubObject       = BurnerFX01 BurnerFX02
28353        WeaponLaunchBone     = PRIMARY WeaponA
28354      End
28355  
28356      ConditionState        = JETEXHAUST
28357        ParticleSysBone      = Wingtip01 JetContrail
28358        ParticleSysBone      = Wingtip02 JetContrail
28359      End
28360  
28361      ;ConditionState        = JETEXHAUST JETAFTERBURNER
28362      ;  ParticleSysBone     = Wingtip01 JetContrail
28363      ;  ParticleSysBone     = Wingtip02 JetContrail
28364      ;  ShowSubObject       = BurnerFX01 BurnerFX02
28365      ;  ParticleSysBone     = Engine01 JetLenzflare
28366      ;  ParticleSysBone     = Engine02 JetLenzflare
28367      ;End
28368  
28369      ConditionState        = REALLYDAMAGED
28370        Model               = CVCDTPLN_D
28371        ParticleSysBone     = Smoke01 JetSmoke
28372        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
28373      End
28374      
28375      ConditionState        = REALLYDAMAGED JETEXHAUST
28376        Model               = CVCDTPLN_D
28377        ParticleSysBone     = Smoke01 JetSmoke
28378        ParticleSysBone     = Engine01 JetEngineDamagedSmoke
28379        ParticleSysBone     = Wingtip01 JetContrail
28380        ParticleSysBone     = Wingtip02 JetContrail
28381      End
28382  
28383      ;ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
28384      ;  Model               = AVRaptor_D
28385      ;  ; damage
28386      ;  ParticleSysBone     = Smoke01 JetSmoke
28387      ;  ParticleSysBone     = Engine01 JetEngineDamagedSmoke
28388      ;  ; afterburner
28389      ;  ShowSubObject       = BurnerFX01 BurnerFX02
28390      ;  ParticleSysBone     = Engine01 JetLenzflare
28391      ;  ParticleSysBone     = Engine02 JetLenzflare
28392      ;  ; exhaust
28393      ;  ParticleSysBone     = Wingtip01 JetContrail
28394      ;  ParticleSysBone     = Wingtip02 JetContrail
28395      ;End
28396  
28397      ConditionState        = RUBBLE
28398        Model               = CVCDTPLN_D
28399        HideSubObject       = None 
28400        ShowSubObject       = None
28401      End
28402  
28403      ;ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
28404      ;  Model               = AVRaptor_D1B
28405      ;  ;HideSubObject is needed cause there're inherited from default condition state      
28406      ;  HideSubObject       = None 
28407      ;  ShowSubObject       = None
28408      ;  ParticleSysBone     = Engine01 JetExhaust
28409      ;  ParticleSysBone     = Engine02 JetExhaust
28410      ;  ; exhaust
28411      ;  ParticleSysBone     = Wingtip01 JetContrail
28412      ;  ParticleSysBone     = Wingtip02 JetContrail
28413      ;End
28414  
28415      OkToChangeModelColor = Yes
28416  
28417    End
28418  
28419    ; ***DESIGN parameters ***
28420    DisplayName             = OBJECT:GLASuicidePlane
28421    EditorSorting           = VEHICLE
28422    Side                    = GLA
28423    TransportSlotCount      = 0     ;how many "slots" we take in a transport (0 == not transportable)
28424    VisionRange             = 180.0 
28425    ShroudClearingRange     = 400
28426    Prerequisites
28427      Object                = GLAAirfield
28428    End
28429  
28430    WeaponSet
28431      Conditions            = None 
28432      Weapon                = PRIMARY SuicideWeapon
28433    End
28434    ArmorSet
28435      Conditions            = None
28436      Armor                 = AirplaneArmor
28437      DamageFX              = None
28438    End
28439  
28440    BuildCost               = 200 ;1000
28441    BuildTime               = 2 ;12   
28442    ExperienceValue         = 50 50 50 50  ;Experience point value at each level
28443    ExperienceRequired      = 0 100 200 400   ;Experience points needed to gain each level
28444    IsTrainable             = No             ;Can gain experience
28445    CrusherLevel            = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
28446    CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
28447    CommandSet              = GLAPlaneSuicideCommandSet
28448  
28449    ; *** AUDIO Parameters ***
28450    VoiceSelect         = BombTruckVoiceSelect
28451    VoiceMove         = BombTruckVoiceMove
28452    VoiceGuard         = BombTruckVoiceMove
28453    VoiceAttack         = BombTruckVoiceAttack
28454    VoiceAttackAir        = BombTruckVoiceAttack
28455    ;SoundDie              = 
28456    SoundAmbient          = CivPropPlaneAmbientLoop
28457    SoundAmbientRubble    = NoSound
28458    
28459    UnitSpecificSounds
28460      VoiceCreate          = BombTruckVoiceCreate
28461      SoundEject           = PilotSoundEject
28462      VoiceEject           = PilotVoiceEject
28463      ;Afterburner          = 
28464      ;VoiceLowFuel         = 
28465      ;VoiceGarrison        = 
28466    End
28467  
28468    ; *** ENGINEERING Parameters ***
28469    RadarPriority          = UNIT
28470    KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
28471    Body                   = ActiveBody ModuleTag_02
28472      MaxHealth            = 120.0
28473      InitialHealth        = 120.0
28474    End
28475  
28476    Behavior = JetSlowDeathBehavior ModuleTag_05
28477      DeathTypes = ALL -SUICIDED
28478      FXOnGroundDeath                 = FX_JetOnGroundDeath
28479      OCLOnGroundDeath                = OCL_RaptorDeathFinalBlowUp
28480      DestructionDelay                = 99999999; destruction will happen when we
28481      RollRate                        = 0.2
28482      RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
28483      PitchRate                       = 0.0
28484      FallHowFast                     = 90.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
28485      FXInitialDeath                  = FX_JetDeathInitial
28486      OCLInitialDeath                 = OCL_RaptorDeathInitial
28487      DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
28488      FXSecondary                     = FX_JetDeathSecondary
28489      OCLSecondary                    = OCL_RaptorDeathSecondary
28490      FXHitGround                     = FX_JetDeathHitGround
28491      OCLHitGround                    = OCL_RaptorDeathHitGround
28492      DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
28493      FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
28494      OCLFinalBlowUp                  = OCL_RaptorDeathFinalBlowUp
28495    End
28496  
28497    Behavior = InstantDeathBehavior DeathModuleTag_12
28498      DeathTypes = NONE +SUICIDED
28499    End
28500  
28501    ;Behavior = EjectPilotDie ModuleTag_06        ; pilot sacrifices himself
28502    ;  ExemptStatus         = HIJACKED
28503    ;  GroundCreationList   = OCL_EjectPilotOnGround
28504    ;  AirCreationList      = OCL_EjectPilotViaParachute
28505    ;  VeterancyLevels      =  ALL -REGULAR ;only vet+ gives pilot
28506    ;End
28507    
28508    Behavior               = PhysicsBehavior ModuleTag_07
28509      Mass                 = 400.0
28510    End
28511  
28512    Behavior                 = TransitionDamageFX ModuleTag_08
28513      ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
28514      ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
28515    End
28516  
28517    Behavior = FireWeaponWhenDeadBehavior ModuleTag_10
28518      DeathWeapon   = SuicidePlaneBomb
28519      StartsActive  = Yes
28520      ConflictsWith = Upgrade_GLAAnthraxBeta
28521      DeathTypes = NONE +SUICIDED
28522    End
28523    Behavior = FireWeaponWhenDeadBehavior ModuleTag_11
28524      DeathWeapon   = SuicidePlaneBombUpgraded
28525      StartsActive  = No
28526      TriggeredBy   = Upgrade_GLAAnthraxBeta
28527      DeathTypes = NONE +SUICIDED
28528    End
28529  
28530    Behavior = JetAIUpdate ModuleTag_09
28531      OutOfAmmoDamagePerSecond  = 0%
28532      TakeoffSpeedForMaxLift    = 80%   ; smaller numbers give more lift sooner when taking off
28533      TakeoffPause              = 500
28534      MinHeight                 = 1
28535      ParkingOffset             = 3             ; scooch it a little forward so the tail doesn't hit the doors
28536      ReturnToBaseIdleTime      = 20000         ; if idle for this long, return to base, even if not out of ammo
28537    End
28538    Locomotor = SET_NORMAL SuicidePlaneLocomotor
28539    Locomotor = SET_TAXIING SuicidePlaneTaxiLocomotor
28540  
28541    Behavior = FlammableUpdate ModuleTag_21
28542      AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
28543      AflameDamageAmount = 3       ; taking this much damage...
28544      AflameDamageDelay = 500       ; this often.
28545    End
28546  
28547    Geometry                 = Box
28548    GeometryIsSmall          = Yes
28549    GeometryMajorRadius      = 14.0
28550    GeometryMinorRadius      = 7.0
28551    GeometryHeight           = 5.0
28552    Shadow                   = SHADOW_VOLUME
28553    ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length.
28554  
28555  End
28556  
28557  ;------------------------------------------------------------------------------------------------------
28558  Object GLAPlaneSuicideHulk
28559  
28560    ; *** ART Parameters ***
28561    Draw                = W3DModelDraw ModuleTag_01
28562      DefaultConditionState
28563        Model           = CVCDTPLN_D
28564      End
28565    End
28566  
28567    ; ***DESIGN parameters ***
28568    EditorSorting       = DEBRIS
28569  
28570    ; *** ENGINEERING Parameters ***
28571    KindOf              =  NO_COLLIDE HULK
28572  
28573    Behavior                  = PhysicsBehavior ModuleTag_03
28574      Mass                    = 2.0
28575      AllowBouncing           = Yes
28576      KillWhenRestingOnGround = Yes
28577    End
28578  
28579    Behavior = LifetimeUpdate ModuleTag_04
28580      MinLifetime = 1500   ; min lifetime in msec
28581      MaxLifetime = 1600   ; max lifetime in msec
28582    End
28583  
28584    Behavior = SlowDeathBehavior ModuleTag_05
28585      SinkDelay        = 1500
28586      SinkRate         = 2     ; in Dist/Sec
28587      DestructionDelay = 8000
28588    End
28589  
28590  End
28591  
28592  ;------------------------------------------------------------------------------
28593  Object JarmenKellSniperShell
28594  
28595    ; *** ART Parameters ***
28596    Draw = W3DModelDraw ModuleTag_01
28597      ConditionState = NONE
28598        Model = none
28599      End
28600    End
28601  
28602    ; ***DESIGN parameters ***
28603    DisplayName       = OBJECT:TankShell
28604    EditorSorting     = SYSTEM
28605    ArmorSet
28606      Armor = ProjectileArmor
28607    End
28608    VisionRange = 0.0  
28609  
28610    ; *** ENGINEERING Parameters ***
28611    KindOf = PROJECTILE
28612    Body = ActiveBody ModuleTag_02
28613      MaxHealth       = 100.0
28614      InitialHealth   = 100.0
28615    End
28616  
28617    Behavior = DestroyDie ModuleTag_03
28618      ;nothing
28619    End
28620      
28621    Behavior = MissileAIUpdate ModuleTag_04
28622      TryToFollowTarget               = No 
28623      FuelLifetime                    = 2000
28624      InitialVelocity                 = 9999                ; in dist/sec
28625      IgnitionDelay                   = 0
28626      DistanceToTravelBeforeTurning   = 0
28627      GarrisonHitKillRequiredKindOf   = INFANTRY
28628      GarrisonHitKillForbiddenKindOf  = NONE
28629      GarrisonHitKillCount            = 8
28630      ;GarrisonHitKillFX               = none
28631    End
28632  
28633    Behavior = PhysicsBehavior ModuleTag_05
28634      Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
28635      AllowCollideForce = no
28636    End
28637  
28638    Geometry = Sphere
28639    GeometryIsSmall = Yes
28640    GeometryMajorRadius = 1.0
28641  
28642  End


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