
;------------------------------------------------------------------------------
Object CountermeasureFlare
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = None
      ParticleSysBone = None CountermeasureFlareParticleSys
      ParticleSysBone = None CounterMeasureSmoke
    End
  End
  KindOf = PROJECTILE
  Behavior = PhysicsBehavior ModuleTag_03
    Mass = 5
  End
  Behavior = AIUpdateInterface ModuleTag_04
    ; nothing
  End
  Locomotor = SET_NORMAL CountermeasureFlareLocomotor

  Behavior = LifetimeUpdate ModuleTag_05
    MinLifetime = 3000   ; min lifetime in msec
    MaxLifetime = 3000   ; max lifetime in msec
  End


  Geometry = Sphere
  GeometryIsSmall = Yes
  GeometryMajorRadius = 4.0
End




;------------------------------------------------------------------------------
Object ComancheBlades

  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = AVComanche_D2
      Animation = AVComanche_D2.AVComanche_D2
      AnimationMode = LOOP
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Comanche
  Side = America

  ; *** ENGINEERING Parameters ***
  KindOf = PRELOAD IMMOBILE

  Behavior = PhysicsBehavior ModuleTag_02
    AllowBouncing = Yes
  End
  Behavior = LifetimeUpdate ModuleTag_03
    MinLifetime = 1000   ; min lifetime in msec
    MaxLifetime = 1000   ; max lifetime in msec
  End

End

;------------------------------------------------------------------------------
Object AmericaParachute

  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    OkToChangeModelColor = Yes
    DefaultConditionState
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_FAL
      AnimationMode = LOOP
    End
    ConditionState = PARACHUTING
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_OPN
      AnimationMode = ONCE
    End
    ConditionState = RUBBLE
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_DRP
      AnimationMode = ONCE
    End
    ; this is a weird state to resolve an ambiguity: sometimes
    ; we can have a "rubble" parachute momentarily, that doesn't
    ; know that it has finished parachuting yet...
    ConditionState = RUBBLE PARACHUTING
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_DRP
      AnimationMode = ONCE
    End
  End 

  ; ***DESIGN parameters ***
  Side                = America
  EditorSorting       = SYSTEM
  TransportSlotCount  = 0                 
  VisionRange         = 300.0 
  ShroudClearingRange = 300
  IsTrainable         = No  ;Can gain experience
  KindOf              = PRELOAD PARACHUTE UNATTACKABLE

  ; *** AUDIO Parameters ***

  ; *** ENGINEERING Parameters ***
  Behavior = AIUpdateInterface ModuleTag_02
    ; nothing
  End
  Locomotor = SET_NORMAL ParachuteLocomotor
  Locomotor = SET_FREEFALL FreeFallLocomotor

  Body = ActiveBody ModuleTag_03
    MaxHealth       = 100000.0
    InitialHealth   = 100000.0
  End

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 5.0
  End

  Behavior = ParachuteContain ModuleTag_05
    PitchRateMax = 60           ; deg/sec
    RollRateMax = 60            ; deg/sec
    LowAltitudeDamping  = 0.2   ; how much to damp swaying when we get "close" to the ground
    ParachuteOpenDist   = 25.0  ; how far we have to fall 'till we open our 'chute
    AllowInsideKindOf   = INFANTRY VEHICLE PARACHUTABLE
    ParachuteOpenSound  = ParachuteOpen
  End

  Behavior = SlowDeathBehavior ModuleTag_06
    SinkDelay = 1000
    SinkRate = 1     ; in Dist/Sec
    DestructionDelay = 4000
  End

  RadarPriority = NOT_ON_RADAR
  Geometry = CYLINDER
  GeometryMajorRadius = 15.0
  GeometryHeight = 10.0    
  GeometryIsSmall = Yes
  Shadow = SHADOW_VOLUME

End

;------------------------------------------------------------------------------
Object AmericaCrateParachute

  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    OkToChangeModelColor = Yes
    DefaultConditionState
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_FAL
      AnimationMode = LOOP
    End
    ConditionState = PARACHUTING
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_OPN
      AnimationMode = ONCE
    End
    ConditionState = RUBBLE
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_DRP
      AnimationMode = ONCE
    End
    ; this is a weird state to resolve an ambiguity: sometimes
    ; we can have a "rubble" parachute momentarily, that doesn't
    ; know that it has finished parachuting yet...
    ConditionState = RUBBLE PARACHUTING
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_DRP
      AnimationMode = ONCE
    End
  End

  ; ***DESIGN parameters ***
  Side                = America
  EditorSorting       = SYSTEM
  TransportSlotCount  = 0                 
  VisionRange         = 300.0 
  ShroudClearingRange = 300
  IsTrainable         = No  ;Can gain experience
  KindOf              = PRELOAD PARACHUTE UNATTACKABLE

  ; *** AUDIO Parameters ***

  ; *** ENGINEERING Parameters ***
  Behavior = AIUpdateInterface ModuleTag_02
    ; nothing
  End
  Locomotor = SET_NORMAL CrateParachuteLocomotor
  Locomotor = SET_FREEFALL CrateFreeFallLocomotor

  Body = ActiveBody ModuleTag_03
    MaxHealth       = 100000.0
    InitialHealth   = 100000.0
  End

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 5.0
  End

  Behavior = ParachuteContain ModuleTag_05
    PitchRateMax        = 60    ; deg/sec
    RollRateMax         = 60    ; deg/sec
    LowAltitudeDamping  = 0.2   ; how much to damp swaying when we get "close" to the ground
    ParachuteOpenDist   = 12.5  ; how far we have to fall 'till we open our 'chute
    AllowInsideKindOf   = PARACHUTABLE
    ParachuteOpenSound  = ParachuteOpen
  End

  Behavior = SlowDeathBehavior ModuleTag_06
    SinkDelay = 1000
    SinkRate = 1     ; in Dist/Sec
    DestructionDelay = 4000
  End

  RadarPriority = NOT_ON_RADAR
  Geometry = CYLINDER
  GeometryMajorRadius = 15.0
  GeometryHeight = 10.0    
  GeometryIsSmall = Yes
  Scale = 1.28
  Shadow = SHADOW_VOLUME

End





;------------------------------------------------------------------------------
Object AmericaVehicleGuardianDrone

  ; *** ART Parameters ***
  SelectPortrait         = SAsentry_L
  ButtonImage            = SAsentry
 
 Draw = W3DTankDraw ModuleTag_01
    DefaultConditionState
      Model = AVGuardDr
      Turret = Turret
      WeaponFireFXBone = PRIMARY TurretMS
      WeaponMuzzleFlash = PRIMARY TurretFX
    End
    TrackMarks = EXTnkTrack.tga
    OkToChangeModelColor = Yes
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:GuardianDrone
  Side = America
  EditorSorting   = VEHICLE
  TransportSlotCount = 2                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions = None 
    Weapon = PRIMARY ScorpionTankGun
  End
  ArmorSet
    Conditions      = None
    Armor           = TankArmor
    DamageFX        = TankDamageFX
  End
  BuildCost       = 600
  BuildTime       = 8.0          ;in seconds    
  VisionRange     = 160
  ShroudClearingRange = 160
  Prerequisites
    Object = AmericaWarFactory
  End
  ExperienceValue    = 50 100 150 400 ;Experience point value at each level
  IsTrainable        = Yes
  CommandSet         = GLATankScorpionCommandSet
  
  ; *** AUDIO Parameters ***
  VoiceSelect = SentryDroneVoiceSelect
  VoiceMove = SentryDroneVoiceMove
  VoiceAttack = SentryDroneVoiceMove
  SoundMoveStart = SentryDroneMoveStart

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    TurretMoveStart = NoSound
    TurretMoveLoop = NukeCannonTurretMoveLoop
  End


  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
  
  Body = ActiveBody ModuleTag_02
    MaxHealth       = 270.0
    InitialHealth   = 270.0
  End


  Behavior = AIUpdateInterface ModuleTag_03
    Turret
      TurretTurnRate = 60   // turn rate, in degrees per sec
      ControlledWeaponSlots = PRIMARY
    End
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Locomotor = SET_NORMAL BasicTankLocomotor
  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 50.0
  End
  Behavior = SlowDeathBehavior ModuleTag_05
    DestructionDelay = 500
    FX = FINAL FX_GenericTankDeathExplosion
  End

  Behavior = MaxHealthUpgrade ModuleTag_06
    TriggeredBy   = Upgrade_AmericaDroneArmor
    AddMaxHealth  = 50.0
    ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  End

  Behavior = FXListDie ModuleTag_07
    DeathFX = FX_GenericTankDeathEffect
  End
  Behavior = CreateObjectDie ModuleTag_08
    CreationList = OCL_GenericTankDeathEffect
  End
  Behavior = CreateCrateDie ModuleTag_09
    CrateData = SalvageCrateData
   ;CrateData = EliteTankCrateData
   ;CrateData = HeroicTankCrateData
  End
  
  Behavior                 = TransitionDamageFX ModuleTag_10
    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  End

  Behavior = FlammableUpdate ModuleTag_21
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 3       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  Geometry = BOX
  GeometryMajorRadius = 15.0
  GeometryMinorRadius = 10.0
  GeometryHeight = 10.0     
  GeometryIsSmall = Yes
  Scale = 1.08    
  Shadow = SHADOW_VOLUME
  ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length

End




;------------------------------------------------------------------------------
Object AmericaInfantryBiohazardTech

  ; This unit is by default NOT buildable. In GLA06 this is buildable from the
  ; barracks of the enemy AI. (The map.ini file is overridden there make it 
  ; buildable = Yes (jkmcd)
  Buildable = No

   ; *** ART Parameters ***
   SelectPortrait         = SSDetox
   ButtonImage            = SSDetox
  
 Draw = W3DModelDraw ModuleTag_01
    OkToChangeModelColor = Yes

    ;NORMAL STANDING
    DefaultConditionState
      Model = AITECH_SKN
      IdleAnimation = AITECH_SKL.AITECH_STA 0 21
      ;Regular spice animations
      IdleAnimation = AITECH_SKL.AITECH_IDA
      IdleAnimation = AITECH_SKL.AITECH_IDB
      AnimationMode = ONCE
      WeaponLaunchBone = PRIMARY BIOGUNFX
      TransitionKey = TRANS_Stand
    End

    ; NORMAL ATTACK
    ConditionState = FIRING_A
      Animation = AITECH_SKL.AITECH_STA
      AnimationMode = LOOP
      TransitionKey = TRANS_FiringA
    End
    AliasConditionState = BETWEEN_FIRING_SHOTS_A
    AliasConditionState = RELOADING_A
    AliasConditionState = FIRING_A REALLYDAMAGED
    AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
    AliasConditionState = RELOADING_A REALLYDAMAGED


    ConditionState = MOVING FIRING_A 
      Animation = AITECH_SKL.AITECH_WKB 15
      AnimationMode = LOOP
      Flags = RANDOMSTART
      TransitionKey = None
      ParticleSysBone     = None InfantryDustTrails
    End
    AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
    AliasConditionState = MOVING RELOADING_A

    ConditionState = MOVING
      Animation = AITECH_SKL.AITECH_WKA 15
      AnimationMode = LOOP
      Flags = RANDOMSTART
      TransitionKey = None
      ParticleSysBone     = None InfantryDustTrails
    End

    ConditionState = DYING
      Animation = AITECH_SKL.AITECH_DTA
      Animation = AITECH_SKL.AITECH_DTB
      AnimationMode = ONCE
      TransitionKey = TRANS_Dying
    End

    TransitionState = TRANS_Dying TRANS_Flailing
      Animation = AITECH_SKL.AITECH_ADTD1
      AnimationMode = ONCE
    End

    ConditionState = DYING EXPLODED_FLAILING
      Animation = AITECH_SKL.AITECH_ADTD2
      AnimationMode = LOOP
      TransitionKey = TRANS_Flailing
    End

    ConditionState = DYING EXPLODED_BOUNCING
      Animation = AITECH_SKL.AITECH_ADTD3
      AnimationMode = ONCE
      TransitionKey = None
    End

    ConditionState = SPECIAL_CHEERING
      Animation = AITECH_SKL.AITECH_CHA
      AnimationMode = LOOP
    End

    ;PARACHUTING ANIMATIONS
    ConditionState = FREEFALL
      Animation = AITECH_SKL.AITECH_PFL
      AnimationMode = LOOP
      TransitionKey = TRANS_Falling
    End
    AliasConditionState = FREEFALL REALLYDAMAGED
    AliasConditionState = FREEFALL DYING
    ConditionState = PARACHUTING
      Animation = AITECH_SKL.AITECH_PHG
      AnimationMode = LOOP
      Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
      TransitionKey = TRANS_Chute
    End
    AliasConditionState = PARACHUTING REALLYDAMAGED
    AliasConditionState = PARACHUTING DYING
    TransitionState = TRANS_Falling TRANS_Chute
      Animation = AITECH_SKL.AITECH_POP
      AnimationMode = ONCE
      Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
    End
    TransitionState = TRANS_Chute TRANS_Stand
      Animation = AITECH_SKL.AITECH_PDN
      AnimationMode = ONCE
    End

  End

  ; ***DESIGN parameters ***
  DisplayName         = OBJECT:BioHazardTech
  Side                = America
  EditorSorting       = INFANTRY
  TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  
  WeaponSet 
    ;*** Fully automated and driven by the CleanupHazardUpdate ***
    Conditions        = None 
    Weapon            = PRIMARY BioHazardTechCleanHazardWeapon 
    AutoChooseSources = PRIMARY NONE
  End
  ArmorSet
    Conditions      = None
    Armor           = HazMatHumanArmor
    DamageFX        = InfantryDamageFX
  End

  VisionRange = 100
  ShroudClearingRange = 400
  Prerequisites
    Object = AmericaBarracks
  End
  BuildCost = 200
  BuildTime = 5.0          ;in seconds  
  
  ExperienceValue = 50 100 150 400    ;Experience point value at each level
  ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  IsTrainable = Yes             ;Can gain experience
  CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet          = AmericaInfantryHazMatCommandSet

  ; *** AUDIO Parameters ***
  VoiceSelect   = AmbulanceVoiceSelect
  VoiceMove     = AmbulanceVoiceMove
  VoiceAttack   = AmbulanceVoiceDetox
  UnitSpecificFX
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE

  Body = ActiveBody ModuleTag_02

    MaxHealth       = 100.0
    InitialHealth   = 100.0
  End

  Behavior = CleanupHazardUpdate ModuleTag_03
    WeaponSlot            = PRIMARY
    ScanRate              = 1000
    ScanRange             = 100.0
  End

  ;Can be ordered to clean up a larger area with the ability to move around at an extended range.
  Behavior = CleanupAreaPower ModuleTag_04
    SpecialPowerTemplate          = SpecialAbilityAmbulanceCleanupArea
    MaxMoveDistanceFromLocation   = 300.0 ;allows the unit to move around while cleaning up
  End

  Behavior = AIUpdateInterface ModuleTag_05
    AutoAcquireEnemiesWhenIdle = No
  End
  Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
    ScanRate = 1000 ; once a second.
    ScanRange = 300 ;
    NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
    AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  End

  Locomotor = SET_NORMAL HazMatHumanLocomotor

  Behavior = ExperienceScalarUpgrade ModuleTag_07
    TriggeredBy = Upgrade_AmericaAdvancedTraining
    AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  End

  Behavior = PhysicsBehavior ModuleTag_08
    Mass = 5.0
  End
  Behavior = ProductionUpdate ModuleTag_09
    ; nothing
  End

  Behavior = SquishCollide ModuleTag_10
    ;nothing
  End

; --- begin Death modules ---
  Behavior = SlowDeathBehavior ModuleTag_Death01
    DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RebelDie
    FX                  = INITIAL FX_BloodyPuddle3
  End
  Behavior = SlowDeathBehavior ModuleTag_Death02
    DeathTypes          = NONE +CRUSHED +SPLATTED
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_GIDieCrushed
    FX                  = INITIAL FX_BloodyPuddle3
  End
  Behavior = SlowDeathBehavior ModuleTag_Death03
    DeathTypes          = NONE +EXPLODED
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RebelDie
    FX                  = INITIAL FX_BloodyPuddle3
    FlingForce          = 8
    FlingForceVariance  = 3
    FlingPitch          = 60
    FlingPitchVariance  = 10
  End
  Behavior = SlowDeathBehavior ModuleTag_Death04
    DeathTypes          = NONE +BURNED
    DestructionDelay    = 0
    FX                  = INITIAL FX_RebelDie
    OCL                 = INITIAL OCL_FlamingInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death05
    DeathTypes          = NONE +POISONED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
    DeathTypes          = NONE +POISONED_BETA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  End
  Behavior = SlowDeathBehavior ModuleTag_Death07
    DeathTypes          = NONE +POISONED_GAMMA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantryGamma
  End
; --- end Death modules ---

  Geometry = CYLINDER
  GeometryMajorRadius = 10.0
  GeometryMinorRadius = 10.0
  GeometryHeight = 13.0

  GeometryIsSmall = Yes
  Shadow = SHADOW_DECAL
  ShadowSizeX = 14;
  ShadowSizeY = 14;
  Scale = 0.88
  ShadowTexture = ShadowI;
  BuildCompletion = APPEARS_AT_RALLY_POINT
End



;------------------------------------------------------------------------------
;
; ??? This unit is used in a mission for "color".
; This unit is never human-controllable!
;
Object AmericaInfantryOfficer
      ; *** ART Parameters ***
   SelectPortrait         = SAUSAOfficer_L
   ButtonImage            = SAUSAOfficer

  Draw = W3DModelDraw ModuleTag_01
    OkToChangeModelColor = Yes

    ;NORMAL STANDING
    DefaultConditionState
      Model = AIOFCR_SKN
      IdleAnimation = AIOFCR_SKL.AIOFCR_STA 0 21
      ;Regular spice animations
      IdleAnimation = AIOFCR_SKL.AIOFCR_IDA
      IdleAnimation = AIOFCR_SKL.AIOFCR_IDB
      AnimationMode = ONCE
      WeaponFireFXBone = PRIMARY Muzzle
      WeaponMuzzleFlash = PRIMARY MuzzleFX
      TransitionKey = TRANS_STAND
    End

    ConditionState    = MOVING
      Animation       = AIOFCR_SKL.AIOFCR_RNA
      AnimationMode   = LOOP
      ParticleSysBone     = None InfantryDustTrails
    End

    ; NORMAL ATTACK
    ;--------------------------------------------------------
    ; Drawing gun
    ConditionState  = PREATTACK_A
      Animation     = AIOFCR_SKL.AIOFCR_ATAST
      AnimationMode = ONCE
    End
    AliasConditionState = PREATTACK_A MOVING
    AliasConditionState = PREATTACK_A FIRING_A
    AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A

    ; Firing gun
    ConditionState  = FIRING_A
      Animation     = AIOFCR_SKL.AIOFCR_ATALP
      AnimationMode = LOOP
      TransitionKey = TRANS_FIRING_A
    End
    ConditionState  = BETWEEN_FIRING_SHOTS_A
      Animation     = AIOFCR_SKL.AIOFCR_ATALP
      AnimationMode = LOOP
      TransitionKey = TRANS_FIRING_A
    End
    AliasConditionState = RELOADING_A
    AliasConditionState = MOVING FIRING_A
    AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
    AliasConditionState = MOVING RELOADING_A

    ; This transition allows him to put his gun away when he's finished attacking.
    TransitionState = TRANS_FIRING_A TRANS_STAND
      Animation     = AIOFCR_SKL.AIOFCR_ATAED
      AnimationMode = ONCE
    End
    ;--------------------------------------------------------

    ConditionState  = DYING
      Animation     = AIOFCR_SKL.AIOFCR_DTA
      Animation     = AIOFCR_SKL.AIOFCR_DTB
      AnimationMode = ONCE
      TransitionKey = TRANS_Dying
    End

    TransitionState = TRANS_Dying TRANS_Flailing
      Animation = AIOFCR_SKL.AIOFCR_ADTE1
      AnimationMode = ONCE
    End

    ConditionState = DYING EXPLODED_FLAILING
      Animation = AIOFCR_SKL.AIOFCR_ADTE2
      AnimationMode = LOOP
      TransitionKey = TRANS_Flailing
    End

    ConditionState = DYING EXPLODED_BOUNCING
      Animation = AIOFCR_SKL.AIOFCR_ADTE3
      AnimationMode = ONCE
      TransitionKey = None
    End

    ConditionState  = SPECIAL_CHEERING
      Animation     = AIOFCR_SKL.AIOFCR_CHA
      AnimationMode = LOOP
    End

    ;PARACHUTING ANIMATIONS

    ;@TODO - MISSING ANIMATION FILE
    ;ConditionState   = FREEFALL
    ;  Animation      = AIOFCR_SKL.AIOFCR_PFL
    ;  AnimationMode  = LOOP
    ;  TransitionKey  = TRANS_Falling
    ;End
    ;AliasConditionState = FREEFALL REALLYDAMAGED
    ;AliasConditionState = FREEFALL DYING
    ConditionState  = PARACHUTING
      Animation     = AIOFCR_SKL.AIOFCR_PHG
      AnimationMode = LOOP
      Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
      TransitionKey = TRANS_Chute

    End
    AliasConditionState = PARACHUTING REALLYDAMAGED
    AliasConditionState = PARACHUTING DYING
    TransitionState = TRANS_Falling TRANS_Chute
      Animation     = AIOFCR_SKL.AIOFCR_POP
      AnimationMode = ONCE
      Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
    End
    TransitionState = TRANS_Chute TRANS_Stand
      Animation     = AIOFCR_SKL.AIOFCR_PTD
      AnimationMode = ONCE
    End

  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Officer
  Side = America
  EditorSorting = INFANTRY
  TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions = None 
    Weapon = PRIMARY AmericaOfficerMachineGun
    Weapon = SECONDARY LaserTargeter
    AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
    AutoChooseSources = SECONDARY NONE
  End
  ArmorSet
    Conditions      = None
    Armor           = HumanArmor
    DamageFX        = InfantryDamageFX
  End
  VisionRange = 150
  ShroudClearingRange = 150

  BuildCost     = 1200
  BuildTime     = 20.0          ;in seconds  

  ExperienceValue = 40 40 60 80    ;Experience point value at each level
  ExperienceRequired = 0 50 100 200  ;Experience points needed to gain each level
  IsTrainable = Yes             ;Can gain experience
  CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet      = AmericaInfantryPathfinderCommandSet    

  ; *** AUDIO Parameters ***
  VoiceSelect = RangerVoiceSelect
  VoiceGroupSelect = BattleCrySound
  VoiceMove = RangerVoiceMove
  VoiceAttack = RangerVoiceAttack

  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 100.0
    InitialHealth   = 100.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
    ScanRate = 1000 ; once a second.
    ScanRange = 300 ;
    NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
    AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  End

  Locomotor = SET_NORMAL BasicHumanLocomotor
  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5.0
  End
 
  Behavior = SquishCollide ModuleTag_07
    ;nothing
  End

; --- begin Death modules ---
  Behavior = SlowDeathBehavior ModuleTag_Death01
    DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RangerDie
    FX                  = INITIAL FX_BloodyPuddle3
  End
  Behavior = SlowDeathBehavior ModuleTag_Death02
    DeathTypes          = NONE +CRUSHED +SPLATTED
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_GIDieCrushed
    FX                  = INITIAL FX_BloodyPuddle3
  End
  Behavior = SlowDeathBehavior ModuleTag_Death03
    DeathTypes          = NONE +EXPLODED
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RangerDie
    FX                  = INITIAL FX_BloodyPuddle3
    FlingForce          = 8
    FlingForceVariance  = 3
    FlingPitch          = 60
    FlingPitchVariance  = 10
  End
  Behavior = SlowDeathBehavior ModuleTag_Death04
    DeathTypes          = NONE +BURNED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByFireUSA
    OCL                 = INITIAL OCL_FlamingInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death05
    DeathTypes          = NONE +POISONED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
    DeathTypes          = NONE +POISONED_BETA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  End
  Behavior = SlowDeathBehavior ModuleTag_Death07
    DeathTypes          = NONE +POISONED_GAMMA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantryGamma
  End
; --- end Death modules ---

   Behavior = PoisonedBehavior ModuleTag_13
    PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
    PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  End

  Behavior = SpecialAbility ModuleTag_14
    SpecialPowerTemplate = SpecialAbilityLaserTargeter
    UpdateModuleStartsAttack = Yes
  End
  Behavior = SpecialAbilityUpdate ModuleTag_15
    SpecialPowerTemplate = SpecialAbilityLaserTargeter
    StartAbilityRange = 400.0
    AbilityAbortRange = 450.0 ;If the target moves outside this range, abort.
    PreparationTime = 100
    PersistentPrepTime = 50
    SpecialObject = LaserBeam
    SpecialObjectAttachToBone = Muzzle01
  End

  Behavior = CommandButtonHuntUpdate  ModuleTag_CBHunt ; allows use of command button hunt script with this unit. 
  End
 
  Geometry = CYLINDER
  GeometryMajorRadius = 10.0
  GeometryMinorRadius = 10.0
  GeometryHeight = 12.0
  GeometryIsSmall = Yes
  Shadow = SHADOW_DECAL
  ShadowSizeX = 14;
  ShadowSizeY = 14;
  Scale = 0.88
  ShadowTexture = ShadowI;
  BuildCompletion = APPEARS_AT_RALLY_POINT

End


;------------------------------------------------------------------------------
Object AmericaInfantrySecretService

    ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    OkToChangeModelColor = Yes

    DefaultConditionState
      Model = AISSRV_SKN
      IdleAnimation = AISSRV_SKL.AISSRV_STA
      AnimationMode = ONCE
      TransitionKey = TRANS_Stand
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:BioHazardTech
  Side = America
  EditorSorting = INFANTRY
  TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions = None 
    Weapon = PRIMARY None
  End
  ArmorSet
    Conditions      = None
    Armor           = HumanArmor
    DamageFX        = InfantryDamageFX
  End
  VisionRange = 150
  ShroudClearingRange = 150
  Prerequisites
    Object = AmericaBarracks
  End
  BuildCost = 100
  BuildTime = 1.0          ;in seconds    

  ; *** AUDIO Parameters ***
  VoiceSelect = CIAAgentVoiceSelect
  VoiceMove = CIAAgentVoiceMove
  VoiceAttack = CIAAgentVoiceAttack

  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 50.0
    InitialHealth   = 50.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
    ScanRate = 1000 ; once a second.
    ScanRange = 300 ;
    NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
    AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  End

  Locomotor = SET_NORMAL BasicHumanLocomotor
  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5.0
  End
  Behavior = SlowDeathBehavior ModuleTag_06
    SinkDelay = 3000
    SinkRate = 0.5     ; in Dist/Sec
    DestructionDelay = 8000
  End

  Behavior = ExperienceScalarUpgrade ModuleTag_07
    TriggeredBy = Upgrade_AmericaAdvancedTraining
    AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  End
 
  Behavior = SquishCollide ModuleTag_08
    ;nothing
  End


  Behavior = FXListDie ModuleTag_09
    DeathTypes = ALL -CRUSHED -SPLATTED
    DeathFX = FX_CIAAgentDie
  End
  Behavior = FXListDie ModuleTag_10
    DeathTypes = NONE +CRUSHED +SPLATTED
    DeathFX = FX_GIDieCrushed
  End

  Behavior = PoisonedBehavior ModuleTag_11
    PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
    PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  End
 
  Geometry = CYLINDER
  GeometryMajorRadius = 10.0
  GeometryMinorRadius = 10.0
  GeometryHeight = 12.0
  GeometryIsSmall = Yes
  Shadow = SHADOW_DECAL
  ShadowSizeX = 14;
  ShadowSizeY = 14;
  Scale = 0.88
  ShadowTexture = ShadowI;
  BuildCompletion = APPEARS_AT_RALLY_POINT

End





;------------------------------------------------------------------------------
Object AmericaVehicleBattleShip
  SelectPortrait         = SABattleship_L
  ; *** ART Parameters ***
  Draw                   = W3DTankDraw ModuleTag_01
    OkToChangeModelColor = Yes
    InitialRecoilSpeed   = 120
    MaxRecoilDistance    = 8
    RecoilSettleSpeed    = 6
    ConditionState       = NONE
      Model              = AVBattleSh
      Animation          = AVBattleSh.AVBattleSh
      AnimationMode      = LOOP
      Turret             = Turret01
      TurretPitch        = TurretEL01
      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
      AltTurret          = Turret02
      AltTurretPitch     = TurretEL02
      WeaponFireFXBone   = PRIMARY Tur1Muzzle
      WeaponRecoilBone   = PRIMARY Tur1Barrel
      WeaponFireFXBone   = SECONDARY Tur2Muzzle
      WeaponRecoilBone   = SECONDARY Tur2Barrel
      ParticleSysBone   = TreadFX02 BattleShipWaterRipples
      ParticleSysBone   = TreadFX03 BattleShipWaterRipples
      ParticleSysBone   = TreadFX04 BattleShipWaterRipples
      ParticleSysBone   = Smoke01 SteamVent
      ParticleSysBone   = Smoke02 SteamVent
    End

    ConditionState       = MOVING
      Model              = AVBattleSh
      Animation          = AVBattleSh.AVBattleSh
      AnimationMode      = LOOP
      Turret             = Turret01
      TurretPitch        = TurretEL01
      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
      AltTurret          = Turret02
      AltTurretPitch     = TurretEL02
      WeaponFireFXBone   = PRIMARY Tur1Muzzle
      WeaponRecoilBone   = PRIMARY Tur1Barrel
      WeaponFireFXBone   = SECONDARY Tur2Muzzle
      WeaponRecoilBone   = SECONDARY Tur2Barrel
      ParticleSysBone   = TreadFX02 BattleShipWaterRipples
      ParticleSysBone   = TreadFX03 BattleShipWaterRipples
      ParticleSysBone   = TreadFX04 BattleShipWaterRipples
      ParticleSysBone   = TreadFX05 AmphibWave
      ParticleSysBone   = TreadFX06 AmphibWave
      ParticleSysBone = Smoke01 SteamVent
      ParticleSysBone = Smoke02 SteamVent
      ;ParticleSysBone = Smoke03 HeavyFactorySmoke
      ;ParticleSysBone = Smoke03 SmolderingSmoke
      ;ParticleSysBone = Smoke04 SmolderingSmoke
      ;ParticleSysBone = Smoke05 SmolderingSmoke
      ;ParticleSysBone = Smoke06 SmolderingSmoke
    End
  End

  ; ***DESIGN parameters ***
  DisplayName            = OBJECT:Battleship
  Side                   = America
  EditorSorting          = VEHICLE
  TransportSlotCount     = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  CommandSet             = BattleShipCommandSet
  WeaponSet
    Conditions           = None 
    Weapon               = PRIMARY BattleshipBogusGun
    Weapon               = SECONDARY BattleshipBogusGun
  End
  ArmorSet
    Conditions           = None
    Armor                = InvulnerableArmor
  End
  VisionRange            = 300
  ShroudClearingRange = 300

  ; *** AUDIO Parameters ***
  VoiceSelect = BattleshipVoiceSelect
  VoiceMove = BattleshipVoiceMove
  VoiceGuard = BattleshipVoiceMove
  VoiceAttack = BattleshipVoiceAttack
  SoundAmbient = BattleshipAmbientLoop

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    TurretMoveLoop       = OverlordTankTurretMoveLoop
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority          = UNIT
  KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE

  Body = ActiveBody ModuleTag_02
    MaxHealth            = 90000.0
    InitialHealth        = 90000.0
  End
  Behavior = AIUpdateInterface ModuleTag_03
    Turret
      TurretTurnRate     = 80
      TurretPitchRate    = 80
      FirePitch          = 12            ; Instead of aiming pitchwise at the target, it will aim here
      AllowsPitch        = Yes
      RecenterTime       = 5000       ; how long to wait during idle before recentering
      ControlledWeaponSlots = PRIMARY
      NaturalTurretAngle = 180  ; this turret points backwards normally
    End
    AltTurret
      TurretTurnRate     = 80
      TurretPitchRate    = 80
      FirePitch          = 15          ; Instead of aiming pitchwise at the target, it will aim here
      AllowsPitch        = Yes
      RecenterTime       = 5000     ; how long to wait during idle before recentering
      ControlledWeaponSlots = SECONDARY
    End
    TurretsLinked = Yes
  End

  Locomotor = SET_NORMAL LargeShipLocomotor
  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5000.0
  End

  Behavior = FireWeaponPower ModuleTag_FireWeapon01
    SpecialPowerTemplate = SpecialPowerBattleshipBombardment
    ;Automatically reloads weapons immediately upon trigger, then fires multiple weapon slots.
    MaxShotsToFire    = 3
  End

  Geometry               = BOX
  GeometryMajorRadius    = 200.0
  GeometryMinorRadius    = 20.0
  GeometryHeight         = 40     
  GeometryIsSmall        = No 
  Shadow                 = SHADOW_VOLUME   

End

;------------------------------------------------------------------------------
; an invisible object that exists solely for the Battleship to target.
Object AmericaBattleshipBogusTarget

  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = None
    End    
  End

  ; ***DESIGN parameters ***
  EditorSorting   = STRUCTURE
  Side            = America
  ArmorSet
    Conditions      = None
    Armor           = InvulnerableArmor
    DamageFX        = None
  End

  ; *** ENGINEERING Parameters ***  
  RadarPriority       = NOT_ON_RADAR
  KindOf              = IMMOBILE

  Body                = ImmortalBody ModuleTag_02
    MaxHealth         = 99999.0
    InitialHealth     = 99999.0
  End

  Behavior = FireWeaponWhenDamagedBehavior ModuleTag_03
    StartsActive = Yes
    ReactionWeaponPristine = BattleshipTargetDamagedWeapon
    ReactionWeaponDamaged = BattleshipTargetDamagedWeapon
    ReactionWeaponReallyDamaged = BattleshipTargetDamagedWeapon
    DamageTypes = ALL
;
; want this object to "explode" (ie, fire BattleshipTargetDamagedWeapon)
; when targeted by the gun? change DamageAmount to zero. (normally the gun
; does a nonzero but tiny damage, due to the InvulnerableArmor we wear, so
; this weapon isn't fired... to trigger it, you must do damage under Script
; control, which ignores our armor.)
;
    DamageAmount = 1  ; if damage is >= this value, fire the weapon
  End

  Geometry            = SPHERE
  GeometryMajorRadius = 10.0
  GeometryIsSmall     = Yes

End




;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
Object CINE_BShipWeaponDetonationObject ;The explodes-next-frame object when demo trap is triggered.

  ; ***DESIGN parameters ***
  Side = GLA
  EditorSorting   = SYSTEM
  TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  VisionRange = 0.0  ;Allow the stickybomb to show itself to user?

  ; *** AUDIO Parameters ***

  ; *** ENGINEERING Parameters ***
  RadarPriority = NOT_ON_RADAR
  KindOf = PROJECTILE

  Behavior = PhysicsBehavior ModuleTag_01
    Mass = 5
  End

  ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
  Behavior = LifetimeUpdate ModuleTag_02
    MinLifetime = 1   ; min lifetime in msec
    MaxLifetime = 1   ; max lifetime in msec
  End

  Behavior = SlowDeathBehavior ModuleTag_03
    DestructionDelay = 1
    FX                  = INITIAL WeaponFX_BattleshipTargetExplode
    Weapon              = FINAL   CINE_u02_BattleshipTargetDamagedWeapon
  End
End




;------------------------------------------------------------------------------
; **data here is a copy and paste of AmericaVehicleBattleDrone**
Object AmericaVehicleRepairDrone

  ; *** ART Parameters ***
  Draw = W3DTankDraw ModuleTag_01
    ConditionState = NONE
      Model = AVRepairDr
    End
    TrackMarks = EXTireTrack.tga
    OkToChangeModelColor = Yes
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:RepairDrone
  Side = America
  EditorSorting   = VEHICLE
  CommandSet             = GenericCommandSet
  TransportSlotCount = 2                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions = None 
    Weapon = PRIMARY ScorpionTankGun
  End
  ArmorSet
    Conditions      = None
    Armor           = TankArmor
    DamageFX        = TankDamageFX
  End
  BuildCost       = 700
  BuildTime       = 5.0          ;in seconds    
  VisionRange     = 150
  ShroudClearingRange = 150
  Prerequisites
    Object = AmericaWarFactory
  End
  ExperienceValue    = 50 100 150 400 ;Experience point value at each level
  ExperienceRequired = 0 150 450 900 ;Experience points needed to gain each level
  IsTrainable     = Yes  ;Can gain experience
  
  ; *** AUDIO Parameters ***
  VoiceSelect = SentryDroneVoiceSelect
  VoiceMove = SentryDroneVoiceMove
  VoiceAttack = SentryDroneVoiceMove
  SoundMoveStart = NoSound

  UnitSpecificSounds
  ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    TurretMoveStart = NoSound
    TurretMoveLoop = NoSound
  End


  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE DRONE NO_SELECT
  
  Body = ActiveBody ModuleTag_02
    MaxHealth       = 100.0
    InitialHealth   = 100.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    Turret
      TurretTurnRate = 60   // turn rate, in degrees per sec
      ControlledWeaponSlots = PRIMARY
    End
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Locomotor = SET_NORMAL BasicTankLocomotor

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 50.0
  End
  Behavior = SlowDeathBehavior ModuleTag_05
    DestructionDelay = 500
    FX = FINAL FX_GenericTankDeathExplosion
  End

  Behavior = MaxHealthUpgrade ModuleTag_06
    TriggeredBy   = Upgrade_AmericaDroneArmor
    AddMaxHealth  = 50.0
    ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  End

  Behavior = FXListDie ModuleTag_07
    DeathFX = FX_GenericTankDeathEffect
  End
  Behavior = CreateObjectDie ModuleTag_08
    CreationList = OCL_GenericTankDeathEffect
  End
  Behavior = CreateCrateDie ModuleTag_09
    CrateData = SalvageCrateData
   ;CrateData = EliteTankCrateData
   ;CrateData = HeroicTankCrateData
  End

  Behavior = FlammableUpdate ModuleTag_21
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 3       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  Geometry = BOX
  GeometryMajorRadius = 11.0
  GeometryMinorRadius = 7.0
  GeometryHeight = 10.0     
  GeometryIsSmall = Yes
  Scale = 0.90 
  Shadow = SHADOW_VOLUME

End




;------------------------------------------------------------------------------
Object LargeParachute

  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    OkToChangeModelColor = Yes
    DefaultConditionState
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_FAL
      AnimationMode = LOOP
    End
    ConditionState = PARACHUTING
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_OPN
      AnimationMode = ONCE
    End
    ConditionState = RUBBLE
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_DRP
      AnimationMode = ONCE
    End
    ; this is a weird state to resolve an ambiguity: sometimes
    ; we can have a "rubble" parachute momentarily, that doesn't
    ; know that it has finished parachuting yet...
    ConditionState = RUBBLE PARACHUTING
      Model = PMparacht_SKNc
      Animation = PMparacht_SKL.PMparacht_DRP
      AnimationMode = ONCE
    End
  End 

  ; ***DESIGN parameters ***
  EditorSorting       = SYSTEM
  TransportSlotCount  = 10                 
  VisionRange         = 300.0 
  ShroudClearingRange = 300
  IsTrainable         = No  ;Can gain experience
  KindOf              = PRELOAD PARACHUTE UNATTACKABLE

  ; *** AUDIO Parameters ***

  ; *** ENGINEERING Parameters ***
  Behavior = AIUpdateInterface ModuleTag_02
    ; nothing
  End
  Locomotor = SET_NORMAL ParachuteLocomotor
  Locomotor = SET_FREEFALL FreeFallLocomotor

  Body = ActiveBody ModuleTag_03
    MaxHealth       = 100000.0
    InitialHealth   = 100000.0
  End

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 5.0
  End

  Behavior = ParachuteContain ModuleTag_05
    PitchRateMax = 60           ; deg/sec
    RollRateMax = 60            ; deg/sec
    LowAltitudeDamping  = 0.2   ; how much to damp swaying when we get "close" to the ground
    ParachuteOpenDist   = 25.0  ; how far we have to fall 'till we open our 'chute
    AllowInsideKindOf   = INFANTRY VEHICLE PARACHUTABLE
    ParachuteOpenSound  = ParachuteOpen
  End

  Behavior = SlowDeathBehavior ModuleTag_06
    SinkDelay = 1000
    SinkRate = 1     ; in Dist/Sec
    DestructionDelay = 4000
  End

  RadarPriority = NOT_ON_RADAR
  Geometry = CYLINDER
  GeometryMajorRadius = 15.0
  GeometryHeight = 10.0    
  GeometryIsSmall = Yes
  Scale = 1.45
  Shadow = SHADOW_VOLUME

End






;------------------------------------------------------------------------------
Object AmericaVehicleBattleShipReal
  SelectPortrait         = SABattleship_L
  ; *** ART Parameters ***
  Draw                   = W3DTankDraw ModuleTag_01
    OkToChangeModelColor = Yes
    InitialRecoilSpeed   = 120
    MaxRecoilDistance    = 8
    RecoilSettleSpeed    = 6
    ConditionState       = NONE
      Model              = AVBattleSh
      Animation          = AVBattleSh.AVBattleSh
      AnimationMode      = LOOP
      Turret             = Turret01
      TurretPitch        = TurretEL01
      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
      AltTurret          = Turret02
      AltTurretPitch     = TurretEL02
      WeaponFireFXBone   = PRIMARY Tur1Muzzle
      WeaponRecoilBone   = PRIMARY Tur1Barrel
      WeaponFireFXBone   = SECONDARY Tur2Muzzle
      WeaponRecoilBone   = SECONDARY Tur2Barrel
      ParticleSysBone   = TreadFX02 BattleShipWaterRipples
      ParticleSysBone   = TreadFX03 BattleShipWaterRipples
      ParticleSysBone   = TreadFX04 BattleShipWaterRipples
      ParticleSysBone   = Smoke01 SteamVent
      ParticleSysBone   = Smoke02 SteamVent
    End

    ConditionState       = MOVING
      Model              = AVBattleSh
      Animation          = AVBattleSh.AVBattleSh
      AnimationMode      = LOOP
      Turret             = Turret01
      TurretPitch        = TurretEL01
      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
      AltTurret          = Turret02
      AltTurretPitch     = TurretEL02
      WeaponFireFXBone   = PRIMARY Tur1Muzzle
      WeaponRecoilBone   = PRIMARY Tur1Barrel
      WeaponFireFXBone   = SECONDARY Tur2Muzzle
      WeaponRecoilBone   = SECONDARY Tur2Barrel
      ParticleSysBone   = TreadFX02 BattleShipWaterRipples
      ParticleSysBone   = TreadFX03 BattleShipWaterRipples
      ParticleSysBone   = TreadFX04 BattleShipWaterRipples
      ParticleSysBone   = TreadFX05 AmphibWave
      ParticleSysBone   = TreadFX06 AmphibWave
      ParticleSysBone = Smoke01 SteamVent
      ParticleSysBone = Smoke02 SteamVent
      ;ParticleSysBone = Smoke03 HeavyFactorySmoke
      ;ParticleSysBone = Smoke03 SmolderingSmoke
      ;ParticleSysBone = Smoke04 SmolderingSmoke
      ;ParticleSysBone = Smoke05 SmolderingSmoke
      ;ParticleSysBone = Smoke06 SmolderingSmoke
    End
  End

  ; ***DESIGN parameters ***
  DisplayName            = OBJECT:Battleship
  Side                   = America
  EditorSorting          = VEHICLE
  TransportSlotCount     = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions           = None 
    Weapon               = PRIMARY BattleShipGunReal
    ;Weapon              = PRIMARY BattleshipBogusGun
    Weapon               = SECONDARY BattleShipGunReal
    ;Weapon               = TERTIARY BattleshipMachineGun
  End
  ArmorSet
    Conditions           = None
    Armor                = InvulnerableArmor
  End
  VisionRange            = 300
  ShroudClearingRange = 300

  ; *** AUDIO Parameters ***
  SoundAmbient           = BattleshipAmbientLoop

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    TurretMoveLoop       = TurretMoveLoop
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority          = UNIT
  KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE

  Body = ActiveBody ModuleTag_02
    MaxHealth            = 10000.0
    InitialHealth        = 10000.0
  End
  Behavior = AIUpdateInterface ModuleTag_03
    Turret
      TurretTurnRate     = 80
      TurretPitchRate    = 80
      FirePitch          = 15            ; Instead of aiming pitchwise at the target, it will aim here
      AllowsPitch        = Yes
      RecenterTime       = 5000       ; how long to wait during idle before recentering
      ControlledWeaponSlots = PRIMARY
      NaturalTurretAngle = 180  ; this turret points backwards normally
    End
    AltTurret
      TurretTurnRate     = 80
      TurretPitchRate    = 80
      FirePitch          = 15          ; Instead of aiming pitchwise at the target, it will aim here
      AllowsPitch        = Yes
      RecenterTime       = 5000     ; how long to wait during idle before recentering
      ControlledWeaponSlots = SECONDARY
    End
;    AutoAcquireEnemiesWhenIdle = Yes
  End

  Locomotor = SET_NORMAL LargeShipLocomotor
  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5000.0
  End

  Geometry               = BOX
  GeometryMajorRadius    = 200.0
  GeometryMinorRadius    = 20.0
  GeometryHeight         = 40     
  GeometryIsSmall        = No 
  Shadow                 = SHADOW_VOLUME   

End



;------------------------------------------------------------------------------
Object AmericaVehicleBattleShipDemo
  SelectPortrait         = SABattleship_L
  ; *** ART Parameters ***
  Draw                   = W3DTankDraw ModuleTag_01
    OkToChangeModelColor = Yes
    InitialRecoilSpeed   = 120
    MaxRecoilDistance    = 8
    RecoilSettleSpeed    = 6
    ConditionState       = NONE
      Model              = AVBattleSh
      Animation          = AVBattleSh.AVBattleSh
      AnimationMode      = LOOP
      Turret             = Turret01
      TurretPitch        = TurretEL01
      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
      AltTurret          = Turret02
      AltTurretPitch     = TurretEL02
      WeaponFireFXBone   = PRIMARY Tur1Muzzle
      WeaponRecoilBone   = PRIMARY Tur1Barrel
      WeaponFireFXBone   = SECONDARY Tur2Muzzle
      WeaponRecoilBone   = SECONDARY Tur2Barrel
      ParticleSysBone   = TreadFX02 BattleShipWaterRipples
      ParticleSysBone   = TreadFX03 BattleShipWaterRipples
      ParticleSysBone   = TreadFX04 BattleShipWaterRipples
      ParticleSysBone   = Smoke01 SteamVent
      ParticleSysBone   = Smoke02 SteamVent
    End

    ConditionState       = MOVING
      Model              = AVBattleSh
      Animation          = AVBattleSh.AVBattleSh
      AnimationMode      = LOOP
      Turret             = Turret01
      TurretPitch        = TurretEL01
      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
      AltTurret          = Turret02
      AltTurretPitch     = TurretEL02
      WeaponFireFXBone   = PRIMARY Tur1Muzzle
      WeaponRecoilBone   = PRIMARY Tur1Barrel
      WeaponFireFXBone   = SECONDARY Tur2Muzzle
      WeaponRecoilBone   = SECONDARY Tur2Barrel
      ParticleSysBone   = TreadFX02 BattleShipWaterRipples
      ParticleSysBone   = TreadFX03 BattleShipWaterRipples
      ParticleSysBone   = TreadFX04 BattleShipWaterRipples
      ParticleSysBone   = TreadFX05 AmphibWave
      ParticleSysBone   = TreadFX06 AmphibWave
      ParticleSysBone = Smoke01 SteamVent
      ParticleSysBone = Smoke02 SteamVent
      ;ParticleSysBone = Smoke03 HeavyFactorySmoke
      ;ParticleSysBone = Smoke03 SmolderingSmoke
      ;ParticleSysBone = Smoke04 SmolderingSmoke
      ;ParticleSysBone = Smoke05 SmolderingSmoke
      ;ParticleSysBone = Smoke06 SmolderingSmoke
    End
  End

  ; ***DESIGN parameters ***
  DisplayName            = OBJECT:Battleship
  Side                   = America
  EditorSorting          = VEHICLE
  TransportSlotCount     = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  CommandSet             = BattleShipCommandSet
  WeaponSet
    Conditions           = None 
    Weapon               = PRIMARY BattleshipDemoGun
    Weapon               = SECONDARY BattleshipDemoGun
    ;Weapon               = TERTIARY BattleshipMachineGun
    AutoChooseSources    = PRIMARY    FROM_SCRIPT
    AutoChooseSources    = SECONDARY  FROM_SCRIPT
  End
  ArmorSet
    Conditions           = None
    Armor                = InvulnerableArmor
  End
  VisionRange            = 300
  ShroudClearingRange = 300

  ; *** AUDIO Parameters ***
  VoiceSelect = BattleshipVoiceSelect
  VoiceMove = BattleshipVoiceMove
  VoiceGuard = BattleshipVoiceMove
  VoiceAttack = BattleshipVoiceAttack
  SoundAmbient = BattleshipAmbientLoop

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    TurretMoveLoop       = OverlordTankTurretMoveLoop
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority          = UNIT
  KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE

  Body = ActiveBody ModuleTag_02
    MaxHealth            = 10000.0
    InitialHealth        = 10000.0
  End
  Behavior = AIUpdateInterface ModuleTag_03
    Turret
      TurretTurnRate     = 80
      TurretPitchRate    = 80
      FirePitch          = 12            ; Instead of aiming pitchwise at the target, it will aim here
      AllowsPitch        = Yes
      RecenterTime       = 5000       ; how long to wait during idle before recentering
      ControlledWeaponSlots = PRIMARY
      NaturalTurretAngle = 180  ; this turret points backwards normally
    End
    AltTurret
      TurretTurnRate     = 80
      TurretPitchRate    = 80
      FirePitch          = 15          ; Instead of aiming pitchwise at the target, it will aim here
      AllowsPitch        = Yes
      RecenterTime       = 5000     ; how long to wait during idle before recentering
      ControlledWeaponSlots = SECONDARY
    End
    TurretsLinked = Yes
   End
  Locomotor = SET_NORMAL LargeShipLocomotor
  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5000.0
  End

  Behavior = FireWeaponPower ModuleTag_FireWeapon01
    SpecialPowerTemplate = SpecialPowerBattleshipBombardment
    ;Automatically reloads weapons immediately upon trigger, then fires multiple weapon slots.
    MaxShotsToFire    = 3
  End

  Geometry               = BOX
  GeometryMajorRadius    = 200.0
  GeometryMinorRadius    = 20.0
  GeometryHeight         = 40     
  GeometryIsSmall        = No 
  Shadow                 = SHADOW_VOLUME   

End





;------------------------------------------------------------------------------
;Sentry Drone
Object MISSION_AmericaVehicleSentryDrone

  ; *** ART Parameters ***
  SelectPortrait         = SAsentry_L
  ButtonImage            = SAsentry
  
  UpgradeCameo1 = Upgrade_AmericaSentryDroneGun
  ;UpgradeCameo2 = NONE
  ;UpgradeCameo3 = NONE
  ;UpgradeCameo4 = NONE
  ;UpgradeCameo5 = NONE

  Draw = W3DTankDraw ModuleTag_01
    
    InitialRecoilSpeed   = 10
    MaxRecoilDistance    = 1.5
    RecoilSettleSpeed    = 3

    OkToChangeModelColor = Yes

    DefaultConditionState
      Model                           = AVSENTRY
      Animation                       = AVSENTRY.AVSENTRY
      AnimationMode                   = LOOP
      Turret                          = TURRET01
      WeaponFireFXBone  = PRIMARY   TurretFX
      WeaponMuzzleFlash = PRIMARY   TurretFX
      WeaponRecoilBone  = PRIMARY   TurretUp
    End
    ConditionState                    = REALLYDAMAGED
      Turret                          = TURRET01
      Model                           = AVSENTRY_D
      Animation                       = AVSENTRY_D.AVSENTRY_D
      AnimationMode                   = LOOP
      HideSubObject                   = TURRETUP09      ;Hide controlled turret
    End
    ConditionState                    = RUBBLE
      Model                           = AVSENTRY_D1
      HideSubObject                   = TURRETUP09      ;Hide controlled turret
    End
    TrackMarks              = EXTnkTrack.tga
    TreadAnimationRate      = 4.0  ; amount of tread texture to move per second
  End

  ; ***DESIGN parameters ***
  DisplayName        = OBJECT:SentryDrone
  Side               = America
  EditorSorting      = VEHICLE
  TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions = None 
    Weapon = PRIMARY SentryDroneGun
  End
  ArmorSet
    Conditions      = None
    Armor           = HumveeArmor
    DamageFX        = TruckDamageFX
  End
  BuildCost       = 650
  BuildTime       = 10.0          ;in seconds    
  VisionRange     = 180
  ShroudClearingRange = 350
  Prerequisites
    Object = AmericaWarFactory
  End

  ExperienceValue = 50 50 100 150   ;Experience point value at each level
  ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
  IsTrainable = No             ;Can gain experience
  CrusherLevel           = 0  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet    = AmericaVehicleSentryDroneCommandSet

  ; *** AUDIO Parameters ***
  VoiceSelect           = SentryDroneVoiceSelect
  VoiceMove             = SentryDroneVoiceMove
  VoiceGuard            = SentryDroneVoiceMove
  VoiceAttack           = SentryDroneVoiceMove
  SoundMoveStart        = NoSound
  SoundMoveStartDamaged = NoSound
  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    VoiceCreate         = NoSound
    TurretMoveStart     = NoSound
    TurretMoveLoop      = NoSound
    VoiceEnter          = NoSound
    Deploy              = NoSound
    Undeploy            = NoSound
  End
  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE ATTACK_NEEDS_LINE_OF_SIGHT DRONE
  
  Body = ActiveBody ModuleTag_02
    MaxHealth       = 300.0
    InitialHealth   = 300.0
  End
  Behavior = DeployStyleAIUpdate ModuleTag_04
    Turret
      TurretTurnRate        = 180
      TurretPitchRate       = 180
      FirePitch             = 0            ; Instead of aiming pitchwise at the target, it will aim here
      AllowsPitch           = No
      RecenterTime          = 1000         ; how long to wait during idle before recentering
      ControlledWeaponSlots = PRIMARY
      NaturalTurretAngle    = 0
      InitiallyDisabled     = No
      MinIdleScanInterval   = 250    ; in milliseconds
      MaxIdleScanInterval   = 250    ; in milliseconds
      MinIdleScanAngle      = 0       ; in degrees off the natural turret angle
      MaxIdleScanAngle      = 360     ; in degrees off the natural turret angle
    End
    AutoAcquireEnemiesWhenIdle = Yes
    PackTime = 1000
    UnpackTime = 1000
    TurretsFunctionOnlyWhenDeployed = Yes
    TurretsMustCenterBeforePacking = Yes
  End

  Locomotor = SET_NORMAL SentryLocomotor
  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 50.0
  End
  Behavior = StealthUpdate ModuleTag_06
    StealthDelay                = 2000 ; msec
    StealthForbiddenConditions  = FIRING_PRIMARY MOVING
    HintDetectableConditions    = IS_FIRING_WEAPON 
    FriendlyOpacityMin          = 50.0%
    FriendlyOpacityMax          = 100.0%
    InnateStealth               = Yes
    OrderIdleEnemiesToAttackMeUponReveal  = Yes
  End

  Behavior = SlowDeathBehavior ModuleTag_07
    DeathTypes = ALL -CRUSHED -SPLATTED
    DestructionDelay  = 500
    DestructionDelayVariance  = 100
    FX  = INITIAL  FX_GenericTankDeathEffect
    OCL = MIDPOINT OCL_AmericaVehicleSentryDroneDie
    FX =  FINAL FX_AmericaVehicleTomahawkDeathExplosion
  End

  Behavior = DestroyDie ModuleTag_08
    DeathTypes = NONE +CRUSHED +SPLATTED
  End

  Behavior = FXListDie ModuleTag_09
    DeathTypes = NONE +CRUSHED +SPLATTED
    DeathFX = FX_CarCrush
  End

  Behavior = CreateCrateDie ModuleTag_CratesChange
    CrateData = SalvageCrateData
    ;CrateData = EliteTankCrateData
    ;CrateData = HeroicTankCrateData
  End

  Behavior = TransitionDamageFX ModuleTag_10
    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
    ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  End

  Behavior = FlammableUpdate ModuleTag_11
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 3       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End
  Behavior = StealthDetectorUpdate ModuleTag_12
    DetectionRate             = 900   ; how often to rescan for stealthed things in my sight (msec)
    ;DetectionRange           = ??? ;Dustin, enable this for independant balancing!
  End
  Geometry = BOX
  GeometryMajorRadius = 9.0
  GeometryMinorRadius = 7.0
  GeometryHeight = 11.5     
  GeometryIsSmall = Yes 
  Shadow = SHADOW_VOLUME
  Scale = 0.9
  ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length


End

;------------------------------------------------------------------------------
;
; ??? This unit is used in a mission for "color".
; This unit is never human-controllable!
;
Object AmericaInfantryCIAOfficer
  SelectPortrait = SACIAOff_L
  ButtonImage = SACIAOff_L

    ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    OkToChangeModelColor = Yes

    ;NORMAL STANDING
    DefaultConditionState
      Model = AICIAOff_SKN
      IdleAnimation = AIOFCR_SKL.AIOFCR_STA 0 21
      ;Regular spice animations
      IdleAnimation = AIOFCR_SKL.AIOFCR_IDA
      IdleAnimation = AIOFCR_SKL.AIOFCR_IDB
      AnimationMode = ONCE
      WeaponFireFXBone = PRIMARY Muzzle
      WeaponMuzzleFlash = PRIMARY MuzzleFX
      TransitionKey = TRANS_STAND
    End

    ConditionState    = MOVING
      Animation       = AIOFCR_SKL.AIOFCR_RNA
      AnimationMode   = LOOP
      ParticleSysBone     = None InfantryDustTrails
    End

    ; NORMAL ATTACK
    ;--------------------------------------------------------
    ; Drawing gun
    ConditionState  = PREATTACK_A
      Animation     = AIOFCR_SKL.AIOFCR_ATAST
      AnimationMode = ONCE
    End
    AliasConditionState = PREATTACK_A MOVING
    AliasConditionState = PREATTACK_A FIRING_A
    AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A

    ; Firing gun
    ConditionState  = FIRING_A
      Animation     = AIOFCR_SKL.AIOFCR_ATALP
      AnimationMode = LOOP
      TransitionKey = TRANS_FIRING_A
    End
    ConditionState  = BETWEEN_FIRING_SHOTS_A
      Animation     = AIOFCR_SKL.AIOFCR_ATALP
      AnimationMode = LOOP
      TransitionKey = TRANS_FIRING_A
    End
    AliasConditionState = RELOADING_A
    AliasConditionState = MOVING FIRING_A
    AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
    AliasConditionState = MOVING RELOADING_A

    ; This transition allows him to put his gun away when he's finished attacking.
    TransitionState = TRANS_FIRING_A TRANS_STAND
      Animation     = AIOFCR_SKL.AIOFCR_ATAED
      AnimationMode = ONCE
    End
    ;--------------------------------------------------------

    ConditionState  = DYING
      Animation     = AIOFCR_SKL.AIOFCR_DTA
      Animation     = AIOFCR_SKL.AIOFCR_DTB
      AnimationMode = ONCE
      TransitionKey = TRANS_Dying
    End

    TransitionState = TRANS_Dying TRANS_Flailing
      Animation = AIOFCR_SKL.AIOFCR_ADTE1
      AnimationMode = ONCE
    End

    ConditionState = DYING EXPLODED_FLAILING
      Animation = AIOFCR_SKL.AIOFCR_ADTE2
      AnimationMode = LOOP
      TransitionKey = TRANS_Flailing
    End

    ConditionState = DYING EXPLODED_BOUNCING
      Animation = AIOFCR_SKL.AIOFCR_ADTE3
      AnimationMode = ONCE
      TransitionKey = None
    End

    ConditionState  = SPECIAL_CHEERING
      Animation     = AIOFCR_SKL.AIOFCR_CHA
      AnimationMode = LOOP
    End

    ;PARACHUTING ANIMATIONS

    ;@TODO - MISSING ANIMATION FILE
    ;ConditionState   = FREEFALL
    ;  Animation      = AIOFCR_SKL.AIOFCR_PFL
    ;  AnimationMode  = LOOP
    ;  TransitionKey  = TRANS_Falling
    ;End
    ;AliasConditionState = FREEFALL REALLYDAMAGED
    ;AliasConditionState = FREEFALL DYING
    ConditionState  = PARACHUTING
      Animation     = AIOFCR_SKL.AIOFCR_PHG
      AnimationMode = LOOP
      Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
      TransitionKey = TRANS_Chute

    End
    AliasConditionState = PARACHUTING REALLYDAMAGED
    AliasConditionState = PARACHUTING DYING
    TransitionState = TRANS_Falling TRANS_Chute
      Animation     = AIOFCR_SKL.AIOFCR_POP
      AnimationMode = ONCE
      Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
    End
    TransitionState = TRANS_Chute TRANS_Stand
      Animation     = AIOFCR_SKL.AIOFCR_PTD
      AnimationMode = ONCE
    End

    ConditionState      = UNPACKING
      Animation         = AIOFCR_SKL.AICIAOFF_PLNT
      AnimationMode     = ONCE
    End
    AliasConditionState = MOVING UNPACKING


  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Officer
  Side = America
  EditorSorting = INFANTRY
  TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
   WeaponSet
    Conditions          = None 
    Weapon              = PRIMARY     ColonelBurtonSniperRifleWeapon
    Weapon              = SECONDARY   NONE
    AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
    AutoChooseSources   = SECONDARY   NONE
  End
  ArmorSet
    Conditions      = None
    Armor           = HumanArmor
    DamageFX        = InfantryDamageFX
  End
  VisionRange = 150
  ShroudClearingRange = 150

  BuildCost     = 400
  BuildTime     = 10.0          ;in seconds      
  CommandSet          = AmericaInfantryCIAAgentCommandSet

  ; *** AUDIO Parameters ***
  VoiceSelect = CIAAgentVoiceSelect
  VoiceMove = CIAAgentVoiceMove
  VoiceAttack = CIAAgentVoiceAttack


  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 100.0
    InitialHealth   = 100.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
    ScanRate = 1000 ; once a second.
    ScanRange = 300 ;
    NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
    AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  End

  Locomotor = SET_NORMAL BasicHumanLocomotor
  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5.0
  End
 
  Behavior = SquishCollide ModuleTag_07
    ;nothing
  End

  Behavior = SpecialAbility ModuleTag_Plant01
    SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
    UpdateModuleStartsAttack = Yes
    InitiateSound             = CIAAgentVoicePlantRemoteCharge
  End
  Behavior = SpecialAbilityUpdate ModuleTag_Plant02
    SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
    StartAbilityRange = 0.0
    PreparationTime = 0
    SpecialObject = RemoteC4Charge
    MaxSpecialObjects = 8
    SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
    AlwaysValidateSpecialObjects = Yes      ;Coupled with the above setting, this one is necessary for code optimization.
    SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
    UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
    UnpackTime              = 5500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
    PackTime                = 0
    SkipPackingWithNoTarget = Yes           ;When yes, the packing/unpacking will be ignored when detonating charges.
    FlipOwnerAfterUnpacking = Yes
    FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
    UnpackSound               = ColonelBurtonPlantCharge
    LoseStealthOnTrigger      = Yes
    PreTriggerUnstealthTime   = 5000 ; in milliseconds
  End

  Behavior = SpecialAbility ModuleTag_Plant03
    SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
    UpdateModuleStartsAttack = Yes
    InitiateSound             = CIAAgentVoicePlantTimedCharge
  End
  Behavior = SpecialAbilityUpdate ModuleTag_Plant04
    SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
    StartAbilityRange = 0.0
    PreparationTime = 0
    SpecialObject = TimedC4Charge
    MaxSpecialObjects = 10
    SpecialObjectsPersistWhenOwnerDies = Yes 
    SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
    UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
    UnpackTime              = 5500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
    FlipOwnerAfterUnpacking = Yes
    FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
    UnpackSound               = ColonelBurtonPlantCharge
    LoseStealthOnTrigger      = Yes
    PreTriggerUnstealthTime   = 5000 ; in milliseconds

  End

; --- begin Death modules ---
  Behavior = SlowDeathBehavior ModuleTag_Death01
    DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RangerDie
    FX                  = INITIAL FX_BloodyPuddle3
  End
  Behavior = SlowDeathBehavior ModuleTag_Death02
    DeathTypes          = NONE +CRUSHED +SPLATTED
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_GIDieCrushed
    FX                  = INITIAL FX_BloodyPuddle3
  End
  Behavior = SlowDeathBehavior ModuleTag_Death03
    DeathTypes          = NONE +EXPLODED
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RangerDie
    FX                  = INITIAL FX_BloodyPuddle3
    FlingForce          = 8
    FlingForceVariance  = 3
    FlingPitch          = 60
    FlingPitchVariance  = 10
  End
  Behavior = SlowDeathBehavior ModuleTag_Death04
    DeathTypes          = NONE +BURNED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByFireUSA
    OCL                 = INITIAL OCL_FlamingInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death05
    DeathTypes          = NONE +POISONED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
    DeathTypes          = NONE +POISONED_BETA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  End
  Behavior = SlowDeathBehavior ModuleTag_Death07
    DeathTypes          = NONE +POISONED_GAMMA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantryGamma
  End
; --- end Death modules ---

  Behavior = PoisonedBehavior ModuleTag_10
    PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
    PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  End
 
  Geometry = CYLINDER
  GeometryMajorRadius = 10.0
  GeometryMinorRadius = 10.0
  GeometryHeight = 12.0
  GeometryIsSmall = Yes
  Shadow = SHADOW_DECAL
  ShadowSizeX = 14;
  ShadowSizeY = 14;
  Scale = 0.88
  ShadowTexture = ShadowI;
  BuildCompletion = APPEARS_AT_RALLY_POINT

End







;------------------------------------------------------------------------------
Object AmericaVehicleBattleShipUSSBender
  SelectPortrait         = SABattleship_L
  ; *** ART Parameters ***
  Draw                   = W3DTankDraw ModuleTag_01
    OkToChangeModelColor = Yes
    InitialRecoilSpeed   = 120
    MaxRecoilDistance    = 8
    RecoilSettleSpeed    = 6
    ConditionState       = NONE
      Model              = AVBattleSh
      Animation          = AVBattleSh.AVBattleSh
      AnimationMode      = LOOP
      Turret             = Turret01
      TurretPitch        = TurretEL01
      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
      AltTurret          = Turret02
      AltTurretPitch     = TurretEL02
      WeaponFireFXBone   = PRIMARY Tur1Muzzle
      WeaponRecoilBone   = PRIMARY Tur1Barrel
      WeaponFireFXBone   = SECONDARY Tur2Muzzle
      WeaponRecoilBone   = SECONDARY Tur2Barrel
      ParticleSysBone   = TreadFX02 BattleShipWaterRipples
      ParticleSysBone   = TreadFX03 BattleShipWaterRipples
      ParticleSysBone   = TreadFX04 BattleShipWaterRipples
      ParticleSysBone   = Smoke01 SteamVent
      ParticleSysBone   = Smoke02 SteamVent
    End

    ConditionState       = MOVING
      Model              = AVBattleSh
      Animation          = AVBattleSh.AVBattleSh
      AnimationMode      = LOOP
      Turret             = Turret01
      TurretPitch        = TurretEL01
      TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
      AltTurret          = Turret02
      AltTurretPitch     = TurretEL02
      WeaponFireFXBone   = PRIMARY Tur1Muzzle
      WeaponRecoilBone   = PRIMARY Tur1Barrel
      WeaponFireFXBone   = SECONDARY Tur2Muzzle
      WeaponRecoilBone   = SECONDARY Tur2Barrel
      ParticleSysBone   = TreadFX02 BattleShipWaterRipples
      ParticleSysBone   = TreadFX03 BattleShipWaterRipples
      ParticleSysBone   = TreadFX04 BattleShipWaterRipples
      ParticleSysBone   = TreadFX05 AmphibWave
      ParticleSysBone   = TreadFX06 AmphibWave
      ParticleSysBone = Smoke01 SteamVent
      ParticleSysBone = Smoke02 SteamVent
      ;ParticleSysBone = Smoke03 HeavyFactorySmoke
      ;ParticleSysBone = Smoke03 SmolderingSmoke
      ;ParticleSysBone = Smoke04 SmolderingSmoke
      ;ParticleSysBone = Smoke05 SmolderingSmoke
      ;ParticleSysBone = Smoke06 SmolderingSmoke
    End
  End

  ; ***DESIGN parameters ***
  DisplayName            = OBJECT:Battleship
  Side                   = America
  EditorSorting          = VEHICLE
  TransportSlotCount     = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  CommandSet             = BattleShipCommandSet
  WeaponSet
    Conditions           = None 
    Weapon               = PRIMARY BattleshipUSSBenderGun
    Weapon               = SECONDARY BattleshipUSSBenderGun
    ;Weapon               = TERTIARY BattleshipMachineGun
    AutoChooseSources    = PRIMARY    FROM_SCRIPT FROM_PLAYER FROM_AI
    AutoChooseSources    = SECONDARY  FROM_SCRIPT FROM_PLAYER FROM_AI
  End
  ArmorSet
    Conditions           = None
    Armor                = InvulnerableArmor
  End
  VisionRange            = 300
  ShroudClearingRange = 300

  ; *** AUDIO Parameters ***
  VoiceSelect = BattleshipVoiceSelect
  VoiceMove = BattleshipVoiceMove
  VoiceGuard = BattleshipVoiceMove
  VoiceAttack = BattleshipVoiceAttack
  SoundAmbient = BattleshipAmbientLoop

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    TurretMoveLoop       = OverlordTankTurretMoveLoop
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority          = UNIT
  KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE

  Body = ActiveBody ModuleTag_02
    MaxHealth            = 10000.0
    InitialHealth        = 10000.0
  End
  Behavior = AIUpdateInterface ModuleTag_03
    Turret
      TurretTurnRate     = 80
      TurretPitchRate    = 80
      FirePitch          = 20            ; Instead of aiming pitchwise at the target, it will aim here
      AllowsPitch        = Yes
      RecenterTime       = 5000       ; how long to wait during idle before recentering
      ControlledWeaponSlots = PRIMARY
      NaturalTurretAngle = 180  ; this turret points backwards normally
    End
    AltTurret
      TurretTurnRate     = 80
      TurretPitchRate    = 80
      FirePitch          = 20          ; Instead of aiming pitchwise at the target, it will aim here
      AllowsPitch        = Yes
      RecenterTime       = 5000     ; how long to wait during idle before recentering
      ControlledWeaponSlots = SECONDARY
    End
    TurretsLinked = Yes
  End

  Locomotor = SET_NORMAL LargeShipLocomotor
  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5000.0
  End

  Behavior = FireWeaponPower ModuleTag_FireWeapon01
    SpecialPowerTemplate = SpecialPowerBattleshipBombardment
    ;Automatically reloads weapons immediately upon trigger, then fires multiple weapon slots.
    MaxShotsToFire    = 3
  End

  Geometry               = BOX
  GeometryMajorRadius    = 200.0
  GeometryMinorRadius    = 20.0
  GeometryHeight         = 40     
  GeometryIsSmall        = No 
  Shadow                 = SHADOW_VOLUME   

End

;------------------------------------------------------------------------------
Object Satelitte

  ; *** ART Parameters ***
;  Draw = W3DModelDraw
;    DefaultConditionState
;      Model             = AVBomber_B
;    End
;  End

  ; ***DESIGN parameters ***
  ;DisplayName        = OBJECT:A10Thunderbolt
  EditorSorting       = VEHICLE
  Side                = AmericaLaserGeneral
  TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  VisionRange         = 99999.0 
  ShroudClearingRange = 0
  ArmorSet
    Conditions      = None
    Armor           = AirplaneArmor
    DamageFX        = None
  End


  ; *** AUDIO Parameters ***
  ; In the Activation of the superweapon, where it plays only once instead of once per missile.
;  SoundMoveStart = FireArtilleryCannonSound


  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD CAN_ATTACK VEHICLE AIRCRAFT UNATTACKABLE IGNORED_IN_GUI EMP_HARDENED
  Body = ActiveBody ModuleTag_01
    MaxHealth       = 200.0
    InitialHealth   = 200.0
  End

  Behavior = DestroyDie ModuleTag_02
    ;nothing
  End
 
  Behavior = PhysicsBehavior ModuleTag_03
    Mass = 0.001 ; about the weight of grain of salt
  End

  Behavior = DeliverPayloadAIUpdate ModuleTag_05
  End

  Locomotor = SET_NORMAL SatelitteLocomotor

  Geometry = Cylinder
  GeometryIsSmall = Yes
  GeometryMajorRadius = 1.0
  GeometryMinorRadius = 1.0
  GeometryHeight = 1.0
  Shadow = SHADOW_DECAL
  ShadowSizeX = 1;
  ShadowSizeY = 1;
  ShadowTexture = ShadowI;

End

;------------------------------------------------------------------------------
Object AmericaInfantryUNSoldier

  ; *** ART Parameters ***
  SelectPortrait         = SAUNSoldier_L
  ButtonImage            = SAUNSoldier

  UpgradeCameo1 = Upgrade_InfantryCaptureBuilding
  UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  UpgradeCameo3 = Upgrade_AmericaChemicalSuits
  UpgradeCameo4 = Upgrade_AmericaC4Charges
  ;UpgradeCameo5 = NONE

  Draw = W3DModelDraw ModuleTag_01

    OkToChangeModelColor = Yes

    DefaultConditionState
      Model             = CIUNSL_SKN
      IdleAnimation     = CIUNSL_SKL.CIUNSL_STA 0 21
      IdleAnimation     = CIUNSL_SKL.CIUNSL_ID1
      IdleAnimation     = CIUNSL_SKL.CIUNSL_ID2
      AnimationMode     = ONCE
      WeaponFireFXBone  = PRIMARY Muzzle
      WeaponMuzzleFlash = PRIMARY MuzzleFX
      TransitionKey     = TRANS_Stand
    End

    ConditionState      = FIRING_A 
      Animation         = CIUNSL_SKL.CIUNSL_ATA1_LP
      AnimationMode     = LOOP
      TransitionKey     = TRANS_FiringA
    End
    AliasConditionState = BETWEEN_FIRING_SHOTS_A
    AliasConditionState = RELOADING_A

    TransitionState     = TRANS_Stand TRANS_FiringA
      Animation         = CIUNSL_SKL.CIUNSL_ATA1_ST
      AnimationMode     = ONCE
      AnimationSpeedFactorRange = 4 4
    End

    TransitionState     = TRANS_FiringA TRANS_Stand
      Animation         = CIUNSL_SKL.CIUNSL_ATA1_ED
      AnimationMode     = ONCE
      AnimationSpeedFactorRange = 4 4
    End

    ; these aliases handle the attack-move case.
    AliasConditionState = MOVING FIRING_A
    AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
    AliasConditionState = MOVING RELOADING_A

    ConditionState      = FREEFALL
      Animation         = CIUNSL_SKL.CIUNSL_PFL
      AnimationMode     = LOOP
      TransitionKey     = TRANS_Falling
    End

    ConditionState      = PARACHUTING
      Animation         = CIUNSL_SKL.CIUNSL_PHG
      AnimationMode     = LOOP
      TransitionKey     = TRANS_Chute
    End
    AliasConditionState = PARACHUTING DYING

    ConditionState      = MOVING
      Animation         = CIUNSL_SKL.CIUNSL_RNA 
      AnimationMode     = LOOP
      Flags             = RANDOMSTART
      TransitionKey     = None
    End

    ConditionState      = DYING
      Animation         = CIUNSL_SKL.CIUNSL_DTA
      Animation         = CIUNSL_SKL.CIUNSL_DTB
      AnimationMode     = ONCE
      TransitionKey     = TRANS_Dying
    End

    TransitionState     = TRANS_Dying TRANS_Flailing
      Animation         = CIUNSL_SKL.CIUNSL_ADTA1
      AnimationMode     = ONCE
    End

    ConditionState      = DYING EXPLODED_FLAILING
      Animation         = CIUNSL_SKL.CIUNSL_ADTA2
      AnimationMode     = LOOP
      TransitionKey     = TRANS_Flailing
    End

    ConditionState      = DYING EXPLODED_BOUNCING
      Animation         = CIUNSL_SKL.CIUNSL_ADTA3
      AnimationMode     = ONCE
      TransitionKey     = None
    End
    AliasConditionState = DYING SPLATTED

    TransitionState     = TRANS_Falling TRANS_Chute
      Animation         = CIUNSL_SKL.CIUNSL_POP
      AnimationMode     = ONCE
    End

    TransitionState     = TRANS_Chute TRANS_Stand
      Animation         = CIUNSL_SKL.CIUNSL_PTD
      AnimationMode     = ONCE
    End

  End

  ; ***DESIGN parameters ***
  Side = America
  EditorSorting = INFANTRY
  TransportSlotCount = 1

  DisplayName      = OBJECT:UNSoldier
  EditorSorting = INFANTRY
  TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  
    WeaponSet
    Conditions = None
    Weapon = PRIMARY AssaultRifle
    Weapon = SECONDARY Shotgun
  End
  ArmorSet
    Conditions      = None
    Armor           = HumanArmor
    DamageFX        = InfantryDamageFX
  End
  ArmorSet
    Conditions            = PLAYER_UPGRADE
    Armor                 = ChemSuitHumanArmor
    DamageFX              = None
  End

  VisionRange = 100
  ShroudClearingRange = 300

  ExperienceValue = 20 20 40 60    ;Experience point value at each level
  ExperienceRequired = 0 20 40 60 120  ;Experience points needed to gain each level
  IsTrainable = Yes             ;Can gain experience
  CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet          = SESoldierCommandSet

  ; *** AUDIO Parameters ***
  VoiceSelect = RangerVoiceSelect
  VoiceMove = RangerVoiceMove
  VoiceGuard = RangerVoiceMove
  VoiceAttack = RangerVoiceAttack
  VoiceFear = RangerVoiceFear
  VoiceTaskComplete = RangerVoiceCaptureComplete

  UnitSpecificSounds
    VoiceEnter = RangerVoiceMove
    VoiceEnterHostile = RangerVoiceMove
    VoiceGarrison = RangerVoiceGarrison
    VoiceCreate         = RangerVoiceCreate
    VoiceSubdue         = RangerVoiceSubdue
    VoiceClearBuilding  = RangerVoiceClearBuilding
    VoiceGetHealed      = RangerVoiceMove
    VoicePrimaryWeaponMode = RangerVoiceModeGun
    VoiceSecondaryWeaponMode = RangerVoiceModeGun
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY

  Behavior = CommandButtonHuntUpdate ModuleTag_50
  End

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 125.0
    InitialHealth   = 125.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Locomotor = SET_NORMAL BasicHumanLocomotor

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 5.0
  End
  Behavior = ProductionUpdate ModuleTag_05
    ; nothing
  End

  Behavior = SquishCollide ModuleTag_07
    ;nothing
  End


; --- begin Death modules ---
  Behavior = SlowDeathBehavior ModuleTag_Death01
    DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RangerDie
  End
  Behavior = SlowDeathBehavior ModuleTag_Death02
    DeathTypes          = NONE +CRUSHED +SPLATTED
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_GIDieCrushed
  End
  Behavior = SlowDeathBehavior ModuleTag_Death03
    DeathTypes          = NONE +EXPLODED
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RangerDie
    FlingForce          = 8
    FlingForceVariance  = 3
    FlingPitch          = 60
    FlingPitchVariance  = 10
  End
  Behavior = SlowDeathBehavior ModuleTag_Death04
    DeathTypes          = NONE +BURNED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByFireUSA
    OCL                 = INITIAL OCL_FlamingInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death05
    DeathTypes          = NONE +POISONED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinUSA
    OCL                 = INITIAL OCL_ToxicInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death06 
    DeathTypes          = NONE +POISONED_BETA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinUSA
    OCL                 = INITIAL OCL_ToxicInfantryBeta 
  End
  Behavior = SlowDeathBehavior ModuleTag_Death07
    DeathTypes          = NONE +POISONED_GAMMA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinUSA
    OCL                 = INITIAL OCL_ToxicInfantryGamma
  End


; --- end Death modules ---

  Behavior = PoisonedBehavior ModuleTag_12
    PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
    PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  End

  Behavior = SpecialAbility ModuleTag_13
    SpecialPowerTemplate      = SpecialAbilityRangerCaptureBuilding
    UpdateModuleStartsAttack  = Yes
    StartsPaused              = Yes ; Unpaused by upgrade module
    InitiateSound         = RangerVoiceCapture
  End
  Behavior = SpecialAbilityUpdate ModuleTag_14
    SpecialPowerTemplate  = SpecialAbilityRangerCaptureBuilding
    StartAbilityRange     = 5.0
    UnpackTime            = 3000  ; (changing this will scale anim speed)
    PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
    PackTime              = 2000  ; (changing this will scale anim speed)
    DoCaptureFX           = Yes
    AwardXPForTriggering  = 15
    ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  End

  Behavior = UnpauseSpecialPowerUpgrade ModuleTag_15
    SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
    TriggeredBy = Upgrade_InfantryCaptureBuilding
  End

  Behavior = SpecialAbility ModuleTag_16
    SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
    UpdateModuleStartsAttack = Yes
    InitiateSound             = ColonelBurtonVoicePlantRemoteCharge
  End
 
  Behavior = SpecialAbilityUpdate ModuleTag_17
    SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
    StartAbilityRange = 0.0
    PreparationTime = 0
    SpecialObject = MarineRemoteC4Charge
    MaxSpecialObjects = 8
    SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
    AlwaysValidateSpecialObjects = Yes      ;Coupled with the above setting, this one is necessary for code optimization.
    SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
    UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
    UnpackTime              = 1500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
    PackTime                = 0
    SkipPackingWithNoTarget = Yes           ;When yes, the packing/unpacking will be ignored when detonating charges.
    FlipOwnerAfterUnpacking = Yes
    FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
    UnpackSound               = ColonelBurtonPlantCharge
  End
 
  Geometry = CYLINDER
  GeometryMajorRadius = 10.0
  GeometryMinorRadius = 10.0
  GeometryHeight = 13.0
  GeometryIsSmall = Yes
  Shadow = SHADOW_DECAL
  ShadowSizeX = 14;
  ShadowSizeY = 14;
  ShadowTexture = ShadowI;
  Scale = 0.88
  BuildCompletion = APPEARS_AT_RALLY_POINT

End

;------------------------------------------------------------------------------
Object AmericaVehicleUNHumvee

  ; *** ART Parameters ***
  SelectPortrait         = SAUNHumvee_L
  ButtonImage            = SAUNHumvee
  
  UpgradeCameo1 = Upgrade_AmericaBattleDrone
  UpgradeCameo2 = Upgrade_AmericaScoutDrone
  UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
  UpgradeCameo4 = Upgrade_AmericaHellfireDrone
  ;UpgradeCameo5 = Upgrade_AmericaTOWMissile

  Draw = W3DTruckDraw ModuleTag_01
    OkToChangeModelColor = Yes

    DefaultConditionState
      Model = CVHUMVEE
      Turret = Turret
      WeaponFireFXBone = PRIMARY Muzzle
      WeaponMuzzleFlash = PRIMARY MuzzleFX
    End

    ConditionState = REALLYDAMAGED
      Model = CVHUMVEE_D
      Turret = Turret
      WeaponFireFXBone = PRIMARY Muzzle
      WeaponMuzzleFlash = PRIMARY MuzzleFX
    End

    ConditionState = RUBBLE
      Model = CVHUMVEE_D
    End

    LeftFrontTireBone = Tire01
    RightFrontTireBone = Tire02
    LeftRearTireBone = Tire03
    RightRearTireBone = Tire04
    TireRotationMultiplier = 0.2   ; this * speed = rotation.
    PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.

  End

  ; ***DESIGN parameters ***
  Side = America
  DisplayName      = OBJECT:UNHumvee
  EditorSorting   = VEHICLE
  TransportSlotCount    = 2                 ;how many "slots" we take in a transport (0 == not transportable)
  VisionRange     = 200

  WeaponSet
    Conditions = None 
    Weapon = PRIMARY HumveeGun
  End

  ArmorSet
    Conditions      = None
    Armor           = TruckArmor
    DamageFX        = TankDamageFX
  End

  CommandSet      = AmericaVehicleHumveeCommandSet
  ExperienceValue = 50 100 150 400    ;Experience point value at each level
  ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  IsTrainable = Yes             ;Can gain experience

  ; *** AUDIO Parameters ***
  VoiceSelect = HumveeVoiceSelect
  VoiceMove = HumveeVoiceMove
  VoiceGuard = HumveeVoiceMove
  VoiceAttack = HumveeVoiceAttack
  ;VoiceAttackAir = HumveeVoiceAttackTOW
  SoundMoveStart = HumveeMoveStart
  SoundMoveStartDamaged = HumveeMoveStart
  ;SoundAmbient           = IdleVehicleLoop
  ;SoundAmbientRubble     = NoSound
   ;SoundMoveLoop          = MovingVehicleLoop  ; only when not idle
   ;SoundAmbient           = IdleVehicleLoop
  SoundEnter = HumveeEnter
  SoundExit = HumveeExit

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    ;TurretMoveStart    = NoSound
    VoiceCreate         = HumveeVoiceCreate
    TurretMoveLoop      = TurretMoveLoop
    SoundEject          = PilotSoundEject
    VoiceEject          = PilotVoiceEject
    VoiceCrush          = HumveeVoiceCrush
  ; Required for the W3DTruckDraw module
    TruckLandingSound = RocketBuggyLand
    TruckPowerslideSound = RocketBuggyPowerslide
    VoiceUnload = HumveeVoiceUnload
    VoiceEnter = HumveeVoiceMove
  End

  ; *** ENGINEERING Parameters ***  
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE TRANSPORT

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 200.0
    InitialHealth   = 200.0
  End

  Behavior = TransportAIUpdate ModuleTag_03
     
    Turret
      TurretTurnRate = 180
      RecenterTime = 5000   ; how long to wait during idle before recentering
      ControlledWeaponSlots = PRIMARY SECONDARY
    End
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Locomotor = SET_NORMAL HumveeLocomotor
  Locomotor = SET_WANDER WanderCarSuspensionLocomotor
  Locomotor = SET_PANIC PanicCarSuspensionLocomotor

  Behavior = TransportContain ModuleTag_05
    PassengersAllowedToFire = Yes
    Slots             = 5
    EnterSound          = GarrisonEnter
    ExitSound           = GarrisonExit
    DamagePercentToUnits = 20%
    AllowInsideKindOf  = INFANTRY
  End

  Behavior = ObjectCreationUpgrade ModuleTag_06
    UpgradeObject = OCL_AmericanBattleDrone
    TriggeredBy   = Upgrade_AmericaBattleDrone
    ConflictsWith = Upgrade_AmericaScoutDrone Upgrade_AmericaHellfireDrone
  End
  Behavior = ObjectCreationUpgrade ModuleTag_07
    UpgradeObject = OCL_AmericanScoutDrone
    TriggeredBy   = Upgrade_AmericaScoutDrone
    ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaHellfireDrone
  End
  Behavior = ObjectCreationUpgrade ModuleTag_08
    UpgradeObject = OCL_AmericanHellfireDrone
    TriggeredBy   = Upgrade_AmericaHellfireDrone
    ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaScoutDrone
  End

  Behavior = ProductionUpdate ModuleTag_09
    MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  End

  ;Behavior = WeaponSetUpgrade ModuleTag_10
    ;TriggeredBy = Upgrade_AmericaTOWMissile
  ;End
  Behavior = ExperienceScalarUpgrade ModuleTag_11
    TriggeredBy = Upgrade_AmericaAdvancedTraining
    AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  End

  Behavior = SlowDeathBehavior ModuleTag_12
    DeathTypes = ALL -CRUSHED -SPLATTED
    ProbabilityModifier = 25
    DestructionDelay = 1
    FX  = INITIAL  FX_HumveeExplosionOneInitial
    OCL = INITIAL  OCL_InitialHumveeDebris
    FX  = FINAL    FX_HumveeExplosionOneFinal
    OCL = FINAL    OCL_FinalHumveeDebris
  End

  Behavior = DestroyDie ModuleTag_13
    DeathTypes = NONE +CRUSHED +SPLATTED
  End

  Behavior = FXListDie ModuleTag_14
    DeathTypes = NONE +CRUSHED +SPLATTED
    DeathFX = FX_CarCrush
  End

  Behavior = CreateCrateDie ModuleTag_CratesChange
    CrateData = SalvageCrateData
    ;CrateData = EliteTankCrateData
    ;CrateData = HeroicTankCrateData
  End

  Behavior = CreateObjectDie ModuleTag_SoloChange
    DeathTypes = ALL -CRUSHED -SPLATTED
    CreationList = OCL_AmericanRangerEjection01
    ExemptStatus = HIJACKED
  End
  Behavior = EjectPilotDie ModuleTag_15
    DeathTypes = ALL -CRUSHED -SPLATTED
    ExemptStatus = HIJACKED
    VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
    GroundCreationList = OCL_EjectPilotOnGround
    AirCreationList = OCL_EjectPilotViaParachute
  End

  Behavior = TransitionDamageFX ModuleTag_16
    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
    ReallyDamagedParticleSystem2 = Bone:Smoke RandomBone:Yes PSys:ArmExplosionSmall01
    ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_HumveeDamageTransition
  End

  Behavior = FlammableUpdate ModuleTag_17
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 5       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  Behavior = PhysicsBehavior ModuleTag_18
    Mass = 30.0
  End

  Geometry = BOX
  GeometryMajorRadius = 14.0
  GeometryMinorRadius = 7.0
  GeometryHeight = 11.5     
  GeometryIsSmall = Yes 
  Shadow = SHADOW_VOLUME   
  Scale = 0.91

End

;------------------------------------------------------------------------------
;************************** Cinematic-only unit *******************************
Object CINE_UNHumvee

  ; *** ART Parameters ***
  SelectPortrait         = SAUNHumvee_L
  ButtonImage            = SAUNHumvee
  
  UpgradeCameo1 = Upgrade_AmericaBattleDrone
  UpgradeCameo2 = Upgrade_AmericaScoutDrone
  UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
  UpgradeCameo4 = Upgrade_AmericaHellfireDrone
  ;UpgradeCameo5 = Upgrade_AmericaTOWMissile

  Draw = W3DTruckDraw ModuleTag_01
    OkToChangeModelColor = Yes

    DefaultConditionState
      Model = CVHUMVEE
      Turret = Turret
      WeaponFireFXBone = PRIMARY Muzzle
      WeaponMuzzleFlash = PRIMARY MuzzleFX
    End

    ConditionState = REALLYDAMAGED
      Model = CVHUMVEE_D
      Turret = Turret
      WeaponFireFXBone = PRIMARY Muzzle
      WeaponMuzzleFlash = PRIMARY MuzzleFX
    End

    ConditionState = RUBBLE
      Model = CVHUMVEE_D
    End

    LeftFrontTireBone = Tire01
    RightFrontTireBone = Tire02
    LeftRearTireBone = Tire03
    RightRearTireBone = Tire04
    TireRotationMultiplier = 0.2   ; this * speed = rotation.
    PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.

  End

  ; ***DESIGN parameters ***
  Side                  = America
  DisplayName           = OBJECT:HumVee
  EditorSorting         = VEHICLE
  TransportSlotCount    = 2                 ;how many "slots" we take in a transport (0 == not transportable)
  VisionRange     = 200

  WeaponSet
    Conditions = None 
    Weapon = PRIMARY HumveeGun
  End

  ArmorSet
    Conditions      = None
    Armor           = TruckArmor
    DamageFX        = TankDamageFX
  End

  CommandSet      = AmericaVehicleHumveeCommandSet
  ExperienceValue = 50 100 150 400    ;Experience point value at each level
  ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  IsTrainable = Yes             ;Can gain experience
  CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles

; *** AUDIO Parameters ***
  VoiceSelect = HumveeVoiceSelect
  VoiceMove = HumveeVoiceMove
  VoiceGuard = HumveeVoiceMove
  VoiceAttack = HumveeVoiceAttack
  VoiceAttackAir = HumveeVoiceAttackTOW
  SoundMoveStart = HumveeMoveStart
  SoundMoveStartDamaged = HumveeMoveStart
  ;SoundAmbient           = IdleVehicleLoop
  ;SoundAmbientRubble     = NoSound
   ;SoundMoveLoop          = MovingVehicleLoop  ; only when not idle
   ;SoundAmbient           = IdleVehicleLoop
  SoundEnter = HumveeEnter
  SoundExit = HumveeExit

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    ;TurretMoveStart    = NoSound
    VoiceCreate         = HumveeVoiceCreate
    TurretMoveLoop      = TurretMoveLoop
    SoundEject          = PilotSoundEject
    VoiceEject          = PilotVoiceEject
    VoiceCrush          = HumveeVoiceCrush
  ; Required for the W3DTruckDraw module
    TruckLandingSound = RocketBuggyLand
    TruckPowerslideSound = RocketBuggyPowerslide
    VoiceUnload = HumveeVoiceUnload
    VoiceEnter = HumveeVoiceMove
  End

  ; *** ENGINEERING Parameters ***  
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE TRANSPORT

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 200.0
    InitialHealth   = 200.0
  End

  Behavior = TransportAIUpdate ModuleTag_03
    Turret
      TurretTurnRate = 180
      RecenterTime = 5000   ; how long to wait during idle before recentering
      ControlledWeaponSlots = PRIMARY SECONDARY
    End
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Locomotor = SET_NORMAL CINE_HumveeLocomotor
  Locomotor = SET_WANDER WanderCarSuspensionLocomotor
  Locomotor = SET_PANIC PanicCarSuspensionLocomotor

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 30.0
  End

  Behavior = TransportContain ModuleTag_05
    PassengersAllowedToFire = Yes
    Slots             = 5
    EnterSound          = GarrisonEnter
    ExitSound           = GarrisonExit
    DamagePercentToUnits = 20%
    AllowInsideKindOf  = INFANTRY
  End

  Behavior = ObjectCreationUpgrade ModuleTag_06
    UpgradeObject = OCL_AmericanBattleDrone
    TriggeredBy   = Upgrade_AmericaBattleDrone
    ConflictsWith = Upgrade_AmericaScoutDrone Upgrade_AmericaHellfireDrone
  End
  Behavior = ObjectCreationUpgrade ModuleTag_07
    UpgradeObject = OCL_AmericanScoutDrone
    TriggeredBy   = Upgrade_AmericaScoutDrone
    ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaHellfireDrone
  End
  Behavior = ObjectCreationUpgrade ModuleTag_08
    UpgradeObject = OCL_AmericanHellfireDrone
    TriggeredBy   = Upgrade_AmericaHellfireDrone
    ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaScoutDrone
  End

  Behavior = ProductionUpdate ModuleTag_09
    MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  End

  ;Behavior = WeaponSetUpgrade ModuleTag_10
    ;TriggeredBy = Upgrade_AmericaTOWMissile
  ;End
  Behavior = ExperienceScalarUpgrade ModuleTag_11
    TriggeredBy = Upgrade_AmericaAdvancedTraining
    AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  End

  Behavior = SlowDeathBehavior ModuleTag_12
    DeathTypes = ALL -CRUSHED -SPLATTED
    ProbabilityModifier = 25
    DestructionDelay = 1
    FX  = INITIAL  FX_HumveeExplosionOneInitial
    OCL = INITIAL  OCL_InitialHumveeDebris
    FX  = FINAL    FX_HumveeExplosionOneFinal
    OCL = FINAL    OCL_FinalHumveeDebris
  End

  Behavior = DestroyDie ModuleTag_13
    DeathTypes = NONE +CRUSHED +SPLATTED
  End

  Behavior = FXListDie ModuleTag_14
    DeathTypes = NONE +CRUSHED +SPLATTED
    DeathFX = FX_CarCrush
  End

  Behavior = CreateCrateDie ModuleTag_CratesChange
    CrateData = SalvageCrateData
    ;CrateData = EliteTankCrateData
    ;CrateData = HeroicTankCrateData
  End

  Behavior = CreateObjectDie ModuleTag_SoloChange
    DeathTypes = ALL -CRUSHED -SPLATTED
    CreationList = OCL_AmericanRangerDebris01
    ExemptStatus = HIJACKED
  End

  Behavior = TransitionDamageFX ModuleTag_16
    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
    ReallyDamagedParticleSystem2 = Bone:Smoke RandomBone:Yes PSys:ArmExplosionSmall01
    ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_HumveeDamageTransition
  End

  Behavior = FlammableUpdate ModuleTag_17
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 5       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  Geometry = BOX
  GeometryMajorRadius = 14.0
  GeometryMinorRadius = 7.0
  GeometryHeight = 11.5     
  GeometryIsSmall = Yes
  Scale = 0.91 
  Shadow = SHADOW_VOLUME   

End

;------------------------------------------------------------------------------
Object AmericaVehicleAmphibiousTransport

    ; *** ART Parameters ***
  SelectPortrait         = SAHovercraft_L
  ButtonImage            = SAHovercraft
  
  ;UpgradeCameo1 = NONE
  ;UpgradeCameo2 = NONE
  ;UpgradeCameo3 = NONE
  ;UpgradeCameo4 = NONE
  ;UpgradeCameo5 = NONE

  Draw              = W3DModelDraw ModuleTag_01
    ConditionState  = NONE
      Model         = AVAMPHIB
      Animation     = AVAMPHIB.AVAMPHIB ; fans off
      AnimationMode = MANUAL
      Flags         = START_FRAME_FIRST
    End

    ConditionState  = OVER_WATER
      Model         = AVAMPHIB
      ParticleSysBone = TreadFX01 AmphibWaveRest
      Animation     = AVAMPHIB.AVAMPHIB ; fans off
      AnimationMode = MANUAL
      Flags         = START_FRAME_FIRST
    End

    ConditionState  = MOVING
      Model         = AVAMPHIB
;      ParticleSysBone = Exhaust01 SteamVent ;Want turned off until better solution or final cut solution is reached
;      ParticleSysBone = Exhaust02 SteamVent
       ParticleSysBone = Mist01 AmphibDirt
;      ParticleSysBone = Mist01 AmphibDirtClods

;      ParticleSysBone = TreadFX01 RocketBuggyDust

      Animation     = AVAMPHIB.AVAMPHIB ; fans on
      AnimationMode = LOOP
      Flags         = START_FRAME_FIRST
    End
    ConditionState  = MOVING OVER_WATER
      Model         = AVAMPHIB
;      ParticleSysBone = Exhaust01 SteamVent
;      ParticleSysBone = Exhaust02 SteamVent

      ParticleSysBone = Mist01 AmphibMist
      ParticleSysBone = Mist02 AmphibMist
      ParticleSysBone = Mist03 AmphibMistSide
      ParticleSysBone = Mist04 AmphibMistSide
      ParticleSysBone = TreadFX01 AmphibWave
      ParticleSysBone = TreadFX02 AmphibWave
      Animation     = AVAMPHIB.AVAMPHIB ; fans on
      AnimationMode = LOOP
      Flags         = START_FRAME_FIRST
    End
  End

  ; The exit door
  Draw = W3DModelDraw ModuleTag_02
    DefaultConditionState
      Model         = AVAMPHIB_A
      Animation     = AVAMPHIB_A.AVAMPHIB_A
      AnimationMode = MANUAL
      Flags         = START_FRAME_FIRST
    End
    ConditionState  = DOOR_1_OPENING
      Model         = AVAMPHIB_A
      Animation     = AVAMPHIB_A.AVAMPHIB_A
      AnimationMode = ONCE
      Flags         = START_FRAME_FIRST
    End
    ConditionState  = DOOR_1_CLOSING
      Model         = AVAMPHIB_A1
      Animation     = AVAMPHIB_A1.AVAMPHIB_A1
      AnimationMode = ONCE
      Flags         = START_FRAME_FIRST
    End
  End

  ; ***DESIGN parameters ***
  DisplayName       = OBJECT:AmphibiousTransport
  Side              = America
  EditorSorting     = VEHICLE
  TransportSlotCount    = 10                 ;how many "slots" we take in a transport (0 == not transportable)

  ArmorSet
    Armor           = TruckArmor
    DamageFX        = DefaultDamageFX
  End

  WeaponSet
    Conditions      = None
    Weapon          = PRIMARY None
  End

  VisionRange       = 200
  CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet        = CivilianTransportCommandSet

  ; *** AUDIO Parameters ***
  SoundMoveLoop = AmphibiousTransportMoveLoop
  VoiceSelect = HumveeVoiceMove
  VoiceMove = HumveeVoiceMove
  VoiceGuard = HumveeVoiceMove
  ;VoiceAttack = HumveeVoiceAttack
  ;VoiceAttackAir = HumveeVoiceAttackTOW
  ;SoundMoveStart = HumveeMoveStart
  ;SoundMoveStartDamaged = HumveeMoveStart
  ;SoundAmbient           = IdleVehicleLoop
  ;SoundAmbientRubble     = NoSound
   ;SoundMoveLoop          = MovingVehicleLoop  ; only when not idle
   ;SoundAmbient           = IdleVehicleLoop
  SoundEnter = HumveeEnter
  SoundExit = HumveeExit

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    ;TurretMoveStart    = NoSound
    VoiceCreate         = HumveeVoiceCreate
    ;TurretMoveLoop      = TurretMoveLoop
    SoundEject          = PilotSoundEject
    VoiceEject          = PilotVoiceEject
    VoiceCrush          = HumveeVoiceCrush
  ; Required for the W3DTruckDraw module
    ;TruckLandingSound = RocketBuggyLand
    ;TruckPowerslideSound = RocketBuggyPowerslide
    VoiceUnload = HumveeVoiceUnload
    VoiceEnter = HumveeVoiceMove
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority     = UNIT  
  KindOf            = SELECTABLE VEHICLE TRANSPORT

  Body              = ActiveBody ModuleTag_03
    MaxHealth       = 220.0
    InitialHealth   = 220.0
  End

  Behavior              = TransportContain ModuleTag_04
    Slots               = 10
    AllowInsideKindOf   = INFANTRY VEHICLE
    DoorOpenTime        = 2000
    ScatterNearbyOnExit = No ; I have bones for exiting
  End 

  Behavior          = PhysicsBehavior ModuleTag_05
    Mass            = 30.0
  End

  Behavior = TransportAIUpdate ModuleTag_06
    ;<NO DATA>
  End

  Locomotor         = SET_NORMAL BasicAmphibiousLocomotor

  Behavior               = DestroyDie ModuleTag_07
    ;<NO DATA>
  End
  Behavior               = CreateObjectDie ModuleTag_08
    DeathTypes = ALL
    CreationList    = OCL_GenericCarExplode
  End
  Behavior               = FXListDie ModuleTag_09
    DeathTypes = ALL -FLOODED
    DeathFX         = FX_GenericCarExplode
  End

  Behavior = FlammableUpdate ModuleTag_21
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 5       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  Geometry            = BOX
  Scale = 0.88                            ;Scaling
  GeometryIsSmall     = No
  GeometryMajorRadius = 23.0
  GeometryMinorRadius = 17.0
  GeometryHeight      = 20.0
  Shadow              = SHADOW_VOLUME

End

;-------------------------------------------------------------------
Object AmericaConvoyTruck

  ; *** ART Parameters ***
  
  SelectPortrait         = SAST_L
  ButtonImage            = SAST
  
  ;UpgradeCameo1 = NONE
  ;UpgradeCameo2 = NONE
  ;UpgradeCameo3 = NONE
  ;UpgradeCameo4 = NONE
  ;UpgradeCameo5 = NONE

  Draw = W3DModelDraw ModuleTag_01
    ConditionState = NONE
      Model = CVSpplyTrk
    End
    
    ConditionState = REALLYDAMAGED
      Model = CVSpplyTrk_D
    End
    
    ConditionState = RUBBLE
      Model = CVSpplyTrk_D1
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:SupplyTruck
  Side                = America
  EditorSorting       = VEHICLE
  TransportSlotCount  = 4                 ;how many "slots" we take in a transport (0 == not transportable)
  BuildCost           = 900
  BuildTime           = 10.0      ;in seconds
  VisionRange         = 150
  ShroudClearingRange = 300
  Prerequisites
    Object = AmericaSupplyCenter
  End
  ArmorSet
    Conditions      = None
    Armor           = TruckArmor
    DamageFX        = TankDamageFX
  End
  CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet              = AmericaVehiclePTVTruckCommandSet
  ; *** AUDIO Parameters ***
  VoiceSelect     = ChinookVoiceSelect
  VoiceMove       = ChinookVoiceMove
  VoiceAttack     = ChinookVoiceAttack
  ;SoundAmbient    = ChinookAmbientLoop
  SoundAmbientRubble    = NoSound
  SoundMoveStart = HumveeMoveStart
  SoundMoveStartDamaged = HumveeMoveStart
  SoundEnter      = HumveeEnter
  SoundExit       = HumveeExit
  UnitSpecificSounds
    VoiceCreate         = ChinookVoiceCreate
    VoiceSupply         = ChinookVoiceSupply
    VoiceUnload         = ChinookVoiceUnload
    VoiceCombatDrop     = ChinookVoiceCombatDrop
    VoiceClearBuilding  = RangerVoiceClearBuilding ;Special combat drop that clears buildings!
    VoiceGarrison       = ChinookVoiceMove
  End

  ; *** ENGINEERING Parameters ***  
  KindOf          = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE HARVESTER SCORE TRANSPORT
  RadarPriority          = UNIT

  Body            = ActiveBody ModuleTag_02
    MaxHealth       = 100.0
    InitialHealth   = 100.0

    ; Subdual damage "Subdues" you (reaction defined by BodyModule) when it passes your max health.
    ; The cap limits how extra-subdued you can be, and the other numbers detemine how fast it drains away on its own.
    SubdualDamageCap = 600
    SubdualDamageHealRate = 500
    SubdualDamageHealAmount = 50
  End

  Behavior = SupplyTruckAIUpdate ModuleTag_03
    MaxBoxes = 4
    SupplyCenterActionDelay = 500     ; ms for whole thing (one transaction)
    SupplyWarehouseActionDelay = 1000 ; ms per box (many small transactions)
    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)
    SuppliesDepletedVoice = ChinookVoiceSuppliesDepleted
  End

  Locomotor = SET_NORMAL SupplyTruckLocomotor

  Behavior = DestroyDie ModuleTag_031
    DeathTypes = ALL -CRUSHED -SPLATTED
  End
  Behavior = CrushDie ModuleTag_04
    DeathTypes = NONE +CRUSHED +SPLATTED
    ;TotalCrushSound     = CarAlarm
    ;BackEndCrushSound   = CarAlarm
    ;FrontEndCrushSound  = CarAlarm
    TotalCrushSoundPercent    = 50   
    BackEndCrushSoundPercent  = 50
    FrontEndCrushSoundPercent = 50
  End
  Behavior = SlowDeathBehavior ModuleTag_11
    DeathTypes = NONE +CRUSHED +SPLATTED
    SinkDelay = 14000
    SinkRate = 2     ; in Dist/Sec
    DestructionDelay = 20000
  End

  Behavior = FXListDie ModuleTag_05
    DeathTypes = NONE +CRUSHED +SPLATTED
    DeathFX = FX_CarCrush
  End
  Behavior = CreateObjectDie ModuleTag_06
    DeathTypes = ALL -CRUSHED -SPLATTED
    CreationList = OCL_GenericCarExplode
  End
  Behavior = FXListDie ModuleTag_07
    DeathTypes = ALL -CRUSHED -SPLATTED -FLOODED
    DeathFX = FX_GenericCarExplode
  End
  Behavior = CreateObjectDie ModuleTag_08
    DeathTypes = NONE +SUICIDED
    CreationList = OCL_BurnedCarHull
  End

  ;Behavior = AIUpdateInterface ModuleTag_09
  ;End
  ;Locomotor = SET_NORMAL BasicCarLocomotor
  ;Locomotor = SET_WANDER WanderCarLocomotor
  ;Locomotor = SET_PANIC PanicCarLocomotor

  Behavior = PhysicsBehavior ModuleTag_10
    Mass = 30.0
  End

  Behavior = FlammableUpdate ModuleTag_21
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 5       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  Geometry        = BOX
  GeometryIsSmall = Yes
  GeometryMajorRadius = 18.0
  GeometryMinorRadius = 8.0
  GeometryHeight  = 10.0
  Scale = 0.95
  Shadow          = SHADOW_VOLUME

End

;-------------------------------------------------------------------
Object AmericaToxicSupplyTruck

  ; *** ART Parameters ***
  
  SelectPortrait         = SACivSplyTrk_L
  ButtonImage            = SACivSplyTrk
  
  ;UpgradeCameo1 = NONE
  ;UpgradeCameo2 = NONE
  ;UpgradeCameo3 = NONE
  ;UpgradeCameo4 = NONE
  ;UpgradeCameo5 = NONE

  Draw = W3DTruckDraw ModuleTag_01
    OkToChangeModelColor = Yes

    DefaultConditionState
      Model           = CVToxSpplyTk
      HideSubObject   = BOX04
    End

    ConditionState    = REALLYDAMAGED
      Model           = CVToxSpplyTk_D
    End

    ConditionState    = RUBBLE
      Model           = CVToxSpplyTk_D1
    End

    ConditionState    = CARRYING
      ShowSubObject   = BOX04
    End

    ConditionState    = REALLYDAMAGED CARRYING
      Model           = CVToxSpplyTk_D
      ShowSubObject   = BOX04
    End

    ConditionState    = RUBBLE CARRYING
      Model           = CVToxSpplyTk_D1
      ShowSubObject   = BOX04
    End

    TrackMarks = EXTireTrack.tga

    Dust = RocketBuggyDust
    DirtSpray = RocketBuggyDirtSpray
    PowerslideSpray = RocketBuggyDirtPowerSlide

    ; These parameters are only used if the model has a separate suspension, 
    ; and the locomotor has HasSuspension = Yes.
    LeftFrontTireBone = Tire01
    RightFrontTireBone = Tire02
    LeftRearTireBone = Tire03
    RightRearTireBone = Tire04
    TireRotationMultiplier = 0.2   ; this * speed = rotation.
    PowerslideRotationAddition = 1.25   ; This speed is added to the rotation speed when powersliding.

  End

  ; ***DESIGN parameters ***
  DisplayName   = OBJECT:SupplyTruck
  Side          = America
  EditorSorting = VEHICLE
  TransportSlotCount  = 4                 ;how many "slots" we take in a transport (0 == not transportable)
  BuildCost           = 600
  BuildTime           = 8.0      ;in seconds
  VisionRange         = 150
  ShroudClearingRange = 300
  Prerequisites
    Object = ToxinRepository
  End

  ArmorSet
    Conditions      = None
    Armor           = TruckArmor
    DamageFX        = TankDamageFX
  End

  CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet              = ChinaSupplyTruckCommandSet

  ; *** AUDIO Parameters ***
  VoiceSelect     = ChinookVoiceSelect
  VoiceMove       = ChinookVoiceMove
  VoiceAttack     = ChinookVoiceAttack
  ;SoundAmbient    = ChinookAmbientLoop
  SoundAmbientRubble    = NoSound
  SoundMoveStart = HumveeMoveStart
  SoundMoveStartDamaged = HumveeMoveStart
  SoundEnter      = HumveeEnter
  SoundExit       = HumveeExit
  UnitSpecificSounds
    VoiceCreate         = ChinookVoiceCreate
    VoiceSupply         = ChinookVoiceSupply
    VoiceUnload         = ChinookVoiceUnload
    VoiceCombatDrop     = ChinookVoiceCombatDrop
    VoiceClearBuilding  = RangerVoiceClearBuilding ;Special combat drop that clears buildings!
    VoiceGarrison       = ChinookVoiceMove
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  ;@todo lorenzen removed the CAN_ATTACK from the chinasupplytruck... ok?
  KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE HARVESTER SCORE

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 300.0
    InitialHealth   = 300.0
    ; Subdual damage "Subdues" you (reaction defined by BodyModule) when it passes your max health.
    ; The cap limits how extra-subdued you can be, and the other numbers detemine how fast it drains away on its own.
    SubdualDamageCap = 600
    SubdualDamageHealRate = 500
    SubdualDamageHealAmount = 50
  End

  Behavior = SupplyTruckAIUpdate ModuleTag_03
    MaxBoxes = 4
    SupplyCenterActionDelay = 400     ; ms for whole thing (one transaction)
    SupplyWarehouseActionDelay = 1000 ; ms per box (many small transactions)
    SupplyWarehouseScanDistance = 700 ; Max distance to look for a warehouse, or we go home.  (Direct dock command on warehouse overrides, and no max on Center Scan)
    SuppliesDepletedVoice = ChinookVoiceSuppliesDepleted
  End

  Locomotor = SET_NORMAL SupplyTruckLocomotor

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 5.0
  End

  ExperienceValue    = 50 50 50 50 ;Experience point value at each level

  Behavior = SlowDeathBehavior ModuleTag_05
    DeathTypes = ALL -CRUSHED -SPLATTED
    DestructionDelay = 200
    DestructionDelayVariance = 100
    FX  = FINAL    FX_SupplyTruckExplosionOneFinal
    OCL = FINAL    OCL_GLAToxicSupplyTruckDeathEffect
  End

  Behavior = FXListDie ModuleTag_06
    DeathTypes = NONE +CRUSHED +SPLATTED
    DeathFX = FX_CarCrush
  End

  Behavior = CreateObjectDie ModuleTag_07
    DeathTypes = NONE +CRUSHED +SPLATTED
    CreationList = OCL_GLAToxicSupplyTruck_CrushEffect
  End

  Behavior                       = TransitionDamageFX ModuleTag_08
    ReallyDamagedParticleSystem1 = Bone:SMOKE01 RandomBone:Yes PSys:SmallLightSmokeColumn
    ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
  End

  Behavior = FlammableUpdate ModuleTag_09
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 3       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  ; A crushing defeat
  Behavior = DestroyDie ModuleTag_10
    DeathTypes = NONE +CRUSHED +SPLATTED
  End

  Behavior        = CreateCrateDie ModuleTag_11
    CrateData     = SalvageCrateData
  End

  Geometry = BOX
  GeometryMajorRadius = 17.0
  GeometryMinorRadius = 7.0
  GeometryHeight = 14.0     
  GeometryIsSmall = No
  Scale = 0.95
  Shadow = SHADOW_VOLUME
  ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    

End

;------------------------------------------------------------------------------
Object AmericaVehiclePTBoat

  ; *** ART Parameters ***
  SelectPortrait         = SAPTBoat
  ButtonImage            = SAPTBoat
  
  UpgradeCameo1 =  Upgrade_AmericaAdvancedTraining
  ;UpgradeCameo2 = NONE
  ;UpgradeCameo3 = NONE
  ;UpgradeCameo4 = NONE
  ;UpgradeCameo5 = NONE

  Draw              = W3DModelDraw ModuleTag_01 ; Boat 
    OkToChangeModelColor = Yes
    ConditionState  = NONE
      Model         = AVPTBoat
    End

    ConditionState  = OVER_WATER
      Model         = AVPTBoat
      ParticleSysBone = Smoke01 FerrySmokeStop
    End

    ConditionState  = MOVING OVER_WATER
      Model         = AVPTBoat
      ParticleSysBone = Smoke01 FerrySmoke
      ParticleSysBone = TreadFX01 AmphibWave
    End
  End

  Draw = W3DModelDraw             ModuleTag_02 ; Gunner 
    OkToChangeModelColor = Yes
    AttachToBoneInAnotherModule = Dum_Turret

       DefaultConditionState
      Model = UITech_SKN
      Turret = Dum-TurManMVR
      TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
      HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
      IdleAnimation = UITech_SKL.UITech_STA 0 6
      IdleAnimation = UITech_SKL.UITech_IDA
      IdleAnimation = UITech_SKL.UITech_IDB
      AnimationMode = ONCE
      ShowSubObject = 20Cal
      WeaponMuzzleFlash = PRIMARY MuzzleFX01
      WeaponFireFXBone = PRIMARY Muzzle01
    End

    ConditionState = RUBBLE MOVING TURRET_ROTATE
      Animation = None
      HideSubObject = UITech-SKN
      ShowSubObject = 20Cal
      WeaponMuzzleFlash = PRIMARY MuzzleFX01
      WeaponFireFXBone = PRIMARY Muzzle01
    End

    ConditionState = MOVING
      Animation = UITech_SKL.UITech_MVB
      AnimationMode = LOOP
      ShowSubObject = 20Cal
      WeaponMuzzleFlash = PRIMARY MuzzleFX01
      WeaponFireFXBone = PRIMARY Muzzle01
    End

    ConditionState = TURRET_ROTATE
      Animation = UITech_SKL.UITech_TNA
      AnimationMode = LOOP
      ShowSubObject = 20Cal
      WeaponMuzzleFlash = PRIMARY MuzzleFX01
      WeaponFireFXBone = PRIMARY Muzzle01
    End
    AliasConditionState = TURRET_ROTATE MOVING
    AliasConditionState = TURRET_ROTATE FIRING_A
    AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
    AliasConditionState = TURRET_ROTATE RELOADING_A
    AliasConditionState = TURRET_ROTATE MOVING FIRING_A
    AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
    AliasConditionState = TURRET_ROTATE MOVING RELOADING_A

    ConditionState = FIRING_A 
      Animation = UITech_SKL.UITech_ATA
      AnimationMode = LOOP
      ShowSubObject = 20Cal
      WeaponMuzzleFlash = PRIMARY MuzzleFX01
      WeaponFireFXBone = PRIMARY Muzzle01
    End

    ; AliasConditionState is a new keyword that says,
    ; "give me another ConditionState exactly like the previous
    ; one, except with different conditions". Useful when you
    ; have several states that are the same with only different condition bits.
    AliasConditionState = BETWEEN_FIRING_SHOTS_A
    AliasConditionState = RELOADING_A

    ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
    AliasConditionState = MOVING FIRING_A
    AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
    AliasConditionState = MOVING RELOADING_A
  End  
  

  ; ***DESIGN parameters ***
  DisplayName        = OBJECT:PTBoat
  Side               = America
  EditorSorting      = VEHICLE
  TransportSlotCount = 10                 ;how many "slots" we take in a transport (0 == not transportable)
  CommandSet         = GenericCommandSet
  
  ArmorSet
    Armor           = TruckArmor
    DamageFX        = DefaultDamageFX
  End

  WeaponSet
    Conditions      = None
    Weapon          = PRIMARY PTBoatGun
    Weapon          = SECONDARY BradleyTOWMissileWeapon
  End

  VisionRange         = 250
  ShroudClearingRange = 300
  CrusherLevel        = 0  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel      = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles

  ; *** AUDIO Parameters ***
  SoundMoveLoop = AmphibiousTransportMoveLoop
  VoiceSelect = CrusaderTankVoiceMove
  VoiceMove = CrusaderTankVoiceMove
  VoiceGuard = CrusaderTankVoiceMove
  VoiceAttack = CrusaderTankVoiceAttack
  SoundEnter = HumveeEnter
  SoundExit = HumveeExit

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    ;TurretMoveStart    = NoSound
    VoiceCreate         = CrusaderTankVoiceCreate
    TurretMoveLoop      = TurretMoveLoop
    VoiceCrush          = CrusaderTankVoiceCrush
  ; Required for the W3DTruckDraw module
    ;TruckLandingSound = RocketBuggyLand
    ;TruckPowerslideSound = RocketBuggyPowerslide
  End

  ; *** ENGINEERING Parameters ***  
  KindOf            = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE BOAT
  RadarPriority          = UNIT

  Body              = ActiveBody ModuleTag_03
    MaxHealth       = 800.0
    InitialHealth   = 800.0
  End
  
  Behavior               = DestroyDie ModuleTag_04
                    ;nothing
  End
  Behavior               = CreateObjectDie ModuleTag_05
    DeathTypes = ALL
    CreationList    = OCL_GenericCarExplode
  End
  Behavior               = FXListDie ModuleTag_06
    DeathTypes = ALL -FLOODED
    DeathFX         = FX_GenericCarExplode
  End

  Behavior = AIUpdateInterface ModuleTag_07
    Turret
      TurretTurnRate = 180       ; turn rate, in degrees per sec
      NaturalTurretAngle = 0
      MinIdleScanAngle = 30      ; in degrees off the natural turret angle
      MaxIdleScanAngle = 60      ; in degrees off the natural turret angle
      MinIdleScanInterval = 5000 ; in milliseconds
      MaxIdleScanInterval = 10000 ; in milliseconds
      ControlledWeaponSlots = PRIMARY
    End
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Locomotor       = SET_NORMAL BasicBoatLocomotor

  Behavior          = PhysicsBehavior ModuleTag_08
    Mass            = 30.0
  End

  Behavior = FlammableUpdate ModuleTag_21
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 5       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  Behavior = ExperienceScalarUpgrade ModuleTag_22
    TriggeredBy = Upgrade_AmericaAdvancedTraining
    AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  End

  Behavior = FloatUpdate UpdateTag_23
    Enabled = No ; 'no' because we dont want to be lifted by this update, just swayed around like a buoy
  End

  Geometry            = BOX
  Scale = 1.0                            ;Scaling
  GeometryIsSmall     = No
  GeometryMajorRadius = 48.0
  GeometryMinorRadius = 12.0
  GeometryHeight      = 14.0
  Shadow              = SHADOW_VOLUME

End

;------------------------------------------------------------------------------
Object AmericaVehiclePredatorDrone

  ; *** ART Parameters ***
  SelectPortrait         = SAScout_L
  ButtonImage            = SAScout

  UpgradeCameo1 = Upgrade_AmericaLaserMissiles
  UpgradeCameo2 = Upgrade_AmericaBunkerBusters
  ;UpgradeCameo3 = NONE
  ;UpgradeCameo4 = NONE
  ;UpgradeCameo5 = NONE

  Draw = W3DModelDraw ModuleTag_01
    OkToChangeModelColor = Yes

    ConditionState = NONE
      Model = AVScoutDr
      Animation = AVScoutDr.AVScoutDr
      AnimationMode = LOOP
    End

    ConditionState = REALLYDAMAGED
      Model = AVScoutDr_d
      Animation = AVScoutDr_d.AVScoutDr_d
      AnimationMode = LOOP
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:PredatorDrone
  Side = America
  EditorSorting   = VEHICLE
  TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  ArmorSet
    Conditions      = None
    Armor           = AirplaneArmor
    DamageFX        = SmallTankDamageFX
  End
  BuildCost       = 600
  BuildTime       = 10.0          ;in seconds 
  VisionRange     = 250
  ShroudClearingRange = 0; Dynamic range below
  ExperienceValue = 50 50 100 150   ;Experience point value at each level
  ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
  IsTrainable = No             ;Can gain experience
  CrusherLevel           = 0  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet    = GenericCommandSet
  
  ; *** AUDIO Parameters ***
  VoiceSelect = SentryDroneVoiceSelect
  VoiceMove = SentryDroneVoiceMove
  VoiceAttack = SentryDroneVoiceMove
  VoiceGuard = SentryDroneVoiceMove
  SoundMoveStart = SpyDroneCreate

  WeaponSet
    Conditions = NONE 
    Weapon = PRIMARY PredatorMissileWeapon
  End

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    TurretMoveStart = NoSound
    TurretMoveLoop = TurretMoveLoop
  End


  ; *** ENGINEERING Parameters ***
  RadarPriority          = UNIT
  KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  
  Body = ActiveBody ModuleTag_02
    MaxHealth       = 200.0
    InitialHealth   = 200.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = No
  End

  Locomotor = SET_NORMAL PredatorDroneLocomotor
  Locomotor = SET_TAXIING SpyDroneLocomtor

  ;Behavior = JetAIUpdate ModuleTag_04
    ;OutOfAmmoDamagePerSecond  = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
                                    ; note that it's expressed as a percent of max health, not an absolute
    ;TakeoffDistForMaxLift     = 0%   ; larger numbers give more lift sooner when taking off
    ;TakeoffPause              = 500
    ;MinHeight                 = 5
    ;ParkingOffset             = 3             ; scooch it a little forward so the tail doesn't hit the doors
    ;ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
  ;End

  Behavior = StealthDetectorUpdate ModuleTag_05
    DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
    ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
    CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
    CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  End
  Behavior = PhysicsBehavior ModuleTag_06
    Mass = 50.0
  End

  Behavior = DestroyDie ModuleTag_07
    DeathTypes = ALL
  End
  Behavior                 = CreateObjectDie ModuleTag_08
    DeathTypes = ALL
    CreationList      = OCL_AmericaScoutDroneExplode
  End
  Behavior = StealthUpdate ModuleTag_09
    StealthDelay                          = 500 ; msec
    StealthForbiddenConditions            = FIRING_PRIMARY
    ; not currently used... but maybe someday? (srj)
    ;RevealDistanceFromTarget             = 0.0f
    FriendlyOpacityMin                    = 50.0%
    FriendlyOpacityMax                    = 100.0%
    InnateStealth                         = Yes
    OrderIdleEnemiesToAttackMeUponReveal  = Yes
  End

  Behavior = MaxHealthUpgrade ModuleTag_10
    TriggeredBy   = Upgrade_AmericaDroneArmor
    AddMaxHealth  = 50.0
    ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  End

  Behavior = FlammableUpdate ModuleTag_21
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 3       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  Geometry = CYLINDER
  GeometryMajorRadius = 5.0
  GeometryMinorRadius = 6.0
  GeometryHeight = 3.0
  GeometryIsSmall = Yes
  Scale = 1.30                            ;Scaling
  Shadow = SHADOW_VOLUME
  ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length

End






