home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2004 March / GSSH0304CD1.iso / CCGeneraele / OperationThunderstorm / thunderstorm1-0.big / Data_ini_Object_FactionUnit.ini < prev    next >
Text File  |  2004-01-28  |  1MB  |  40,235 lines

  1. ; FILE: FactionUnit.ini ///////////////////////////////////////////////////////
  2. ; This file contains only objects that are units tied to specific factions.
  3. ; You will find tanks, infantry, transports ... all our "units" here.  Also
  4. ; in this file are related objects such as debris from the units or 
  5. ; tank shells to fire and deal damage to the enemy.
  6. ;//////////////////////////////////////////////////////////////////////////////
  7.  
  8. ;------------------------------------------------------------------------------
  9. Object AmericaParachute
  10.  
  11.   ; *** ART Parameters ***
  12.   Draw = W3DModelDraw ModuleTag_01
  13.     OkToChangeModelColor = Yes
  14.     DefaultConditionState
  15.       Model = PMparacht_SKNc
  16.       Animation = PMparacht_SKL.PMparacht_FAL
  17.       AnimationMode = LOOP
  18.     End
  19.     ConditionState = PARACHUTING
  20.       Model = PMparacht_SKNc
  21.       Animation = PMparacht_SKL.PMparacht_OPN
  22.       AnimationMode = ONCE
  23.     End
  24.     ConditionState = RUBBLE
  25.       Model = PMparacht_SKNc
  26.       Animation = PMparacht_SKL.PMparacht_DRP
  27.       AnimationMode = ONCE
  28.     End
  29.     ; this is a weird state to resolve an ambiguity: sometimes
  30.     ; we can have a "rubble" parachute momentarily, that doesn't
  31.     ; know that it has finished parachuting yet...
  32.     ConditionState = RUBBLE PARACHUTING
  33.       Model = PMparacht_SKNc
  34.       Animation = PMparacht_SKL.PMparacht_DRP
  35.       AnimationMode = ONCE
  36.     End
  37.   End 
  38.  
  39.   ; ***DESIGN parameters ***
  40.   Side                = America
  41.   EditorSorting       = SYSTEM
  42.   TransportSlotCount  = 0                 
  43.   VisionRange         = 300.0 
  44.   ShroudClearingRange = 300
  45.   IsTrainable         = No  ;Can gain experience
  46.   ; in theory, it would be nice to allow chutes to be attackable; however, bugs in the code
  47.   ; can cause the rider to be left in a bad state (eg, no-collision bit set) if the chute dies
  48.   ; prematurely. so disable this for now, and give it a ton of health to prevent splash damage
  49.   ; from killing it. (srj)
  50.   KindOf              = PRELOAD PARACHUTE UNATTACKABLE
  51.  
  52.   ; *** AUDIO Parameters ***
  53.  
  54.   ; *** ENGINEERING Parameters ***
  55.   Behavior = AIUpdateInterface ModuleTag_02
  56.     ; nothing
  57.   End
  58.   Locomotor = SET_NORMAL ParachuteLocomotor
  59.   Locomotor = SET_FREEFALL FreeFallLocomotor
  60.  
  61.   Body = ActiveBody ModuleTag_03
  62.     MaxHealth       = 100000.0
  63.     InitialHealth   = 100000.0
  64.   End
  65.  
  66.   Behavior = PhysicsBehavior ModuleTag_04
  67.     Mass = 5.0
  68.   End
  69.  
  70.   Behavior = ParachuteContain ModuleTag_05
  71.     PitchRateMax = 60           ; deg/sec
  72.     RollRateMax = 60            ; deg/sec
  73.     LowAltitudeDamping  = 0.2   ; how much to damp swaying when we get "close" to the ground
  74.     ParachuteOpenDist   = 25.0  ; how far we have to fall 'till we open our 'chute
  75.     AllowInsideKindOf   = INFANTRY PARACHUTABLE
  76.     ParachuteOpenSound  = ParachuteOpen
  77.   End
  78.  
  79.   Behavior = SlowDeathBehavior ModuleTag_06
  80.     SinkDelay = 1000
  81.     SinkRate = 1     ; in Dist/Sec
  82.     DestructionDelay = 4000
  83.   End
  84.  
  85.   RadarPriority = NOT_ON_RADAR
  86.   Geometry = CYLINDER
  87.   GeometryMajorRadius = 15.0
  88.   GeometryHeight = 10.0    
  89.   GeometryIsSmall = Yes
  90.   Shadow = SHADOW_VOLUME
  91.  
  92. End
  93.  
  94. ;------------------------------------------------------------------------------
  95. Object AmericaCrateParachute
  96.  
  97.   ; *** ART Parameters ***
  98.   Draw = W3DModelDraw ModuleTag_01
  99.     OkToChangeModelColor = Yes
  100.     DefaultConditionState
  101.       Model = PMparacht_SKNc
  102.       Animation = PMparacht_SKL.PMparacht_FAL
  103.       AnimationMode = LOOP
  104.     End
  105.     ConditionState = PARACHUTING
  106.       Model = PMparacht_SKNc
  107.       Animation = PMparacht_SKL.PMparacht_OPN
  108.       AnimationMode = ONCE
  109.     End
  110.     ConditionState = RUBBLE
  111.       Model = PMparacht_SKNc
  112.       Animation = PMparacht_SKL.PMparacht_DRP
  113.       AnimationMode = ONCE
  114.     End
  115.     ; this is a weird state to resolve an ambiguity: sometimes
  116.     ; we can have a "rubble" parachute momentarily, that doesn't
  117.     ; know that it has finished parachuting yet...
  118.     ConditionState = RUBBLE PARACHUTING
  119.       Model = PMparacht_SKNc
  120.       Animation = PMparacht_SKL.PMparacht_DRP
  121.       AnimationMode = ONCE
  122.     End
  123.   End
  124.  
  125.   ; ***DESIGN parameters ***
  126.   Side                = America
  127.   EditorSorting       = SYSTEM
  128.   TransportSlotCount  = 0                 
  129.   VisionRange         = 300.0 
  130.   ShroudClearingRange = 300
  131.   IsTrainable         = No  ;Can gain experience
  132.   ; in theory, it would be nice to allow chutes to be attackable; however, bugs in the code
  133.   ; can cause the rider to be left in a bad state (eg, no-collision bit set) if the chute dies
  134.   ; prematurely. so disable this for now, and give it a ton of health to prevent splash damage
  135.   ; from killing it. (srj)
  136.   KindOf              = PRELOAD PARACHUTE UNATTACKABLE
  137.  
  138.   ; *** AUDIO Parameters ***
  139.  
  140.   ; *** ENGINEERING Parameters ***
  141.   Behavior = AIUpdateInterface ModuleTag_02
  142.     ; nothing
  143.   End
  144.   Locomotor = SET_NORMAL CrateParachuteLocomotor
  145.   Locomotor = SET_FREEFALL CrateFreeFallLocomotor
  146.  
  147.   Body = ActiveBody ModuleTag_03
  148.     MaxHealth       = 100000.0
  149.     InitialHealth   = 100000.0
  150.   End
  151.  
  152.   Behavior = PhysicsBehavior ModuleTag_04
  153.     Mass = 5.0
  154.   End
  155.  
  156.   Behavior = ParachuteContain ModuleTag_05
  157.     PitchRateMax        = 60    ; deg/sec
  158.     RollRateMax         = 60    ; deg/sec
  159.     LowAltitudeDamping  = 0.2   ; how much to damp swaying when we get "close" to the ground
  160.     ParachuteOpenDist   = 12.5  ; how far we have to fall 'till we open our 'chute
  161.     AllowInsideKindOf   = PARACHUTABLE
  162.     ParachuteOpenSound  = ParachuteOpen
  163.   End
  164.  
  165.   Behavior = SlowDeathBehavior ModuleTag_06
  166.     SinkDelay = 1000
  167.     SinkRate = 1     ; in Dist/Sec
  168.     DestructionDelay = 4000
  169.   End
  170.  
  171.   RadarPriority = NOT_ON_RADAR
  172.   Geometry = CYLINDER
  173.   GeometryMajorRadius = 15.0
  174.   GeometryHeight = 10.0    
  175.   GeometryIsSmall = Yes
  176.   Shadow = SHADOW_VOLUME
  177.  
  178. End
  179.  
  180. ;------------------------------------------------------------------------------
  181. Object AmericaInfantryColonelBurton
  182.  
  183.   ; *** ART Parameters ***
  184.   SelectPortrait         = SABurton_L
  185.   ButtonImage            = SABurton
  186.   UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
  187.  
  188.  
  189.   Draw = W3DModelDraw ModuleTag_01
  190.   OkToChangeModelColor = Yes
  191.  
  192.     ; idle
  193.     DefaultConditionState
  194.       Model               = AIHERO_SKN
  195.       IdleAnimation       = AIHERO_SKL.AIHERO_STA 0 25
  196.       IdleAnimation       = AIHERO_SKL.AIHERO_IDA
  197.       IdleAnimation       = AIHERO_SKL.AIHERO_IDB
  198.       AnimationMode       = ONCE
  199.       TransitionKey       = TRANS_Stand
  200.       WeaponFireFXBone    = PRIMARY Muzzle
  201.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  202.       WeaponMuzzleFlash   = SECONDARY NONE
  203.       HideSubObject     = MUZZLEFX01
  204.     End
  205.  
  206.     
  207.     ; injured idle
  208.     ConditionState        = REALLYDAMAGED
  209.       IdleAnimation       = AIHERO_SKL.AIHERO_ISTA 0 30
  210.       IdleAnimation       = AIHERO_SKL.AIHERO_IIDA
  211.       IdleAnimation       = AIHERO_SKL.AIHERO_IIDB
  212.       AnimationMode       = ONCE
  213.       TransitionKey       = TRANS_StandInjured
  214.     End
  215.  
  216.  
  217.     TransitionState     = TRANS_Stand TRANS_StandInjured
  218.       Animation         = AIHERO_SKL.AIHERO_ISTAHIT
  219.       AnimationMode     = ONCE
  220.     End
  221.     
  222.     ; moving
  223.     ConditionState        = MOVING
  224.       Animation           = AIHERO_SKL.AIHERO_RNA 26
  225.       AnimationMode       = LOOP
  226.       Flags               = RANDOMSTART
  227.       TransitionKey       = TRANS_Walking
  228.       ParticleSysBone     = None InfantryDustTrails
  229.       HideSubObject     = MUZZLEFX01
  230.     End
  231.     AliasConditionState = MOVING FIRING_A
  232.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  233.     AliasConditionState = MOVING RELOADING_A
  234.     AliasConditionState = MOVING FIRING_B
  235.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
  236.     AliasConditionState = MOVING RELOADING_B
  237.  
  238.     ; injured moving
  239.     ConditionState     = MOVING REALLYDAMAGED
  240.       Animation        = AIHERO_SKL.AIHERO_IRNA 26
  241.       AnimationMode    = LOOP
  242.       Flags            = RANDOMSTART
  243.       TransitionKey    = TRANS_WalkingInjured
  244.       ParticleSysBone  = None InfantryDustTrails
  245.       HideSubObject     = MUZZLEFX01
  246.     End
  247.     AliasConditionState = MOVING FIRING_A REALLYDAMAGED
  248.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  249.     AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
  250.     AliasConditionState = MOVING FIRING_B REALLYDAMAGED
  251.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  252.     AliasConditionState = MOVING RELOADING_B REALLYDAMAGED
  253.  
  254.     ; Firing animation
  255.     ConditionState      = FIRING_A
  256.       Animation         = AIHERO_SKL.AIHERO_ATA
  257.       AnimationMode     = ONCE
  258.       AnimationSpeedFactorRange = 1.5 1.5
  259.       TransitionKey     = TRANS_FiringA
  260.     End
  261.  
  262.     ConditionState      = BETWEEN_FIRING_SHOTS_A
  263.       Animation         = AIHERO_SKL.AIHERO_ATA
  264.       AnimationMode     = MANUAL
  265.       Flags             = START_FRAME_LAST
  266.       WaitForStateToFinishIfPossible = TRANS_FiringA
  267.     End
  268.     AliasConditionState = RELOADING_A
  269.  
  270.     ; Injured Firing animation
  271.     ConditionState      = FIRING_A REALLYDAMAGED
  272.       Animation         = AIHERO_SKL.AIHERO_IATA
  273.       AnimationMode     = ONCE
  274.       AnimationSpeedFactorRange = 1.5 1.5
  275.       TransitionKey     = TRANS_FiringAInjured
  276.     End
  277.  
  278.     ConditionState      = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  279.       Animation         = AIHERO_SKL.AIHERO_IATA
  280.       AnimationMode     = MANUAL
  281.       Flags             = START_FRAME_LAST
  282.       WaitForStateToFinishIfPossible = TRANS_FiringAInjured
  283.     End
  284.     AliasConditionState = RELOADING_A REALLYDAMAGED
  285.  
  286.     TransitionState     = TRANS_FiringA TRANS_FiringAInjured
  287.       Animation         = AIHERO_SKL.AIHERO_IATAHIT
  288.       AnimationMode     = ONCE
  289.     End
  290.  
  291.     ; Placing charge animation
  292.     ConditionState      = UNPACKING
  293.       Animation         = AIHERO_SKL.AIHERO_ATB1
  294.       AnimationMode     = ONCE
  295.     End
  296.     AliasConditionState = MOVING UNPACKING
  297.  
  298.     ; Injured Placing charge animation
  299.     ConditionState      = UNPACKING REALLYDAMAGED
  300.       Animation         = AIHERO_SKL.AIHERO_IATB1
  301.       AnimationMode     = ONCE
  302.     End
  303.     AliasConditionState = MOVING UNPACKING REALLYDAMAGED
  304.  
  305.     ; Stab animations
  306.     ConditionState      = PREATTACK_B 
  307.       Animation         = AIHERO_SKL.AIHERO_ATC
  308.       AnimationMode     = ONCE
  309.       TransitionKey     = TRANS_Stabbing
  310.       HideSubObject     = MUZZLEFX01
  311.     End
  312.     AliasConditionState = PREATTACK_B MOVING
  313.     AliasConditionState = PREATTACK_B FIRING_B
  314.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
  315.  
  316.     ConditionState      = FIRING_B
  317.       Animation         = AIHERO_SKL.AIHERO_ATC
  318.       AnimationMode     = MANUAL
  319.       Flags             = START_FRAME_LAST
  320.       TransitionKey     = TRANS_Stabbing
  321.       HideSubObject     = MUZZLEFX01
  322.     End
  323.     AliasConditionState = BETWEEN_FIRING_SHOTS_B
  324.     AliasConditionState = RELOADING_B
  325.  
  326.     TransitionState     = TRANS_Stabbing TRANS_Stand
  327.       Animation         = AIHERO_SKL.AIHERO_ATC2
  328.       AnimationMode     = ONCE
  329.     End
  330.  
  331.     ; Injured Stab animations
  332.     ConditionState      = PREATTACK_B REALLYDAMAGED 
  333.       Animation         = AIHERO_SKL.AIHERO_IATC1
  334.       AnimationMode     = ONCE
  335.       TransitionKey     = TRANS_StabbingInjured
  336.       HideSubObject     = MUZZLEFX01
  337.     End
  338.     AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
  339.     AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
  340.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  341.  
  342.     ConditionState      = FIRING_B REALLYDAMAGED
  343.       Animation         = AIHERO_SKL.AIHERO_IATC2
  344.       AnimationMode     = MANUAL
  345.       Flags             = START_FRAME_LAST
  346.       TransitionKey     = TRANS_StabbingInjured
  347.       HideSubObject     = MUZZLEFX01
  348.     End
  349.     AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  350.     AliasConditionState = RELOADING_B REALLYDAMAGED
  351.  
  352.     TransitionState     = TRANS_StabbingInjured TRANS_StandInjured
  353.       Animation         = AIHERO_SKL.AIHERO_IATC2
  354.       AnimationMode     = ONCE
  355.     End
  356.  
  357.     ; cheering
  358.     ConditionState      = SPECIAL_CHEERING
  359.       Animation         = AIHERO_SKL.AIHERO_CHA
  360.       AnimationMode     = ONCE
  361.     End
  362.     
  363.     ; injured cheering
  364.     ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
  365.       Animation         = AIHERO_SKL.AIHERO_ICHA
  366.       AnimationMode     = ONCE
  367.     End
  368.     
  369.     ; climbing
  370.     ConditionState      = CLIMBING
  371.       Animation         = AIHERO_SKL.AIHERO_CLMID
  372.       AnimationMode     = LOOP
  373.       TransitionKey     = TRANS_Climbing
  374.     End
  375.     AliasConditionState = RAPPELLING
  376.     AliasConditionState = CLIMBING REALLYDAMAGED
  377.     AliasConditionState = RAPPELLING REALLYDAMAGED
  378.  
  379.     ConditionState      = CLIMBING MOVING
  380.       Animation         = AIHERO_SKL.AIHERO_CLMUP
  381.       AnimationMode     = LOOP
  382.       TransitionKey     = TRANS_Climbing
  383.     End
  384.     AliasConditionState = CLIMBING MOVING REALLYDAMAGED
  385.  
  386.     ConditionState      = RAPPELLING MOVING
  387.       Animation         = AIHERO_SKL.AIHERO_CLMUP
  388.       AnimationMode     = LOOP_BACKWARDS
  389.       TransitionKey     = TRANS_Climbing
  390.     End
  391.     AliasConditionState = RAPPELLING MOVING REALLYDAMAGED
  392.  
  393. ; these transitions don't really work well with our code. leave 'em out.
  394. ;    TransitionState     = TRANS_Climbing TRANS_Stand
  395. ;      Animation         = AIHERO_SKL.AIHERO_CLMST
  396. ;      AnimationMode     = ONCE
  397. ;    End
  398. ;
  399. ;    TransitionState     = TRANS_Stand TRANS_Climbing
  400. ;      Animation         = AIHERO_SKL.AIHERO_CLMST
  401. ;      AnimationMode     = ONCE_BACKWARDS
  402. ;    End
  403.  
  404.     ; dying anims
  405.     ConditionState      = DYING
  406.       Animation         = AIHERO_SKL.AIHERO_DTA
  407.       Animation         = AIHERO_SKL.AIHERO_DTB
  408.       Animation         = AIHero_SKL.AIHero_IDTA
  409.       Animation         = AIHero_SKL.AIHero_IDTB
  410.       AnimationMode     = ONCE
  411.       TransitionKey     = TRANS_Dying
  412.     End
  413.     AliasConditionState = RAPPELLING DYING
  414.     AliasConditionState = CLIMBING DYING
  415.  
  416.     TransitionState     = TRANS_Dying TRANS_Flailing
  417.       Animation         = AIHERO_SKL.AIHERO_ADTG21
  418.       AnimationMode     = ONCE
  419.     End
  420.  
  421.     ConditionState      = DYING EXPLODED_FLAILING
  422.       Animation         = AIHERO_SKL.AIHERO_ADTG22
  423.       AnimationMode     = LOOP
  424.       TransitionKey     = TRANS_Flailing
  425.     End
  426.  
  427.     ConditionState      = DYING EXPLODED_BOUNCING
  428.       Animation         = AIHERO_SKL.AIHERO_ADTG23
  429.       AnimationMode     = ONCE
  430.       TransitionKey     = None
  431.     End
  432.  
  433.     ; misc anims
  434.     ConditionState      = FREEFALL
  435.       Animation         = AIHERO_SKL.AIHERO_PFL
  436.       AnimationMode     = LOOP
  437.       TransitionKey     = TRANS_Falling
  438.     End
  439.     AliasConditionState = FREEFALL REALLYDAMAGED
  440.     AliasConditionState = FREEFALL DYING
  441.  
  442.     ConditionState      = PARACHUTING
  443.       Animation         = AIHERO_SKL.AIHERO_PHG
  444.       AnimationMode     = LOOP
  445.       TransitionKey     = TRANS_Chute
  446.     End
  447.     AliasConditionState = PARACHUTING REALLYDAMAGED
  448.     AliasConditionState = PARACHUTING DYING
  449.  
  450.     TransitionState     = TRANS_Falling TRANS_Chute
  451.       Animation         = AIHERO_SKL.AIHERO_POP
  452.       AnimationMode     = ONCE
  453.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  454.     End
  455.  
  456.     TransitionState     = TRANS_Chute TRANS_Stand
  457.       Animation         = AIHERO_SKL.AIHERO_PTD
  458.       AnimationMode     = ONCE
  459.     End
  460.  
  461.     TransitionState     = TRANS_Chute TRANS_StandInjured
  462.       Animation         = AIHERO_SKL.AIHERO_PTD
  463.       AnimationMode     = ONCE
  464.     End
  465.  
  466.   End
  467.  
  468.   ; ***DESIGN parameters ***
  469.   DisplayName         = OBJECT:ColonelBurton
  470.   Side                = America
  471.   EditorSorting       = INFANTRY
  472.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  473.   WeaponSet
  474.     Conditions          = None 
  475.     Weapon              = PRIMARY     ColonelBurtonSniperRifleWeapon
  476.     Weapon              = SECONDARY   ColonelBurtonKnifeWeapon
  477.     AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  478.     AutoChooseSources   = SECONDARY   NONE
  479.   End
  480.   ArmorSet
  481.     Conditions      = None
  482.     Armor           = HumanArmor
  483.     DamageFX        = InfantryDamageFX
  484.   End
  485.   VisionRange         = 150
  486.   ShroudClearingRange = 500
  487.   Prerequisites
  488.     Object = AmericaBarracks
  489.     Object = AmericaStrategyCenter
  490.   End
  491.   BuildCost = 1500
  492.   BuildTime = 20.0          ;in seconds  
  493.  
  494.   ExperienceValue     = 50 100 100 150  ; Experience point value at each level
  495.   ExperienceRequired  = 0 200 300 600   ; Experience points needed to gain each level
  496.   IsTrainable         = Yes             ; Can gain experience
  497.   CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  498.   CommandSet          = AmericaInfantryColonelBurtonCommandSet
  499.  
  500.   MaxSimultaneousOfType = 1
  501.  
  502.   ; *** AUDIO Parameters ***
  503.   VoiceSelect = ColonelBurtonVoiceSelect
  504.   VoiceMove = ColonelBurtonVoiceMove
  505.   VoiceAttack = ColonelBurtonVoiceAttack
  506.   VoiceFear = ColonelBurtonVoiceFear
  507.   VoiceGuard = ColonelBurtonVoiceMove
  508.   SoundDie = ColonelBurtonVoiceDie
  509.   SoundDieFire = DieByFireUSA
  510.   SoundDieToxin = DieByToxinUSA
  511.   SoundStealthOn = StealthOn
  512.   SoundStealthOff = StealthOff
  513.   
  514.   UnitSpecificSounds
  515.     VoiceMelee = ColonelBurtonVoiceAttackKnife
  516.     VoiceCreate           = ColonelBurtonVoiceCreate
  517.     VoiceGarrison         = ColonelBurtonVoiceGarrison
  518.     VoiceEnter            = ColonelBurtonVoiceMove
  519.     VoiceEnterHostile     = ColonelBurtonVoiceMove
  520.     VoiceGetHealed        = ColonelBurtonVoiceMove
  521.   End
  522.  
  523.   ; *** ENGINEERING Parameters ***
  524.   RadarPriority = UNIT
  525.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE HERO
  526.  
  527.   Body = ActiveBody ModuleTag_02
  528.     MaxHealth       = 200.0
  529.     InitialHealth   = 200.0
  530.   End
  531.  
  532.   Behavior = AIUpdateInterface ModuleTag_03
  533.     AutoAcquireEnemiesWhenIdle = Yes
  534.   End
  535.  
  536.   Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
  537.   End
  538.  
  539.   Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
  540.     ScanRate = 1000 ; once a second.
  541.     ScanRange = 300 ;
  542.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  543.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  544.   End
  545.  
  546.   Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor ColonelBurtonCliffLocomotor
  547.  
  548.   Behavior = PhysicsBehavior ModuleTag_06
  549.     Mass = 5.0
  550.   End
  551.  
  552.   Behavior = StealthUpdate ModuleTag_07
  553.     StealthDelay                = 2000 ; msec
  554.     StealthForbiddenConditions  = FIRING_PRIMARY
  555.     HintDetectableConditions    = IS_FIRING_WEAPON 
  556.     FriendlyOpacityMin          = 50.0%
  557.     FriendlyOpacityMax          = 100.0%
  558.     InnateStealth               = Yes
  559.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  560.   End
  561.  
  562.   Behavior = SpecialAbility ModuleTag_08
  563.     SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
  564.     UpdateModuleStartsAttack = Yes
  565.     InitiateSound             = ColonelBurtonVoicePlantRemoteCharge
  566.   End
  567.   Behavior = SpecialAbilityUpdate ModuleTag_09
  568.     SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
  569.     StartAbilityRange = 0.0
  570.     PreparationTime = 0
  571.     SpecialObject = RemoteC4Charge
  572.     MaxSpecialObjects = 8
  573.     SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
  574.     AlwaysValidateSpecialObjects = Yes      ;Coupled with the above setting, this one is necessary for code optimization.
  575.     SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
  576.     UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
  577.     UnpackTime              = 5500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
  578.     PackTime                = 0
  579.     SkipPackingWithNoTarget = Yes           ;When yes, the packing/unpacking will be ignored when detonating charges.
  580.     FlipOwnerAfterUnpacking = Yes
  581.     FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
  582.     UnpackSound               = ColonelBurtonPlantCharge
  583.     LoseStealthOnTrigger      = Yes
  584.     PreTriggerUnstealthTime   = 5000 ; in milliseconds
  585.   End
  586.  
  587.   Behavior = SpecialAbility ModuleTag_10
  588.     SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
  589.     UpdateModuleStartsAttack = Yes
  590.     InitiateSound             = ColonelBurtonVoicePlantTimedCharge
  591.   End
  592.   Behavior = SpecialAbilityUpdate ModuleTag_11
  593.     SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
  594.     StartAbilityRange = 0.0
  595.     PreparationTime = 0
  596.     SpecialObject = TimedC4Charge
  597.     MaxSpecialObjects = 10
  598.     SpecialObjectsPersistWhenOwnerDies = Yes 
  599.     SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
  600.     UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
  601.     UnpackTime              = 5500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
  602.     FlipOwnerAfterUnpacking = Yes
  603.     FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
  604.     UnpackSound               = ColonelBurtonPlantCharge
  605.     LoseStealthOnTrigger      = Yes
  606.     PreTriggerUnstealthTime   = 5000 ; in milliseconds
  607.  
  608.   End
  609.  
  610.   Behavior = ExperienceScalarUpgrade ModuleTag_12
  611.     TriggeredBy   = Upgrade_AmericaAdvancedTraining
  612.     AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
  613.   End
  614.  
  615.   ;Hero units can't be squished!
  616.   ;Behavior = SquishCollide ModuleTag_13
  617.   ;  ;nothing
  618.   ;End
  619.  
  620.  
  621. ; --- begin Death modules ---
  622.   Behavior = SlowDeathBehavior ModuleTag_Death01
  623.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  624.     SinkDelay           = 3000
  625.     SinkRate            = 0.5     ; in Dist/Sec
  626.     DestructionDelay    = 8000
  627.     FX                  = INITIAL FX_GIDie
  628.   End
  629.   Behavior = SlowDeathBehavior ModuleTag_Death02
  630.     DeathTypes          = NONE +CRUSHED +SPLATTED
  631.     SinkDelay           = 3000
  632.     SinkRate            = 0.5     ; in Dist/Sec
  633.     DestructionDelay    = 8000
  634.     FX                  = INITIAL FX_GIDieCrushed
  635.   End
  636.   Behavior = SlowDeathBehavior ModuleTag_Death03
  637.     DeathTypes          = NONE +EXPLODED
  638.     SinkDelay           = 3000
  639.     SinkRate            = 0.5     ; in Dist/Sec
  640.     DestructionDelay    = 8000
  641.     FX                  = INITIAL FX_GIDie
  642.     FlingForce          = 8
  643.     FlingForceVariance  = 3
  644.     FlingPitch          = 60
  645.     FlingPitchVariance  = 10
  646.   End
  647.   Behavior = SlowDeathBehavior ModuleTag_Death04
  648.     DeathTypes          = NONE +BURNED
  649.     DestructionDelay    = 0
  650.     FX                  = INITIAL FX_GIDie
  651.     OCL                 = INITIAL OCL_FlamingInfantry
  652.   End
  653.   Behavior = SlowDeathBehavior ModuleTag_Death05
  654.     DeathTypes          = NONE +POISONED
  655.     DestructionDelay    = 0
  656.     FX                  = INITIAL FX_GIDie
  657.     OCL                 = INITIAL OCL_ToxicInfantry
  658.   End
  659.     Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  660.     DeathTypes          = NONE +POISONED_BETA
  661.     DestructionDelay    = 0
  662.     FX                  = INITIAL FX_GIDie
  663.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  664.   End
  665. ; --- end Death modules ---
  666.  
  667.   Behavior = PoisonedBehavior ModuleTag_18
  668.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  669.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  670.   End
  671.  
  672.   Geometry = CYLINDER
  673.   GeometryMajorRadius = 10.0
  674.   GeometryMinorRadius = 10.0
  675.   GeometryHeight = 12.0
  676.   GeometryIsSmall = Yes
  677.   Shadow = SHADOW_DECAL
  678.   ShadowSizeX = 14
  679.   ShadowSizeY = 14
  680.   ShadowTexture = ShadowI
  681.   BuildCompletion = APPEARS_AT_RALLY_POINT
  682.  
  683. End
  684.  
  685. ;------------------------------------------------------------------------------
  686. Object AmericaVehicleHumvee
  687.  
  688.   ; *** ART Parameters ***
  689.   SelectPortrait         = SAHummer_L
  690.   ButtonImage            = SAHummer
  691.   
  692.   UpgradeCameo1 = Upgrade_AmericaBattleDrone
  693.   UpgradeCameo2 = Upgrade_AmericaScoutDrone
  694.   UpgradeCameo3 = Upgrade_AmericaTOWMissile
  695.   UpgradeCameo4 = Upgrade_AmericaAdvancedTraining
  696.   ;UpgradeCameo5 = XXX
  697.   
  698.   Draw = W3DTruckDraw ModuleTag_01
  699.     OkToChangeModelColor = Yes
  700.  
  701.     ConditionState = NONE
  702.       Model = AVHUMMER
  703.       Turret = Turret
  704.       ShowSubObject = Turret
  705.       HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01
  706.       WeaponFireFXBone = PRIMARY Muzzle
  707.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  708.     End
  709.  
  710.     ConditionState = REALLYDAMAGED
  711.       Model = AVHUMMER_d
  712.       Turret = Turret
  713.       ShowSubObject = Turret
  714.       HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01
  715.       WeaponFireFXBone = PRIMARY Muzzle
  716.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  717.     End
  718.  
  719.     ConditionState = WEAPONSET_PLAYER_UPGRADE
  720.       Model = AVHUMMER
  721.       Turret = TurretUp01
  722.       HideSubObject = Turret MuzzleFX01
  723.       ShowSubObject = TurretUp01 Housecolor03
  724.       WeaponFireFXBone = PRIMARY MuzzleUp
  725.       WeaponMuzzleFlash = PRIMARY MuzzleFXUp
  726.       WeaponFireFXBone = SECONDARY WeaponB
  727.       WeaponLaunchBone = SECONDARY WeaponB
  728.       WeaponFireFXBone = TERTIARY WeaponB
  729.       WeaponLaunchBone = TERTIARY WeaponB
  730.     End
  731.  
  732.     ConditionState = REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE
  733.       Model = AVHUMMER_d
  734.       Turret = TurretUp01
  735.       HideSubObject = Turret MuzzleFX01
  736.       ShowSubObject = TurretUp01 Housecolor03
  737.       WeaponFireFXBone = PRIMARY MuzzleUp
  738.       WeaponMuzzleFlash = PRIMARY MuzzleFXUp
  739.       WeaponFireFXBone = SECONDARY WeaponB
  740.       WeaponLaunchBone = SECONDARY WeaponB
  741.       WeaponFireFXBone = TERTIARY WeaponB
  742.       WeaponLaunchBone = TERTIARY WeaponB
  743.     End
  744.  
  745.     TrackMarks = EXTireTrack.tga
  746.  
  747.     Dust = RocketBuggyDust
  748.     DirtSpray = RocketBuggyDirtSpray
  749.     PowerslideSpray = RocketBuggyDirtPowerSlide
  750.  
  751.     ; These parameters are only used if the model has a separate suspension, 
  752.     ; and the locomotor has HasSuspension = Yes.
  753.     LeftFrontTireBone = Tire01
  754.     RightFrontTireBone = Tire02
  755.     LeftRearTireBone = Tire03
  756.     RightRearTireBone = Tire04
  757.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  758.     PowerslideRotationAddition = 1.25   ; This speed is added to the rotation speed when powersliding.
  759.  
  760.   End
  761.  
  762.   ; ***DESIGN parameters ***
  763.   DisplayName           = OBJECT:Humvee
  764.   Side                  = America
  765.   EditorSorting         = VEHICLE
  766.   TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  767.   WeaponSet
  768.     Conditions = None 
  769.     Weapon = PRIMARY HumveeGun
  770.   End
  771.   WeaponSet
  772.     Conditions = PLAYER_UPGRADE 
  773.     Weapon = PRIMARY HumveeGun
  774.     Weapon = SECONDARY HumveeMissileWeapon
  775.     Weapon = TERTIARY HumveeMissileWeaponAir
  776.     PreferredAgainst = TERTIARY     AIRCRAFT
  777.   End
  778.   ArmorSet
  779.     Conditions      = None
  780.     Armor           = HumveeArmor
  781.     DamageFX        = TruckDamageFX
  782.   End
  783.   BuildCost       = 700
  784.   BuildTime       = 10.0          ;in seconds    
  785.   VisionRange     = 150
  786.   ShroudClearingRange = 320
  787.   Prerequisites
  788.     Object = AmericaWarFactory
  789.   End
  790.   ExperienceValue = 50 50 100 150   ;Experience point value at each level
  791.   ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
  792.   IsTrainable = Yes             ;Can gain experience
  793.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  794.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  795.   CommandSet      = AmericaVehicleHumveeCommandSet
  796.  
  797.   ; *** AUDIO Parameters ***
  798.   VoiceSelect = HumveeVoiceSelect
  799.   VoiceMove = HumveeVoiceMove
  800.   VoiceGuard = HumveeVoiceMove
  801.   VoiceAttack = HumveeVoiceAttack
  802.   VoiceAttackAir = HumveeVoiceAttackTOW
  803.   SoundMoveStart = HumveeMoveStart
  804.   SoundMoveStartDamaged = HumveeMoveStart
  805.   SoundEnter = HumveeEnter
  806.   SoundExit = HumveeExit
  807.  
  808.   UnitSpecificSounds
  809.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  810.     ;TurretMoveStart    = NoSound
  811.     VoiceCreate         = HumveeVoiceCreate
  812.     TurretMoveLoop      = TurretMoveLoop
  813.     SoundEject          = PilotSoundEject
  814.     VoiceEject          = PilotVoiceEject
  815.     VoiceCrush          = HumveeVoiceCrush
  816.   ; Required for the W3DTruckDraw module
  817.     TruckLandingSound = RocketBuggyLand
  818.     TruckPowerslideSound = RocketBuggyPowerslide
  819.     VoiceUnload = HumveeVoiceUnload
  820.     VoiceEnter = HumveeVoiceMove
  821.   End
  822.  
  823.   Behavior = AIUpdateInterface ModuleTag_20
  824.     AutoAcquireEnemiesWhenIdle = Yes
  825.     MoodAttackCheckRate        = 250
  826.   End
  827.  
  828.   ; *** ENGINEERING Parameters ***
  829.   RadarPriority = UNIT
  830.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
  831.  
  832.   Body = ActiveBody ModuleTag_02
  833.     MaxHealth       = 240.0
  834.     InitialHealth   = 240.0
  835.   End
  836.   Behavior = TransportAIUpdate ModuleTag_03
  837.     Turret
  838.       TurretTurnRate = 180
  839.       RecenterTime = 5000   ; how long to wait during idle before recentering
  840.       ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
  841.     End
  842.     AutoAcquireEnemiesWhenIdle = Yes
  843.   End
  844.   Locomotor = SET_NORMAL HumveeLocomotor
  845.  
  846.   Behavior = PhysicsBehavior ModuleTag_04
  847.     Mass = 50.0
  848.   End
  849.  
  850.   Behavior = TransportContain  ModuleTag_05
  851.     PassengersAllowedToFire = Yes
  852.     Slots             = 5
  853. ;    EnterSound          = GarrisonEnter
  854. ;    ExitSound           = GarrisonExit
  855.     DamagePercentToUnits = 100% ;10%
  856.     AllowInsideKindOf  = INFANTRY
  857.     ExitDelay = 250
  858.     NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
  859.     GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
  860.   End
  861.  
  862.   Behavior = ObjectCreationUpgrade ModuleTag_06
  863.     UpgradeObject = OCL_AmericanBattleDrone
  864.     TriggeredBy   = Upgrade_AmericaBattleDrone
  865.     ConflictsWith = Upgrade_AmericaScoutDrone
  866.   End
  867.   Behavior = ObjectCreationUpgrade ModuleTag_07
  868.     UpgradeObject = OCL_AmericanScoutDrone
  869.     TriggeredBy   = Upgrade_AmericaScoutDrone
  870.     ConflictsWith = Upgrade_AmericaBattleDrone
  871.   End
  872.   Behavior = ProductionUpdate ModuleTag_08
  873.     MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  874.   End
  875.  
  876.   Behavior = WeaponSetUpgrade ModuleTag_09
  877.     TriggeredBy = Upgrade_AmericaTOWMissile
  878.   End
  879.   Behavior = ExperienceScalarUpgrade ModuleTag_10
  880.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  881.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  882.   End
  883.  
  884.   Behavior = SlowDeathBehavior ModuleTag_11
  885.     DeathTypes = ALL -CRUSHED -SPLATTED
  886.     ProbabilityModifier = 25
  887.     DestructionDelay = 1
  888.     OCL = INITIAL  OCL_InitialHumveeDebris
  889.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  890.     OCL = FINAL    OCL_FinalHumveeDebris
  891.   End
  892.  
  893.   Behavior = DestroyDie ModuleTag_12
  894.     DeathTypes = NONE +CRUSHED +SPLATTED
  895.   End
  896.  
  897.   Behavior = FXListDie ModuleTag_13
  898.     DeathTypes = NONE +CRUSHED +SPLATTED
  899.     DeathFX = FX_CarCrush
  900.   End
  901.  
  902.   Behavior = CreateCrateDie ModuleTag_CratesChange
  903.     CrateData = SalvageCrateData
  904.     ;CrateData = EliteTankCrateData
  905.     ;CrateData = HeroicTankCrateData
  906.   End
  907.  
  908. ; This is commented out per hotlist request 10/9 ML
  909. ;  Behavior = CreateObjectDie ModuleTag_15
  910. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  911. ;    CreationList = OCL_AmericanRangerDebris01
  912. ;    ExemptStatus = HIJACKED
  913. ;  End
  914.  
  915.   Behavior = EjectPilotDie ModuleTag_16
  916.     DeathTypes = ALL -CRUSHED -SPLATTED
  917.     ExemptStatus = HIJACKED
  918.     ; The following added out per hotlist request 10/9 as above ML
  919.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  920.     GroundCreationList = OCL_EjectPilotOnGround
  921.     AirCreationList = OCL_EjectPilotViaParachute
  922.   End
  923.  
  924.   Behavior = TransitionDamageFX ModuleTag_17
  925.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  926.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  927.   End
  928.  
  929.   Behavior = FlammableUpdate ModuleTag_21
  930.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  931.     AflameDamageAmount = 3       ; taking this much damage...
  932.     AflameDamageDelay = 500       ; this often.
  933.   End
  934.  
  935.   Geometry = BOX
  936.   GeometryMajorRadius = 14.0
  937.   GeometryMinorRadius = 7.0
  938.   GeometryHeight = 11.5     
  939.   GeometryIsSmall = Yes 
  940.   Shadow = SHADOW_VOLUME
  941.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  942.  
  943. End
  944.  
  945. ;------------------------------------------------------------------------------
  946. ;**************************** Cinematic-Only unit *****************************
  947. Object CINE_AmericaVehicleHumvee
  948.  
  949.   ; *** ART Parameters ***
  950.   SelectPortrait         = SAHummer_L
  951.   ButtonImage            = SAHummer
  952.   
  953.   UpgradeCameo1 = Upgrade_AmericaBattleDrone
  954.   UpgradeCameo2 = Upgrade_AmericaScoutDrone
  955.   UpgradeCameo3 = Upgrade_AmericaTOWMissile
  956.   ;UpgradeCameo4 = Upgrade_AmericaAdvancedTraining
  957.   ;UpgradeCameo5 = XXX
  958.   
  959.   Draw = W3DTruckDraw ModuleTag_01
  960.     OkToChangeModelColor = Yes
  961.  
  962.     ConditionState = NONE
  963.       Model = AVHUMMER
  964.       Turret = Turret
  965.       ShowSubObject = Turret
  966.       HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01
  967.       WeaponFireFXBone = PRIMARY Muzzle
  968.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  969.     End
  970.  
  971.     ConditionState = REALLYDAMAGED
  972.       Model = AVHUMMER_d
  973.       Turret = Turret
  974.       ShowSubObject = Turret
  975.       HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01
  976.       WeaponFireFXBone = PRIMARY Muzzle
  977.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  978.     End
  979.  
  980.     ConditionState = WEAPONSET_PLAYER_UPGRADE
  981.       Model = AVHUMMER
  982.       Turret = TurretUp01
  983.       HideSubObject = Turret MuzzleFX01
  984.       ShowSubObject = TurretUp01 Housecolor03
  985.       WeaponFireFXBone = PRIMARY MuzzleUp
  986.       WeaponMuzzleFlash = PRIMARY MuzzleFXUp
  987.       WeaponFireFXBone = SECONDARY WeaponB
  988.       WeaponLaunchBone = SECONDARY WeaponB
  989.       WeaponFireFXBone = TERTIARY WeaponB
  990.       WeaponLaunchBone = TERTIARY WeaponB
  991.     End
  992.  
  993.     ConditionState = REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE
  994.       Model = AVHUMMER_d
  995.       Turret = TurretUp01
  996.       HideSubObject = Turret MuzzleFX01
  997.       ShowSubObject = TurretUp01 Housecolor03
  998.       WeaponFireFXBone = PRIMARY MuzzleUp
  999.       WeaponMuzzleFlash = PRIMARY MuzzleFXUp
  1000.       WeaponFireFXBone = SECONDARY WeaponB
  1001.       WeaponLaunchBone = SECONDARY WeaponB
  1002.       WeaponFireFXBone = TERTIARY WeaponB
  1003.       WeaponLaunchBone = TERTIARY WeaponB
  1004.     End
  1005.  
  1006.     TrackMarks = EXTireTrack.tga
  1007.  
  1008.     Dust = RocketBuggyDust
  1009.     DirtSpray = RocketBuggyDirtSpray
  1010.     PowerslideSpray = RocketBuggyDirtPowerSlide
  1011.  
  1012.     ; These parameters are only used if the model has a separate suspension, 
  1013.     ; and the locomotor has HasSuspension = Yes.
  1014.     LeftFrontTireBone = Tire01
  1015.     RightFrontTireBone = Tire02
  1016.     LeftRearTireBone = Tire03
  1017.     RightRearTireBone = Tire04
  1018.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  1019.     PowerslideRotationAddition = 1.25   ; This speed is added to the rotation speed when powersliding.
  1020.  
  1021.   End
  1022.  
  1023.   ; ***DESIGN parameters ***
  1024.   DisplayName           = OBJECT:Humvee
  1025.   Side                  = America
  1026.   EditorSorting         = VEHICLE
  1027.   TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  1028.   WeaponSet
  1029.     Conditions = None 
  1030.     Weapon = PRIMARY HumveeGun
  1031.   End
  1032.   WeaponSet
  1033.     Conditions = PLAYER_UPGRADE 
  1034.     Weapon = PRIMARY HumveeGun
  1035.     Weapon = SECONDARY HumveeMissileWeapon
  1036.     Weapon = TERTIARY HumveeMissileWeaponAir
  1037.     PreferredAgainst = TERTIARY     AIRCRAFT
  1038.   End
  1039.   ArmorSet
  1040.     Conditions      = None
  1041.     Armor           = HumveeArmor
  1042.     DamageFX        = TruckDamageFX
  1043.   End
  1044.   BuildCost       = 700
  1045.   BuildTime       = 10.0          ;in seconds    
  1046.   VisionRange     = 320
  1047.   ShroudClearingRange = 320
  1048.   Prerequisites
  1049.     Object = AmericaWarFactory
  1050.   End
  1051.   ExperienceValue = 50 50 100 150   ;Experience point value at each level
  1052.   ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
  1053.   IsTrainable = Yes             ;Can gain experience
  1054.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  1055.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  1056.   CommandSet      = AmericaVehicleHumveeCommandSet
  1057.  
  1058.   ; *** AUDIO Parameters ***
  1059.   VoiceSelect = HumveeVoiceSelect
  1060.   VoiceMove = HumveeVoiceMove
  1061.   VoiceGuard = HumveeVoiceMove
  1062.   VoiceAttack = HumveeVoiceAttack
  1063.   VoiceAttackAir = HumveeVoiceAttackTOW
  1064.   SoundMoveStart = HumveeMoveStart
  1065.   SoundMoveStartDamaged = HumveeMoveStart
  1066.   SoundEnter = HumveeEnter
  1067.   SoundExit = HumveeExit
  1068.  
  1069.   UnitSpecificSounds
  1070.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  1071.     ;TurretMoveStart    = NoSound
  1072.     VoiceCreate         = HumveeVoiceCreate
  1073.     TurretMoveLoop      = TurretMoveLoop
  1074.     SoundEject          = PilotSoundEject
  1075.     VoiceEject          = PilotVoiceEject
  1076.     VoiceCrush          = HumveeVoiceCrush
  1077.   ; Required for the W3DTruckDraw module
  1078.     TruckLandingSound = RocketBuggyLand
  1079.     TruckPowerslideSound = RocketBuggyPowerslide
  1080.     VoiceUnload = HumveeVoiceUnload
  1081.     VoiceEnter = HumveeVoiceMove
  1082.   End
  1083.  
  1084.   Behavior = AIUpdateInterface ModuleTag_20
  1085.     AutoAcquireEnemiesWhenIdle = Yes
  1086.     MoodAttackCheckRate        = 250
  1087.   End
  1088.  
  1089.   ; *** ENGINEERING Parameters ***
  1090.   RadarPriority = UNIT
  1091.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
  1092.  
  1093.   Body = ActiveBody ModuleTag_02
  1094.     MaxHealth       = 240.0
  1095.     InitialHealth   = 240.0
  1096.   End
  1097.   Behavior = TransportAIUpdate ModuleTag_03
  1098.     Turret
  1099.       TurretTurnRate = 180
  1100.       RecenterTime = 5000   ; how long to wait during idle before recentering
  1101.       ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
  1102.     End
  1103.     AutoAcquireEnemiesWhenIdle = Yes
  1104.   End
  1105.   Locomotor = SET_NORMAL CINE_USAHumveeLocomotor
  1106.  
  1107.   Behavior = PhysicsBehavior ModuleTag_04
  1108.     Mass = 50.0
  1109.   End
  1110.  
  1111.   Behavior = TransportContain  ModuleTag_05
  1112.     PassengersAllowedToFire = Yes
  1113.     Slots             = 5
  1114. ;    EnterSound          = GarrisonEnter
  1115. ;    ExitSound           = GarrisonExit
  1116.     DamagePercentToUnits = 10%
  1117.     AllowInsideKindOf  = INFANTRY
  1118.     ExitDelay = 250
  1119.     NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
  1120.     GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
  1121.   End
  1122.  
  1123.   Behavior = ObjectCreationUpgrade ModuleTag_06
  1124.     UpgradeObject = OCL_AmericanBattleDrone
  1125.     TriggeredBy   = Upgrade_AmericaBattleDrone
  1126.     ConflictsWith = Upgrade_AmericaScoutDrone
  1127.   End
  1128.   Behavior = ObjectCreationUpgrade ModuleTag_07
  1129.     UpgradeObject = OCL_AmericanScoutDrone
  1130.     TriggeredBy   = Upgrade_AmericaScoutDrone
  1131.     ConflictsWith = Upgrade_AmericaBattleDrone
  1132.   End
  1133.   Behavior = ProductionUpdate ModuleTag_08
  1134.     MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  1135.   End
  1136.  
  1137.   Behavior = WeaponSetUpgrade ModuleTag_09
  1138.     TriggeredBy = Upgrade_AmericaTOWMissile
  1139.   End
  1140.   Behavior = ExperienceScalarUpgrade ModuleTag_10
  1141.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  1142.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  1143.   End
  1144.  
  1145.   Behavior = SlowDeathBehavior ModuleTag_11
  1146.     DeathTypes = ALL -CRUSHED -SPLATTED
  1147.     ProbabilityModifier = 25
  1148.     DestructionDelay = 1
  1149.     OCL = INITIAL  OCL_InitialHumveeDebris
  1150.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  1151.     OCL = FINAL    OCL_FinalHumveeDebris
  1152.   End
  1153.  
  1154.   Behavior = DestroyDie ModuleTag_12
  1155.     DeathTypes = NONE +CRUSHED +SPLATTED
  1156.   End
  1157.  
  1158.   Behavior = FXListDie ModuleTag_13
  1159.     DeathTypes = NONE +CRUSHED +SPLATTED
  1160.     DeathFX = FX_CarCrush
  1161.   End
  1162.  
  1163.   Behavior = CreateCrateDie ModuleTag_CratesChange
  1164.     CrateData = SalvageCrateData
  1165.     ;CrateData = EliteTankCrateData
  1166.     ;CrateData = HeroicTankCrateData
  1167.   End
  1168.  
  1169. ; This is commented out per hotlist request 10/9 ML
  1170. ;  Behavior = CreateObjectDie ModuleTag_15
  1171. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  1172. ;    CreationList = OCL_AmericanRangerDebris01
  1173. ;    ExemptStatus = HIJACKED
  1174. ;  End
  1175.  
  1176.   Behavior = EjectPilotDie ModuleTag_16
  1177.     DeathTypes = ALL -CRUSHED -SPLATTED
  1178.     ExemptStatus = HIJACKED
  1179.     ; The following added out per hotlist request 10/9 as above ML
  1180.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  1181.     GroundCreationList = OCL_EjectPilotOnGround
  1182.     AirCreationList = OCL_EjectPilotViaParachute
  1183.   End
  1184.  
  1185.   Behavior = TransitionDamageFX ModuleTag_17
  1186.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  1187.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  1188.   End
  1189.  
  1190.   Behavior = FlammableUpdate ModuleTag_21
  1191.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  1192.     AflameDamageAmount = 3       ; taking this much damage...
  1193.     AflameDamageDelay = 500       ; this often.
  1194.   End
  1195.  
  1196.   Geometry = BOX
  1197.   GeometryMajorRadius = 14.0
  1198.   GeometryMinorRadius = 7.0
  1199.   GeometryHeight = 11.5     
  1200.   GeometryIsSmall = Yes 
  1201.   Shadow = SHADOW_VOLUME
  1202.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  1203.  
  1204. End
  1205.  
  1206. ;------------------------------------------------------------------------------
  1207. Object HumveeMissile
  1208.  
  1209.   ; *** ART Parameters ***
  1210.   Draw = W3DModelDraw ModuleTag_01
  1211.     OkToChangeModelColor = Yes
  1212.     DefaultConditionState
  1213.       Model = UVRockBug_m
  1214.     End
  1215.   End
  1216.  
  1217.   ; ***DESIGN parameters ***
  1218.  
  1219.   EditorSorting   = SYSTEM
  1220.   VisionRange = 0.0  
  1221.   ArmorSet
  1222.     Conditions      = None
  1223.     Armor           = ProjectileArmor
  1224.     DamageFX        = None
  1225.   End
  1226.  
  1227.   ; *** ENGINEERING Parameters ***
  1228.   KindOf = PROJECTILE SMALL_MISSILE
  1229.   Body = ActiveBody ModuleTag_02
  1230.     MaxHealth       = 100.0
  1231.     InitialHealth   = 100.0
  1232.   End
  1233.  
  1234. ; ---- begin Projectile death behaviors
  1235.   Behavior = InstantDeathBehavior DeathModuleTag_01
  1236.     DeathTypes = NONE +DETONATED
  1237.     ; we detonated normally.
  1238.     ; no FX, just quiet destroy ourselves
  1239.   End
  1240.   Behavior = InstantDeathBehavior DeathModuleTag_02
  1241.     DeathTypes = NONE +LASERED
  1242.     ; shot down by laser.
  1243.     FX         = FX_GenericMissileDisintegrate
  1244.     OCL        = OCL_GenericMissileDisintegrate
  1245.   End
  1246.   Behavior = InstantDeathBehavior DeathModuleTag_03
  1247.     DeathTypes = ALL -LASERED -DETONATED
  1248.     ; shot down by nonlaser.
  1249.     FX         = FX_GenericMissileDeath
  1250.   End
  1251. ; ---- end Projectile death behaviors
  1252.    
  1253.   Behavior = PhysicsBehavior ModuleTag_06
  1254.     Mass = 1
  1255.   End
  1256.   Behavior = MissileAIUpdate ModuleTag_07
  1257.     TryToFollowTarget = No 
  1258.     FuelLifetime = 1000
  1259.     InitialVelocity = 150                ; in dist/sec
  1260.     IgnitionDelay = 0
  1261.     DistanceToTravelBeforeTurning = 3
  1262.     IgnitionFX = FX_HumveeMissileIgnition
  1263.   End
  1264.   Locomotor = SET_NORMAL RocketBuggyMissileLocomotor
  1265.  
  1266.   Geometry = Sphere
  1267.   GeometryIsSmall = Yes
  1268.   GeometryMajorRadius = 2.0
  1269.  
  1270. End
  1271.  
  1272. ;------------------------------------------------------------------------------
  1273. Object AmericaVehicleHumveeDeadHull
  1274.  
  1275.   ; *** ART Parameters ***
  1276.   Draw = W3DModelDraw ModuleTag_01
  1277.     OkToChangeModelColor = Yes
  1278.  
  1279.     DefaultConditionState
  1280.       Model = AVHUMMER_D1
  1281.     End
  1282.   End
  1283.  
  1284.   ; ***DESIGN parameters ***
  1285.   Side = America
  1286.   EditorSorting   = SYSTEM
  1287.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  1288.  
  1289.   ; *** AUDIO Parameters ***
  1290.   ; *** ENGINEERING Parameters ***
  1291.   RadarPriority = UNIT
  1292.   KindOf = CAN_CAST_REFLECTIONS IMMOBILE NO_COLLIDE HULK
  1293.  
  1294.   Body = ActiveBody ModuleTag_02
  1295.     MaxHealth       = 1.0
  1296.     InitialHealth   = 1.0
  1297.   End
  1298.  
  1299.  
  1300.   Behavior = PhysicsBehavior ModuleTag_03
  1301.     Mass = 50
  1302.     AllowBouncing = Yes
  1303.   End
  1304.  
  1305.   Behavior = LifetimeUpdate ModuleTag_04
  1306.     MinLifetime = 0   ; min lifetime in msec
  1307.     MaxLifetime = 0   ; max lifetime in msec
  1308.   End
  1309.  
  1310.   Behavior = SlowDeathBehavior ModuleTag_05
  1311.     SinkDelay = 14000
  1312.     SinkRate = 2     ; in Dist/Sec
  1313.     DestructionDelay = 20000
  1314.   End
  1315.  
  1316.   Behavior = TransitionDamageFX ModuleTag_06
  1317.     RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  1318.   End
  1319.  
  1320.   Geometry = BOX
  1321.   GeometryMajorRadius = 9.0
  1322.   GeometryMinorRadius = 6.0
  1323.   GeometryHeight = 7.5     
  1324.   GeometryIsSmall = Yes    
  1325.  
  1326. End
  1327.  
  1328. ;----------------------------------------------------------
  1329. Object AmericaVehicleTomahawk
  1330.  
  1331.   ; *** ART Parameters ***
  1332.   SelectPortrait         = SACTomahawk_L
  1333.   ButtonImage            = SACTomahawk
  1334.   
  1335.   UpgradeCameo1 = Upgrade_AmericaScoutDrone
  1336.   UpgradeCameo2 = Upgrade_AmericaBattleDrone
  1337.   UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
  1338.   ;UpgradeCameo4 = Upgrade_AmericaTomahawkRemoteControl  ***CUT***
  1339.   ;UpgradeCameo5 = XXX
  1340.   
  1341.   Draw = W3DTankDraw ModuleTag_01
  1342.     OkToChangeModelColor = Yes
  1343.       
  1344.     ProjectileBoneFeedbackEnabledSlots = PRIMARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
  1345.  
  1346.     DefaultConditionState
  1347.       Model = AVTomahawk
  1348.       Turret = TURRET
  1349.       TurretPitch = TURRETEL
  1350.       WeaponLaunchBone = PRIMARY WeaponA
  1351.       WeaponHideShowBone = PRIMARY MISSILE
  1352.     End
  1353.  
  1354.     ConditionState = REALLYDAMAGED
  1355.       Model = AVTomahawk_D
  1356.     End
  1357.     AliasConditionState = RUBBLE
  1358.  
  1359.     TrackMarks           = EXTnkTrack.tga
  1360.  
  1361.   End
  1362.  
  1363.   ; ***DESIGN parameters ***
  1364.   DisplayName      = OBJECT:Tomahawk
  1365.   Side = America
  1366.   EditorSorting   = VEHICLE
  1367.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  1368.   BuildCost       = 1200
  1369.   BuildTime       = 20.0          ;in seconds    
  1370.   VisionRange     = 180
  1371.   ShroudClearingRange = 200
  1372.   Prerequisites
  1373.     Object = AmericaWarFactory
  1374.     Object = AmericaStrategyCenter
  1375.   End
  1376.   ExperienceValue = 50 50 100 150    ;Experience point value at each level
  1377.   ExperienceRequired = 0 200 400 800  ;Experience points needed to gain each level
  1378.   IsTrainable = Yes             ;Can gain experience
  1379.   WeaponSet
  1380.     Conditions = None 
  1381.     Weapon = PRIMARY TomahawkMissileWeapon
  1382.   End
  1383.   ArmorSet
  1384.     Conditions      = None
  1385.     Armor           = TruckArmor
  1386.     DamageFX        = TankDamageFX
  1387.   End
  1388.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  1389.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  1390.   CommandSet      = AmericaVehicleTomahawkCommandSet
  1391.  
  1392.   ; *** AUDIO Parameters ***
  1393.   VoiceSelect = TomahawkVoiceSelect
  1394.   VoiceMove = TomahawkVoiceMove
  1395.   VoiceGuard = TomahawkVoiceMove
  1396.   VoiceAttack = TomahawkVoiceAttack
  1397.   SoundMoveStart = TomahawkMoveStart
  1398.   SoundMoveStartDamaged = TomahawkMoveStart
  1399.   
  1400.   UnitSpecificSounds
  1401.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  1402.     VoiceCreate = TomahawkVoiceCreate
  1403.     TurretMoveStart = NoSound
  1404.     TurretMoveLoop = TurretMoveLoopLoud
  1405.     SoundEject = PilotSoundEject
  1406.     VoiceEject = PilotVoiceEject
  1407.     VoiceCrush = TomahawkVoiceCrush
  1408.     VoiceEnter = TomahawkVoiceMove
  1409.     VoiceBombard = TomahawkVoiceAttack
  1410.   End
  1411.  
  1412.   ; *** ENGINEERING Parameters ***
  1413.   RadarPriority = UNIT
  1414.   KindOf = PRELOAD SELECTABLE DONT_AUTO_CRUSH_INFANTRY CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
  1415.  
  1416.   Body = ActiveBody ModuleTag_02
  1417.     MaxHealth       = 180.0
  1418.     InitialHealth   = 180.0
  1419.   End
  1420.  
  1421.   Behavior = AIUpdateInterface ModuleTag_03
  1422.     Turret
  1423.       TurretTurnRate = 60   ; turn rate, in degrees per sec
  1424.       TurretPitchRate = 60
  1425.       FirePitch = 70  ; Instead of aiming pitchwise at the target, it will aim here
  1426.       AllowsPitch = Yes
  1427.       ControlledWeaponSlots = PRIMARY
  1428.     End
  1429.     AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
  1430.   End
  1431.   Locomotor = SET_NORMAL TomahawkLocomotor
  1432.  
  1433.   Behavior = PhysicsBehavior ModuleTag_04
  1434.     Mass = 50.0
  1435.   End
  1436.   Behavior = SlowDeathBehavior ModuleTag_05
  1437.     DeathTypes = ALL -CRUSHED -SPLATTED
  1438.     DestructionDelay  = 500
  1439.     DestructionDelayVariance  = 100
  1440.     FX  = INITIAL  FX_GenericTankDeathEffect
  1441.     OCL = MIDPOINT OCL_AmericaVehicleTomahawkDie
  1442.     FX =  FINAL FX_AmericaVehicleTomahawkDeathExplosion
  1443.   End
  1444.  
  1445.   Behavior = ObjectCreationUpgrade ModuleTag_06
  1446.     UpgradeObject = OCL_AmericanBattleDrone
  1447.     TriggeredBy   = Upgrade_AmericaBattleDrone
  1448.     ConflictsWith = Upgrade_AmericaScoutDrone
  1449.   End
  1450.   Behavior = ObjectCreationUpgrade ModuleTag_07
  1451.     UpgradeObject = OCL_AmericanScoutDrone
  1452.     TriggeredBy   = Upgrade_AmericaScoutDrone
  1453.     ConflictsWith = Upgrade_AmericaBattleDrone
  1454.   End
  1455.   Behavior = ProductionUpdate ModuleTag_08
  1456.     MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  1457.   End
  1458.  
  1459.   Behavior = ExperienceScalarUpgrade ModuleTag_09
  1460.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  1461.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  1462.   End
  1463.  
  1464.   Behavior = DestroyDie ModuleTag_10
  1465.     DeathTypes = NONE +CRUSHED +SPLATTED
  1466.   End
  1467.  
  1468.   Behavior = FXListDie ModuleTag_11
  1469.     DeathTypes = NONE +CRUSHED +SPLATTED
  1470.     DeathFX = FX_CarCrush
  1471.   End
  1472.  
  1473.   Behavior = CreateObjectDie ModuleTag_12
  1474.     DeathTypes = NONE +CRUSHED +SPLATTED
  1475.     CreationList = OCL_CrusaderTank_CrushEffect
  1476.   End
  1477.  
  1478. ;  Behavior = FXListDie
  1479. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  1480. ;    DeathFX = FX_GenericTankDeathEffect
  1481. ;  End
  1482. ; Behavior = CreateObjectDie
  1483. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  1484. ;    CreationList = OCL_GenericTankDeathEffect
  1485. ;  End
  1486.   Behavior = EjectPilotDie ModuleTag_13
  1487.     DeathTypes = ALL -CRUSHED -SPLATTED
  1488.     ExemptStatus = HIJACKED
  1489.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  1490.     GroundCreationList = OCL_EjectPilotOnGround
  1491.     AirCreationList = OCL_EjectPilotViaParachute
  1492.   End
  1493.   
  1494.   Behavior = TransitionDamageFX ModuleTag_14
  1495.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  1496.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  1497.   End
  1498.   
  1499.   Behavior = FlammableUpdate ModuleTag_21
  1500.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  1501.     AflameDamageAmount = 3       ; taking this much damage...
  1502.     AflameDamageDelay = 500       ; this often.
  1503.   End
  1504.  
  1505.   Geometry = BOX
  1506.   GeometryMajorRadius = 15.0
  1507.   GeometryMinorRadius = 10.0
  1508.   GeometryHeight = 10.0     
  1509.   GeometryIsSmall = Yes
  1510.   Shadow = SHADOW_VOLUME 
  1511.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length   
  1512.  
  1513. End
  1514.  
  1515. ;----------------------------------------------------------
  1516. Object AmericaVehicleTomahawkHulk
  1517.   ; *** ART Parameters ***
  1518.   Draw                = W3DModelDraw ModuleTag_01
  1519.     ConditionState    = NONE
  1520.       Model           = AVTomahawk_D1
  1521.     End
  1522.   End
  1523.  
  1524.   ; ***DESIGN parameters ***
  1525.   EditorSorting       = DEBRIS
  1526.  
  1527.   ; *** ENGINEERING Parameters ***
  1528.   KindOf              = NO_COLLIDE HULK
  1529.  
  1530.   Behavior                  = PhysicsBehavior ModuleTag_03
  1531.     Mass                    = 10.0
  1532.     AllowBouncing           = Yes
  1533.     KillWhenRestingOnGround = Yes
  1534.   End
  1535.   Behavior = LifetimeUpdate ModuleTag_04
  1536.     MinLifetime = 1500   ; min lifetime in msec
  1537.     MaxLifetime = 1600   ; max lifetime in msec
  1538.   End
  1539.  
  1540.   Behavior = SlowDeathBehavior ModuleTag_05
  1541.     SinkDelay        = 1500
  1542.     SinkRate            = 2     ; in Dist/Sec
  1543.     DestructionDelay = 8000
  1544.   End
  1545. End
  1546.  
  1547. ;----------------------------------------------------------
  1548. Object ChinaVehicleNukeCannonHulk
  1549.   ; *** ART Parameters ***
  1550.   Draw                = W3DModelDraw ModuleTag_01
  1551.     ConditionState    = NONE
  1552.       Model           = NVNukeCn_D1
  1553.     End
  1554.   End
  1555.  
  1556.   ; ***DESIGN parameters ***
  1557.   EditorSorting       = DEBRIS
  1558.  
  1559.   ; *** ENGINEERING Parameters ***
  1560.   KindOf              = NO_COLLIDE HULK
  1561.  
  1562.   Behavior                  = PhysicsBehavior ModuleTag_03
  1563.     Mass                    = 10.0
  1564.     AllowBouncing           = Yes
  1565.     KillWhenRestingOnGround = Yes
  1566.   End
  1567.   Behavior = LifetimeUpdate ModuleTag_04
  1568.     MinLifetime = 1500   ; min lifetime in msec
  1569.     MaxLifetime = 1600   ; max lifetime in msec
  1570.   End
  1571.  
  1572.   Behavior = SlowDeathBehavior ModuleTag_05
  1573.     SinkDelay        = 1500
  1574.     SinkRate            = 2     ; in Dist/Sec
  1575.     DestructionDelay = 8000
  1576.   End
  1577. End
  1578.  
  1579. ;------------------------------------------------------------------------------
  1580. Object AmericaJetRaptor
  1581.  
  1582.   ; *** ART Parameters ***
  1583.   SelectPortrait         = SACRaptor_L
  1584.   ButtonImage            = SACRaptor
  1585.   
  1586.   UpgradeCameo1 = Upgrade_AmericaLaserMissiles
  1587.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  1588.   ;UpgradeCameo3 = NONE
  1589.   ;UpgradeCameo4 = NONE
  1590.   ;UpgradeCameo5 = NONE
  1591.   
  1592.   Draw                   = W3DModelDraw ModuleTag_01
  1593.  
  1594.     DefaultConditionState
  1595.       Model               = AVRaptor
  1596.       HideSubObject       = BurnerFX01 BurnerFX02
  1597.       WeaponLaunchBone = PRIMARY WeaponA
  1598.     End
  1599.  
  1600.     ConditionState        = JETEXHAUST
  1601.       ; exhaust
  1602.       ParticleSysBone     = Wingtip01 JetContrail
  1603.       ParticleSysBone     = Wingtip02 JetContrail
  1604.     End
  1605.  
  1606.     ConditionState        = JETEXHAUST JETAFTERBURNER
  1607.       ; exhaust
  1608.       ParticleSysBone     = Wingtip01 JetContrail
  1609.       ParticleSysBone     = Wingtip02 JetContrail
  1610.       ; afterburner
  1611.       ShowSubObject       = BurnerFX01 BurnerFX02
  1612.       ParticleSysBone     = Engine01 JetLenzflare
  1613.       ParticleSysBone     = Engine02 JetLenzflare
  1614.     End
  1615.  
  1616.     ConditionState        = REALLYDAMAGED
  1617.       Model               = AVRaptor_D
  1618.       ; damage
  1619.       ParticleSysBone     = Smoke01 JetSmoke
  1620.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  1621.     End
  1622.     
  1623.     ConditionState        = REALLYDAMAGED JETEXHAUST
  1624.       Model               = AVRaptor_D
  1625.       ; damage
  1626.       ParticleSysBone     = Smoke01 JetSmoke
  1627.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  1628.       ; exhaust
  1629.       ParticleSysBone     = Wingtip01 JetContrail
  1630.       ParticleSysBone     = Wingtip02 JetContrail
  1631.     End
  1632.  
  1633.     ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
  1634.       Model               = AVRaptor_D
  1635.       ; damage
  1636.       ParticleSysBone     = Smoke01 JetSmoke
  1637.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  1638.       ; afterburner
  1639.       ShowSubObject       = BurnerFX01 BurnerFX02
  1640.       ParticleSysBone     = Engine01 JetLenzflare
  1641.       ParticleSysBone     = Engine02 JetLenzflare
  1642.       ; exhaust
  1643.       ParticleSysBone     = Wingtip01 JetContrail
  1644.       ParticleSysBone     = Wingtip02 JetContrail
  1645.     End
  1646.  
  1647.     ConditionState        = RUBBLE
  1648.       Model               = AVRaptor_D1B
  1649.       HideSubObject       = None 
  1650.       ShowSubObject       = None
  1651.     End
  1652.  
  1653.     ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
  1654.       Model               = AVRaptor_D1B
  1655.       ;HideSubObject is needed cause there're inherited from default condition state      
  1656.       HideSubObject       = None 
  1657.       ShowSubObject       = None
  1658.       ParticleSysBone     = Engine01 JetExhaust
  1659.       ParticleSysBone     = Engine02 JetExhaust
  1660.       ; exhaust
  1661.       ParticleSysBone     = Wingtip01 JetContrail
  1662.       ParticleSysBone     = Wingtip02 JetContrail
  1663.     End
  1664.  
  1665.     OkToChangeModelColor = Yes
  1666.  
  1667.   End
  1668.  
  1669.   ; ***DESIGN parameters ***
  1670.   DisplayName             = OBJECT:Raptor
  1671.   EditorSorting           = VEHICLE
  1672.   Side                    = America
  1673.   TransportSlotCount      = 0 ;how many "slots" we take in a transport (0 == not transportable)
  1674.   VisionRange             = 180.0 
  1675.   ShroudClearingRange     = 400
  1676.   Prerequisites
  1677.     Object                = AmericaAirfield
  1678.   End
  1679.  
  1680.   WeaponSet
  1681.     Conditions            = None 
  1682.     Weapon                = PRIMARY RaptorJetMissileWeapon
  1683.   End
  1684.   WeaponSet
  1685.     Conditions            = PLAYER_UPGRADE 
  1686.     Weapon                = PRIMARY RaptorJetLaserGuidedMissileWeapon
  1687.   End
  1688.   ArmorSet
  1689.     Conditions            = None
  1690.     Armor                 = AirplaneArmor
  1691.     DamageFX              = None
  1692.   End
  1693.  
  1694.   BuildCost               = 1400
  1695.   BuildTime               = 20   
  1696.   ExperienceValue         = 50 50 100 150  ;Experience point value at each level
  1697.   ExperienceRequired      = 0 100 200 400   ;Experience points needed to gain each level
  1698.   IsTrainable             = Yes             ;Can gain experience
  1699.   CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  1700.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  1701.   CommandSet              = AmericaJetRaptorCommandSet
  1702.  
  1703.   ; *** AUDIO Parameters ***
  1704.   VoiceSelect            = RaptorVoiceSelect
  1705.   VoiceMove              = RaptorVoiceMove
  1706.   VoiceAttack            = RaptorVoiceAttack
  1707.   VoiceAttackAir         = RaptorVoiceAttackAir
  1708.   VoiceGuard             = RaptorVoiceAirPatrol
  1709.   SoundDie               = RaptorVoiceFalling
  1710.   SoundAmbient           = RaptorAmbientLoop
  1711.   SoundAmbientRubble     = NoSound
  1712.   ; For now, it is better to have some sound than no sound cause there is a bug in
  1713.   ; what triggers the sound move loop sound, and the multiplayer test is only days away
  1714.   ; SoundMoveLoop          = RaptorAmbientLoop  ; don't want sound while sitting at airfield
  1715.   ; SoundAmbient           = NoSound
  1716.   UnitSpecificSounds
  1717.     VoiceCreate          = RaptorVoiceCreate
  1718.     SoundEject           = PilotSoundEject
  1719.     VoiceEject           = PilotVoiceEject
  1720.     Afterburner          = RaptorAfterburner
  1721.     VoiceLowFuel         = RaptorVoiceLowFuel
  1722.     VoiceGarrison        = RaptorVoiceMove
  1723.   End
  1724.  
  1725.   ; *** ENGINEERING Parameters ***
  1726.   RadarPriority          = UNIT
  1727.   KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  1728.   Body                   = ActiveBody ModuleTag_02
  1729.     MaxHealth            = 160.0
  1730.     InitialHealth        = 160.0
  1731.   End
  1732.  
  1733.   Behavior                = WeaponSetUpgrade ModuleTag_03
  1734.     TriggeredBy          = Upgrade_AmericaLaserMissiles
  1735.   End
  1736.   Behavior = ExperienceScalarUpgrade ModuleTag_04
  1737.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  1738.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  1739.   End
  1740.  
  1741.   Behavior                          = JetSlowDeathBehavior ModuleTag_05
  1742.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  1743.     OCLOnGroundDeath                = OCL_RaptorDeathFinalBlowUp
  1744.     DestructionDelay                = 99999999; destruction will happen when we
  1745.     RollRate                        = 0.2
  1746.     RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
  1747.     PitchRate                       = 0.0
  1748.     FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  1749.     FXInitialDeath                  = FX_JetDeathInitial
  1750.     OCLInitialDeath                 = OCL_RaptorDeathInitial
  1751.     DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
  1752.     FXSecondary                     = FX_JetDeathSecondary
  1753.     OCLSecondary                    = OCL_RaptorDeathSecondary
  1754.     FXHitGround                     = FX_JetDeathHitGround
  1755.     OCLHitGround                    = OCL_RaptorDeathHitGround
  1756.     DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
  1757.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  1758.     OCLFinalBlowUp                  = OCL_RaptorDeathFinalBlowUp
  1759. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  1760.   End
  1761.   Behavior                    = EjectPilotDie ModuleTag_06
  1762.     ExemptStatus         = HIJACKED
  1763.     GroundCreationList = OCL_EjectPilotOnGround
  1764.     AirCreationList = OCL_EjectPilotViaParachute
  1765.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  1766.   End
  1767.   
  1768.   Behavior               = PhysicsBehavior ModuleTag_07
  1769.     Mass                 = 500.0
  1770.   End
  1771.  
  1772.   Behavior                 = TransitionDamageFX ModuleTag_08
  1773.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  1774.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
  1775.   End
  1776.  
  1777.   Behavior = JetAIUpdate ModuleTag_09
  1778.     OutOfAmmoDamagePerSecond  = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
  1779.                                     ; note that it's expressed as a percent of max health, not an absolute
  1780.     TakeoffSpeedForMaxLift    = 100%   ; smaller numbers give more lift sooner when taking off
  1781.     TakeoffPause              = 500
  1782.     MinHeight                 = 5
  1783.     ParkingOffset             = 3             ; scooch it a little forward so the tail doesn't hit the doors
  1784.     ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
  1785.   End
  1786.   Locomotor = SET_NORMAL RaptorJetLocomotor
  1787.   Locomotor = SET_TAXIING BasicJetTaxiLocomotor
  1788.  
  1789.   Behavior = FlammableUpdate ModuleTag_21
  1790.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  1791.     AflameDamageAmount = 3       ; taking this much damage...
  1792.     AflameDamageDelay = 500       ; this often.
  1793.   End
  1794.  
  1795.  
  1796.   Geometry                 = Box
  1797.   GeometryIsSmall          = Yes
  1798.   GeometryMajorRadius      = 14.0
  1799.   GeometryMinorRadius      = 7.0
  1800.   GeometryHeight           = 5.0
  1801.   Shadow                   = SHADOW_VOLUME
  1802.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length.
  1803.  
  1804. End
  1805.  
  1806. ;------------------------------------------------------------------------------
  1807. ;This is the raptor as it's crashing
  1808. ;------------------------------------------------------------------------------
  1809. Object AmericaJetRaptorHulk
  1810.   ; *** ART Parameters ***
  1811.   Draw                = W3DModelDraw ModuleTag_01
  1812.     DefaultConditionState
  1813.       Model           = AVRaptor_D1
  1814.     End
  1815.   End
  1816.  
  1817.   ; ***DESIGN parameters ***
  1818.   EditorSorting       = DEBRIS
  1819.  
  1820.   ; *** ENGINEERING Parameters ***
  1821.   KindOf              =  NO_COLLIDE HULK
  1822.  
  1823.   Behavior                  = PhysicsBehavior ModuleTag_03
  1824.     Mass                    = 2.0
  1825.     AllowBouncing           = No
  1826.     KillWhenRestingOnGround = Yes
  1827.   End
  1828.  
  1829.   Behavior = LifetimeUpdate ModuleTag_04
  1830.     MinLifetime = 1500   ; min lifetime in msec
  1831.     MaxLifetime = 1600   ; max lifetime in msec
  1832.   End
  1833.  
  1834.   Behavior = SlowDeathBehavior ModuleTag_05
  1835.     SinkDelay        = 1500
  1836.     SinkRate            = 2     ; in Dist/Sec
  1837.     DestructionDelay = 8000
  1838.   End
  1839.  
  1840. End
  1841.  
  1842. ;------------------------------------------------------------------------------
  1843. ;This is the A10 as it's crashing
  1844. ;------------------------------------------------------------------------------
  1845. Object AmericaJetA10Hulk
  1846.   ; *** ART Parameters ***
  1847.   Draw                = W3DModelDraw ModuleTag_01
  1848.     DefaultConditionState
  1849.       Model           = AVWarthog_D1
  1850.     End
  1851.   End
  1852.  
  1853.   ; ***DESIGN parameters ***
  1854.   EditorSorting       = DEBRIS
  1855.  
  1856.   ; *** ENGINEERING Parameters ***
  1857.   KindOf              =  NO_COLLIDE HULK
  1858.  
  1859.   Behavior                  = PhysicsBehavior ModuleTag_03
  1860.     Mass                    = 2.0
  1861.     AllowBouncing           = No
  1862.     KillWhenRestingOnGround = Yes
  1863.   End
  1864.  
  1865.   Behavior = LifetimeUpdate ModuleTag_04
  1866.     MinLifetime = 1500   ; min lifetime in msec
  1867.     MaxLifetime = 1600   ; max lifetime in msec
  1868.   End
  1869.  
  1870.  
  1871.  
  1872.   Behavior = SlowDeathBehavior ModuleTag_05
  1873.     SinkDelay        = 1500
  1874.     SinkRate         = 2     ; in Dist/Sec
  1875.     DestructionDelay = 8000
  1876.   End
  1877.  
  1878. End
  1879.  
  1880. ;------------------------------------------------------------------------------
  1881. ;This is the stealth as it's crashing
  1882. ;------------------------------------------------------------------------------
  1883. Object AmericaJetStealthHulk
  1884.  
  1885.   ; *** ART Parameters ***
  1886.   Draw                = W3DModelDraw ModuleTag_01
  1887.     DefaultConditionState
  1888.       Model           = AVStealth_D1
  1889.     End
  1890.   End
  1891.  
  1892.   ; ***DESIGN parameters ***
  1893.   EditorSorting       = DEBRIS
  1894.  
  1895.   ; *** ENGINEERING Parameters ***
  1896.   KindOf              =  NO_COLLIDE HULK
  1897.  
  1898.   Behavior                  = PhysicsBehavior ModuleTag_03
  1899.     Mass                    = 2.0
  1900.     AllowBouncing           = No
  1901.     KillWhenRestingOnGround = Yes
  1902.   End
  1903.  
  1904.   Behavior = LifetimeUpdate ModuleTag_04
  1905.     MinLifetime = 1500   ; min lifetime in msec
  1906.     MaxLifetime = 1600   ; max lifetime in msec
  1907.   End
  1908.  
  1909.   Behavior = SlowDeathBehavior ModuleTag_05
  1910.     SinkDelay        = 1500
  1911.     SinkRate            = 2     ; in Dist/Sec
  1912.     DestructionDelay = 8000
  1913.   End
  1914.  
  1915. End
  1916.  
  1917. ;------------------------------------------------------------------------------
  1918. ;This is the stealth as it's crashing
  1919. ;------------------------------------------------------------------------------
  1920. Object AmericaJetAuroraHulk
  1921.  
  1922.   ; *** ART Parameters ***
  1923.   Draw                = W3DModelDraw ModuleTag_01
  1924.     DefaultConditionState
  1925.       Model           = AVAurora_D1
  1926.     End
  1927.   End
  1928.  
  1929.   ; ***DESIGN parameters ***
  1930.   EditorSorting       = DEBRIS
  1931.  
  1932.   ; *** ENGINEERING Parameters ***
  1933.   KindOf              =  NO_COLLIDE HULK
  1934.  
  1935.   Behavior                  = PhysicsBehavior ModuleTag_03
  1936.     Mass                    = 2.0
  1937.     AllowBouncing           = No
  1938.     KillWhenRestingOnGround = Yes
  1939.   End
  1940.  
  1941.   Behavior = LifetimeUpdate ModuleTag_04
  1942.     MinLifetime = 1500   ; min lifetime in msec
  1943.     MaxLifetime = 1600   ; max lifetime in msec
  1944.   End
  1945.  
  1946.   Behavior = SlowDeathBehavior ModuleTag_05
  1947.     SinkDelay        = 1500
  1948.     SinkRate            = 2     ; in Dist/Sec
  1949.     DestructionDelay = 8000
  1950.   End
  1951.  
  1952. End
  1953.  
  1954. ;------------------------------------------------------------------------------
  1955. Object A10ThunderboltMissile
  1956.  
  1957.   ; *** ART Parameters ***
  1958.   Draw = W3DModelDraw ModuleTag_01
  1959.     OkToChangeModelColor = Yes
  1960.     DefaultConditionState
  1961.       Model = AVWarthog_M
  1962.       ParticleSysBone = NONE MissileExhaust
  1963.     End
  1964.   End
  1965.  
  1966.   ; ***DESIGN parameters ***
  1967.   DisplayName      = OBJECT:Missile
  1968.   Side = America
  1969.   EditorSorting   = SYSTEM
  1970.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  1971.   VisionRange = 0.0  
  1972.   ArmorSet
  1973.     Conditions      = None
  1974.     Armor           = ProjectileArmor
  1975.     DamageFX        = None
  1976.   End
  1977.  
  1978.   ; *** AUDIO Parameters ***
  1979.  
  1980.   ; *** ENGINEERING Parameters ***
  1981.   KindOf            = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
  1982.   Body = ActiveBody ModuleTag_02
  1983.     MaxHealth       = 100.0
  1984.     InitialHealth   = 100.0
  1985.   End
  1986.  
  1987. ; ---- begin Projectile death behaviors
  1988.   Behavior = InstantDeathBehavior DeathModuleTag_01
  1989.     DeathTypes = NONE +DETONATED
  1990.     ; we detonated normally.
  1991.     ; no FX, just quiet destroy ourselves
  1992.   End
  1993.   Behavior = InstantDeathBehavior DeathModuleTag_02
  1994.     DeathTypes = NONE +LASERED
  1995.     ; shot down by laser.
  1996.     FX         = FX_GenericMissileDisintegrate
  1997.     OCL        = OCL_GenericMissileDisintegrate
  1998.   End
  1999.   Behavior = InstantDeathBehavior DeathModuleTag_03
  2000.     DeathTypes = ALL -LASERED -DETONATED
  2001.     ; shot down by nonlaser.
  2002.     FX         = FX_GenericMissileDeath
  2003.   End
  2004. ; ---- end Projectile death behaviors
  2005.  
  2006. ; The weapon is in OCL.ini.  This makes it do double damage secretly.   
  2007. ;  Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
  2008. ;    DeathWeapon   = A10ThunderboltMissileWeapon
  2009. ;    StartsActive  = Yes
  2010. ;  End
  2011.  
  2012.   Behavior = PhysicsBehavior ModuleTag_08
  2013.     Mass = 1
  2014.   End
  2015.   Behavior = MissileAIUpdate ModuleTag_09
  2016.     TryToFollowTarget = Yes 
  2017.     FuelLifetime = 10000
  2018.     InitialVelocity = 30                ; in dist/sec
  2019.     IgnitionDelay = 0
  2020.     IgnitionFX = FX_A10ThunderboltMissileIgnition
  2021.   End
  2022.   ; It's a missile, it needs to hit so it can +DETONATED
  2023. ;  Behavior = HeightDieUpdate ModuleTag_10
  2024. ;    TargetHeight = 1.0
  2025. ;    TargetHeightIncludesStructures = No
  2026. ;  End
  2027.   Locomotor = SET_NORMAL A10ThunderboltMissileLocomotor
  2028.  
  2029.   Geometry = Sphere
  2030.   GeometryIsSmall = Yes
  2031.   GeometryMajorRadius = 1.0
  2032.  
  2033.   Behavior = SpecialPowerCompletionDie ModuleTag_11
  2034.     SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike
  2035.   End
  2036.  
  2037. ;  Geometry = Sphere
  2038.  ; GeometryIsSmall = Yes
  2039.   ;GeometryMajorRadius = 12.0
  2040.  
  2041. End
  2042.  
  2043. ;------------------------------------------------------------------------------
  2044. Object RaptorJetMissile
  2045.  
  2046.   ; *** ART Parameters ***
  2047.   Draw = W3DModelDraw ModuleTag_01
  2048.     OkToChangeModelColor = Yes
  2049.     DefaultConditionState
  2050.       Model = AVRaptor_M
  2051.     End
  2052.   End
  2053.  
  2054.   ; ***DESIGN parameters ***
  2055.   DisplayName       = OBJECT:Missile
  2056.   EditorSorting     = SYSTEM
  2057.   VisionRange = 0.0  
  2058.   TransportSlotCount  = 1  
  2059.  
  2060.   ; *** ENGINEERING Parameters ***
  2061.   KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
  2062.   Body = ActiveBody ModuleTag_02
  2063.     MaxHealth       = 100.0
  2064.     InitialHealth   = 100.0
  2065.   End
  2066.  
  2067. ; ---- begin Projectile death behaviors
  2068.   Behavior = InstantDeathBehavior DeathModuleTag_01
  2069.     DeathTypes = NONE +DETONATED
  2070.     ; we detonated normally.
  2071.     ; no FX, just quiet destroy ourselves
  2072.   End
  2073.   Behavior = InstantDeathBehavior DeathModuleTag_02
  2074.     DeathTypes = NONE +LASERED
  2075.     ; shot down by laser.
  2076.     FX         = FX_GenericMissileDisintegrate
  2077.     OCL        = OCL_GenericMissileDisintegrate
  2078.   End
  2079.   Behavior = InstantDeathBehavior DeathModuleTag_03
  2080.     DeathTypes = ALL -LASERED -DETONATED
  2081.     ; shot down by nonlaser.
  2082.     FX         = FX_GenericMissileDeath
  2083.   End
  2084. ; ---- end Projectile death behaviors
  2085.  
  2086.   Behavior = PhysicsBehavior ModuleTag_07
  2087.     Mass = 1
  2088.   End
  2089.   Behavior = MissileAIUpdate ModuleTag_08
  2090.     TryToFollowTarget     = Yes 
  2091.     FuelLifetime          = 10000
  2092.     InitialVelocity       = 75                ; in dist/sec
  2093.     IgnitionDelay         = 30
  2094.     IgnitionFX            = FX_JetMissileIgnition
  2095.   End
  2096.   Locomotor = SET_NORMAL RaptorJetMissileLocomotor
  2097.  
  2098.   Geometry = Sphere
  2099.   GeometryIsSmall = Yes
  2100.   GeometryMajorRadius = 1.0
  2101.  
  2102. End
  2103.  
  2104. ;------------------------------------------------------------------------------
  2105. Object StealthJetMissile
  2106.  
  2107.   ; *** ART Parameters ***
  2108.   Draw = W3DModelDraw ModuleTag_01
  2109.     OkToChangeModelColor = Yes
  2110.     DefaultConditionState
  2111.       Model = AVStealth_M
  2112.     End
  2113.   End
  2114.  
  2115.   ; ***DESIGN parameters ***
  2116.   DisplayName       = OBJECT:Missile
  2117.   EditorSorting     = SYSTEM
  2118.   VisionRange       = 0.0  
  2119.  
  2120.   ; *** ENGINEERING Parameters ***
  2121.   KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
  2122.   Body = ActiveBody ModuleTag_02
  2123.     MaxHealth       = 100.0
  2124.     InitialHealth   = 100.0
  2125.   End
  2126.  
  2127. ; ---- begin Projectile death behaviors
  2128.   Behavior = InstantDeathBehavior DeathModuleTag_01
  2129.     DeathTypes = NONE +DETONATED
  2130.     ; we detonated normally.
  2131.     ; no FX, just quiet destroy ourselves
  2132.   End
  2133.   Behavior = InstantDeathBehavior DeathModuleTag_02
  2134.     DeathTypes = NONE +LASERED
  2135.     ; shot down by laser.
  2136.     FX         = FX_GenericMissileDisintegrate
  2137.     OCL        = OCL_GenericMissileDisintegrate
  2138.   End
  2139.   Behavior = InstantDeathBehavior DeathModuleTag_03
  2140.     DeathTypes = ALL -LASERED -DETONATED
  2141.     ; shot down by nonlaser.
  2142.     FX         = FX_GenericMissileDeath
  2143.   End
  2144. ; ---- end Projectile death behaviors
  2145.  
  2146.   Behavior = PhysicsBehavior ModuleTag_07
  2147.     Mass = 1
  2148.   End
  2149.   Behavior = MissileAIUpdate ModuleTag_08
  2150.     TryToFollowTarget     = Yes 
  2151.     FuelLifetime          = 10000
  2152.     InitialVelocity       = 75                ; in dist/sec
  2153.     IgnitionDelay         = 30
  2154.     IgnitionFX            = FX_JetMissileIgnition
  2155.   End
  2156.   Locomotor = SET_NORMAL StealthJetMissileLocomotor
  2157.  
  2158.   Geometry = Sphere
  2159.   GeometryIsSmall = Yes
  2160.   GeometryMajorRadius = 1.0
  2161.  
  2162. End
  2163.  
  2164. ;------------------------------------------------------------------------------
  2165. Object AmericaJetB52
  2166.  
  2167.   ; *** ART Parameters ***
  2168.   Draw = W3DModelDraw ModuleTag_01
  2169.     DefaultConditionState
  2170.       Model = AVBomber
  2171.       ParticleSysBone = Engine01 JetBlackTrailThin
  2172.       ParticleSysBone = Engine02 JetBlackTrailThin
  2173.       ParticleSysBone = Engine03 JetBlackTrailThin
  2174.       ParticleSysBone = Engine04 JetBlackTrailThin
  2175.       ParticleSysBone = WingTip01 JetContrailThin
  2176.       ParticleSysBone = WingTip02 JetContrailThin
  2177.     End
  2178.     ConditionState = DAMAGED
  2179.       Model = AVBomber_D
  2180.       ParticleSysBone = Smoke01 JetFireLarge
  2181.       ParticleSysBone = Smoke02 JetFireLarge
  2182.       ParticleSysBone = Engine01 JetBlackTrailThin
  2183.       ParticleSysBone = Engine02 JetBlackTrailThin
  2184.       ParticleSysBone = Engine03 JetBlackTrailThin
  2185.       ParticleSysBone = Engine04 JetBlackTrailThin
  2186.       ParticleSysBone = Smoke01 JetSmokeLarge
  2187.       ParticleSysBone = Smoke02 JetSmokeLarge
  2188.     End
  2189.     ConditionState = REALLYDAMAGED
  2190.       Model = AVBomber_D
  2191.       ParticleSysBone = Smoke01 JetFireLarge
  2192.       ParticleSysBone = Smoke02 JetFireLarge
  2193.       ParticleSysBone = Engine01 JetBlackTrailThin
  2194.       ParticleSysBone = Engine02 JetBlackTrailThin
  2195.       ParticleSysBone = Engine03 JetBlackTrailThin
  2196.       ParticleSysBone = Engine04 JetBlackTrailThin
  2197.       ParticleSysBone = Smoke01 JetSmokeLarge
  2198.       ParticleSysBone = Smoke02 JetSmokeLarge
  2199.     End
  2200.     ConditionState = RUBBLE
  2201.       Model = AVBomber_D1
  2202.       ParticleSysBone = Smoke01 JetFireLarge
  2203.       ParticleSysBone = Smoke02 JetFireLarge
  2204.       ParticleSysBone = Smoke01 JetSmokeLarge
  2205.       ParticleSysBone = Smoke02 JetSmokeLarge
  2206.     End
  2207.     OkToChangeModelColor = Yes
  2208.   End
  2209.   
  2210.   Draw = W3DModelDraw ModuleTag_02
  2211.     DefaultConditionState
  2212.       Model           = AVBomber_A2U
  2213.       Animation       = AVBomber_A2K.AVBomber_A2
  2214.       AnimationMode   = MANUAL
  2215.       Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
  2216.     End
  2217.     ConditionState = DOOR_1_OPENING
  2218.       Animation       = AVBomber_A2K.AVBomber_A2
  2219.       AnimationMode   = ONCE
  2220.       Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
  2221.     End
  2222.     ConditionState = DOOR_1_CLOSING
  2223.       Animation       = AVBomber_A2K.AVBomber_A2
  2224.       AnimationMode   = ONCE_BACKWARDS
  2225.       Flags           = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES
  2226.     End
  2227.  
  2228.     ConditionState = REALLYDAMAGED
  2229.       Model           = AVBomber_A2DU
  2230.       Animation       = AVBomber_A2K.AVBomber_A2
  2231.       AnimationMode   = MANUAL
  2232.       Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
  2233.     End
  2234.     ConditionState = DOOR_1_OPENING REALLYDAMAGED
  2235.       Model           = AVBomber_A2DU
  2236.       Animation       = AVBomber_A2K.AVBomber_A2
  2237.       AnimationMode   = ONCE
  2238.       Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
  2239.     End
  2240.     ConditionState = DOOR_1_CLOSING REALLYDAMAGED
  2241.       Model           = AVBomber_A2DU
  2242.       Animation       = AVBomber_A2K.AVBomber_A2
  2243.       AnimationMode   = ONCE_BACKWARDS
  2244.       Flags           = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES
  2245.     End
  2246.   End
  2247.  
  2248.   ; ***DESIGN parameters ***
  2249.   DisplayName         = OBJECT:B52
  2250.   EditorSorting       = VEHICLE
  2251.   Side                = America
  2252.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  2253.   VisionRange         = 0.0 
  2254.   ArmorSet
  2255.     Conditions      = None
  2256.     Armor           = AirplaneArmor
  2257.     DamageFX        = TankDamageFX
  2258.   End
  2259.   CommandSet        = Command_ScriptedTransportDrops
  2260.  
  2261.   ; *** AUDIO Parameters ***
  2262.   SoundAmbient = B52AmbientLoop
  2263.   SoundAmbientRubble    = NoSound
  2264.  
  2265.   ; *** ENGINEERING Parameters ***
  2266.   RadarPriority = UNIT
  2267.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK  VEHICLE SCORE TRANSPORT AIRCRAFT IGNORED_IN_GUI
  2268.   Body = ActiveBody ModuleTag_03
  2269.     MaxHealth       = 1000.0
  2270.     InitialHealth   = 1000.0
  2271.   End
  2272.  
  2273.   ExperienceValue     = 50 50 50 50  ; Experience point value at each level
  2274.  
  2275.   ;SCRIPTED SUPPORT: These special powers are triggered directly 
  2276.   ;from the transport without creating a transport. This is done 
  2277.   ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
  2278.   ;which also prevents creating the payload transport.
  2279.   Behavior    = OCLSpecialPower ModuleTag_04
  2280.     SpecialPowerTemplate = SuperweaponDaisyCutter  ;@@KRIS@@
  2281.     OCL                  = SUPERWEAPON_DaisyCutter
  2282.     CreateLocation       = USE_OWNER_OBJECT
  2283.   End
  2284.   Behavior    = OCLSpecialPower ModuleTag_05
  2285.     SpecialPowerTemplate = SuperweaponParadropAmerica
  2286.     UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
  2287.     UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
  2288.     OCL                  = SUPERWEAPON_Paradrop1
  2289.     CreateLocation       = USE_OWNER_OBJECT
  2290.   End 
  2291.   Behavior    = OCLSpecialPower ModuleTag_06
  2292.     SpecialPowerTemplate = SuperweaponCarpetBomb
  2293.     OCL                  = SUPERWEAPON_CarpetBomb
  2294.     CreateLocation       = USE_OWNER_OBJECT
  2295.   End 
  2296.    
  2297.   Behavior = PhysicsBehavior ModuleTag_07
  2298.     Mass = 500.0
  2299.   End
  2300.  
  2301.   Behavior = DeliverPayloadAIUpdate ModuleTag_08
  2302.     DoorDelay         = 500
  2303.     MaxAttempts       = 4
  2304.     DropOffset        = X:0 Y:0 Z:-10
  2305.     DropDelay         = 300     ; time in between each item dropped (if more than one)
  2306.     PutInContainer    = AmericaParachute
  2307.     DeliveryDistance  = 150
  2308.   End
  2309.   Locomotor = SET_NORMAL B52Locomotor
  2310.  
  2311.   Behavior = TransportContain ModuleTag_09
  2312.     Slots                       = 100                     ; hey, it's a BIG transport
  2313.     ScatterNearbyOnExit         = No
  2314.     OrientLikeContainerOnExit   = Yes
  2315.     KeepContainerVelocityOnExit = Yes
  2316.     ExitPitchRate               = 30
  2317.     ExitBone                    = WeaponA01
  2318.     AllowInsideKindOf           = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE
  2319.     DoorOpenTime                = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
  2320.     NumberOfExitPaths           = 0
  2321.     DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
  2322.   End
  2323.     
  2324.   Behavior                          = JetSlowDeathBehavior ModuleTag_10
  2325.     DestructionDelay                = 2000 
  2326.     RollRate                        = 0.0
  2327.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  2328.     PitchRate                       = 0
  2329.     FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  2330.     FXInitialDeath                  = FX_JetBigDeathInitial
  2331.     OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
  2332.     DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
  2333.     OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
  2334.     FXSecondary                     = FX_BigPlaneDeath
  2335. ;   FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  2336. ;   OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
  2337. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  2338.   End
  2339.  
  2340.   Behavior = TransitionDamageFX ModuleTag_11
  2341.     DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  2342.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  2343.   End
  2344.  
  2345.   Geometry = Box
  2346.   GeometryIsSmall = No
  2347.   GeometryMajorRadius = 60.0
  2348.   GeometryMinorRadius = 10.0
  2349.   GeometryHeight = 10.0
  2350.   Shadow = SHADOW_VOLUME
  2351.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  2352.  
  2353. End
  2354.  
  2355.  
  2356. ;------------------------------------------------------------------------------
  2357. Object CINE_USA08_AmericaJetB52
  2358.  
  2359.   ; *** ART Parameters ***
  2360.   Draw = W3DModelDraw ModuleTag_01
  2361.     DefaultConditionState
  2362.       Model = AVBomber
  2363.       ParticleSysBone = Engine01 JetBlackTrailThin
  2364.       ParticleSysBone = Engine02 JetBlackTrailThin
  2365.       ParticleSysBone = Engine03 JetBlackTrailThin
  2366.       ParticleSysBone = Engine04 JetBlackTrailThin
  2367.       ParticleSysBone = WingTip01 JetContrailThin
  2368.       ParticleSysBone = WingTip02 JetContrailThin
  2369.     End
  2370.     ConditionState = DAMAGED
  2371.       Model = AVBomber_D
  2372.       ParticleSysBone = Smoke01 JetFireLarge
  2373.       ParticleSysBone = Smoke02 JetFireLarge
  2374.       ParticleSysBone = Engine01 JetBlackTrailThin
  2375.       ParticleSysBone = Engine02 JetBlackTrailThin
  2376.       ParticleSysBone = Engine03 JetBlackTrailThin
  2377.       ParticleSysBone = Engine04 JetBlackTrailThin
  2378.       ParticleSysBone = Smoke01 JetSmokeLarge
  2379.       ParticleSysBone = Smoke02 JetSmokeLarge
  2380.     End
  2381.     ConditionState = REALLYDAMAGED
  2382.       Model = AVBomber_D
  2383.       ParticleSysBone = Smoke01 JetFireLarge
  2384.       ParticleSysBone = Smoke02 JetFireLarge
  2385.       ParticleSysBone = Engine01 JetBlackTrailThin
  2386.       ParticleSysBone = Engine02 JetBlackTrailThin
  2387.       ParticleSysBone = Engine03 JetBlackTrailThin
  2388.       ParticleSysBone = Engine04 JetBlackTrailThin
  2389.       ParticleSysBone = Smoke01 JetSmokeLarge
  2390.       ParticleSysBone = Smoke02 JetSmokeLarge
  2391.     End
  2392.     ConditionState = RUBBLE
  2393.       Model = AVBomber_D1
  2394.       ParticleSysBone = Smoke01 JetFireLarge
  2395.       ParticleSysBone = Smoke02 JetFireLarge
  2396.       ParticleSysBone = Smoke01 JetSmokeLarge
  2397.       ParticleSysBone = Smoke02 JetSmokeLarge
  2398.     End
  2399.     OkToChangeModelColor = Yes
  2400.   End
  2401.   
  2402.   Draw = W3DModelDraw ModuleTag_02
  2403.     DefaultConditionState
  2404.       Model           = AVBomber_A2U
  2405.       Animation       = AVBomber_A2K.AVBomber_A2
  2406.       AnimationMode   = MANUAL
  2407.       Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
  2408.     End
  2409.     ConditionState = DOOR_1_OPENING
  2410.       Animation       = AVBomber_A2K.AVBomber_A2
  2411.       AnimationMode   = ONCE
  2412.       Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
  2413.     End
  2414.     ConditionState = DOOR_1_CLOSING
  2415.       Animation       = AVBomber_A2K.AVBomber_A2
  2416.       AnimationMode   = ONCE_BACKWARDS
  2417.       Flags           = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES
  2418.     End
  2419.  
  2420.     ConditionState = REALLYDAMAGED
  2421.       Model           = AVBomber_A2DU
  2422.       Animation       = AVBomber_A2K.AVBomber_A2
  2423.       AnimationMode   = MANUAL
  2424.       Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
  2425.     End
  2426.     ConditionState = DOOR_1_OPENING REALLYDAMAGED
  2427.       Model           = AVBomber_A2DU
  2428.       Animation       = AVBomber_A2K.AVBomber_A2
  2429.       AnimationMode   = ONCE
  2430.       Flags           = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES
  2431.     End
  2432.     ConditionState = DOOR_1_CLOSING REALLYDAMAGED
  2433.       Model           = AVBomber_A2DU
  2434.       Animation       = AVBomber_A2K.AVBomber_A2
  2435.       AnimationMode   = ONCE_BACKWARDS
  2436.       Flags           = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES
  2437.     End
  2438.   End
  2439.  
  2440.   ; ***DESIGN parameters ***
  2441.   DisplayName         = OBJECT:B52
  2442.   EditorSorting       = VEHICLE
  2443.   Side                = America
  2444.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  2445.   VisionRange         = 0.0 
  2446.   ArmorSet
  2447.     Conditions      = None
  2448.     Armor           = AirplaneArmor
  2449.     DamageFX        = TankDamageFX
  2450.   End
  2451.   CommandSet        = Command_ScriptedTransportDrops
  2452.  
  2453.   ; *** AUDIO Parameters ***
  2454.   SoundAmbient = B52AmbientLoop
  2455.   SoundAmbientRubble    = NoSound
  2456.  
  2457.   ; *** ENGINEERING Parameters ***
  2458.   RadarPriority = UNIT
  2459.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK  VEHICLE SCORE TRANSPORT AIRCRAFT IGNORED_IN_GUI
  2460.   Body = ActiveBody ModuleTag_03
  2461.     MaxHealth       = 1000.0
  2462.     InitialHealth   = 1000.0
  2463.   End
  2464.  
  2465.   ExperienceValue     = 50 50 50 50  ; Experience point value at each level
  2466.  
  2467.   ;SCRIPTED SUPPORT: These special powers are triggered directly 
  2468.   ;from the transport without creating a transport. This is done 
  2469.   ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
  2470.   ;which also prevents creating the payload transport.
  2471.   Behavior    = OCLSpecialPower ModuleTag_04
  2472.     SpecialPowerTemplate = SuperweaponDaisyCutter  ;@@KRIS@@
  2473.     OCL                  = SUPERWEAPON_DaisyCutter
  2474.     CreateLocation       = USE_OWNER_OBJECT
  2475.   End
  2476.   Behavior    = OCLSpecialPower ModuleTag_05
  2477.     SpecialPowerTemplate = SuperweaponParadropAmerica
  2478.     UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
  2479.     UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
  2480.     OCL                  = SUPERWEAPON_Paradrop1
  2481.     CreateLocation       = USE_OWNER_OBJECT
  2482.   End 
  2483.   Behavior    = OCLSpecialPower ModuleTag_06
  2484.     SpecialPowerTemplate = SuperweaponCarpetBomb
  2485.     OCL                  = SUPERWEAPON_CarpetBomb
  2486.     CreateLocation       = USE_OWNER_OBJECT
  2487.   End 
  2488.    
  2489.   Behavior = PhysicsBehavior ModuleTag_07
  2490.     Mass = 500.0
  2491.   End
  2492.  
  2493.   Behavior = DeliverPayloadAIUpdate ModuleTag_08
  2494.     DoorDelay         = 500
  2495.     MaxAttempts       = 4
  2496.     DropOffset        = X:0 Y:0 Z:-10
  2497.     DropDelay         = 300     ; time in between each item dropped (if more than one)
  2498.     PutInContainer    = AmericaParachute
  2499.     DeliveryDistance  = 150
  2500.   End
  2501.   Locomotor = SET_NORMAL CINE_USA08_B52Locomotor
  2502.  
  2503.   Behavior = TransportContain ModuleTag_09
  2504.     Slots                       = 100                     ; hey, it's a BIG transport
  2505.     ScatterNearbyOnExit         = No
  2506.     OrientLikeContainerOnExit   = Yes
  2507.     KeepContainerVelocityOnExit = Yes
  2508.     ExitPitchRate               = 30
  2509.     ExitBone                    = WeaponA01
  2510.     AllowInsideKindOf           = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE
  2511.     DoorOpenTime                = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
  2512.     NumberOfExitPaths           = 0
  2513.     DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
  2514.   End
  2515.     
  2516.   Behavior                          = JetSlowDeathBehavior ModuleTag_10
  2517.     DestructionDelay                = 2000 
  2518.     RollRate                        = 0.0
  2519.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  2520.     PitchRate                       = 0
  2521.     FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  2522.     FXInitialDeath                  = FX_JetBigDeathInitial
  2523.     OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
  2524.     DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
  2525.     OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
  2526.     FXSecondary                     = FX_BigPlaneDeath
  2527. ;   FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  2528. ;   OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
  2529. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  2530.   End
  2531.  
  2532.   Behavior = TransitionDamageFX ModuleTag_11
  2533.     DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  2534.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  2535.   End
  2536.  
  2537.   Geometry = Box
  2538.   GeometryIsSmall = No
  2539.   GeometryMajorRadius = 60.0
  2540.   GeometryMinorRadius = 10.0
  2541.   GeometryHeight = 10.0
  2542.   Shadow = SHADOW_VOLUME
  2543.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  2544.  
  2545. End
  2546.  
  2547.  
  2548. ;------------------------------------------------------------------------------
  2549. Object CarpetBomb
  2550.  
  2551.   ; *** ART Parameters ***
  2552.   Draw = W3DModelDraw ModuleTag_01
  2553.     DefaultConditionState
  2554.       Model = EXCarptBmb
  2555.     End
  2556.   End
  2557.  
  2558.   ; ***DESIGN parameters ***
  2559.   DisplayName      = OBJECT:CarpetBomb
  2560.   Side = America
  2561.   EditorSorting   = SYSTEM
  2562.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  2563.   VisionRange = 300.0  
  2564.   ArmorSet
  2565.     Conditions      = None
  2566.     Armor           = ProjectileArmor
  2567.     DamageFX        = None
  2568.   End
  2569.  
  2570.   ; *** AUDIO Parameters ***
  2571.   SoundFallingFromPlane = DaisyCutterWeapon
  2572.  
  2573.   ; *** ENGINEERING Parameters ***
  2574.   KindOf            = PROJECTILE
  2575.   Body = ActiveBody ModuleTag_02
  2576.     MaxHealth       = 100.0
  2577.     InitialHealth   = 100.0
  2578.   End
  2579.  
  2580.   Behavior = AIUpdateInterface ModuleTag_03
  2581.   End
  2582.   Locomotor = SET_NORMAL None
  2583.  
  2584.   Behavior = PhysicsBehavior ModuleTag_04
  2585.  
  2586.     Mass                  = 75.0
  2587.     AerodynamicFriction   = 1     ; this is now friction-per-sec
  2588.     ForwardFriction       = 33    ; this is now friction-per-sec
  2589.     CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
  2590.   End
  2591.  
  2592.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
  2593.     DeathWeapon   = CarpetBombWeapon
  2594.     StartsActive  = Yes
  2595.   End
  2596.  
  2597.   Behavior = HeightDieUpdate ModuleTag_06
  2598.     TargetHeight = 1.0
  2599.     TargetHeightIncludesStructures = No
  2600.   End
  2601.  
  2602.   Behavior = SpecialPowerCompletionDie ModuleTag_07
  2603.     SpecialPowerTemplate = SuperweaponCarpetBomb
  2604.   End
  2605.  
  2606.   Behavior = FXListDie ModuleTag_08
  2607.     DeathFX = FX_CarpetBomb
  2608.   End
  2609.   Behavior = DestroyDie ModuleTag_09
  2610.     ;nothing
  2611.   End
  2612.  
  2613. End
  2614.  
  2615. ;------------------------------------------------------------------------------
  2616. Object AuroraBomb
  2617.  
  2618.   ; *** ART Parameters ***
  2619.   Draw = W3DModelDraw ModuleTag_01
  2620.     DefaultConditionState
  2621.       Model = EXCarptBmb
  2622.     End
  2623.   End
  2624.  
  2625.   ; ***DESIGN parameters ***
  2626.   Side = America
  2627.   EditorSorting     = SYSTEM
  2628.   ArmorSet
  2629.     Conditions      = None
  2630.     Armor           = ProjectileArmor
  2631.     DamageFX        = None
  2632.   End
  2633.   VisionRange       = 0.0  
  2634.  
  2635.   ; *** AUDIO Parameters ***
  2636.  
  2637.   ; *** ENGINEERING Parameters ***
  2638.   KindOf            = PROJECTILE
  2639.   Body              = ActiveBody ModuleTag_02
  2640.     MaxHealth       = 100.0
  2641.     InitialHealth   = 100.0
  2642.   End
  2643.  
  2644.   Behavior              = PhysicsBehavior ModuleTag_03
  2645.     Mass                = 75.0
  2646.     AerodynamicFriction = 2     ; this is now friction-per-sec
  2647.     ForwardFriction     = 2     ; this is now friction-per-sec
  2648.     CenterOfMassOffset  = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
  2649.   End
  2650.  
  2651.   ; it may seem odd to have a "bomb" with a Locomotor, especially a Thrust locomotor,
  2652.   ; but there's a good reason: the Aurora moves so freakin' fast that it's really
  2653.   ; hard to (1) find a reliable drop location, and (2) actually get it close enough to
  2654.   ; that location. So we cheat: just get fairly close, then let the "bomb" do a little (subtle)
  2655.   ; navigation on the way down. This works pretty well and actually looks much better
  2656.   ; than you might think. (srj)
  2657.   Behavior = MissileAIUpdate ModuleTag_04
  2658.     TryToFollowTarget   = No 
  2659.     FuelLifetime        = 0
  2660.     IgnitionDelay       = 0
  2661.     InitialVelocity     = 0                ; in dist/sec
  2662.     DistanceToTravelBeforeTurning = 0
  2663.     DistanceToTargetBeforeDiving  = 0
  2664.   End
  2665.   Locomotor = SET_NORMAL AuroraBombLocomotor   ; yes, that's right.
  2666.  
  2667.   Geometry = Sphere
  2668.   GeometryIsSmall = Yes
  2669.   GeometryMajorRadius = 2.0
  2670.  
  2671. End
  2672.  
  2673. ;------------------------------------------------------------------------------
  2674. ; this is the "standard" mine used for building upgrades
  2675. Object ChinaStandardMine
  2676.  
  2677.   ; *** ART Parameters ***
  2678.   Draw = W3DModelDraw ModuleTag_01
  2679.     OkToChangeModelColor = Yes
  2680.     ; NOTE: ParticleSysBone doesn't work correctly with DefaultConditionState!
  2681.     ; fix someday! (srj)
  2682.     ConditionState = NONE
  2683.       Model           = EXAMineGroup
  2684.       ParticleSysBone = Mine01 MineFX
  2685.       ParticleSysBone = Mine02 MineFX
  2686.       ParticleSysBone = Mine03 MineFX
  2687.       ParticleSysBone = Mine04 MineFX
  2688.       ParticleSysBone = Mine05 MineFX
  2689.       ParticleSysBone = Mine06 MineFX
  2690.       ParticleSysBone = Mine07 MineFX
  2691.       ParticleSysBone = Mine08 MineFX
  2692.     End
  2693.     ConditionState = RUBBLE
  2694.       Model = None
  2695.     End
  2696.   End
  2697.  
  2698.   ; ***DESIGN parameters ***
  2699.   DisplayName       = OBJECT:StructureMine
  2700.   EditorSorting     = MISC_MAN_MADE
  2701.   KindOf            = STICK_TO_TERRAIN_SLOPE IMMOBILE MINE NO_HEAL_ICON
  2702.   ArmorSet
  2703.     Conditions      = None
  2704.     Armor           = MineArmor
  2705.     DamageFX        = None
  2706.   End
  2707.  
  2708.   ; *** ENGINEERING Parameters ***  
  2709.   Body = ActiveBody ModuleTag_02
  2710.     MaxHealth       = 100.0
  2711.     InitialHealth   = 100.0
  2712.   End
  2713.   
  2714.   Behavior = StealthUpdate ModuleTag_03
  2715.     StealthDelay                = 0 ; msec
  2716.     StealthForbiddenConditions  = NONE
  2717.     FriendlyOpacityMin          = 0.0%
  2718.     FriendlyOpacityMax          = 0.0%
  2719.     InnateStealth               = Yes
  2720.     OrderIdleEnemiesToAttackMeUponReveal  = No
  2721.   End
  2722.  
  2723.   ; this is a misleading name, since it's really single-Mine Behavior...
  2724.   Behavior = MinefieldBehavior     ModuleTag_04
  2725.     DetonationWeapon            = StructureMineWeapon        ; what happens when we detonate
  2726.     DetonatedBy                 = ENEMIES NEUTRAL
  2727.     ; we no longer want the "scoot" behavior. it looks funky with current art. (srj)
  2728.     ;ScootFromStartingPointTime  = 500
  2729.     RepeatDetonateMoveThresh    = 5.0
  2730.     NumVirtualMines             = 8
  2731.     Regenerates                 = Yes            ; Standard mines DO regenerate.
  2732.     StopsRegenAfterCreatorDies  = Yes
  2733.     DegenPercentPerSecondAfterCreatorDies = 3.33%  ; take about 30 seconds to die.
  2734.   End
  2735.  
  2736.   ; Standard mines DO heal.
  2737.   Behavior = AutoHealBehavior ModuleTag_05
  2738.     StartsActive      = Yes
  2739.     HealingAmount     = 2
  2740.     HealingDelay      = 5000 ; msec
  2741.     StartHealingDelay = 15000 ; wait this long after we are damaged to start healing
  2742.   End
  2743.  
  2744.   Geometry            = CYLINDER
  2745.   GeometryMajorRadius = 30.0
  2746.   GeometryHeight      = 1.0
  2747.   GeometryIsSmall     = No
  2748.   
  2749. End
  2750.  
  2751. ;------------------------------------------------------------------------------
  2752. Object ChinaClusterMine
  2753.  
  2754.   ; *** ART Parameters ***
  2755.   Draw = W3DModelDraw ModuleTag_01
  2756.     OkToChangeModelColor = Yes
  2757.     ; NOTE: ParticleSysBone doesn't work correctly with DefaultConditionState!
  2758.     ; fix someday! (srj)
  2759.     ConditionState = NONE
  2760.       Model = EXAMineGroup
  2761.       ParticleSysBone = Mine01 MineFX
  2762.       ParticleSysBone = Mine02 MineFX
  2763.       ParticleSysBone = Mine03 MineFX
  2764.       ParticleSysBone = Mine04 MineFX
  2765.       ParticleSysBone = Mine05 MineFX
  2766.       ParticleSysBone = Mine06 MineFX
  2767.       ParticleSysBone = Mine07 MineFX
  2768.       ParticleSysBone = Mine08 MineFX
  2769.     End
  2770.     ConditionState = RUBBLE
  2771.       Model = None
  2772.     End
  2773.   End
  2774.  
  2775.   ; ***DESIGN parameters ***
  2776.   DisplayName       = OBJECT:ClusterMine
  2777.   EditorSorting     = MISC_MAN_MADE
  2778.   KindOf            = STICK_TO_TERRAIN_SLOPE IMMOBILE MINE NO_HEAL_ICON
  2779.   ArmorSet
  2780.     Conditions      = None
  2781.     Armor           = MineArmor
  2782.     DamageFX        = None
  2783.   End
  2784.  
  2785.   ; *** ENGINEERING Parameters ***  
  2786.   Body = ActiveBody ModuleTag_02
  2787.     MaxHealth       = 100.0
  2788.     InitialHealth   = 100.0
  2789.   End
  2790.   
  2791.   Behavior = StealthUpdate ModuleTag_03
  2792.     StealthDelay                = 0                  ; msec
  2793.     StealthForbiddenConditions  = NONE
  2794.     FriendlyOpacityMin          = 0.0%
  2795.     FriendlyOpacityMax          = 0.0%
  2796.     InnateStealth               = Yes
  2797.     OrderIdleEnemiesToAttackMeUponReveal  = No
  2798.   End
  2799.  
  2800.   ; this is a misleading name, since it's really single-Mine Behavior...
  2801.   Behavior = MinefieldBehavior     ModuleTag_04
  2802.     DetonationWeapon            = ClusterMineWeapon        ; what happens when we detonate
  2803.     DetonatedBy                 = ENEMIES NEUTRAL
  2804.     ScootFromStartingPointTime  = 1000
  2805.     RepeatDetonateMoveThresh    = 5.0
  2806.     NumVirtualMines             = 8
  2807.     Regenerates                 = No            ; Cluster mines do not regenerate.
  2808.   End
  2809.  
  2810. ; Cluster mines do not heal.
  2811. ;  Behavior = AutoHealBehavior ModuleTag_05
  2812. ;    StartsActive      = Yes
  2813. ;    HealingAmount     = 2
  2814. ;    HealingDelay      = 1000 ; msec
  2815. ;    StartHealingDelay = 15000 ; wait this long after we are damaged to start healing
  2816. ;  End
  2817.  
  2818.   Geometry            = CYLINDER
  2819.   GeometryMajorRadius = 30.0
  2820.   GeometryHeight      = 1.0
  2821.   GeometryIsSmall     = No
  2822.   
  2823. End
  2824.  
  2825. ;------------------------------------------------------------------------------
  2826. Object ClusterMinesBomb
  2827.  
  2828.   ; *** ART Parameters ***
  2829.   Draw = W3DModelDraw ModuleTag_01
  2830.     OkToChangeModelColor = Yes
  2831.     DefaultConditionState
  2832.       Model         = EXAMine_A
  2833.     End
  2834.   End
  2835.  
  2836.   ; ***DESIGN parameters ***
  2837.   DisplayName           = OBJECT:ClusterMinesBomb
  2838.   Side                  = China
  2839.   EditorSorting         = SYSTEM
  2840.   TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  2841.   VisionRange           = 0
  2842.   ArmorSet
  2843.     Conditions      = None
  2844.     Armor           = ProjectileArmor
  2845.     DamageFX        = None
  2846.   End
  2847.  
  2848.   ; *** AUDIO Parameters ***
  2849.   
  2850.   ; *** ENGINEERING Parameters ***
  2851.   KindOf            = PROJECTILE  
  2852.   Body = ActiveBody ModuleTag_02
  2853.     MaxHealth       = 100.0
  2854.     InitialHealth   = 100.0
  2855.   End
  2856.  
  2857.   ; alas, this DOES need ai...
  2858.   Behavior = AIUpdateInterface ModuleTag_03
  2859.   End
  2860.  
  2861.   Locomotor = SET_NORMAL None
  2862.  
  2863.   Behavior = PhysicsBehavior ModuleTag_04
  2864.     Mass                  = 75.0
  2865.     AerodynamicFriction   = 1     ; this is now friction-per-sec
  2866.     ForwardFriction       = 33    ; this is now friction-per-sec
  2867.     CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
  2868.   End
  2869.  
  2870.   Behavior = GenerateMinefieldBehavior ModuleTag_05
  2871.     MineName                = ChinaClusterMine
  2872.     DistanceAroundObject    = 80
  2873.     GenerateOnlyOnDeath     = Yes
  2874.     SmartBorder             = Yes
  2875.     SmartBorderSkipInterior = No
  2876.     AlwaysCircular          = Yes
  2877.     GenerationFX            = WeaponFX_ClusterMineImpact
  2878.   End
  2879.  
  2880.  
  2881.   Behavior = HeightDieUpdate ModuleTag_06
  2882.     TargetHeight = 60.0
  2883.     TargetHeightIncludesStructures = No
  2884.   End
  2885.  
  2886.   Behavior = DestroyDie ModuleTag_07
  2887.     ;nothing
  2888.   End
  2889.  
  2890.   Geometry = SPHERE                      ;Collision geometry
  2891.   GeometryMajorRadius = 1.0              ;Collision major radius
  2892.   GeometryMinorRadius = 1.0              ;Collision minor radius
  2893.   GeometryHeight = 1.0                   ;Height for geometry
  2894.   GeometryIsSmall = Yes                  ;Is small geometry
  2895.  
  2896. End
  2897.  
  2898.  
  2899. ;------------------------------------------------------------------------------
  2900. Object EMPPulseBomb
  2901.  
  2902.   ; *** ART Parameters ***
  2903.   Draw = W3DModelDraw ModuleTag_01
  2904.     OkToChangeModelColor = Yes
  2905.     DefaultConditionState
  2906.       Model         = EXAMine_A
  2907.     End
  2908.   End
  2909.  
  2910.   ; ***DESIGN parameters ***
  2911.   DisplayName           = OBJECT:EMPPulseBomb
  2912.   Side                  = China
  2913.   EditorSorting         = SYSTEM
  2914.   TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  2915.   VisionRange           = 0
  2916.   ArmorSet
  2917.     Conditions      = None
  2918.     Armor           = ProjectileArmor
  2919.     DamageFX        = None
  2920.   End
  2921.  
  2922.   ; *** AUDIO Parameters ***
  2923.   
  2924.   ; *** ENGINEERING Parameters ***
  2925.   KindOf            = PROJECTILE  
  2926.   Body = ActiveBody ModuleTag_02
  2927.     MaxHealth       = 100.0
  2928.     InitialHealth   = 100.0
  2929.   End
  2930.  
  2931.   ; alas, this DOES need ai...
  2932.   Behavior = AIUpdateInterface ModuleTag_03
  2933.   End
  2934.  
  2935.   Locomotor = SET_NORMAL None
  2936.  
  2937.   Behavior = PhysicsBehavior ModuleTag_04
  2938.     Mass                  = 75.0
  2939.     AerodynamicFriction   = 1     ; this is now friction-per-sec
  2940.     ForwardFriction       = 33    ; this is now friction-per-sec
  2941.     CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
  2942.   End
  2943.  
  2944.  
  2945.   Behavior = HeightDieUpdate ModuleTag_05
  2946.     TargetHeight = 15.0
  2947.     TargetHeightIncludesStructures = No
  2948.   End
  2949.  
  2950.   Behavior = CreateObjectDie ModuleTag_06
  2951.     CreationList = OCL_EMPPulseEffectSpheroids
  2952.   End
  2953.  
  2954.   Behavior = FXListDie ModuleTag_07
  2955.     DeathFX = WeaponFX_EMPPulseImpact
  2956.     OrientToObject = No
  2957.   End
  2958.  
  2959.   Behavior = DestroyDie ModuleTag_08
  2960.     ;nothing
  2961.   End
  2962.  
  2963.   Geometry = SPHERE                      ;Collision geometry
  2964.   GeometryMajorRadius = 1.0              ;Collision major radius
  2965.   GeometryMinorRadius = 1.0              ;Collision minor radius
  2966.   GeometryHeight = 1.0                   ;Height for geometry
  2967.   GeometryIsSmall = Yes                  ;Is small geometry
  2968.  
  2969. End
  2970.  
  2971.  
  2972.  
  2973. ;------------------------------------------------------------------------------
  2974. Object BlackMarketNuke
  2975.  
  2976.   ; *** ART Parameters ***
  2977.   Draw = W3DModelDraw ModuleTag_01
  2978.     OkToChangeModelColor = Yes
  2979.     DefaultConditionState
  2980.       Model = AVBomber_B
  2981.     End
  2982.   End
  2983.  
  2984.   ; ***DESIGN parameters ***
  2985.   DisplayName         = OBJECT:BlackMarketNuke
  2986.   Side                = GLA
  2987.   EditorSorting       = SYSTEM
  2988.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  2989.   ArmorSet
  2990.     Conditions        = None
  2991.     Armor             = ProjectileArmor
  2992.     DamageFX          = None
  2993.   End
  2994.  
  2995.   ; *** AUDIO Parameters ***
  2996.   
  2997.   ; *** ENGINEERING Parameters ***
  2998.   KindOf            = PROJECTILE
  2999.   Body = ActiveBody ModuleTag_02
  3000.     MaxHealth       = 100.0
  3001.     InitialHealth   = 100.0
  3002.   End
  3003.   
  3004.   Behavior = AIUpdateInterface ModuleTag_03
  3005.   End
  3006.  
  3007.   Locomotor = SET_NORMAL None
  3008.  
  3009.   Behavior = PhysicsBehavior ModuleTag_04
  3010.     Mass                  = 75.0
  3011.     AerodynamicFriction   = 1     ; this is now friction-per-sec
  3012.     ForwardFriction       = 33    ; this is now friction-per-sec
  3013.     CenterOfMassOffset    = 2     ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
  3014.   End
  3015.  
  3016.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
  3017.     DeathWeapon   = BlackMarketNukeWeapon
  3018.     StartsActive  = Yes
  3019.   End
  3020.  
  3021.   Behavior = HeightDieUpdate ModuleTag_06
  3022.     TargetHeight = 1.0
  3023.     TargetHeightIncludesStructures = No
  3024.   End
  3025.  
  3026.   Behavior = SpecialPowerCompletionDie ModuleTag_07
  3027.     SpecialPowerTemplate = SuperweaponBlackMarketNuke
  3028.   End
  3029.  
  3030.   Behavior = DestroyDie ModuleTag_08
  3031.     ;nothing
  3032.   End
  3033.  
  3034.   Behavior = FXListDie ModuleTag_09
  3035.     DeathFX = FX_NukeGLA
  3036.     OrientToObject = No
  3037.   End
  3038.  
  3039.   Geometry = Sphere
  3040.   GeometryIsSmall = Yes
  3041.   GeometryMajorRadius = 12.0
  3042.  
  3043. End
  3044.  
  3045. ;------------------------------------------------------------------------------
  3046. Object AnthraxBomb
  3047.  
  3048.   ; *** ART Parameters ***
  3049.   Draw = W3DModelDraw ModuleTag_01
  3050.     OkToChangeModelColor = Yes
  3051.     DefaultConditionState
  3052.       Model = AVBomber_B
  3053.     End
  3054.   End
  3055.  
  3056.   ; ***DESIGN parameters ***
  3057.   DisplayName         = OBJECT:AnthraxBomb
  3058.   Side                = GLA
  3059.   EditorSorting       = SYSTEM
  3060.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  3061.   VisionRange         = 300.0  
  3062.   ShroudClearingRange = 0
  3063.   ArmorSet
  3064.     Conditions      = None
  3065.     Armor           = ProjectileArmor
  3066.     DamageFX        = None
  3067.   End
  3068.  
  3069.   ; *** AUDIO Parameters ***
  3070.   SoundFallingFromPlane = DaisyCutterWeapon
  3071.     
  3072.   ; *** ENGINEERING Parameters ***
  3073.   KindOf            = PROJECTILE
  3074.   Body = ActiveBody ModuleTag_02
  3075.     MaxHealth       = 100.0
  3076.     InitialHealth   = 100.0
  3077.   End
  3078.   
  3079.   Behavior = AIUpdateInterface ModuleTag_03
  3080.   End
  3081.   Locomotor = SET_NORMAL None
  3082.  
  3083.   Behavior = PhysicsBehavior ModuleTag_04
  3084.     Mass                  = 75.0
  3085.     AerodynamicFriction   = 1  ; this is now friction-per-sec
  3086.     ForwardFriction       = 33     ; this is now friction-per-sec
  3087.     CenterOfMassOffset    = 2  ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
  3088.   End
  3089.  
  3090.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
  3091.     DeathWeapon   = AnthraxBombWeapon
  3092.     StartsActive  = Yes
  3093.   End
  3094.  
  3095.   Behavior = HeightDieUpdate ModuleTag_06
  3096.     TargetHeight = 40.0
  3097.     TargetHeightIncludesStructures = No
  3098.   End
  3099.  
  3100.   Behavior = SpecialPowerCompletionDie ModuleTag_07
  3101.     SpecialPowerTemplate = SuperweaponAnthraxBomb
  3102.   End
  3103.   Behavior = DestroyDie ModuleTag_08
  3104.     ;nothing
  3105.   End
  3106.  
  3107.    Behavior = FXListDie ModuleTag_09
  3108.     DeathFX = FX_AnthraxBomb
  3109.   End
  3110.  
  3111. ;  Geometry = Sphere
  3112.  ; GeometryIsSmall = Yes
  3113.   ;GeometryMajorRadius = 12.0
  3114.  
  3115. End
  3116.  
  3117. ;------------------------------------------------------------------------------
  3118. Object DaisyCutterBomb
  3119.  
  3120.   ; *** ART Parameters ***
  3121.   Draw = W3DModelDraw ModuleTag_01
  3122.     OkToChangeModelColor = Yes
  3123.     DefaultConditionState
  3124.       Model = AVBomber_B
  3125.     End
  3126.   End
  3127.  
  3128.   ; ***DESIGN parameters ***
  3129.   DisplayName         = OBJECT:DaisyCutterBomb
  3130.   EditorSorting       = SYSTEM
  3131.   TransportSlotCount  = 10                 ;how many "slots" we take in a transport (0 == not transportable)
  3132.   VisionRange         = 300.0  
  3133.   ShroudClearingRange = 0
  3134.   ArmorSet
  3135.     Conditions      = None
  3136.     Armor           = ProjectileArmor
  3137.     DamageFX        = None
  3138.   End
  3139.  
  3140.   ; *** AUDIO Parameters ***
  3141.   SoundFallingFromPlane = DaisyCutterWeapon
  3142.   
  3143.   ; *** ENGINEERING Parameters ***
  3144.   KindOf            = PROJECTILE
  3145.   Body = ActiveBody ModuleTag_02
  3146.     MaxHealth       = 100.0
  3147.     InitialHealth   = 100.0
  3148.   End
  3149.  
  3150.   Behavior = CreateObjectDie ModuleTag_03
  3151.     CreationList = OCL_DaisyCutterExplode
  3152.   End
  3153.   Behavior = FXListDie ModuleTag_04
  3154.     DeathFX = FX_DaisyCutterExplode
  3155.   End
  3156.   Behavior = DestroyDie ModuleTag_05
  3157.     ;nothing
  3158.   End
  3159.      
  3160.   Behavior = AIUpdateInterface ModuleTag_06
  3161.   End
  3162.   Locomotor = SET_NORMAL None
  3163.   Behavior = PhysicsBehavior ModuleTag_07
  3164.     Mass                = 75.0
  3165.     AerodynamicFriction = 1  ; this is now friction-per-sec
  3166.     ForwardFriction     = 33     ; this is now friction-per-sec
  3167.     CenterOfMassOffset  = 2  ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
  3168.   End
  3169.   Behavior = HeightDieUpdate ModuleTag_08
  3170.     TargetHeight = 50.0
  3171.     TargetHeightIncludesStructures = Yes
  3172.   End
  3173.  
  3174.   Behavior = SpecialPowerCompletionDie ModuleTag_09
  3175.     SpecialPowerTemplate = SuperweaponDaisyCutter
  3176.   End
  3177.  
  3178.   Geometry = Sphere
  3179.   GeometryIsSmall = Yes
  3180.   GeometryMajorRadius = 12.0
  3181.  
  3182. End
  3183.  
  3184. ;------------------------------------------------------------------------------
  3185. Object DaisyCutterGas
  3186.  
  3187.   ; *** ART Parameters ***
  3188. ;  Draw = W3DModelDraw
  3189. ;;    ConditionState      = NONE
  3190. ;      Model             = PMDumpst04
  3191. ;    End
  3192. ;  End
  3193.  
  3194.   ; *** DESIGN Parameters ***
  3195.  
  3196.   ; *** ENGINEERING Parameters ***
  3197.   KindOf = IMMOBILE
  3198.   Body                  = ActiveBody ModuleTag_01
  3199.     MaxHealth           = 1.0
  3200.     InitialHealth       = 1.0
  3201.   End
  3202.  
  3203.   Behavior = PhysicsBehavior ModuleTag_02
  3204.     Mass                = 150.0
  3205.     AerodynamicFriction = 7  ; this is now friction-per-sec
  3206.     ForwardFriction     = 200   ; this is now friction-per-sec
  3207.   End
  3208.   Behavior = HeightDieUpdate ModuleTag_03
  3209.     TargetHeight                     = 40.0
  3210.     TargetHeightIncludesStructures   = Yes
  3211.     DestroyAttachedParticlesAtHeight = 41.0   ; Hack, todo remove this
  3212.   End
  3213.   Behavior = SlowDeathBehavior ModuleTag_04
  3214.     DestructionDelay        = 1000
  3215.     DestructionDelayVariance = 100
  3216.     FX                  = INITIAL FX_DaisyCutterIgnite
  3217.     FX                  = FINAL   FX_DaisyCutterFinalExplosion
  3218.     Weapon              = MIDPOINT   DaisyCutterFlameWeapon    ; Just a spot of flame to light trees on fire
  3219.     Weapon              = FINAL   DaisyCutterDetonationWeapon
  3220.   End
  3221.  
  3222. End
  3223.  
  3224. ;------------------------------------------------------------------------------
  3225. Object NeutronMissile
  3226.  
  3227.   ; *** ART Parameters ***
  3228.   Draw               = W3DModelDraw ModuleTag_01
  3229.     OkToChangeModelColor = Yes
  3230.     ConditionState   = NONE
  3231.       Model          = NBNRocket
  3232.     End
  3233.     ConditionState   = DAMAGED REALLYDAMAGED RUBBLE
  3234.       Model          = NONE
  3235.     End
  3236.     
  3237.   End
  3238.  
  3239.   ; ***DESIGN parameters ***
  3240.   DisplayName        = OBJECT:NeutronMissile
  3241.   KindOf             = UNATTACKABLE
  3242.   EditorSorting      = SYSTEM
  3243.   VisionRange = 300.0  
  3244.   ShroudClearingRange = 0
  3245.   TransportSlotCount = 10
  3246.   ArmorSet
  3247.     Conditions       = None
  3248.     Armor            = ProjectileArmor
  3249.     DamageFX         = None
  3250.   End
  3251.  
  3252.   ; *** AUDIO Parameters ***
  3253.   ; SoundFallingFromPlane = DaisyCutterWeapon
  3254.     
  3255.   ; *** ENGINEERING Parameters ***
  3256.   Body = ActiveBody ModuleTag_02
  3257.     MaxHealth        = 99999999.0
  3258.     InitialHealth    = 99999999.0
  3259.   End
  3260.  
  3261.   Behavior = NeutronMissileUpdate ModuleTag_03
  3262.     DistanceToTravelBeforeTurning = 300       ; goes straight up a long ways first
  3263.     MaxTurnRate = 7200                        ; huge, since it turns off-camera
  3264.     ForwardDamping = 0.1
  3265.     RelativeSpeed = 2.0
  3266.     LaunchFX = FX_NeutronMissileLaunch
  3267.     IgnitionFX = FX_NeutronMissileIgnition
  3268.     TargetFromDirectlyAbove = 500      ; aim for an intermed spot directly above the target, so we come straight down onto it
  3269.     SpecialAccelFactor = 1
  3270.     SpecialSpeedTime = 1500
  3271.     SpecialSpeedHeight = 160
  3272.     SpecialJitterDistance = 0.4
  3273.     DeliveryDecalRadius = 210
  3274.     DeliveryDecal
  3275.       Texture           = SCCNuclearMissile_China
  3276.       Style             = SHADOW_ALPHA_DECAL
  3277.       OpacityMin        = 25%
  3278.       OpacityMax        = 50%
  3279.       OpacityThrobTime  = 500
  3280.       Color             = R:255 G:0 B:0 A:255 
  3281.       OnlyVisibleToOwningPlayer = Yes
  3282.     End
  3283.   End
  3284.  
  3285.   Behavior = HeightDieUpdate ModuleTag_04
  3286.     TargetHeight        = 100.0
  3287.     TargetHeightIncludesStructures = No
  3288.     OnlyWhenMovingDown  = Yes
  3289.     SnapToGroundOnDeath = Yes
  3290.     InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
  3291.   End
  3292.  
  3293.   Behavior = SpecialPowerCompletionDie ModuleTag_05
  3294.     SpecialPowerTemplate = SuperweaponNeutronMissile
  3295.   End
  3296.  
  3297.   Behavior = NeutronMissileSlowDeathBehavior ModuleTag_06
  3298.     DestructionDelay    = 3501
  3299.     ScorchMarkSize      = 320
  3300.     FXList              = FX_Nuke
  3301.     
  3302.     Blast1Enabled       = Yes
  3303.     Blast1Delay         = 580     ;in milliseconds
  3304.     Blast1ScorchDelay   = 100     ;in milliseconds
  3305.     Blast1InnerRadius   = 60.0    ;objects inside this get the full damage
  3306.     Blast1OuterRadius   = 60.0    ;objects inside this get some of the full damage
  3307.     Blast1MaxDamage     = 0.0     ;damage within inner radius of blast
  3308.     Blast1MinDamage     = 0.0     ;always do at least this much damage to objects
  3309.     Blast1ToppleSpeed   = 0.5     ;higher #'s topple faster
  3310.     Blast1PushForce     = 10.0    ;higher #'s push more
  3311.     
  3312.     Blast2Enabled       = Yes
  3313.     Blast2Delay         = 660    ;in milliseconds
  3314.     Blast2ScorchDelay   = 180     ;in milliseconds
  3315.     Blast2InnerRadius   = 90.0    ;objects inside this get the full damage
  3316.     Blast2OuterRadius   = 90.0    ;objects inside this get some of the full damage
  3317.     Blast2MaxDamage     = 0.0     ;damage within inner radius of blast
  3318.     Blast2MinDamage     = 0.0     ;always do at least this much damage to objects
  3319.     Blast2ToppleSpeed   = 0.45    ;higher #'s topple faster
  3320.     Blast2PushForce     = 8.0     ;higher #'s push more
  3321.     
  3322.     Blast3Enabled       = Yes
  3323.     Blast3Delay         = 720    ;in milliseconds
  3324.     Blast3ScorchDelay   = 260     ;in milliseconds
  3325.     Blast3InnerRadius   = 120.0   ;objects inside this get the full damage
  3326.     Blast3OuterRadius   = 120.0   ;objects inside this get some of the full damage
  3327.     Blast3MaxDamage     = 0.0     ;damage within inner radius of blast
  3328.     Blast3MinDamage     = 0.0     ;always do at least this much damage to objects
  3329.     Blast3ToppleSpeed   = 0.42    ;higher #'s topple faster
  3330.     Blast3PushForce     = 6.0     ;higher #'s push more
  3331.  
  3332.     Blast4Enabled       = Yes
  3333.     Blast4Delay         = 850    ;in milliseconds
  3334.     Blast4ScorchDelay   = 340     ;in milliseconds
  3335.     Blast4InnerRadius   = 150.0   ;objects inside this get the full damage
  3336.     Blast4OuterRadius   = 150.0   ;objects inside this get some of the full damage
  3337.     Blast4MaxDamage     = 0.0     ;damage within inner radius of blast
  3338.     Blast4MinDamage     = 0.0     ;always do at least this much damage to objects
  3339.     Blast4ToppleSpeed   = 0.40    ;higher #'s topple faster
  3340.     Blast4PushForce     = 6.0     ;higher #'s push more
  3341.  
  3342.     Blast5Enabled       = Yes
  3343.     Blast5Delay         = 1000    ;in milliseconds
  3344.     Blast5ScorchDelay   = 420     ;in milliseconds
  3345.     Blast5InnerRadius   = 180.0   ;objects inside this get the full damage
  3346.     Blast5OuterRadius   = 180.0   ;objects inside this get some of the full damage
  3347.     Blast5MaxDamage     = 0.0     ;damage within inner radius of blast
  3348.     Blast5MinDamage     = 0.0     ;always do at least this much damage to objects
  3349.     Blast5ToppleSpeed   = 0.38    ;higher #'s topple faster
  3350.     Blast5PushForce     = 6.0     ;higher #'s push more
  3351.     
  3352.     Blast6Enabled       = Yes
  3353.     Blast6Delay         = 1180    ;in milliseconds
  3354.     Blast6ScorchDelay   = 500     ;in milliseconds
  3355.     Blast6InnerRadius   = 60.0    ;objects inside this get the full damage
  3356.     Blast6OuterRadius   = 210.0   ;objects inside this get some of the full damage
  3357.     Blast6MaxDamage     = 3500.0  ;damage within inner radius of blast
  3358.     Blast6MinDamage     = 300.0   ;always do at least this much damage to objects
  3359.     Blast6ToppleSpeed   = 0.35    ;higher #'s topple faster
  3360.     Blast6PushForce     = 4.0     ;higher #'s push more
  3361.  
  3362.     Blast7Enabled       = Yes
  3363.     Blast7Delay         = 999999  ;in milliseconds, don't do the damage wave
  3364.     Blast7ScorchDelay   = 620     ;in milliseconds
  3365.     Blast7OuterRadius   = 210.0   ;objects inside this get some of the full damage
  3366.  
  3367.     Blast8Enabled       = Yes
  3368.     Blast8Delay         = 999999  ;in milliseconds, don't do the damage wave    
  3369.     Blast8ScorchDelay   = 700     ;in milliseconds
  3370.     Blast8OuterRadius   = 210.0   ;objects inside this get some of the full damage
  3371.  
  3372.     Blast9Enabled       = Yes
  3373.     Blast9Delay         = 999999  ;in milliseconds, don't do the damage wave    
  3374.     Blast9ScorchDelay   = 800     ;in milliseconds
  3375.     Blast9OuterRadius   = 210.0   ;objects inside this get some of the full damage
  3376.     
  3377.     OCL            = MIDPOINT   OCL_NukeRadiationField
  3378.   End
  3379.  
  3380.   Geometry = CYLINDER
  3381.   GeometryIsSmall = Yes
  3382.   GeometryMajorRadius = 7.0
  3383.   GeometryHeight = 60.0
  3384.  
  3385. End
  3386.  
  3387. ;------------------------------------------------------------------------------
  3388. Object CargoTruckNuke
  3389.  
  3390.   ; ***DESIGN parameters ***
  3391.   DisplayName        = OBJECT:NeutronMissile
  3392.   EditorSorting      = SYSTEM
  3393.   VisionRange = 300.0  
  3394.   ShroudClearingRange = 0
  3395.   ArmorSet
  3396.     Conditions       = None
  3397.     Armor            = ProjectileArmor
  3398.     DamageFX         = None
  3399.   End
  3400.  
  3401.   ; *** AUDIO Parameters ***
  3402.   ; SoundFallingFromPlane = DaisyCutterWeapon
  3403.     
  3404.   ; *** ENGINEERING Parameters ***
  3405.   Body = ActiveBody ModuleTag_01
  3406.     MaxHealth        = 99999999.0
  3407.     InitialHealth    = 99999999.0
  3408.   End
  3409.  
  3410.  
  3411.   ;The lifetime delays the explosion with enough time to play an audio cue.
  3412.   ;NOTE: The lifetime update is set in the ObjectCreationList that creates
  3413.   ;      this object!!!
  3414.   Behavior = LifetimeUpdate ModuleTag_02
  3415.     MinLifetime = 3000   ; min lifetime in msec
  3416.     MaxLifetime = 3000   ; max lifetime in msec
  3417.   End
  3418.  
  3419.   Behavior = NeutronMissileSlowDeathBehavior ModuleTag_03
  3420.     DestructionDelay = 3501
  3421.     ScorchMarkSize      = 320
  3422.     FXList              = FX_Nuke
  3423.     
  3424.     Blast1Enabled       = Yes
  3425.     Blast1Delay         = 580     ;in milliseconds
  3426.     Blast1ScorchDelay   = 100     ;in milliseconds
  3427.     Blast1InnerRadius   = 60.0    ;objects inside this get the full damage
  3428.     Blast1OuterRadius   = 60.0    ;objects inside this get some of the full damage
  3429.     Blast1MaxDamage     = 0.0     ;damage within inner radius of blast
  3430.     Blast1MinDamage     = 0.0     ;always do at least this much damage to objects
  3431.     Blast1ToppleSpeed   = 0.5     ;higher #'s topple faster
  3432.     Blast1PushForce     = 10.0    ;higher #'s push more
  3433.     
  3434.     Blast2Enabled       = Yes
  3435.     Blast2Delay         = 660    ;in milliseconds
  3436.     Blast2ScorchDelay   = 180     ;in milliseconds
  3437.     Blast2InnerRadius   = 90.0    ;objects inside this get the full damage
  3438.     Blast2OuterRadius   = 90.0    ;objects inside this get some of the full damage
  3439.     Blast2MaxDamage     = 0.0     ;damage within inner radius of blast
  3440.     Blast2MinDamage     = 0.0     ;always do at least this much damage to objects
  3441.     Blast2ToppleSpeed   = 0.45    ;higher #'s topple faster
  3442.     Blast2PushForce     = 8.0     ;higher #'s push more
  3443.     
  3444.     Blast3Enabled       = Yes
  3445.     Blast3Delay         = 720    ;in milliseconds
  3446.     Blast3ScorchDelay   = 260     ;in milliseconds
  3447.     Blast3InnerRadius   = 120.0   ;objects inside this get the full damage
  3448.     Blast3OuterRadius   = 120.0   ;objects inside this get some of the full damage
  3449.     Blast3MaxDamage     = 0.0     ;damage within inner radius of blast
  3450.     Blast3MinDamage     = 0.0     ;always do at least this much damage to objects
  3451.     Blast3ToppleSpeed   = 0.42    ;higher #'s topple faster
  3452.     Blast3PushForce     = 6.0     ;higher #'s push more
  3453.  
  3454.     Blast4Enabled       = Yes
  3455.     Blast4Delay         = 850    ;in milliseconds
  3456.     Blast4ScorchDelay   = 340     ;in milliseconds
  3457.     Blast4InnerRadius   = 150.0   ;objects inside this get the full damage
  3458.     Blast4OuterRadius   = 150.0   ;objects inside this get some of the full damage
  3459.     Blast4MaxDamage     = 0.0     ;damage within inner radius of blast
  3460.     Blast4MinDamage     = 0.0     ;always do at least this much damage to objects
  3461.     Blast4ToppleSpeed   = 0.40    ;higher #'s topple faster
  3462.     Blast4PushForce     = 6.0     ;higher #'s push more
  3463.  
  3464.     Blast5Enabled       = Yes
  3465.     Blast5Delay         = 1000    ;in milliseconds
  3466.     Blast5ScorchDelay   = 420     ;in milliseconds
  3467.     Blast5InnerRadius   = 180.0   ;objects inside this get the full damage
  3468.     Blast5OuterRadius   = 180.0   ;objects inside this get some of the full damage
  3469.     Blast5MaxDamage     = 0.0     ;damage within inner radius of blast
  3470.     Blast5MinDamage     = 0.0     ;always do at least this much damage to objects
  3471.     Blast5ToppleSpeed   = 0.38    ;higher #'s topple faster
  3472.     Blast5PushForce     = 6.0     ;higher #'s push more
  3473.     
  3474.     Blast6Enabled       = Yes
  3475.     Blast6Delay         = 1180    ;in milliseconds
  3476.     Blast6ScorchDelay   = 500     ;in milliseconds
  3477.     Blast6InnerRadius   = 60.0    ;objects inside this get the full damage
  3478.     Blast6OuterRadius   = 210.0   ;objects inside this get some of the full damage
  3479.     Blast6MaxDamage     = 3500.0  ;damage within inner radius of blast
  3480.     Blast6MinDamage     = 200.0   ;always do at least this much damage to objects
  3481.     Blast6ToppleSpeed   = 0.35    ;higher #'s topple faster
  3482.     Blast6PushForce     = 4.0     ;higher #'s push more
  3483.  
  3484.     Blast7Enabled       = Yes
  3485.     Blast7Delay         = 999999  ;in milliseconds, don't do the damage wave
  3486.     Blast7ScorchDelay   = 620     ;in milliseconds
  3487.     Blast7OuterRadius   = 210.0   ;objects inside this get some of the full damage
  3488.  
  3489.     Blast8Enabled       = Yes
  3490.     Blast8Delay         = 999999  ;in milliseconds, don't do the damage wave    
  3491.     Blast8ScorchDelay   = 700     ;in milliseconds
  3492.     Blast8OuterRadius   = 210.0   ;objects inside this get some of the full damage
  3493.  
  3494.     Blast9Enabled       = Yes
  3495.     Blast9Delay         = 999999  ;in milliseconds, don't do the damage wave    
  3496.     Blast9ScorchDelay   = 800     ;in milliseconds
  3497.     Blast9OuterRadius   = 210.0   ;objects inside this get some of the full damage
  3498.     
  3499.   End
  3500.  
  3501.   Geometry = Cylinder
  3502.   GeometryIsSmall = Yes
  3503.   GeometryMajorRadius = 7.0
  3504.   GeometryHeight = 60.0
  3505. End
  3506.  
  3507. ;------------------------------------------------------------------------------
  3508. Object ScudStormMissile
  3509.  
  3510.   ; *** ART Parameters ***
  3511.   Draw               = W3DModelDraw ModuleTag_01
  3512.     OkToChangeModelColor = Yes
  3513.     DefaultConditionState
  3514.       Model          = UBScudStrm_M
  3515.     End
  3516.     ConditionState   = DAMAGED REALLYDAMAGED RUBBLE
  3517.       Model          = NONE
  3518.     End
  3519.     
  3520.   End
  3521.  
  3522.   ; ***DESIGN parameters ***
  3523.   KindOf = PROJECTILE ;BALLISTIC_MISSILE
  3524.   EditorSorting       = SYSTEM
  3525.   VisionRange         = 300.0  
  3526.   ShroudClearingRange = 0
  3527.   TransportSlotCount  = 10
  3528.   ArmorSet
  3529.     Conditions       = None
  3530.     Armor            = ProjectileArmor
  3531.     DamageFX         = None
  3532.   End
  3533.  
  3534.   ; *** AUDIO Parameters ***
  3535.   ; SoundFallingFromPlane = DaisyCutterWeapon
  3536.     
  3537.   ; *** ENGINEERING Parameters ***
  3538.   Body = ActiveBody ModuleTag_02
  3539.     MaxHealth        = 10000.0
  3540.     InitialHealth    = 10000.0
  3541.   End
  3542.  
  3543.   Behavior = PhysicsBehavior ModuleTag_03
  3544.     Mass = 500.0
  3545.   End
  3546.  
  3547.   Behavior = MissileAIUpdate ModuleTag_04
  3548.     TryToFollowTarget             = No 
  3549.     FuelLifetime                  = 0 ; zero is infinite
  3550.     InitialVelocity               = 0                ; in dist/sec
  3551.     IgnitionFX                    = FX_ScudStormIgnition
  3552.     DistanceToTravelBeforeTurning = 500
  3553.     DistanceToTargetBeforeDiving  = 200 ; When I hit this close to target, I ignore PreferredHeight.
  3554.   End
  3555.   Locomotor = SET_NORMAL SCUDStormMissileLocomotor
  3556.  
  3557.   Behavior = HeightDieUpdate ModuleTag_05
  3558.     TargetHeight                    = 15.0
  3559.     TargetHeightIncludesStructures  = No
  3560.     OnlyWhenMovingDown              = Yes
  3561.     SnapToGroundOnDeath             = Yes
  3562.     InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
  3563.   End
  3564.  
  3565.   Behavior = DestroyDie ModuleTag_06
  3566.     ;nothing
  3567.   End
  3568.  
  3569.   Behavior = SpecialPowerCompletionDie ModuleTag_07
  3570.     SpecialPowerTemplate = SuperweaponScudStorm
  3571.   End
  3572.  
  3573.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
  3574.     DeathWeapon   = ScudStormDamageWeapon
  3575.     StartsActive  = Yes
  3576.     ConflictsWith = Upgrade_GLAAnthraxBeta      
  3577.   End
  3578.  
  3579.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
  3580.     DeathWeapon   = ScudStormDamageWeaponUpgraded
  3581.     StartsActive  = No                      ; turned on by upgrade
  3582.     TriggeredBy   = Upgrade_GLAAnthraxBeta         
  3583.   End
  3584.  
  3585.  
  3586.   Geometry = Cylinder
  3587.   GeometryIsSmall = Yes
  3588.   GeometryMajorRadius = 7.0
  3589.   GeometryHeight = 30.0
  3590.  
  3591. End
  3592.  
  3593. ;------------------------------------------------------------------------------
  3594. Object AmericaJetAurora
  3595.  
  3596.   ; *** ART Parameters ***
  3597.   SelectPortrait         = SAAurora_L
  3598.   ButtonImage            = SAAurora
  3599.   
  3600.   UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
  3601.   ;UpgradeCameo2 = NONE
  3602.   ;UpgradeCameo3 = NONE
  3603.   ;UpgradeCameo4 = NONE
  3604.   ;UpgradeCameo5 = NONE
  3605.   
  3606.   Draw = W3DModelDraw ModuleTag_01
  3607.  
  3608.     DefaultConditionState
  3609.       Model               = AVAurora
  3610.       HideSubObject       = BurnerFX03 BurnerFX04
  3611.       WeaponLaunchBone = PRIMARY WeaponA
  3612.     End
  3613.  
  3614.     ConditionState        = JETEXHAUST
  3615.       ; exhaust
  3616.       ParticleSysBone     = Wingtip01 JetContrail
  3617.       ParticleSysBone     = Wingtip02 JetContrail
  3618.     End
  3619.  
  3620.     ConditionState        = JETEXHAUST JETAFTERBURNER
  3621.       ; exhaust
  3622.       ParticleSysBone     = Wingtip01 JetContrail
  3623.       ParticleSysBone     = Wingtip02 JetContrail
  3624.       ; afterburner
  3625.       ShowSubObject       = BurnerFX03 BurnerFX04
  3626.       ParticleSysBone     = Engine01 JetLenzflare
  3627.       ParticleSysBone     = Engine02 JetLenzflare
  3628.     End
  3629.  
  3630.     ConditionState        = REALLYDAMAGED
  3631.       Model               = AVAurora_D
  3632.       ; damage
  3633.       ParticleSysBone     = Smoke01 JetSmoke
  3634.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  3635.     End
  3636.     
  3637.     ConditionState        = REALLYDAMAGED JETEXHAUST
  3638.       Model               = AVAurora_D
  3639.       ; damage
  3640.       ParticleSysBone     = Smoke01 JetSmoke
  3641.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  3642.       ; exhaust
  3643.       ParticleSysBone     = Wingtip01 JetContrail
  3644.       ParticleSysBone     = Wingtip02 JetContrail
  3645.     End
  3646.  
  3647.     ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
  3648.       Model               = AVAurora_D
  3649.       ; damage
  3650.       ParticleSysBone     = Smoke01 JetSmoke
  3651.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  3652.       ; afterburner
  3653.       ShowSubObject       = BurnerFX03 BurnerFX04
  3654.       ParticleSysBone     = Engine01 JetLenzflare
  3655.       ParticleSysBone     = Engine02 JetLenzflare
  3656.       ; exhaust
  3657.       ParticleSysBone     = Wingtip01 JetContrail
  3658.       ParticleSysBone     = Wingtip02 JetContrail
  3659.     End
  3660.  
  3661.     ConditionState        = RUBBLE
  3662.       Model               = AVAurora_D1
  3663.       HideSubObject       = None 
  3664.       ShowSubObject       = None
  3665.     End
  3666.  
  3667.     ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
  3668.       Model               = AVAurora_D1
  3669.       ;HideSubObject is needed cause there're inherited from default condition state      
  3670.       HideSubObject       = None 
  3671.       ShowSubObject       = None
  3672.       ParticleSysBone     = Engine01 JetExhaust
  3673.       ParticleSysBone     = Engine02 JetExhaust
  3674.       ; exhaust
  3675.       ParticleSysBone     = Wingtip01 JetContrail
  3676.       ParticleSysBone     = Wingtip02 JetContrail
  3677.     End
  3678.  
  3679.     OkToChangeModelColor = Yes
  3680.   End
  3681.  
  3682.   ; ***DESIGN parameters ***
  3683.   DisplayName         = OBJECT:Aurora
  3684.   EditorSorting       = VEHICLE
  3685.   Side                = America
  3686.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  3687.   VisionRange         = 180.0 
  3688.   ShroudClearingRange = 600
  3689.   Prerequisites
  3690.     Object = AmericaAirfield
  3691.     Object = AmericaStrategyCenter
  3692.   End
  3693.   BuildCost           = 2500
  3694.   BuildTime           = 30.0          ;in seconds     
  3695.   WeaponSet
  3696.     Conditions = None 
  3697.     Weapon = PRIMARY AuroraBombWeapon
  3698.   End
  3699.   ArmorSet
  3700.     Conditions      = None
  3701.     Armor           = AirplaneArmor
  3702.     DamageFX        = None
  3703.   End
  3704.  
  3705.   ExperienceValue = 200 200 400 400   ;Experience point value at each level
  3706.   ExperienceRequired = 0 200 400 800  ;Experience points needed to gain each level
  3707.   IsTrainable = Yes                   ;Can gain experience
  3708.   CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  3709.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  3710.   CommandSet        = AmericaJetAuroraCommandSet
  3711.  
  3712.   ; *** AUDIO Parameters ***
  3713.   VoiceSelect = AuroraBomberVoiceSelect
  3714.   VoiceMove = AuroraBomberVoiceMove
  3715.   VoiceGuard = AuroraBomberVoiceMove
  3716.   VoiceAttack = AuroraBomberVoiceAttack
  3717.   SoundAmbient = AuroraBomberAmbientLoop
  3718.   SoundAmbientRubble    = NoSound
  3719.   SoundDie = AuroraBomberVoiceFalling
  3720.   UnitSpecificSounds
  3721.     VoiceCreate          = AuroraBomberVoiceCreate
  3722.     SoundEject           = PilotSoundEject
  3723.     VoiceEject           = PilotVoiceEject
  3724.     Afterburner          = RaptorAfterburner
  3725.     VoiceLowFuel         = AuroraBomberVoiceLowFuel
  3726.     VoiceGarrison        = AuroraBomberVoiceMove
  3727.   End
  3728.  
  3729.   ; *** ENGINEERING Parameters ***
  3730.   RadarPriority = UNIT
  3731.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  3732.   Body = ActiveBody ModuleTag_02
  3733.     MaxHealth       = 80.0
  3734.     InitialHealth   = 80.0
  3735.   End
  3736.  
  3737.   Behavior                          = JetSlowDeathBehavior ModuleTag_03
  3738.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  3739.     OCLOnGroundDeath                = OCL_AuroraDeathFinalBlowUp
  3740.     DestructionDelay                = 99999999; destruction will happen when we
  3741.     RollRate                        = 0.2
  3742.     RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
  3743.     PitchRate                       = 0.0
  3744.     FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  3745.     FXInitialDeath                  = FX_JetDeathInitial
  3746.     ;OCLInitialDeath                = None
  3747.     DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
  3748.     FXSecondary                     = FX_JetDeathSecondary
  3749.     ;OCLSecondary                   = None
  3750.     FXHitGround                     = FX_JetDeathHitGround
  3751.     ;OCLHitGround                   = None
  3752.     DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
  3753.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  3754.     OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
  3755. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  3756.   End
  3757.   Behavior = EjectPilotDie ModuleTag_04
  3758.     GroundCreationList = OCL_EjectPilotOnGround
  3759.     AirCreationList = OCL_EjectPilotViaParachute
  3760.     ExemptStatus = HIJACKED
  3761.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  3762.   End
  3763.  
  3764.   Behavior = PhysicsBehavior ModuleTag_05
  3765.     Mass = 500.0
  3766.   End
  3767.  
  3768.   Behavior = ExperienceScalarUpgrade ModuleTag_06
  3769.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  3770.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  3771.   End
  3772.  
  3773.   Behavior = JetAIUpdate ModuleTag_07
  3774.     OutOfAmmoDamagePerSecond    = 10%    ; amount of damage to take per SEC (not per frame) when out of ammo
  3775.                                          ; note that it's expressed as a percent of max health, not an absolute
  3776.     TakeoffSpeedForMaxLift      = 100%   ; smaller numbers give more lift sooner when taking off
  3777.     TakeoffPause                = 500
  3778.     MinHeight                   = 5
  3779.     SneakyOffsetWhenAttacking   = -20.0  ; this is how far behind us people aim when we are in attack mode
  3780.     AttackLocomotorType         = SET_SUPERSONIC
  3781.     AttackLocomotorPersistTime  = 100    ; we start slowing down almost immediately
  3782.     AttackersMissPersistTime    = 2000   ; but remain untargetable fer a bit longer
  3783.     ReturnForAmmoLocomotorType  = SET_SLUGGISH
  3784.     ReturnToBaseIdleTime        = 10000         ; if idle for this long, return to base, even if not out of ammo
  3785.   End
  3786.   Locomotor = SET_NORMAL      AuroraJetLocomotor
  3787.   Locomotor = SET_SUPERSONIC  AuroraJetSupersonicLocomotor
  3788.   Locomotor = SET_SLUGGISH    AuroraJetSluggishLocomotor
  3789.   Locomotor = SET_TAXIING     BasicJetTaxiLocomotor
  3790.  
  3791.   Behavior = FlammableUpdate ModuleTag_21
  3792.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  3793.     AflameDamageAmount = 3       ; taking this much damage...
  3794.     AflameDamageDelay = 500       ; this often.
  3795.   End
  3796.  
  3797.   Behavior                 = TransitionDamageFX ModuleTag_22
  3798.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  3799.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
  3800.   End
  3801.  
  3802.  
  3803.   Geometry                 = Box
  3804.   GeometryIsSmall          = Yes
  3805.   GeometryMajorRadius      = 14.0
  3806.   GeometryMinorRadius      = 7.0
  3807.   GeometryHeight           = 5.0
  3808.   Shadow                   = SHADOW_VOLUME
  3809.   ShadowSizeX              = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  3810.  
  3811. End
  3812.  
  3813. ;------------------------------------------------------------------------------
  3814. Object AmericaJetStealthFighter
  3815.  
  3816.   ; *** ART Parameters ***
  3817.   SelectPortrait         = SAStealth_L
  3818.   ButtonImage            = SAStealth
  3819.   
  3820.   UpgradeCameo1 = Upgrade_AmericaLaserMissiles
  3821.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  3822.   ;UpgradeCameo3 = NONE
  3823.   ;UpgradeCameo4 = NONE
  3824.   ;UpgradeCameo5 = NONE
  3825.   
  3826.   Draw = W3DModelDraw ModuleTag_01
  3827.  
  3828.     DefaultConditionState
  3829.       Model                           = AVStealth
  3830.       HideSubObject                   = BurnerFX03 BurnerFX04
  3831.       WeaponLaunchBone  = PRIMARY WeaponA
  3832.     End
  3833.     
  3834.     ConditionState        = JETEXHAUST
  3835.       ParticleSysBone     = Wingtip01 JetContrail
  3836.       ParticleSysBone     = Wingtip02 JetContrail
  3837.     End
  3838.  
  3839.     ConditionState        = JETEXHAUST JETAFTERBURNER
  3840.       ; exhaust
  3841.       ParticleSysBone     = Wingtip01 JetContrail
  3842.       ParticleSysBone     = Wingtip02 JetContrail
  3843.       ; afterburners
  3844.       ShowSubObject       = BurnerFX03 BurnerFX04
  3845.       ParticleSysBone     = Engine01 JetLenzflare
  3846.       ParticleSysBone     = Engine02 JetLenzflare
  3847.     End
  3848.  
  3849.     ConditionState        = REALLYDAMAGED
  3850.       Model               = AVStealth_D
  3851.       ; damage
  3852.       ParticleSysBone     = Smoke01 JetSmoke
  3853.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  3854.     End
  3855.  
  3856.     ConditionState        = REALLYDAMAGED JETEXHAUST
  3857.       Model               = AVStealth_D
  3858.       ; damage
  3859.       ParticleSysBone     = Smoke01 JetSmoke
  3860.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  3861.       ; exhaust
  3862.       ParticleSysBone     = Wingtip01 JetContrail
  3863.       ParticleSysBone     = Wingtip02 JetContrail
  3864.     End
  3865.  
  3866.     ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
  3867.       Model               = AVStealth_D
  3868.       ; damage
  3869.       ParticleSysBone     = Smoke01 JetSmoke
  3870.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  3871.       ; exhaust
  3872.       ParticleSysBone     = Wingtip01 JetContrail
  3873.       ParticleSysBone     = Wingtip02 JetContrail
  3874.       ; afterburners
  3875.       ShowSubObject       = BurnerFX03 BurnerFX04
  3876.       ParticleSysBone     = Engine01 JetLenzflare
  3877.       ParticleSysBone     = Engine02 JetLenzflare
  3878.     End
  3879.  
  3880.     ConditionState        = RUBBLE
  3881.       Model               = AVStealth_D1
  3882.       HideSubObject       = None 
  3883.       ShowSubObject       = None
  3884.     End
  3885.  
  3886.     ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
  3887.       Model               = AVStealth_D1
  3888.       ;HideSubObject is needed cause there're inherited from default condition state      
  3889.       HideSubObject       = None 
  3890.       ShowSubObject       = None
  3891.       ParticleSysBone     = Engine01 JetExhaust
  3892.       ParticleSysBone     = Engine02 JetExhaust
  3893.       ParticleSysBone     = Wingtip01 JetContrail
  3894.       ParticleSysBone     = Wingtip02 JetContrail
  3895.     End
  3896.     
  3897.     OkToChangeModelColor = Yes
  3898.  
  3899.   End
  3900.  
  3901.   ; ***DESIGN parameters ***
  3902.   DisplayName           = OBJECT:StealthFighter
  3903.   EditorSorting         = VEHICLE
  3904.   Side                  = America
  3905.   TransportSlotCount    = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  3906.   VisionRange           = 180.0 
  3907.   ShroudClearingRange   = 300.0
  3908.   Prerequisites
  3909.     Object = AmericaAirfield
  3910.     Science = SCIENCE_StealthFighter
  3911.   End
  3912.   WeaponSet
  3913.     Conditions = None 
  3914.     Weapon = PRIMARY StealthJetMissileWeapon
  3915.   End
  3916.   WeaponSet
  3917.     Conditions = PLAYER_UPGRADE
  3918.     Weapon = PRIMARY StealthJetLaserGuidedMissileWeapon
  3919.   End
  3920.   ArmorSet
  3921.     Conditions      = None
  3922.     Armor           = AirplaneArmor
  3923.     DamageFX        = None
  3924.   End
  3925.  
  3926.   BuildCost           = 1600
  3927.   BuildTime           = 25.0            ;in seconds  
  3928.   ExperienceValue     = 100 100 200 300 ;Experience point value at each level
  3929.   ExperienceRequired  = 0 200 300 600   ; Experience points needed to gain each level
  3930.   IsTrainable         = Yes             ;Can gain experience
  3931.   CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  3932.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  3933.   CommandSet = AmericaJetStealthFighterCommandSet
  3934.  
  3935.   ; *** AUDIO Parameters ***
  3936.   VoiceSelect     = StealthFighterVoiceSelect
  3937.   VoiceMove       = StealthFighterVoiceMove
  3938.   VoiceAttack     = StealthFighterVoiceAttack
  3939.   VoiceAttackAir  = StealthFighterVoiceAttackAir
  3940.   VoiceGuard      = StealthFighterVoiceAirPatrol
  3941.   SoundAmbient    = StealthFighterAmbientLoop
  3942.   SoundAmbientRubble    = NoSound
  3943.   SoundDie        = StealthFighterVoiceFalling
  3944.   SoundStealthOn  = StealthOn
  3945.   SoundStealthOff = StealthOff
  3946.   UnitSpecificSounds
  3947.     VoiceCreate   = StealthFighterVoiceCreate
  3948.     SoundEject    = PilotSoundEject
  3949.     VoiceEject    = PilotVoiceEject
  3950.     Afterburner   = RaptorAfterburner
  3951.     VoiceLowFuel  = AuroraBomberVoiceLowFuel
  3952.     VoiceGarrison = StealthFighterVoiceMove
  3953.   End
  3954.  
  3955.   ; *** ENGINEERING Parameters ***
  3956.   RadarPriority   = LOCAL_UNIT_ONLY
  3957.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  3958.   Body = ActiveBody ModuleTag_02
  3959.     MaxHealth       = 140.0
  3960.     InitialHealth   = 140.0
  3961.   End
  3962.  
  3963.   Behavior                          = JetSlowDeathBehavior ModuleTag_03
  3964.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  3965.     OCLOnGroundDeath                = OCL_StealthDeathFinalBlowUp
  3966.     DestructionDelay                = 99999999; destruction will happen when we
  3967.     RollRate                        = 0.2
  3968.     RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
  3969.     PitchRate                       = 0.0
  3970.     FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  3971.     FXInitialDeath                  = FX_JetDeathInitial
  3972.     ;OCLInitialDeath                = None
  3973.     DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
  3974.     FXSecondary                     = FX_JetDeathSecondary
  3975.     ;OCLSecondary                   = None
  3976.     FXHitGround                     = FX_JetDeathHitGround
  3977.     ;OCLHitGround                   = None
  3978.     DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
  3979.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  3980.     OCLFinalBlowUp                  = OCL_StealthDeathFinalBlowUp
  3981. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  3982.   End
  3983.   Behavior = EjectPilotDie ModuleTag_04
  3984.     GroundCreationList = OCL_EjectPilotOnGround
  3985.     AirCreationList = OCL_EjectPilotViaParachute
  3986.     ExemptStatus = HIJACKED
  3987.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  3988.   End
  3989.  
  3990.   Behavior = PhysicsBehavior ModuleTag_05
  3991.     Mass = 500.0
  3992.   End
  3993.  
  3994.   Behavior = JetAIUpdate ModuleTag_06
  3995.     OutOfAmmoDamagePerSecond = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
  3996.                                     ; note that it's expressed as a percent of max health, not an absolute
  3997.     TakeoffSpeedForMaxLift = 100%   ; smaller numbers give more lift sooner when taking off
  3998.     TakeoffPause           = 500
  3999.     MinHeight              = 5
  4000.     ReturnToBaseIdleTime   = 10000         ; if idle for this long, return to base, even if not out of ammo
  4001.   End
  4002.  
  4003.   Behavior = WeaponSetUpgrade ModuleTag_07
  4004.     TriggeredBy = Upgrade_AmericaLaserMissiles
  4005.   End
  4006.  
  4007.   Behavior = ExperienceScalarUpgrade ModuleTag_08
  4008.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  4009.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  4010.   End
  4011.  
  4012.   Behavior = StealthUpdate ModuleTag_09
  4013.     StealthDelay                          = 1500 ; msec
  4014.     StealthForbiddenConditions            = FIRING_PRIMARY
  4015.     ; not currently used... but maybe someday? (srj)
  4016.     ;RevealDistanceFromTarget             = 0.0f
  4017.     FriendlyOpacityMin                    = 50.0%
  4018.     FriendlyOpacityMax                    = 100.0%
  4019.     InnateStealth                         = Yes
  4020.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  4021.   End
  4022.  
  4023.   Locomotor = SET_NORMAL StealthJetLocomotor
  4024.   Locomotor = SET_TAXIING BasicJetTaxiLocomotor
  4025.  
  4026.   Behavior = FlammableUpdate ModuleTag_21
  4027.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  4028.     AflameDamageAmount = 3       ; taking this much damage...
  4029.     AflameDamageDelay = 500       ; this often.
  4030.   End
  4031.  
  4032.   Behavior                 = TransitionDamageFX ModuleTag_22
  4033.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  4034.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
  4035.   End
  4036.  
  4037.  
  4038.   Geometry = Cylinder
  4039.   GeometryIsSmall = Yes
  4040.   GeometryMajorRadius = 7.0
  4041.   GeometryMinorRadius = 7.0
  4042.   GeometryHeight = 7.0
  4043.   Shadow = SHADOW_VOLUME
  4044.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  4045.  
  4046. End
  4047.  
  4048. ;------------------------------------------------------------------------------
  4049. Object AmericaVehicleComanche
  4050.  
  4051.   ; *** ART Parameters ***
  4052.   SelectPortrait         = SACCommanche_L
  4053.   ButtonImage            = SACCommanche
  4054.   
  4055.   UpgradeCameo1 = Upgrade_ComancheRocketPods
  4056.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  4057.   ;UpgradeCameo3 = NONE
  4058.   ;UpgradeCameo4 = NONE
  4059.   ;UpgradeCameo5 = NONE
  4060.   
  4061.   Draw = W3DModelDraw ModuleTag_01
  4062.  
  4063.     DefaultConditionState
  4064.       Model                           = AVComanche
  4065.       HideSubObject                   = MissileUpgrade
  4066.       Animation                       = AVComanche.AVComanche
  4067.       AnimationMode                   = LOOP
  4068.       WeaponMuzzleFlash               = PRIMARY TurretFX
  4069.       WeaponFireFXBone                = PRIMARY Muzzle
  4070.       WeaponFireFXBone                = SECONDARY Muzzle
  4071.       WeaponLaunchBone  = SECONDARY Muzzle
  4072.     End
  4073.  
  4074.     ConditionState = REALLYDAMAGED
  4075.       Model                           = AVComanche_d
  4076.       Animation                       = AVComanche_d.AVComanche_d
  4077.       AnimationMode                   = LOOP
  4078.     End
  4079.  
  4080.     ConditionState = WEAPONSET_PLAYER_UPGRADE
  4081.       ShowSubObject                   = MissileUpgrade
  4082.       Animation                       = AVComanche.AVComanche
  4083.       AnimationMode                   = LOOP
  4084.       WeaponFireFXBone                = TERTIARY WeaponB
  4085.       WeaponLaunchBone  = TERTIARY WeaponB
  4086.     End
  4087.  
  4088.     ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
  4089.       Model                           = AVComanche_d
  4090.       ShowSubObject                   = MissileUpgrade
  4091.       Animation                       = AVComanche_d.AVComanche_d
  4092.       AnimationMode                   = LOOP
  4093.       WeaponFireFXBone                = TERTIARY WeaponB
  4094.       WeaponLaunchBone  = TERTIARY WeaponB
  4095.     End
  4096.  
  4097.     ConditionState = RUBBLE
  4098.       Model                           = AVComanche_d
  4099.       Animation                       = AVComanche_d.AVComanche_d
  4100.       AnimationMode                   = LOOP
  4101.     End
  4102.  
  4103.     ConditionState = RUBBLE SPECIAL_DAMAGED
  4104.       Model                           = AVComanche_d
  4105.       HideSubObject                   = AVComanche_Prop
  4106.     End
  4107.  
  4108.     OkToChangeModelColor = Yes
  4109.   End
  4110.  
  4111.   ; ***DESIGN parameters ***
  4112.   DisplayName         = OBJECT:Comanche
  4113.   EditorSorting       = VEHICLE
  4114.   Side                = America
  4115.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  4116.   VisionRange         = 180.0 
  4117.   ShroudClearingRange = 600
  4118.   Prerequisites
  4119.     Object            = AmericaAirfield
  4120.   End
  4121.  
  4122.   WeaponSet
  4123.     Conditions          = None 
  4124.     ; -----
  4125.     Weapon              = PRIMARY     Comanche20mmCannonWeapon
  4126.     PreferredAgainst    = PRIMARY     INFANTRY
  4127.     AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  4128.     ; -----
  4129.     Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
  4130.     PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
  4131.     AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
  4132.     ; -----
  4133.     Weapon              = TERTIARY    NONE
  4134.   End
  4135.   WeaponSet
  4136.     Conditions          = PLAYER_UPGRADE 
  4137.     ; -----
  4138.     Weapon              = PRIMARY     Comanche20mmCannonWeapon
  4139.     PreferredAgainst    = PRIMARY     INFANTRY
  4140.     AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  4141.     ; -----
  4142.     Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
  4143.     PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
  4144.     AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
  4145.     ; -----
  4146.     Weapon              = TERTIARY    ComancheRocketPodWeapon
  4147.     AutoChooseSources   = TERTIARY    NONE
  4148.   End
  4149.   ArmorSet
  4150.     Conditions      = None
  4151.     Armor           = ComancheArmor
  4152.     DamageFX        = None
  4153.   End
  4154.   BuildCost           = 1500
  4155.   BuildTime           = 20              ; in seconds  
  4156.   ExperienceValue     = 50 50 100 200   ; Experience point value at each level
  4157.   ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
  4158.   IsTrainable         = Yes             ; Can gain experience
  4159.   CommandSet          = AmericaVehicleComancheCommandSet
  4160.  
  4161.   ; *** AUDIO Parameters ***
  4162.   VoiceSelect           = ComancheVoiceSelect
  4163.   VoiceMove             = ComancheVoiceMove
  4164.   VoiceGuard            = ComancheVoiceMove
  4165.   VoiceAttack           = ComancheVoiceAttack
  4166.   SoundAmbient          = ComancheAmbientLoop
  4167.   SoundAmbientRubble    = NoSound
  4168.   SoundDie              = ComancheVoiceFalling
  4169.   UnitSpecificSounds
  4170.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  4171.     VoiceCreate         = ComancheVoiceCreate
  4172.     SoundEject          = PilotSoundEject
  4173.     VoiceEject          = PilotVoiceEject
  4174.     Afterburner         = RaptorAfterburner
  4175.     VoiceGarrison       = ComancheVoiceMove
  4176.     TurretMoveStart     = NoSound
  4177.     TurretMoveLoop      = NoSound
  4178.     VoiceFireRocketPods = ComancheVoiceAttackRocket
  4179.   End
  4180.  
  4181.  
  4182.   ; *** ENGINEERING Parameters ***
  4183.   RadarPriority   = UNIT
  4184.   KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
  4185.  
  4186.   Behavior = WeaponSetUpgrade ModuleTag_02
  4187.     TriggeredBy = Upgrade_ComancheRocketPods
  4188.   End
  4189.   Behavior = ExperienceScalarUpgrade ModuleTag_03
  4190.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  4191.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  4192.   End
  4193.  
  4194.   Body = ActiveBody ModuleTag_04
  4195.     MaxHealth       = 220.0
  4196.     InitialHealth   = 220.0
  4197.   End
  4198.  
  4199.   Behavior = FXListDie ModuleTag_05
  4200.     DeathFX = FX_HelicopterStartDeath
  4201.   End
  4202.  
  4203.   Behavior = JetAIUpdate ModuleTag_06
  4204.     MinHeight                     = 5
  4205.     NeedsRunway                   = No
  4206.     KeepsParkingSpaceWhenAirborne = No
  4207.     AutoAcquireEnemiesWhenIdle    = Yes
  4208.     ; note that comanches do not return to base when idle
  4209.     
  4210.     ; this is a bit of a trick... normally, units cannot move-and-fire at
  4211.     ; the same time. we need the comanche to be able to. so we give it
  4212.     ; a "turret" (invisible) and put the two main weapons on it, but with
  4213.     ; no turn rate. voila!
  4214.     Turret
  4215.       TurretTurnRate = 0      ; this "turret" does not turn
  4216.       TurretPitchRate = 0     ; nor does it pitch
  4217.       ControlledWeaponSlots = PRIMARY SECONDARY
  4218.     End
  4219.  
  4220.   End
  4221.   Locomotor = SET_NORMAL  ComancheLocomotor
  4222.   Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
  4223.  
  4224.   Behavior = PhysicsBehavior ModuleTag_07
  4225.     Mass = 50.0
  4226.   End
  4227.   Behavior = HelicopterSlowDeathBehavior ModuleTag_08
  4228.     DestructionDelay                = 99999999        ; the destruction delay
  4229.     SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
  4230.     SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
  4231.     SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
  4232.     MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
  4233.     SoundDeathLoop                  = ComancheDamagedLoop
  4234.     MinSelfSpin                     = 100                     ; in degrees per second
  4235.     MaxSelfSpin                     = 300                     ; in degrees per second
  4236.     SelfSpinUpdateDelay             = 100             ; in milliseconds
  4237.     SelfSpinUpdateAmount            = 10             ; in degrees   
  4238.     FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
  4239.     MinBladeFlyOffDelay             = 1500            ; in milliseconds
  4240.     MaxBladeFlyOffDelay             = 1500            ; in milliseconds
  4241.     AttachParticle                  = SootySmokeTrail
  4242.     AttachParticleBone              = Propeller02
  4243.     BladeObjectName                 = ComancheBlades
  4244.     BladeBoneName                   = Propeller01    
  4245.     ; Most things that eject pilots do so immediately upon death,
  4246.     ; via use of EjectPilotDie, but Helicopters are a special case...
  4247.     ; they need to do so after their blades are ejected. 
  4248.     OCLEjectPilot                   = OCL_EjectPilotViaParachute
  4249.     FXBlade                         = FX_HelicopterBladeExplosion
  4250.     OCLBlade                        = OCL_HelicopterBladeExplosion
  4251.     FXHitGround                     = FX_HelicopterHitGround
  4252.     OCLHitGround                    = OCL_HelicopterHitGround
  4253.     FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
  4254.     OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
  4255.     DelayFromGroundToFinalDeath     = 1500
  4256.     FinalRubbleObject               = ComancheRubbleHull
  4257.   End
  4258.  
  4259.   Behavior = TransitionDamageFX ModuleTag_09
  4260.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
  4261.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
  4262.   End
  4263.  
  4264.   Behavior = FlammableUpdate ModuleTag_21
  4265.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  4266.     AflameDamageAmount = 3       ; taking this much damage...
  4267.     AflameDamageDelay = 500       ; this often.
  4268.   End
  4269.  
  4270.   Geometry = BOX
  4271.   GeometryMajorRadius = 20.0
  4272.   GeometryMinorRadius = 3.0
  4273.   GeometryHeight = 25.0     
  4274.   GeometryIsSmall = No
  4275.   Shadow = SHADOW_VOLUME    
  4276.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  4277.  
  4278. End
  4279. ;------------------------------------------------------------------------------
  4280. Object CINE_USA08_AmericaVehicleComanche
  4281.  
  4282.   ; *** ART Parameters ***
  4283.   SelectPortrait         = SACCommanche_L
  4284.   ButtonImage            = SACCommanche
  4285.   
  4286.   UpgradeCameo1 = Upgrade_ComancheRocketPods
  4287.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  4288.   ;UpgradeCameo3 = NONE
  4289.   ;UpgradeCameo4 = NONE
  4290.   ;UpgradeCameo5 = NONE
  4291.   
  4292.   Draw = W3DModelDraw ModuleTag_01
  4293.  
  4294.     DefaultConditionState
  4295.       Model                           = AVComanche
  4296.       HideSubObject                   = MissileUpgrade
  4297.       HideSubObject                   = TurretFX01
  4298.       Animation                       = AVComanche.AVComanche
  4299.       AnimationMode                   = LOOP
  4300.       WeaponMuzzleFlash               = PRIMARY TurretFX
  4301.       WeaponFireFXBone                = PRIMARY Muzzle
  4302.       WeaponFireFXBone                = SECONDARY Muzzle
  4303.       WeaponLaunchBone  = SECONDARY Muzzle
  4304.     End
  4305.  
  4306.     ConditionState = REALLYDAMAGED
  4307.       Model                           = AVComanche_d
  4308.       Animation                       = AVComanche_d.AVComanche_d
  4309.       AnimationMode                   = LOOP
  4310.     End
  4311.  
  4312.     ConditionState = WEAPONSET_PLAYER_UPGRADE
  4313.       ShowSubObject                   = MissileUpgrade
  4314.       Animation                       = AVComanche.AVComanche
  4315.       AnimationMode                   = LOOP
  4316.       WeaponFireFXBone                = TERTIARY WeaponB
  4317.       WeaponLaunchBone  = TERTIARY WeaponB
  4318.     End
  4319.  
  4320.     ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
  4321.       Model                           = AVComanche_d
  4322.       ShowSubObject                   = MissileUpgrade
  4323.       Animation                       = AVComanche_d.AVComanche_d
  4324.       AnimationMode                   = LOOP
  4325.       WeaponFireFXBone                = TERTIARY WeaponB
  4326.       WeaponLaunchBone  = TERTIARY WeaponB
  4327.     End
  4328.  
  4329.     ConditionState = RUBBLE
  4330.       Model                           = AVComanche_d
  4331.       Animation                       = AVComanche_d.AVComanche_d
  4332.       AnimationMode                   = LOOP
  4333.     End
  4334.  
  4335.     ConditionState = RUBBLE SPECIAL_DAMAGED
  4336.       Model                           = AVComanche_d
  4337.       HideSubObject                   = AVComanche_Prop
  4338.     End
  4339.  
  4340.     OkToChangeModelColor = Yes
  4341.   End
  4342.  
  4343.   ; ***DESIGN parameters ***
  4344.   DisplayName         = OBJECT:Comanche
  4345.   EditorSorting       = VEHICLE
  4346.   Side                = America
  4347.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  4348.   VisionRange         = 400.0 
  4349.   ShroudClearingRange = 600
  4350.   Prerequisites
  4351.     Object            = AmericaAirfield
  4352.   End
  4353.  
  4354.   WeaponSet
  4355.     Conditions          = None 
  4356.     ; -----
  4357.     Weapon              = PRIMARY     Comanche20mmCannonWeapon
  4358.     PreferredAgainst    = PRIMARY     INFANTRY
  4359.     AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  4360.     ; -----
  4361.     Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
  4362.     PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
  4363.     AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
  4364.     ; -----
  4365.     Weapon              = TERTIARY    NONE
  4366.   End
  4367.   WeaponSet
  4368.     Conditions          = PLAYER_UPGRADE 
  4369.     ; -----
  4370.     Weapon              = PRIMARY     Comanche20mmCannonWeapon
  4371.     PreferredAgainst    = PRIMARY     INFANTRY
  4372.     AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  4373.     ; -----
  4374.     Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
  4375.     PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
  4376.     AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
  4377.     ; -----
  4378.     Weapon              = TERTIARY    ComancheRocketPodWeapon
  4379.     AutoChooseSources   = TERTIARY    NONE
  4380.   End
  4381.   ArmorSet
  4382.     Conditions      = None
  4383.     Armor           = ComancheArmor
  4384.     DamageFX        = None
  4385.   End
  4386.   BuildCost           = 1500
  4387.   BuildTime           = 20              ; in seconds  
  4388.   ExperienceValue     = 50 50 100 200   ; Experience point value at each level
  4389.   ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
  4390.   IsTrainable         = Yes             ; Can gain experience
  4391.   CommandSet          = AmericaVehicleComancheCommandSet
  4392.  
  4393.   ; *** AUDIO Parameters ***
  4394.   VoiceSelect           = ComancheVoiceSelect
  4395.   VoiceMove             = ComancheVoiceMove
  4396.   VoiceGuard            = ComancheVoiceMove
  4397.   VoiceAttack           = ComancheVoiceAttack
  4398.   SoundAmbient          = ComancheAmbientLoop
  4399.   SoundAmbientRubble    = NoSound
  4400.   SoundDie              = ComancheVoiceFalling
  4401.   UnitSpecificSounds
  4402.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  4403.     VoiceCreate         = ComancheVoiceCreate
  4404.     SoundEject          = PilotSoundEject
  4405.     VoiceEject          = PilotVoiceEject
  4406.     Afterburner         = RaptorAfterburner
  4407.     VoiceGarrison       = ComancheVoiceMove
  4408.     TurretMoveStart     = NoSound
  4409.     TurretMoveLoop      = NoSound
  4410.     VoiceFireRocketPods = ComancheVoiceAttackRocket
  4411.   End
  4412.  
  4413.  
  4414.   ; *** ENGINEERING Parameters ***
  4415.   RadarPriority   = UNIT
  4416.   KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
  4417.  
  4418.   Behavior = WeaponSetUpgrade ModuleTag_02
  4419.     TriggeredBy = Upgrade_ComancheRocketPods
  4420.   End
  4421.   Behavior = ExperienceScalarUpgrade ModuleTag_03
  4422.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  4423.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  4424.   End
  4425.  
  4426.   Body = ActiveBody ModuleTag_04
  4427.     MaxHealth       = 220.0
  4428.     InitialHealth   = 220.0
  4429.   End
  4430.  
  4431.   Behavior = FXListDie ModuleTag_05
  4432.     DeathFX = FX_HelicopterStartDeath
  4433.   End
  4434.  
  4435.   Behavior = JetAIUpdate ModuleTag_06
  4436.     MinHeight                     = 5
  4437.     NeedsRunway                   = No
  4438.     KeepsParkingSpaceWhenAirborne = No
  4439.     AutoAcquireEnemiesWhenIdle    = Yes
  4440.     ; note that comanches do not return to base when idle
  4441.     
  4442.     ; this is a bit of a trick... normally, units cannot move-and-fire at
  4443.     ; the same time. we need the comanche to be able to. so we give it
  4444.     ; a "turret" (invisible) and put the two main weapons on it, but with
  4445.     ; no turn rate. voila!
  4446.     Turret
  4447.       TurretTurnRate = 0      ; this "turret" does not turn
  4448.       TurretPitchRate = 0     ; nor does it pitch
  4449.       ControlledWeaponSlots = PRIMARY SECONDARY
  4450.     End
  4451.  
  4452.   End
  4453.   Locomotor = SET_NORMAL  CINE_USA08_ComancheLocomotor
  4454.   Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
  4455.  
  4456.   Behavior = PhysicsBehavior ModuleTag_07
  4457.     Mass = 50.0
  4458.   End
  4459.   Behavior = HelicopterSlowDeathBehavior ModuleTag_08
  4460.     DestructionDelay                = 99999999        ; the destruction delay
  4461.     SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
  4462.     SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
  4463.     SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
  4464.     MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
  4465.     SoundDeathLoop                  = ComancheDamagedLoop
  4466.     MinSelfSpin                     = 100                     ; in degrees per second
  4467.     MaxSelfSpin                     = 300                     ; in degrees per second
  4468.     SelfSpinUpdateDelay             = 100             ; in milliseconds
  4469.     SelfSpinUpdateAmount            = 10             ; in degrees   
  4470.     FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
  4471.     MinBladeFlyOffDelay             = 1500            ; in milliseconds
  4472.     MaxBladeFlyOffDelay             = 1500            ; in milliseconds
  4473.     AttachParticle                  = SootySmokeTrail
  4474.     AttachParticleBone              = Propeller02
  4475.     BladeObjectName                 = ComancheBlades
  4476.     BladeBoneName                   = Propeller01    
  4477.     ; Most things that eject pilots do so immediately upon death,
  4478.     ; via use of EjectPilotDie, but Helicopters are a special case...
  4479.     ; they need to do so after their blades are ejected. 
  4480.     OCLEjectPilot                   = OCL_EjectPilotViaParachute
  4481.     FXBlade                         = FX_HelicopterBladeExplosion
  4482.     OCLBlade                        = OCL_HelicopterBladeExplosion
  4483.     FXHitGround                     = FX_HelicopterHitGround
  4484.     OCLHitGround                    = OCL_HelicopterHitGround
  4485.     FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
  4486.     OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
  4487.     DelayFromGroundToFinalDeath     = 1500
  4488.     FinalRubbleObject               = ComancheRubbleHull
  4489.   End
  4490.  
  4491.   Behavior = TransitionDamageFX ModuleTag_09
  4492.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
  4493.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
  4494.   End
  4495.  
  4496.   Behavior = FlammableUpdate ModuleTag_21
  4497.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  4498.     AflameDamageAmount = 3       ; taking this much damage...
  4499.     AflameDamageDelay = 500       ; this often.
  4500.   End
  4501.  
  4502.   Geometry = BOX
  4503.   GeometryMajorRadius = 20.0
  4504.   GeometryMinorRadius = 3.0
  4505.   GeometryHeight = 25.0     
  4506.   GeometryIsSmall = No
  4507.   Shadow = SHADOW_VOLUME    
  4508.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  4509.  
  4510. End
  4511.  
  4512. ;------------------------------------------------------------------------------
  4513. Object ComancheBlades
  4514.  
  4515.   ; *** ART Parameters ***
  4516.   Draw = W3DModelDraw ModuleTag_01
  4517.     DefaultConditionState
  4518.       Model = AVComanche_D2
  4519.       Animation = AVComanche_D2.AVComanche_D2
  4520.       AnimationMode = LOOP
  4521.     End
  4522.   End
  4523.  
  4524.   ; ***DESIGN parameters ***
  4525.   DisplayName      = OBJECT:Comanche
  4526.   Side = America
  4527.  
  4528.   ; *** ENGINEERING Parameters ***
  4529.   KindOf = PRELOAD IMMOBILE
  4530.  
  4531.   Behavior = PhysicsBehavior ModuleTag_02
  4532.     AllowBouncing = Yes
  4533.   End
  4534.   Behavior = LifetimeUpdate ModuleTag_03
  4535.     MinLifetime = 1000   ; min lifetime in msec
  4536.     MaxLifetime = 1000   ; max lifetime in msec
  4537.   End
  4538.  
  4539. End
  4540.  
  4541. ;------------------------------------------------------------------------------
  4542. Object ComancheRubbleHull
  4543.  
  4544.   ; *** ART Parameters ***
  4545.   Draw = W3DModelDraw ModuleTag_01
  4546.     DefaultConditionState
  4547.       Model        = AVComanche_D1
  4548.     End
  4549.   End
  4550.  
  4551.   ; ***DESIGN parameters ***
  4552.   DisplayName      = OBJECT:ComancheHull
  4553.   Side = America
  4554.  
  4555.   ; *** ENGINEERING Parameters ***
  4556.   KindOf = IMMOBILE NO_COLLIDE HULK
  4557.  
  4558.   Behavior = PhysicsBehavior ModuleTag_02
  4559.     Mass           = 25.0
  4560.     AllowBouncing  = Yes
  4561.   End
  4562.  
  4563.   Behavior = LifetimeUpdate ModuleTag_03
  4564.     MinLifetime    = 3000   ; min lifetime in msec
  4565.     MaxLifetime    = 3000   ; max lifetime in msec
  4566.   End
  4567.  
  4568.   Behavior = SlowDeathBehavior ModuleTag_05
  4569.     SinkDelay        = 3000
  4570.     SinkRate         = 4     ; in Dist/Sec
  4571.     DestructionDelay = 10000
  4572.   End
  4573.  
  4574.  
  4575. End
  4576.  
  4577. ;------------------------------------------------------------------------------
  4578. Object CINE_ComancheRubbleHull
  4579.  
  4580.   ; *** ART Parameters ***
  4581.   Draw = W3DModelDraw ModuleTag_01
  4582.     DefaultConditionState
  4583.       Model        = AVComanche_D1
  4584.     End
  4585.   End
  4586.  
  4587.   ; ***DESIGN parameters ***
  4588.   DisplayName      = OBJECT:ComancheHull
  4589.   Side = America
  4590.  
  4591.   ; *** ENGINEERING Parameters ***
  4592.   KindOf = IMMOBILE
  4593.  
  4594.   Behavior = PhysicsBehavior ModuleTag_02
  4595.     Mass           = 25.0
  4596.     AllowBouncing  = Yes
  4597.   End
  4598.  
  4599. End
  4600.  
  4601.  
  4602. ;------------------------------------------------------------------------------
  4603. Object ChinookRubbleHull
  4604.  
  4605.   ; *** ART Parameters ***
  4606.   Draw = W3DModelDraw ModuleTag_01
  4607.     DefaultConditionState
  4608.       Model        = AVChinook_D1
  4609.     End
  4610.   End
  4611.  
  4612.   ; ***DESIGN parameters ***
  4613.   DisplayName      = OBJECT:ComancheHull
  4614.   Side = America
  4615.  
  4616.   ; *** ENGINEERING Parameters ***
  4617.   KindOf = IMMOBILE NO_COLLIDE HULK
  4618.  
  4619.   Behavior = PhysicsBehavior ModuleTag_02
  4620.     Mass           = 25.0
  4621.     AllowBouncing  = Yes
  4622.   End
  4623.   Behavior = LifetimeUpdate ModuleTag_03
  4624.     MinLifetime    = 100000   ; min lifetime in msec
  4625.     MaxLifetime    = 100000   ; max lifetime in msec
  4626.   End
  4627.  
  4628. End
  4629.  
  4630.  
  4631. ;------------------------------------------------------------------------------
  4632. Object ChinaJetMIG
  4633.  
  4634.   ; *** ART Parameters ***
  4635.   SelectPortrait         = SNMig_L
  4636.   ButtonImage            = SNMig
  4637.   
  4638.   UpgradeCameo1 = Upgrade_ChinaAircraftArmor
  4639.   UpgradeCameo2 = Upgrade_ChinaBlackNapalm
  4640.   ;UpgradeCameo3 = NONE
  4641.   ;UpgradeCameo4 = NONE
  4642.   ;UpgradeCameo5 = NONE
  4643.   
  4644.   Draw = W3DModelDraw ModuleTag_01
  4645.  
  4646.     OkToChangeModelColor = Yes
  4647.  
  4648.     DefaultConditionState
  4649.       Model               = NVMIG
  4650.       HideSubObject       = BurnerFX01 BurnerFX02
  4651.       WeaponLaunchBone    = PRIMARY WeaponA
  4652.     End
  4653.  
  4654.     ConditionState        = JETEXHAUST
  4655.       ParticleSysBone     = Wingtip01 JetContrail
  4656.       ParticleSysBone     = Wingtip02 JetContrail
  4657.     End
  4658.  
  4659.     ConditionState       = JETEXHAUST JETAFTERBURNER
  4660.       ShowSubObject      = BurnerFX01 BurnerFX02
  4661.       ParticleSysBone     = Exhaust01 JetExhaust
  4662.       ParticleSysBone     = Exhaust02 JetExhaust
  4663.       ParticleSysBone     = Wingtip01 JetContrail
  4664.       ParticleSysBone     = Wingtip02 JetContrail
  4665.     End
  4666.  
  4667.     ConditionState        = REALLYDAMAGED
  4668.       Model               = NVMIG_D
  4669.       ParticleSysBone     = Wingtip01 JetContrail
  4670.       ParticleSysBone     = Wingtip02 JetContrail
  4671.     End
  4672.  
  4673.     ConditionState        = RUBBLE
  4674.       Model               = NVMIG_D
  4675.     End
  4676.  
  4677.     ConditionState        = REALLYDAMAGED JETEXHAUST
  4678.       Model               = NVMIG_D
  4679.       ParticleSysBone     = Wingtip01 JetContrail
  4680.       ParticleSysBone     = Wingtip02 JetContrail
  4681.     End
  4682.  
  4683.     ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
  4684.       Model               = NVMIG_D
  4685.       ShowSubObject       = BurnerFX01 BurnerFX02
  4686.       ParticleSysBone     = Engine01 JetExhaust
  4687.       ParticleSysBone     = Engine02 JetExhaust
  4688.       ParticleSysBone     = Wingtip01 JetContrail
  4689.       ParticleSysBone     = Wingtip02 JetContrail
  4690.     End
  4691.  
  4692.     ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
  4693.       ; @todo srj -- model missing
  4694.       ;Model              = NVMIG_D1B
  4695.       Model               = NVMIG_D
  4696.       ;HideSubObject is needed cause there're inherited from default condition state      
  4697.       HideSubObject       = None 
  4698.       ShowSubObject       = None
  4699.       ParticleSysBone     = Engine01 JetExhaust
  4700.       ParticleSysBone     = Engine02 JetExhaust
  4701.       ParticleSysBone     = Wingtip01 JetContrail
  4702.       ParticleSysBone     = Wingtip02 JetContrail
  4703.     End
  4704.  
  4705.   End
  4706.  
  4707.   ; ***DESIGN parameters ***
  4708.   DisplayName             = OBJECT:MIG
  4709.   EditorSorting           = VEHICLE
  4710.   Side                    = China
  4711.   TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
  4712.   VisionRange             = 200.0 
  4713.   ShroudClearingRange     = 300.0
  4714.  
  4715.   Prerequisites
  4716.     Object                = ChinaAirfield
  4717.   End
  4718.  
  4719.   WeaponSet
  4720.     Conditions        = None 
  4721.     Weapon            = PRIMARY     NapalmMissileWeapon
  4722.     AutoChooseSources = PRIMARY     NONE
  4723.   End
  4724.   WeaponSet
  4725.     Conditions = PLAYER_UPGRADE 
  4726.     Weapon            = PRIMARY     BlackNapalmMissileWeapon
  4727.     AutoChooseSources = PRIMARY     NONE
  4728.   End
  4729.  
  4730.   ArmorSet
  4731.     Conditions           = None
  4732.     Armor                = AirplaneArmor
  4733.     DamageFX             = None
  4734.   End
  4735.  
  4736.   BuildCost               = 1200 ;1000
  4737.   BuildTime               = 10   
  4738.   ExperienceValue         = 50 50 100 150   ;Experience point value at each level
  4739.   ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
  4740.   IsTrainable = Yes             ;Can gain experience
  4741.   CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  4742.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  4743.   CommandSet             = ChinaJetMIGCommandSet
  4744.  
  4745.   ; *** AUDIO Parameters ***
  4746.   VoiceSelect             = MigVoiceSelect
  4747.   VoiceMove               = MigVoiceMove
  4748.   VoiceAttack             = MigVoiceAttack
  4749.   VoiceAttackAir          = MigVoiceAttackAir
  4750.   VoiceGuard              = MigVoiceAirPatrol
  4751.   SoundAmbient            = MigAmbientLoop
  4752.   SoundDie                = MigVoiceFalling
  4753.   UnitSpecificSounds
  4754.     VoiceCreate           = MigVoiceCreate
  4755.     Afterburner           = RaptorAfterburner
  4756.     VoiceGarrison         = MigVoiceMove
  4757.   End
  4758.  
  4759.   ; *** ENGINEERING Parameters ***
  4760.   RadarPriority          = UNIT
  4761.   KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  4762.   Body                   = ActiveBody ModuleTag_02
  4763.     MaxHealth            = 160.0
  4764.     InitialHealth        = 160.0
  4765.   End
  4766.  
  4767.   Behavior                          = JetSlowDeathBehavior ModuleTag_03
  4768.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  4769.     OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp
  4770.     DestructionDelay                = 99999999  ; destruction will happen when we
  4771.     RollRate                        = 0.2
  4772.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  4773.     PitchRate                       = 0.0
  4774.     FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  4775.     FXInitialDeath                  = FX_JetDeathInitial
  4776.     OCLInitialDeath                 = OCL_MIGDeathInitial
  4777.     DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
  4778.     FXSecondary                     = FX_JetDeathSecondary
  4779.     OCLSecondary                    = OCL_MIGDeathSecondary
  4780.     FXHitGround                     = FX_JetDeathHitGround
  4781.     OCLHitGround                    = OCL_MIGDeathHitGround
  4782.     DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
  4783.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  4784.     OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp
  4785.   End
  4786.  
  4787.   Behavior = WeaponSetUpgrade ModuleTag_04
  4788.     TriggeredBy = Upgrade_ChinaBlackNapalm
  4789.   End
  4790.  
  4791.   Behavior = PhysicsBehavior ModuleTag_05
  4792.     Mass = 500.0
  4793.   End
  4794.  
  4795.   Behavior = JetAIUpdate ModuleTag_06
  4796.     OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
  4797.                                         ; note that it's expressed as a percent of max health, not an absolute
  4798.     TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
  4799.     TakeoffPause              = 500
  4800.     MinHeight                 = 5
  4801.     ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
  4802.   End
  4803.  
  4804.   Locomotor = SET_NORMAL MIGLocomotor
  4805.   Locomotor = SET_TAXIING BasicJetTaxiLocomotor
  4806.  
  4807.  
  4808.   Behavior = FlammableUpdate ModuleTag_08
  4809.     AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
  4810.     AflameDamageAmount = 3       ; taking this much damage...
  4811.     AflameDamageDelay = 500      ; this often.
  4812.   End
  4813.  
  4814.   Behavior                       = TransitionDamageFX ModuleTag_09
  4815.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  4816.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
  4817.   End
  4818.  
  4819.   Behavior        = MaxHealthUpgrade ModuleTag_10
  4820.     TriggeredBy   = Upgrade_ChinaAircraftArmor
  4821.     AddMaxHealth  = 40.0
  4822.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  4823.   End
  4824.  
  4825.  
  4826.  
  4827.   Geometry                 = Box
  4828.   GeometryIsSmall          = Yes
  4829.   GeometryMajorRadius      = 14.0
  4830.   GeometryMinorRadius      = 7.0
  4831.   GeometryHeight           = 5.0
  4832.   Shadow                   = SHADOW_VOLUME
  4833.   
  4834.   Shadow = SHADOW_VOLUME
  4835.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  4836.  
  4837. End
  4838.  
  4839.  
  4840. ;------------------------------------------------------------------------------
  4841. ;This is the MIG as it's crashing
  4842. ;------------------------------------------------------------------------------
  4843. Object ChinaJetMIGHulk
  4844.   ; *** ART Parameters ***
  4845.   Draw                = W3DModelDraw ModuleTag_01
  4846.     DefaultConditionState
  4847.       Model           = NVMIG_D1
  4848.     End
  4849.   End
  4850.  
  4851.   ; ***DESIGN parameters ***
  4852.   EditorSorting       = DEBRIS
  4853.  
  4854.   ; *** ENGINEERING Parameters ***
  4855.   KindOf              =  NO_COLLIDE HULK
  4856.  
  4857.   Behavior                  = PhysicsBehavior ModuleTag_03
  4858.     Mass                    = 2.0
  4859.     AllowBouncing           = No
  4860.     KillWhenRestingOnGround = Yes
  4861.   End
  4862.  
  4863.   Behavior = LifetimeUpdate ModuleTag_04
  4864.     MinLifetime = 1500   ; min lifetime in msec
  4865.     MaxLifetime = 1600   ; max lifetime in msec
  4866.   End
  4867.  
  4868.   Behavior = SlowDeathBehavior ModuleTag_05
  4869.     SinkDelay        = 1500
  4870.     SinkRate            = 2     ; in Dist/Sec
  4871.     DestructionDelay = 8000
  4872.   End
  4873.  
  4874. End
  4875.  
  4876.  
  4877. ;------------------------------------------------------------------------------
  4878. Object NapalmMissile
  4879.  
  4880.   ; *** ART Parameters ***
  4881.   Draw = W3DModelDraw ModuleTag_01
  4882.     OkToChangeModelColor = Yes
  4883.     DefaultConditionState
  4884.       Model = AVRaptor_M
  4885.     End
  4886.   End
  4887.  
  4888.   ; ***DESIGN parameters ***
  4889.   DisplayName         = OBJECT:Missile
  4890.   EditorSorting       = SYSTEM
  4891.   VisionRange         = 0.0  ; Projectiles can't see, but superweapons *may need to*
  4892.   TransportSlotCount  = 1    ; since Napalm Strike carries us as payload, not weapon
  4893.   ArmorSet
  4894.     Conditions      = None
  4895.     Armor           = ProjectileArmor
  4896.     DamageFX        = None
  4897.   End
  4898.  
  4899.   ; *** ENGINEERING Parameters ***
  4900.   KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
  4901.   Body = ActiveBody ModuleTag_02
  4902.     MaxHealth       = 100.0
  4903.     InitialHealth   = 100.0
  4904.   End
  4905.  
  4906. ; ---- begin Projectile death behaviors
  4907.   Behavior = InstantDeathBehavior DeathModuleTag_01
  4908.     DeathTypes = NONE +DETONATED
  4909.     ; we detonated normally.
  4910.     ; no FX, just quiet destroy ourselves
  4911.   End
  4912.   Behavior = InstantDeathBehavior DeathModuleTag_02
  4913.     DeathTypes = NONE +LASERED
  4914.     ; shot down by laser.
  4915.     FX         = FX_GenericMissileDisintegrate
  4916.     OCL        = OCL_GenericMissileDisintegrate
  4917.   End
  4918.   Behavior = InstantDeathBehavior DeathModuleTag_03
  4919.     DeathTypes = ALL -LASERED -DETONATED
  4920.     ; shot down by nonlaser.
  4921.     FX         = FX_GenericMissileDeath
  4922.   End
  4923. ; ---- end Projectile death behaviors
  4924.  
  4925.   Behavior = PhysicsBehavior ModuleTag_06
  4926.     Mass = 1
  4927.   End
  4928.   Behavior = MissileAIUpdate ModuleTag_07
  4929.     TryToFollowTarget   = Yes 
  4930.     FuelLifetime        = 10000
  4931.     InitialVelocity     = 75                ; in dist/sec
  4932.     IgnitionDelay       = 30
  4933.     IgnitionFX          = FX_NapalmMissileIgnition
  4934.   End
  4935.   Locomotor = SET_NORMAL NapalmMissileLocomotor
  4936.  
  4937.   Geometry = Sphere
  4938.   GeometryIsSmall = Yes
  4939.   GeometryMajorRadius = 1.0
  4940.  
  4941. End
  4942.  
  4943. ;------------------------------------------------------------------------------
  4944. Object ChinaJetMIGNapalmStriker
  4945.  
  4946.   ; *** ART Parameters ***
  4947.   Draw = W3DModelDraw ModuleTag_01
  4948.  
  4949.     DefaultConditionState
  4950.       Model = NVMig
  4951.       WeaponLaunchBone    = PRIMARY WeaponA
  4952.       ParticleSysBone     = Exhaust01 JetExhaust
  4953.       ;ParticleSysBone    = Exhaust02 JetExhaust
  4954.       HideSubObject       = BurnerFX01 BurnerFX02
  4955.     End
  4956.     ConditionState = REALLYDAMAGED
  4957.       Model = NVMig_d
  4958.     End
  4959.     AliasConditionState = RUBBLE
  4960.  
  4961.     OkToChangeModelColor = Yes
  4962.   End
  4963.  
  4964.   ; ***DESIGN parameters ***
  4965.   DisplayName         = OBJECT:MIG
  4966.   EditorSorting       = SYSTEM
  4967.   Side                = China
  4968.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  4969.   VisionRange         = 300.0 
  4970.   ShroudClearingRange = 300
  4971.   Prerequisites
  4972.     Object = ChinaAirfield
  4973.   End
  4974.   WeaponSet
  4975.     Conditions        = None 
  4976.     Weapon            = PRIMARY     NapalmMissileWeapon
  4977.   End
  4978.   WeaponSet
  4979.     Conditions        = PLAYER_UPGRADE
  4980.     Weapon            = PRIMARY     BlackNapalmMissileWeapon
  4981.   End
  4982.   ArmorSet
  4983.     Conditions      = None
  4984.     Armor           = AirplaneArmor
  4985.     DamageFX        = None
  4986.   End
  4987.   CommandSet        = ChinaJetMIGCommandSet
  4988.  
  4989.   ; *** AUDIO Parameters ***
  4990.   SoundAmbient = F15MoveLoop
  4991.   SoundAmbientRubble    = NoSound
  4992.  
  4993.   ; *** ENGINEERING Parameters ***
  4994.   RadarPriority = UNIT 
  4995.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE AIRCRAFT IGNORED_IN_GUI
  4996.  
  4997.   Body = ActiveBody ModuleTag_02
  4998.     MaxHealth       = 200.0
  4999.     InitialHealth   = 200.0
  5000.   End
  5001.  
  5002.   Behavior = SpecialPowerCompletionDie ModuleTag_03
  5003.     SpecialPowerTemplate = SuperweaponNapalmStrike
  5004.   End
  5005.  
  5006.   Behavior                          = JetSlowDeathBehavior ModuleTag_04
  5007.     DestructionDelay                = 99999999; destruction will happen when we
  5008.     RollRate                        = 0.2
  5009.     RollRateDelta                   = 100%     ;each frame, rollrate = rollrate * rollrateDelta
  5010.     PitchRate                       = 0.0
  5011.     FallHowFast                     = 110.0%   ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  5012.     FXInitialDeath                  = FX_JetDeathInitial
  5013.     OCLInitialDeath                 = OCL_MIGDeathInitial
  5014.     DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
  5015.     FXSecondary                     = FX_JetDeathSecondary
  5016.     OCLSecondary                    = OCL_MIGDeathSecondary
  5017.     FXHitGround                     = FX_JetDeathHitGround
  5018.     OCLHitGround                    = OCL_MIGDeathHitGround
  5019.     DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
  5020.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  5021.     OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp
  5022.   End
  5023.  
  5024.   Behavior = DeliverPayloadAIUpdate ModuleTag_06
  5025.     DoorDelay = 0
  5026.   End
  5027.   Locomotor = SET_NORMAL MIGLocomotor
  5028.  
  5029.   Behavior = WeaponSetUpgrade ModuleTag_07
  5030.     TriggeredBy = Upgrade_ChinaBlackNapalm
  5031.   End
  5032.  
  5033.   Behavior = TransportContain ModuleTag_08
  5034.     Slots = 100                     ; hey, it's a BIG transport
  5035.     ScatterNearbyOnExit = No
  5036.     OrientLikeContainerOnExit = Yes
  5037.     KeepContainerVelocityOnExit = Yes
  5038.     ExitPitchRate = 30
  5039.     ExitBone = WeaponA
  5040.     AllowInsideKindOf  = PROJECTILE
  5041.     DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
  5042.     NumberOfExitPaths = 0
  5043.     DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
  5044.   End
  5045.  
  5046.   Behavior = PhysicsBehavior ModuleTag_09
  5047.     Mass = 500.0
  5048.   End
  5049.  
  5050.   Behavior = FlammableUpdate ModuleTag_21
  5051.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  5052.     AflameDamageAmount = 3       ; taking this much damage...
  5053.     AflameDamageDelay = 500       ; this often.
  5054.   End
  5055.  
  5056.  
  5057.   Geometry = Cylinder
  5058.   GeometryIsSmall = Yes
  5059.   GeometryMajorRadius = 7.0
  5060.   GeometryMinorRadius = 7.0
  5061.   GeometryHeight = 7.0
  5062.   
  5063.   Shadow = SHADOW_VOLUME
  5064.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  5065.  
  5066. End
  5067.  
  5068. ;------------------------------------------------------------------------------
  5069. Object ChinaJetMIG_CinematicVersion
  5070.  
  5071.   ; *** ART Parameters ***
  5072.   SelectPortrait         = SNMig_L
  5073.   ButtonImage            = SNMig
  5074.   
  5075.   UpgradeCameo1 = Upgrade_ChinaAircraftArmor
  5076.   UpgradeCameo2 = Upgrade_ChinaBlackNapalm
  5077.   ;UpgradeCameo3 = NONE
  5078.   ;UpgradeCameo4 = NONE
  5079.   ;UpgradeCameo5 = NONE
  5080.   
  5081.   Draw = W3DModelDraw ModuleTag_01
  5082.  
  5083.     OkToChangeModelColor = Yes
  5084.  
  5085.     DefaultConditionState
  5086.       Model               = NVMIG
  5087.       HideSubObject       = BurnerFX01 BurnerFX02
  5088.       WeaponLaunchBone    = PRIMARY WeaponA
  5089.     End
  5090.  
  5091.     ConditionState        = JETEXHAUST
  5092.       ParticleSysBone     = Wingtip01 JetContrail
  5093.       ParticleSysBone     = Wingtip02 JetContrail
  5094.     End
  5095.  
  5096.     ConditionState       = JETEXHAUST JETAFTERBURNER
  5097.       ShowSubObject      = BurnerFX01 BurnerFX02
  5098.       ParticleSysBone     = Exhaust01 JetExhaust
  5099.       ParticleSysBone     = Exhaust02 JetExhaust
  5100.       ParticleSysBone     = Wingtip01 JetContrail
  5101.       ParticleSysBone     = Wingtip02 JetContrail
  5102.     End
  5103.  
  5104.     ConditionState        = REALLYDAMAGED
  5105.       Model               = NVMIG_D
  5106.       ParticleSysBone     = Wingtip01 JetContrail
  5107.       ParticleSysBone     = Wingtip02 JetContrail
  5108.     End
  5109.  
  5110.     ConditionState        = RUBBLE
  5111.       Model               = NVMIG_D
  5112.     End
  5113.  
  5114.     ConditionState        = REALLYDAMAGED JETEXHAUST
  5115.       Model               = NVMIG_D
  5116.       ParticleSysBone     = Wingtip01 JetContrail
  5117.       ParticleSysBone     = Wingtip02 JetContrail
  5118.     End
  5119.  
  5120.     ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
  5121.       Model               = NVMIG_D
  5122.       ShowSubObject       = BurnerFX01 BurnerFX02
  5123.       ParticleSysBone     = Engine01 JetExhaust
  5124.       ParticleSysBone     = Engine02 JetExhaust
  5125.       ParticleSysBone     = Wingtip01 JetContrail
  5126.       ParticleSysBone     = Wingtip02 JetContrail
  5127.     End
  5128.  
  5129.     ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
  5130.       ; @todo srj -- model missing
  5131.       ;Model              = NVMIG_D1B
  5132.       Model               = NVMIG_D
  5133.       ;HideSubObject is needed cause there're inherited from default condition state      
  5134.       HideSubObject       = None 
  5135.       ShowSubObject       = None
  5136.       ParticleSysBone     = Engine01 JetExhaust
  5137.       ParticleSysBone     = Engine02 JetExhaust
  5138.       ParticleSysBone     = Wingtip01 JetContrail
  5139.       ParticleSysBone     = Wingtip02 JetContrail
  5140.     End
  5141.  
  5142.   End
  5143.  
  5144.   ; ***DESIGN parameters ***
  5145.   DisplayName             = OBJECT:MIG
  5146.   EditorSorting           = VEHICLE
  5147.   Side                    = China
  5148.   TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
  5149.   VisionRange             = 300.0 
  5150.   ShroudClearingRange     = 300.0
  5151.  
  5152.   Prerequisites
  5153.     Object                = ChinaAirfield
  5154.   End
  5155.  
  5156.   WeaponSet
  5157.     Conditions        = None 
  5158.     Weapon            = PRIMARY     NapalmMissileWeapon
  5159.     AutoChooseSources = PRIMARY     NONE
  5160.   End
  5161.   WeaponSet
  5162.     Conditions = PLAYER_UPGRADE 
  5163.     Weapon            = PRIMARY     BlackNapalmMissileWeapon
  5164.     AutoChooseSources = PRIMARY     NONE
  5165.   End
  5166.  
  5167.   ArmorSet
  5168.     Conditions           = None
  5169.     Armor                = AirplaneArmor
  5170.     DamageFX             = None
  5171.   End
  5172.  
  5173.   BuildCost               = 1200
  5174.   BuildTime               = 15   
  5175.   ExperienceValue         = 50 50 100 150   ;Experience point value at each level
  5176.   ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
  5177.   IsTrainable = Yes             ;Can gain experience
  5178.   CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  5179.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  5180.   CommandSet             = ChinaJetMIGCommandSet
  5181.  
  5182.   ; *** AUDIO Parameters ***
  5183.   VoiceSelect             = MigVoiceSelect
  5184.   VoiceMove               = MigVoiceMove
  5185.   VoiceAttack             = MigVoiceAttack
  5186.   VoiceAttackAir          = MigVoiceAttackAir
  5187.   VoiceGuard              = MigVoiceAirPatrol
  5188.   SoundMoveLoop           = MigAmbientLoop  ; don't want sound while sitting at airfield
  5189.   SoundAmbient            = NoSound
  5190.   SoundAmbientRubble      = NoSound
  5191.   SoundDie                = MigVoiceFalling
  5192.   UnitSpecificSounds
  5193.     VoiceCreate           = MigVoiceCreate
  5194.     Afterburner           = RaptorAfterburner
  5195.     VoiceGarrison         = MigVoiceMove
  5196.   End
  5197.  
  5198.   ; *** ENGINEERING Parameters ***
  5199.   RadarPriority          = UNIT
  5200.   KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  5201.   Body                   = ActiveBody ModuleTag_02
  5202.     MaxHealth            = 160.0
  5203.     InitialHealth        = 160.0
  5204.   End
  5205.  
  5206.   Behavior                          = JetSlowDeathBehavior ModuleTag_03
  5207.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  5208.     OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp_CinematicVersion
  5209.     DestructionDelay                = 99999999  ; destruction will happen when we
  5210.     RollRate                        = 0.2
  5211.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  5212.     PitchRate                       = 0.0
  5213.     FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  5214.     FXInitialDeath                  = FX_JetDeathInitial
  5215.     OCLInitialDeath                 = OCL_MIGDeathInitial
  5216.     DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
  5217.     FXSecondary                     = FX_JetDeathSecondary
  5218.     OCLSecondary                    = OCL_MIGDeathSecondary
  5219.     FXHitGround                     = FX_JetDeathHitGround
  5220.     OCLHitGround                    = OCL_MIGDeathHitGround
  5221.     DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
  5222.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp_CinematicVersion
  5223.     OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp_CinematicVersion
  5224.   End
  5225.  
  5226.   Behavior = WeaponSetUpgrade ModuleTag_04
  5227.     TriggeredBy = Upgrade_ChinaBlackNapalm
  5228.   End
  5229.  
  5230.   Behavior = PhysicsBehavior ModuleTag_05
  5231.     Mass = 500.0
  5232.   End
  5233.  
  5234.   Behavior = JetAIUpdate ModuleTag_06
  5235.     OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
  5236.                                         ; note that it's expressed as a percent of max health, not an absolute
  5237.     TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
  5238.     TakeoffPause              = 500
  5239.     MinHeight                 = 5
  5240.     ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
  5241.   End
  5242.  
  5243.   Locomotor = SET_NORMAL MIGLocomotor
  5244.   Locomotor = SET_TAXIING BasicJetTaxiLocomotor
  5245.  
  5246.  
  5247.   Behavior = FlammableUpdate ModuleTag_08
  5248.     AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
  5249.     AflameDamageAmount = 3       ; taking this much damage...
  5250.     AflameDamageDelay = 500      ; this often.
  5251.   End
  5252.  
  5253.   Behavior                       = TransitionDamageFX ModuleTag_09
  5254.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  5255.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
  5256.   End
  5257.  
  5258.   Behavior        = MaxHealthUpgrade ModuleTag_10
  5259.     TriggeredBy   = Upgrade_ChinaAircraftArmor
  5260.     AddMaxHealth  = 40.0
  5261.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  5262.   End
  5263.  
  5264.  
  5265.  
  5266.   Geometry                 = Box
  5267.   GeometryIsSmall          = Yes
  5268.   GeometryMajorRadius      = 14.0
  5269.   GeometryMinorRadius      = 7.0
  5270.   GeometryHeight           = 5.0
  5271.   Shadow                   = SHADOW_VOLUME
  5272.   
  5273.   Shadow = SHADOW_VOLUME
  5274.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  5275.  
  5276. End
  5277.  
  5278. ;------------------------------------------------------------------------------
  5279. Object AmericaInfantryRanger
  5280.  
  5281.   ; *** ART Parameters ***
  5282.   SelectPortrait          = SARanger_L
  5283.   ButtonImage            = SARanger
  5284.   
  5285.   UpgradeCameo1 = Upgrade_AmericaRangerFlashBangGrenade
  5286.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  5287.   UpgradeCameo3 = Upgrade_InfantryCaptureBuilding
  5288.   ;UpgradeCameo4 = NONE
  5289.   ;UpgradeCameo5 = NONE
  5290.   
  5291.   Draw = W3DModelDraw ModuleTag_01
  5292.  
  5293.     OkToChangeModelColor = Yes
  5294.  
  5295.     ; this says "we don't use these condition states at all, so completely
  5296.     ; ignore them for purposes of matchmaking"... this is useful to help
  5297.     ; reduce the number of AliasConditionState clauses you must add in
  5298.     ; order to avoid ambiguity in some cases.
  5299.     IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
  5300.  
  5301.     ; --- Idle
  5302.     DefaultConditionState
  5303.       Model             = AIRngr_SKN
  5304.       IdleAnimation     = AIRngr_SKL.AIRngr_STA 0 35
  5305.       IdleAnimation     = AIRngr_SKL.AIRngr_IDA
  5306.       IdleAnimation     = AIRngr_SKL.AIRngr_IDB
  5307.       AnimationMode     = ONCE
  5308.       WeaponFireFXBone  = PRIMARY Muzzle
  5309.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  5310.       WeaponFireFXBone  = SECONDARY Muzzle
  5311.       WeaponLaunchBone  = SECONDARY Muzzle
  5312.       TransitionKey     = TRANS_Stand
  5313.  
  5314.     End
  5315.  
  5316.     ConditionState      = REALLYDAMAGED
  5317.       IdleAnimation     = AIRngr_SKL.AIRngr_STB 0 35
  5318.       IdleAnimation     = AIRngr_SKL.AIRngr_IDC
  5319.       IdleAnimation     = AIRngr_SKL.AIRngr_IDD
  5320.       AnimationMode     = ONCE
  5321.       TransitionKey     = TRANS_StandInjured
  5322.     End
  5323.  
  5324.     TransitionState     = TRANS_Stand TRANS_StandInjured
  5325.       Animation         = AIRngr_SKL.AIRngr_SA2SB
  5326.       AnimationMode     = ONCE
  5327.     End
  5328.  
  5329.     ; --- attacking (Machine Gun)
  5330.     ConditionState      = USING_WEAPON_A
  5331.       Animation         = AIRngr_SKL.AIRngr_ATA
  5332.       AnimationMode     = LOOP
  5333.       TransitionKey     = TRANS_FiringA
  5334.     End
  5335.  
  5336.     ConditionState      = USING_WEAPON_A REALLYDAMAGED
  5337.       Animation         = AIRngr_SKL.AIRngr_ATA2
  5338.       AnimationMode     = LOOP
  5339.       TransitionKey     = TRANS_FiringAInjured
  5340.     End
  5341.  
  5342.     TransitionState     = TRANS_FiringA TRANS_FiringAInjured
  5343.       Animation         = AIRngr_SKL.AIRngr_A2WAA
  5344.       AnimationMode     = ONCE
  5345.     End
  5346.  
  5347.     TransitionState     = TRANS_Stand TRANS_FiringA
  5348.       Animation         = AIRngr_SKL.AIRngr_ATAST
  5349.       AnimationMode     = ONCE
  5350.       AnimationSpeedFactorRange = 4 4
  5351.     End
  5352.  
  5353.     TransitionState     = TRANS_FiringA TRANS_Stand
  5354.       Animation         = AIRngr_SKL.AIRngr_ATAED
  5355.       AnimationMode     = ONCE
  5356.       AnimationSpeedFactorRange = 4 4
  5357.     End
  5358.  
  5359.     TransitionState     = TRANS_StandInjured TRANS_FiringAInjured
  5360.       Animation         = AIRngr_SKL.AIRngr_S2WAA
  5361.       AnimationMode     = ONCE
  5362.       AnimationSpeedFactorRange = 4 4
  5363.     End
  5364.  
  5365.     TransitionState     = TRANS_FiringAInjured TRANS_StandInjured
  5366.       Animation         = AIRngr_SKL.AIRngr_WAA2S
  5367.       AnimationMode     = ONCE
  5368.       AnimationSpeedFactorRange = 4 4
  5369.     End
  5370.     
  5371.     TransitionState     = TRANS_Stand TRANS_Move
  5372.       Animation         = AIRngr_SKL.AIRngr_STA2RNA
  5373.       AnimationMode     = ONCE
  5374.     End
  5375.  
  5376.     ; --- attacking (Grenade Launcher)
  5377.     ConditionState      = PREATTACK_B 
  5378.       Animation         = AIRngr_SKL.AIRngr_ATBA
  5379.       AnimationMode     = ONCE
  5380.       TransitionKey     = TRANS_FiringB
  5381.     End
  5382.     AliasConditionState = PREATTACK_B MOVING
  5383.     AliasConditionState = PREATTACK_B FIRING_B
  5384.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
  5385.  
  5386.     ConditionState      = FIRING_B
  5387.       Animation         = AIRngr_SKL.AIRngr_ATBB
  5388.       AnimationMode     = ONCE
  5389.       TransitionKey     = TRANS_FiringB
  5390.     End
  5391.  
  5392.     ConditionState      = BETWEEN_FIRING_SHOTS_B
  5393.       Animation         = AIRngr_SKL.AIRngr_ATBB
  5394.       AnimationMode     = MANUAL
  5395.       Flags             = START_FRAME_LAST
  5396.       TransitionKey     = TRANS_FiringB
  5397.       WaitForStateToFinishIfPossible = TRANS_FiringB
  5398.     End
  5399.     AliasConditionState = RELOADING_B
  5400.  
  5401.     TransitionState     = TRANS_Stand TRANS_FiringB
  5402.       Animation         = AIRngr_SKL.AIRngr_ATBST1
  5403.       AnimationMode     = ONCE
  5404.     End
  5405.  
  5406.     TransitionState     = TRANS_FiringB TRANS_Stand
  5407.       Animation         = AIRngr_SKL.AIRngr_ATBST2
  5408.       AnimationMode     = ONCE
  5409.     End
  5410.  
  5411.     ConditionState      = PREATTACK_B REALLYDAMAGED
  5412.       Animation         = AIRngr_SKL.AIRngr_ATB2A
  5413.       AnimationMode     = ONCE
  5414.       TransitionKey     = TRANS_FiringBInjured
  5415.     End
  5416.     AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
  5417.     AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
  5418.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  5419.  
  5420.     ConditionState      = FIRING_B REALLYDAMAGED
  5421.       Animation         = AIRngr_SKL.AIRngr_ATB2B
  5422.       AnimationMode     = ONCE
  5423.       TransitionKey     = TRANS_FiringBInjured
  5424.     End
  5425.  
  5426.     ConditionState      = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  5427.       Animation         = AIRngr_SKL.AIRngr_ATB2B
  5428.       AnimationMode     = MANUAL
  5429.       Flags             = START_FRAME_LAST
  5430.       TransitionKey     = TRANS_FiringBInjured
  5431.       WaitForStateToFinishIfPossible = TRANS_FiringBInjured
  5432.     End
  5433.     AliasConditionState = RELOADING_B REALLYDAMAGED
  5434.  
  5435.     TransitionState     = TRANS_StandInjured TRANS_FiringBInjured
  5436.       Animation         = AIRngr_SKL.AIRngr_ATB2ST1
  5437.       AnimationMode     = ONCE
  5438.     End
  5439.  
  5440.     TransitionState     = TRANS_FiringBInjured TRANS_StandInjured
  5441.       Animation         = AIRngr_SKL.AIRngr_ATB2ST2
  5442.       AnimationMode     = ONCE
  5443.     End
  5444.  
  5445.     ; -- cross-attack transitions
  5446.  
  5447.     TransitionState     = TRANS_FiringA TRANS_FiringB
  5448.       Animation         = AIRngr_SKL.AIRngr_ATA2AB
  5449.       AnimationMode     = ONCE
  5450.       AnimationSpeedFactorRange = 4 4
  5451.     End
  5452.  
  5453.     TransitionState     = TRANS_FiringB TRANS_FiringA
  5454.       Animation         = AIRngr_SKL.AIRngr_ATA2AB
  5455.       AnimationMode     = ONCE_BACKWARDS
  5456.       AnimationSpeedFactorRange = 4 4
  5457.     End
  5458.  
  5459.  
  5460.     ; --- moving
  5461.     ConditionState      = MOVING
  5462.       Animation         = AIRngr_SKL.AIRngr_RNA 30
  5463.       AnimationMode     = LOOP
  5464.       Flags             = RANDOMSTART
  5465.       TransitionKey     = TRANS_Move
  5466.       ParticleSysBone   = None InfantryDustTrails
  5467.     End
  5468.     AliasConditionState = MOVING ATTACKING
  5469.  
  5470.     ConditionState      = MOVING REALLYDAMAGED
  5471.       Animation         = AIRngr_SKL.AIRngr_RNB 30
  5472.       AnimationMode     = LOOP
  5473.       Flags             = RANDOMSTART
  5474.       TransitionKey     = TRANS_Move
  5475.     End
  5476.     AliasConditionState = MOVING REALLYDAMAGED ATTACKING
  5477.     
  5478.     ; --- dying anims
  5479.     ConditionState      = DYING
  5480.       Animation         = AIRngr_SKL.AIRngr_DTA
  5481.       Animation         = AIRngr_SKL.AIRngr_DTB
  5482.       AnimationMode     = ONCE
  5483.       TransitionKey     = None
  5484.     End
  5485.  
  5486.     TransitionState     = TRANS_Dying TRANS_Flailing
  5487.       Animation         = AIRngr_SKL.AIRngr_ADTF1
  5488.       AnimationMode     = ONCE
  5489.     End
  5490.  
  5491.     ConditionState      = DYING EXPLODED_FLAILING
  5492.       Animation         = AIRngr_SKL.AIRngr_ADTF2
  5493.       AnimationMode     = LOOP
  5494.       TransitionKey     = TRANS_Flailing
  5495.     End
  5496.  
  5497.     ConditionState      = DYING EXPLODED_BOUNCING
  5498.       Animation         = AIRngr_SKL.AIRngr_ADTF3
  5499.       AnimationMode     = ONCE
  5500.       TransitionKey     = None
  5501.     End
  5502.     AliasConditionState = DYING SPLATTED
  5503.  
  5504.     ; --- cheering
  5505.     ConditionState      = SPECIAL_CHEERING
  5506.       Animation         = AIRngr_SKL.AIRngr_CHA
  5507.       AnimationMode     = LOOP
  5508.     End
  5509.  
  5510.     ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
  5511.       Animation         = AIRngr_SKL.AIRngr_CHB
  5512.       AnimationMode     = LOOP
  5513.     End
  5514.  
  5515.     ; ----- PARACHUTING ANIMATIONS
  5516.     ConditionState      = FREEFALL
  5517.       Animation         = AIRngr_SKL.AIRngr_PFL
  5518.       AnimationMode     = LOOP
  5519.       TransitionKey     = TRANS_Falling
  5520.     End
  5521.     AliasConditionState = FREEFALL REALLYDAMAGED
  5522.     AliasConditionState = FREEFALL DYING
  5523.     ConditionState      = PARACHUTING
  5524.       Animation         = AIRngr_SKL.AIRngr_PHG
  5525.       AnimationMode     = LOOP
  5526.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  5527.       TransitionKey     = TRANS_Chute
  5528.     End
  5529.     AliasConditionState = PARACHUTING REALLYDAMAGED
  5530.     AliasConditionState = PARACHUTING DYING
  5531.     TransitionState     = TRANS_Falling TRANS_Chute
  5532.       Animation         = AIRngr_SKL.AIRngr_POP
  5533.       AnimationMode     = ONCE
  5534.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  5535.     End
  5536.     TransitionState     = TRANS_Chute TRANS_Stand
  5537.       Animation         = AIRngr_SKL.AIRngr_PTD
  5538.       AnimationMode     = ONCE
  5539.     End
  5540.     TransitionState     = TRANS_Chute TRANS_StandInjured
  5541.       Animation         = AIRngr_SKL.AIRngr_PTD
  5542.       AnimationMode     = ONCE
  5543.     End
  5544.  
  5545.     ; ------- Bldg-capture
  5546.  
  5547.     ConditionState      = UNPACKING
  5548.       Model             = AIRngr_F_SKN
  5549.       Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
  5550.       AnimationMode     = ONCE
  5551.     End
  5552.     AliasConditionState = UNPACKING REALLYDAMAGED
  5553.  
  5554.  
  5555.     ConditionState      = RAISING_FLAG
  5556.       Model             = AIRngr_F_SKN
  5557.       Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
  5558.       AnimationMode     = ONCE
  5559.       TransitionKey     = TRANS_Raising
  5560.     End
  5561.     AliasConditionState = RAISING_FLAG REALLYDAMAGED
  5562.  
  5563.     ConditionState      = PACKING
  5564.       Model             = AIRngr_F_SKN
  5565.       Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
  5566.       AnimationMode     = ONCE_BACKWARDS
  5567.       Flags             = START_FRAME_LAST
  5568.       TransitionKey     = TRANS_Packing
  5569.     End
  5570.     AliasConditionState = PACKING REALLYDAMAGED
  5571.  
  5572.     TransitionState     = TRANS_Raising TRANS_Packing
  5573.       Model             = AIRngr_F_SKN
  5574.       Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
  5575.       AnimationMode     = ONCE_BACKWARDS
  5576.       Flags             = START_FRAME_LAST
  5577.     End
  5578.  
  5579.     ; --- RAPPELLING ANIMATIONS
  5580.     ConditionState      = RAPPELLING
  5581.       Animation         = AIRngr_SKL.AIRngr_RPL1 ;30
  5582.       AnimationMode     = LOOP
  5583.       Flags             = RANDOMSTART
  5584.       TransitionKey     = TRANS_Rappelling
  5585.     End
  5586.     AliasConditionState = MOVING RAPPELLING
  5587.  
  5588.     TransitionState     = TRANS_Rappelling TRANS_Stand
  5589.       Animation         = AIRngr_SKL.AIRngr_RPL2
  5590.       AnimationMode     = ONCE
  5591.     End
  5592.  
  5593.     TransitionState     = TRANS_Rappelling TRANS_StandInjured
  5594.       Animation         = AIRngr_SKL.AIRngr_RPL2
  5595.       AnimationMode     = ONCE
  5596.     End
  5597.  
  5598.   End
  5599.  
  5600.   ; ***DESIGN parameters ***
  5601.   DisplayName         = OBJECT:Ranger
  5602.   Side                = America
  5603.   EditorSorting       = INFANTRY
  5604.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  5605.   
  5606.   WeaponSet
  5607.     Conditions = None 
  5608.     Weapon = PRIMARY RangerAdvancedCombatRifle
  5609.   End
  5610.   WeaponSet
  5611.     Conditions = PLAYER_UPGRADE 
  5612.     Weapon = PRIMARY RangerAdvancedCombatRifle
  5613.     Weapon = SECONDARY RangerFlashBangGrenadeWeapon
  5614.     AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
  5615.     AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
  5616.   End
  5617.   ArmorSet
  5618.     Conditions      = None
  5619.     Armor           = HumanArmor
  5620.     DamageFX        = InfantryDamageFX
  5621.   End
  5622.  
  5623.   VisionRange = 100
  5624.   ShroudClearingRange = 400
  5625.   Prerequisites
  5626.     Object = AmericaBarracks
  5627.   End
  5628.   BuildCost = 225
  5629.   BuildTime = 5.0          ;in seconds  
  5630.   
  5631.   ExperienceValue = 20 20 40 60    ;Experience point value at each level
  5632.   ExperienceRequired = 0 40 60 120  ;Experience points needed to gain each level
  5633.   IsTrainable = Yes             ;Can gain experience
  5634.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  5635.   CommandSet          = AmericaInfantryRangerCommandSet
  5636.  
  5637.   ; *** AUDIO Parameters ***
  5638.   VoiceSelect = RangerVoiceSelect
  5639.   VoiceMove = RangerVoiceMove
  5640.   VoiceGuard = RangerVoiceMove
  5641.   VoiceAttack = RangerVoiceAttack
  5642.   SoundDie = RangerVoiceDie
  5643.   VoiceFear = RangerVoiceFear
  5644.   VoiceTaskComplete = RangerVoiceCaptureComplete
  5645.  
  5646.   UnitSpecificSounds
  5647.     VoiceEnter = RangerVoiceMove
  5648.     VoiceEnterHostile = RangerVoiceMove
  5649.     VoiceGarrison = RangerVoiceGarrison
  5650.     VoiceCreate         = RangerVoiceCreate
  5651.     VoiceSubdue         = RangerVoiceSubdue
  5652.     VoiceClearBuilding  = RangerVoiceClearBuilding
  5653.     VoiceGetHealed      = RangerVoiceMove
  5654.     VoicePrimaryWeaponMode = RangerVoiceModeGun
  5655.     VoiceSecondaryWeaponMode = RangerVoiceModeFlashBang
  5656.   End
  5657.  
  5658.   UnitSpecificFX
  5659.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  5660.     CombatDropKillFX = FX_RangerCombatDropKill
  5661.   End
  5662.  
  5663.   ; *** ENGINEERING Parameters ***
  5664.   RadarPriority = UNIT
  5665.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY CAN_RAPPEL SCORE
  5666.  
  5667.   Behavior = CommandButtonHuntUpdate ModuleTag_02
  5668.   End
  5669.  
  5670.   Body = ActiveBody ModuleTag_03
  5671.     MaxHealth       = 180.0
  5672.     InitialHealth   = 180.0
  5673.   End
  5674.  
  5675.   Behavior = ExperienceScalarUpgrade ModuleTag_04
  5676.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  5677.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  5678.   End
  5679.  
  5680.   Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
  5681.     ScanRate = 1000 ; once a second.
  5682.     ScanRange = 300 ;
  5683.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  5684.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  5685.   End
  5686.  
  5687.   Behavior = AIUpdateInterface ModuleTag_06
  5688.     AutoAcquireEnemiesWhenIdle = Yes
  5689.   End
  5690.   Locomotor = SET_NORMAL BasicHumanLocomotor
  5691.  
  5692.   Behavior = PhysicsBehavior ModuleTag_07
  5693.     Mass = 5.0
  5694.   End
  5695.  
  5696.   Behavior = ProductionUpdate ModuleTag_08
  5697.     ; nothing
  5698.   End
  5699.  
  5700.   Behavior = CommandButtonHuntUpdate  ModuleTag_09 ; allows use of command button hunt script with this unit. 
  5701.   End
  5702.  
  5703.   Behavior = WeaponSetUpgrade ModuleTag_10
  5704.     TriggeredBy = Upgrade_AmericaRangerFlashBangGrenade
  5705.   End
  5706.  
  5707.  
  5708. ; --- begin Death modules ---
  5709.   Behavior = SlowDeathBehavior ModuleTag_Death01
  5710.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  5711.     SinkDelay           = 3000
  5712.     SinkRate            = 0.5     ; in Dist/Sec
  5713.     DestructionDelay    = 8000
  5714.     FX                  = INITIAL FX_GIDie
  5715.   End
  5716.   Behavior = SlowDeathBehavior ModuleTag_Death02
  5717.     DeathTypes          = NONE +CRUSHED +SPLATTED
  5718.     SinkDelay           = 3000
  5719.     SinkRate            = 0.5     ; in Dist/Sec
  5720.     DestructionDelay    = 8000
  5721.     FX                  = INITIAL FX_GIDieCrushed
  5722.   End
  5723.   Behavior = SlowDeathBehavior ModuleTag_Death03
  5724.     DeathTypes          = NONE +EXPLODED
  5725.     SinkDelay           = 3000
  5726.     SinkRate            = 0.5     ; in Dist/Sec
  5727.     DestructionDelay    = 8000
  5728.     FX                  = INITIAL FX_GIDie
  5729.     FlingForce          = 8
  5730.     FlingForceVariance  = 3
  5731.     FlingPitch          = 60
  5732.     FlingPitchVariance  = 10
  5733.   End
  5734.   Behavior = SlowDeathBehavior ModuleTag_Death04
  5735.     DeathTypes          = NONE +BURNED
  5736.     DestructionDelay    = 0
  5737.     FX                  = INITIAL FX_GIDie
  5738.     OCL                 = INITIAL OCL_FlamingInfantry
  5739.   End
  5740.   Behavior = SlowDeathBehavior ModuleTag_Death05
  5741.     DeathTypes          = NONE +POISONED
  5742.     DestructionDelay    = 0
  5743.     FX                  = INITIAL FX_GIDie
  5744.     OCL                 = INITIAL OCL_ToxicInfantry
  5745.   End
  5746.   
  5747.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  5748.     DeathTypes          = NONE +POISONED_BETA
  5749.     DestructionDelay    = 0
  5750.     FX                  = INITIAL FX_GIDie
  5751.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  5752.   End
  5753. ; --- end Death modules ---
  5754.  
  5755.   Behavior = SquishCollide ModuleTag_12
  5756.     ;nothing
  5757.   End
  5758.  
  5759.   Behavior = PoisonedBehavior ModuleTag_17
  5760.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  5761.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  5762.   End
  5763.  
  5764.   Behavior = SpecialAbility ModuleTag_18
  5765.     SpecialPowerTemplate      = SpecialAbilityRangerCaptureBuilding
  5766.     UpdateModuleStartsAttack  = Yes
  5767.     StartsPaused              = Yes ; Unpaused by upgrade module
  5768.     InitiateSound         = RangerVoiceCapture
  5769.   End
  5770.   Behavior = SpecialAbilityUpdate ModuleTag_19
  5771.     SpecialPowerTemplate  = SpecialAbilityRangerCaptureBuilding
  5772.     StartAbilityRange  = 5.0
  5773.     UnpackTime            = 3000  ; (changing this will scale anim speed)
  5774.     PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
  5775.     PackTime              = 2000  ; (changing this will scale anim speed)
  5776.     DoCaptureFX           = Yes
  5777.     AwardXPForTriggering  = 15
  5778.     ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  5779.   End
  5780.  
  5781.   Behavior = UnpauseSpecialPowerUpgrade ModuleTag_20
  5782.     SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
  5783.     TriggeredBy = Upgrade_InfantryCaptureBuilding
  5784.   End
  5785.  
  5786.  
  5787.   Geometry = CYLINDER
  5788.   GeometryMajorRadius = 7.0
  5789.   GeometryMinorRadius = 7.0
  5790.   GeometryHeight = 13.0
  5791.  
  5792.   GeometryIsSmall = Yes
  5793.   Shadow = SHADOW_DECAL
  5794.   ShadowSizeX = 14;
  5795.   ShadowSizeY = 14;
  5796.   ShadowTexture = ShadowI;
  5797.   BuildCompletion = APPEARS_AT_RALLY_POINT
  5798.  
  5799. End
  5800.  
  5801. ;------------------------------------------------------------------------------
  5802. Object CINE_AmericaInfantryRanger
  5803.  
  5804.   ; *** ART Parameters ***
  5805.   SelectPortrait          = SARanger_L
  5806.   ButtonImage            = SARanger
  5807.   
  5808.   UpgradeCameo1 = Upgrade_AmericaRangerFlashBangGrenade
  5809.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  5810.   ;UpgradeCameo3 = NONE
  5811.   ;UpgradeCameo4 = NONE
  5812.   ;UpgradeCameo5 = NONE
  5813.   
  5814.   Draw = W3DModelDraw ModuleTag_01
  5815.     OkToChangeModelColor = Yes
  5816.  
  5817.     ; --- Idle
  5818.     DefaultConditionState
  5819.       Model             = AIRngr_SKN
  5820.       IdleAnimation     = AIRngr_SKL.AIRngr_STA 0 35
  5821.       IdleAnimation     = AIRngr_SKL.AIRngr_IDA
  5822.       IdleAnimation     = AIRngr_SKL.AIRngr_IDB
  5823.       AnimationMode     = ONCE
  5824.       WeaponFireFXBone  = PRIMARY Muzzle
  5825.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  5826.       WeaponFireFXBone  = SECONDARY Muzzle
  5827.       WeaponLaunchBone  = SECONDARY Muzzle
  5828.       TransitionKey     = TRANS_Stand
  5829.     End
  5830.  
  5831.     ConditionState      = REALLYDAMAGED
  5832.       IdleAnimation     = AIRngr_SKL.AIRngr_STB 0 35
  5833.       IdleAnimation     = AIRngr_SKL.AIRngr_IDC
  5834.       IdleAnimation     = AIRngr_SKL.AIRngr_IDD
  5835.       AnimationMode     = ONCE
  5836.       TransitionKey     = TRANS_StandInjured
  5837.     End
  5838.  
  5839.     TransitionState     = TRANS_Stand TRANS_StandInjured
  5840.       Animation         = AIRngr_SKL.AIRngr_SA2SB
  5841.       AnimationMode     = ONCE
  5842.     End
  5843.  
  5844.     ; --- attacking (Machine Gun)
  5845.     ConditionState      = FIRING_A
  5846.       Animation         = AIRngr_SKL.AIRngr_ATA
  5847.       AnimationMode     = LOOP
  5848.       TransitionKey     = TRANS_FiringA
  5849.     End
  5850.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  5851.     AliasConditionState = RELOADING_A
  5852.  
  5853.     ConditionState      = FIRING_A REALLYDAMAGED
  5854.       Animation         = AIRngr_SKL.AIRngr_ATA2
  5855.       AnimationMode     = LOOP
  5856.       TransitionKey     = TRANS_FiringAInjured
  5857.     End
  5858.     AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  5859.     AliasConditionState = RELOADING_A REALLYDAMAGED
  5860.     AliasConditionState = MOVING FIRING_A
  5861.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  5862.     AliasConditionState = MOVING RELOADING_A
  5863.  
  5864.     TransitionState     = TRANS_FiringA TRANS_FiringAInjured
  5865.       Animation         = AIRngr_SKL.AIRngr_A2WAA
  5866.       AnimationMode     = ONCE
  5867.     End
  5868.  
  5869.     TransitionState     = TRANS_Stand TRANS_FiringA
  5870.       Animation         = AIRngr_SKL.AIRngr_ATAST
  5871.       AnimationMode     = ONCE
  5872.       AnimationSpeedFactorRange = 4 4
  5873.     End
  5874.  
  5875.     TransitionState     = TRANS_FiringA TRANS_Stand
  5876.       Animation         = AIRngr_SKL.AIRngr_ATAED
  5877.       AnimationMode     = ONCE
  5878.       AnimationSpeedFactorRange = 4 4
  5879.     End
  5880.  
  5881.     TransitionState     = TRANS_StandInjured TRANS_FiringAInjured
  5882.       Animation         = AIRngr_SKL.AIRngr_S2WAA
  5883.       AnimationMode     = ONCE
  5884.       AnimationSpeedFactorRange = 4 4
  5885.     End
  5886.  
  5887.     TransitionState     = TRANS_FiringAInjured TRANS_StandInjured
  5888.       Animation         = AIRngr_SKL.AIRngr_WAA2S
  5889.       AnimationMode     = ONCE
  5890.       AnimationSpeedFactorRange = 4 4
  5891.     End
  5892.  
  5893.     ; --- attacking (Grenade Launcher)
  5894.     ConditionState      = PREATTACK_B 
  5895.       Animation         = AIRngr_SKL.AIRngr_ATBA
  5896.       AnimationMode     = ONCE
  5897.       TransitionKey     = TRANS_FiringB
  5898.     End
  5899.     AliasConditionState = PREATTACK_B MOVING
  5900.     AliasConditionState = PREATTACK_B FIRING_B
  5901.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
  5902.  
  5903.     ConditionState      = FIRING_B
  5904.       Animation         = AIRngr_SKL.AIRngr_ATBB
  5905.       AnimationMode     = ONCE
  5906.  
  5907.       TransitionKey     = TRANS_FiringB
  5908.     End
  5909.  
  5910.     ConditionState      = BETWEEN_FIRING_SHOTS_B
  5911.       Animation         = AIRngr_SKL.AIRngr_ATBB
  5912.       AnimationMode     = MANUAL
  5913.       Flags             = START_FRAME_LAST
  5914.       TransitionKey     = TRANS_FiringB
  5915.       WaitForStateToFinishIfPossible = TRANS_FiringB
  5916.     End
  5917.     AliasConditionState = RELOADING_B
  5918.  
  5919.     TransitionState     = TRANS_Stand TRANS_FiringB
  5920.       Animation         = AIRngr_SKL.AIRngr_ATBST1
  5921.       AnimationMode     = ONCE
  5922.     End
  5923.  
  5924.     TransitionState     = TRANS_FiringB TRANS_Stand
  5925.       Animation         = AIRngr_SKL.AIRngr_ATBST2
  5926.       AnimationMode     = ONCE
  5927.     End
  5928.  
  5929.     ConditionState      = PREATTACK_B REALLYDAMAGED
  5930.       Animation         = AIRngr_SKL.AIRngr_ATB2A
  5931.       AnimationMode     = ONCE
  5932.       TransitionKey     = TRANS_FiringBInjured
  5933.     End
  5934.     AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
  5935.     AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
  5936.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  5937.  
  5938.     ConditionState      = FIRING_B REALLYDAMAGED
  5939.       Animation         = AIRngr_SKL.AIRngr_ATB2B
  5940.       AnimationMode     = ONCE
  5941.       TransitionKey     = TRANS_FiringBInjured
  5942.     End
  5943.  
  5944.     ConditionState      = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  5945.       Animation         = AIRngr_SKL.AIRngr_ATB2B
  5946.       AnimationMode     = MANUAL
  5947.       Flags             = START_FRAME_LAST
  5948.       TransitionKey     = TRANS_FiringBInjured
  5949.       WaitForStateToFinishIfPossible = TRANS_FiringBInjured
  5950.     End
  5951.     AliasConditionState = RELOADING_B REALLYDAMAGED
  5952.  
  5953.     TransitionState     = TRANS_StandInjured TRANS_FiringBInjured
  5954.       Animation         = AIRngr_SKL.AIRngr_ATB2ST1
  5955.       AnimationMode     = ONCE
  5956.     End
  5957.  
  5958.     TransitionState     = TRANS_FiringBInjured TRANS_StandInjured
  5959.       Animation         = AIRngr_SKL.AIRngr_ATB2ST2
  5960.       AnimationMode     = ONCE
  5961.     End
  5962.  
  5963.     ; -- cross-attack transitions
  5964.  
  5965.     TransitionState     = TRANS_FiringA TRANS_FiringB
  5966.       Animation         = AIRngr_SKL.AIRngr_ATA2AB
  5967.       AnimationMode     = ONCE
  5968.       AnimationSpeedFactorRange = 4 4
  5969.     End
  5970.  
  5971.     TransitionState     = TRANS_FiringB TRANS_FiringA
  5972.       Animation         = AIRngr_SKL.AIRngr_ATA2AB
  5973.       AnimationMode     = ONCE_BACKWARDS
  5974.       AnimationSpeedFactorRange = 4 4
  5975.     End
  5976.  
  5977.  
  5978.     ; --- moving
  5979.     ConditionState      = MOVING
  5980.       Animation         = AIRngr_SKL.AIRngr_RNA 40
  5981.       AnimationMode     = LOOP
  5982.       Flags             = RANDOMSTART
  5983.       TransitionKey     = None
  5984.       ParticleSysBone   = None InfantryDustTrails
  5985.     End
  5986.  
  5987.     ConditionState      = MOVING REALLYDAMAGED
  5988.       Animation         = AIRngr_SKL.AIRngr_RNB 30
  5989.       AnimationMode     = LOOP
  5990.       Flags             = RANDOMSTART
  5991.       TransitionKey     = None
  5992.     End
  5993.     
  5994.     ; --- dying anims
  5995.     ConditionState      = DYING
  5996.       Animation         = AIRngr_SKL.AIRngr_DTA
  5997.       Animation         = AIRngr_SKL.AIRngr_DTB
  5998.       AnimationMode     = ONCE
  5999.       TransitionKey     = None
  6000.     End
  6001.  
  6002.     TransitionState     = TRANS_Dying TRANS_Flailing
  6003.       Animation         = AIRngr_SKL.AIRngr_ADTF1
  6004.       AnimationMode     = ONCE
  6005.     End
  6006.  
  6007.     ConditionState      = DYING EXPLODED_FLAILING
  6008.       Animation         = AIRngr_SKL.AIRngr_ADTF2
  6009.       AnimationMode     = LOOP
  6010.       TransitionKey     = TRANS_Flailing
  6011.     End
  6012.  
  6013.     ConditionState      = DYING EXPLODED_BOUNCING
  6014.       Animation         = AIRngr_SKL.AIRngr_ADTF3
  6015.       AnimationMode     = ONCE
  6016.       TransitionKey     = None
  6017.     End
  6018.     AliasConditionState = DYING SPLATTED
  6019.  
  6020.     ; --- cheering
  6021.     ConditionState      = SPECIAL_CHEERING
  6022.       Animation         = AIRngr_SKL.AIRngr_CHA
  6023.       AnimationMode     = LOOP
  6024.     End
  6025.  
  6026.     ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
  6027.       Animation         = AIRngr_SKL.AIRngr_CHB
  6028.       AnimationMode     = LOOP
  6029.     End
  6030.  
  6031.     ; ----- PARACHUTING ANIMATIONS
  6032.     ConditionState      = FREEFALL
  6033.       Animation         = AIRngr_SKL.AIRngr_PFL
  6034.       AnimationMode     = LOOP
  6035.       TransitionKey     = TRANS_Falling
  6036.     End
  6037.     AliasConditionState = FREEFALL REALLYDAMAGED
  6038.     AliasConditionState = FREEFALL DYING
  6039.     ConditionState      = PARACHUTING
  6040.       Animation         = AIRngr_SKL.AIRngr_PHG
  6041.       AnimationMode     = LOOP
  6042.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  6043.       TransitionKey     = TRANS_Chute
  6044.     End
  6045.     AliasConditionState = PARACHUTING REALLYDAMAGED
  6046.     AliasConditionState = PARACHUTING DYING
  6047.     TransitionState     = TRANS_Falling TRANS_Chute
  6048.       Animation         = AIRngr_SKL.AIRngr_POP
  6049.       AnimationMode     = ONCE
  6050.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  6051.     End
  6052.     TransitionState     = TRANS_Chute TRANS_Stand
  6053.       Animation         = AIRngr_SKL.AIRngr_PTD
  6054.       AnimationMode     = ONCE
  6055.     End
  6056.     TransitionState     = TRANS_Chute TRANS_StandInjured
  6057.       Animation         = AIRngr_SKL.AIRngr_PTD
  6058.       AnimationMode     = ONCE
  6059.     End
  6060.  
  6061.     ; ------- Bldg-capture
  6062.  
  6063.     ConditionState      = UNPACKING
  6064.       Model             = AIRngr_F_SKN
  6065.       Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
  6066.       AnimationMode     = ONCE
  6067.     End
  6068.     AliasConditionState = UNPACKING REALLYDAMAGED
  6069.  
  6070.  
  6071.     ConditionState      = RAISING_FLAG
  6072.       Model             = AIRngr_F_SKN
  6073.       Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
  6074.       AnimationMode     = ONCE
  6075.       TransitionKey     = TRANS_Raising
  6076.     End
  6077.     AliasConditionState = RAISING_FLAG REALLYDAMAGED
  6078.  
  6079.     ConditionState      = PACKING
  6080.       Model             = AIRngr_F_SKN
  6081.       Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
  6082.       AnimationMode     = ONCE_BACKWARDS
  6083.       Flags             = START_FRAME_LAST
  6084.       TransitionKey     = TRANS_Packing
  6085.     End
  6086.     AliasConditionState = PACKING REALLYDAMAGED
  6087.  
  6088.     TransitionState     = TRANS_Raising TRANS_Packing
  6089.       Model             = AIRngr_F_SKN
  6090.       Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
  6091.       AnimationMode     = ONCE_BACKWARDS
  6092.       Flags             = START_FRAME_LAST
  6093.     End
  6094.  
  6095.     ; --- RAPPELLING ANIMATIONS
  6096.     ConditionState      = RAPPELLING
  6097.       Animation         = AIRngr_SKL.AIRngr_RPL1 ;30
  6098.       AnimationMode     = LOOP
  6099.       Flags             = RANDOMSTART
  6100.       TransitionKey     = TRANS_Rappelling
  6101.     End
  6102.     AliasConditionState = MOVING RAPPELLING
  6103.  
  6104.     TransitionState     = TRANS_Rappelling TRANS_Stand
  6105.       Animation         = AIRngr_SKL.AIRngr_RPL2
  6106.       AnimationMode     = ONCE
  6107.     End
  6108.  
  6109.     TransitionState     = TRANS_Rappelling TRANS_StandInjured
  6110.       Animation         = AIRngr_SKL.AIRngr_RPL2
  6111.       AnimationMode     = ONCE
  6112.     End
  6113.  
  6114.   End
  6115.  
  6116.   ; ***DESIGN parameters ***
  6117.   DisplayName         = OBJECT:Ranger
  6118.   Side                = America
  6119.   EditorSorting       = INFANTRY
  6120.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  6121.   
  6122.   WeaponSet
  6123.     Conditions = None 
  6124.     Weapon = PRIMARY CINE_RangerAdvancedCombatRifle
  6125.   End
  6126.   WeaponSet
  6127.     Conditions = PLAYER_UPGRADE 
  6128.     Weapon = PRIMARY RangerAdvancedCombatRifle
  6129.     Weapon = SECONDARY RangerFlashBangGrenadeWeapon
  6130.     AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
  6131.     AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
  6132.   End
  6133.   ArmorSet
  6134.     Conditions      = None
  6135.     Armor           = HumanArmor
  6136.     DamageFX        = InfantryDamageFX
  6137.   End
  6138.  
  6139.   VisionRange = 100
  6140.   ShroudClearingRange = 400
  6141.   Prerequisites
  6142.     Object = AmericaBarracks
  6143.   End
  6144.   BuildCost = 225
  6145.   BuildTime = 5.0          ;in seconds  
  6146.   
  6147.   ExperienceValue = 20 20 40 60    ;Experience point value at each level
  6148.   ExperienceRequired = 0 20 40 60 120  ;Experience points needed to gain each level
  6149.   IsTrainable = Yes             ;Can gain experience
  6150.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  6151.   CommandSet          = AmericaInfantryRangerCommandSet
  6152.  
  6153.   ; *** AUDIO Parameters ***
  6154.   VoiceSelect = RangerVoiceSelect
  6155.   VoiceMove = RangerVoiceMove
  6156.   VoiceGuard = RangerVoiceMove
  6157.   VoiceAttack = RangerVoiceAttack
  6158.   SoundDie = RangerVoiceDie
  6159.   VoiceFear = RangerVoiceFear
  6160.   VoiceTaskComplete = RangerVoiceCaptureComplete
  6161.  
  6162.   UnitSpecificSounds
  6163.     VoiceEnter = RangerVoiceMove
  6164.     VoiceEnterHostile = RangerVoiceMove
  6165.     VoiceGarrison = RangerVoiceGarrison
  6166.     VoiceCreate         = RangerVoiceCreate
  6167.     VoiceSubdue         = RangerVoiceSubdue
  6168.     VoiceClearBuilding  = RangerVoiceClearBuilding
  6169.     VoiceGetHealed      = RangerVoiceMove
  6170.   End
  6171.  
  6172.   UnitSpecificFX
  6173.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  6174.     CombatDropKillFX = FX_RangerCombatDropKill
  6175.   End
  6176.  
  6177.   ; *** ENGINEERING Parameters ***
  6178.   RadarPriority = UNIT
  6179.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY CAN_RAPPEL SCORE
  6180.  
  6181.   Behavior = CommandButtonHuntUpdate ModuleTag_02
  6182.   End
  6183.  
  6184.   Body = ActiveBody ModuleTag_03
  6185.     MaxHealth       = 180.0
  6186.     InitialHealth   = 180.0
  6187.   End
  6188.  
  6189.   Behavior = ExperienceScalarUpgrade ModuleTag_04
  6190.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  6191.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  6192.   End
  6193.  
  6194.   Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
  6195.     ScanRate = 1000 ; once a second.
  6196.     ScanRange = 300 ;
  6197.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  6198.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  6199.   End
  6200.  
  6201.   Behavior = AIUpdateInterface ModuleTag_06
  6202.     AutoAcquireEnemiesWhenIdle = Yes
  6203.   End
  6204.   Locomotor = SET_NORMAL BasicHumanLocomotor
  6205.  
  6206.   Behavior = PhysicsBehavior ModuleTag_07
  6207.     Mass = 5.0
  6208.   End
  6209.  
  6210.   Behavior = ProductionUpdate ModuleTag_08
  6211.     ; nothing
  6212.   End
  6213.  
  6214.   Behavior = CommandButtonHuntUpdate  ModuleTag_09 ; allows use of command button hunt script with this unit. 
  6215.   End
  6216.  
  6217.   Behavior = WeaponSetUpgrade ModuleTag_10
  6218.     TriggeredBy = Upgrade_AmericaRangerFlashBangGrenade
  6219.   End
  6220.  
  6221.  
  6222. ; --- begin Death modules ---
  6223.   Behavior = SlowDeathBehavior ModuleTag_Death01
  6224.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  6225.     SinkDelay           = 3000
  6226.     SinkRate            = 0.5     ; in Dist/Sec
  6227.     DestructionDelay    = 8000
  6228.     FX                  = INITIAL FX_GIDie
  6229.   End
  6230.   Behavior = SlowDeathBehavior ModuleTag_Death02
  6231.     DeathTypes          = NONE +CRUSHED +SPLATTED
  6232.     SinkDelay           = 3000
  6233.     SinkRate            = 0.5     ; in Dist/Sec
  6234.     DestructionDelay    = 8000
  6235.     FX                  = INITIAL FX_GIDieCrushed
  6236.   End
  6237.   Behavior = SlowDeathBehavior ModuleTag_Death03
  6238.     DeathTypes          = NONE +EXPLODED
  6239.     SinkDelay           = 3000
  6240.     SinkRate            = 0.5     ; in Dist/Sec
  6241.     DestructionDelay    = 8000
  6242.     FX                  = INITIAL FX_GIDie
  6243.     FlingForce          = 8
  6244.     FlingForceVariance  = 3
  6245.     FlingPitch          = 60
  6246.     FlingPitchVariance  = 10
  6247.   End
  6248.   Behavior = SlowDeathBehavior ModuleTag_Death04
  6249.     DeathTypes          = NONE +BURNED
  6250.     DestructionDelay    = 0
  6251.     FX                  = INITIAL FX_GIDie
  6252.     OCL                 = INITIAL OCL_FlamingInfantry
  6253.   End
  6254.   Behavior = SlowDeathBehavior ModuleTag_Death05
  6255.     DeathTypes          = NONE +POISONED
  6256.     DestructionDelay    = 0
  6257.     FX                  = INITIAL FX_GIDie
  6258.     OCL                 = INITIAL OCL_ToxicInfantry
  6259.   End
  6260.   
  6261.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  6262.     DeathTypes          = NONE +POISONED_BETA
  6263.     DestructionDelay    = 0
  6264.     FX                  = INITIAL FX_GIDie
  6265.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  6266.   End
  6267. ; --- end Death modules ---
  6268.  
  6269.   Behavior = SquishCollide ModuleTag_12
  6270.     ;nothing
  6271.   End
  6272.  
  6273.   Behavior = PoisonedBehavior ModuleTag_17
  6274.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  6275.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  6276.   End
  6277.  
  6278.   Behavior = SpecialAbility ModuleTag_18
  6279.     SpecialPowerTemplate      = SpecialAbilityRangerCaptureBuilding
  6280.     UpdateModuleStartsAttack  = Yes
  6281.     StartsPaused              = Yes ; Unpaused by upgrade module
  6282.     InitiateSound         = RangerVoiceCapture
  6283.   End
  6284.   Behavior = SpecialAbilityUpdate ModuleTag_19
  6285.     SpecialPowerTemplate  = SpecialAbilityRangerCaptureBuilding
  6286.     StartAbilityRange  = 5.0
  6287.     UnpackTime            = 3000  ; (changing this will scale anim speed)
  6288.     PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
  6289.     PackTime              = 2000  ; (changing this will scale anim speed)
  6290.     DoCaptureFX           = Yes
  6291.   End
  6292.  
  6293.   Behavior = UnpauseSpecialPowerUpgrade ModuleTag_20
  6294.     SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
  6295.     TriggeredBy = Upgrade_InfantryCaptureBuilding
  6296.   End
  6297.  
  6298.  
  6299.   Geometry = CYLINDER
  6300.   GeometryMajorRadius = 7.0
  6301.   GeometryMinorRadius = 7.0
  6302.   GeometryHeight = 13.0
  6303.  
  6304.   GeometryIsSmall = Yes
  6305.   Shadow = SHADOW_DECAL
  6306.   ShadowSizeX = 14;
  6307.   ShadowSizeY = 14;
  6308.   ShadowTexture = ShadowI;
  6309.   BuildCompletion = APPEARS_AT_RALLY_POINT
  6310.  
  6311. End
  6312.  
  6313. ;------------------------------------------------------------------------------
  6314. Object AmericaInfantryMissileDefender
  6315.  
  6316.   ; *** ART Parameters ***
  6317.   SelectPortrait         = SAMissleDefender_L
  6318.   ButtonImage            = SAMissleDefender
  6319.   
  6320.   UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
  6321.   ;UpgradeCameo2 = NONE
  6322.   ;UpgradeCameo3 = NONE
  6323.   ;UpgradeCameo4 = NONE
  6324.   ;UpgradeCameo5 = NONE
  6325.   
  6326.   Draw = W3DModelDraw ModuleTag_01
  6327.     OkToChangeModelColor = Yes
  6328.  
  6329.     ;***NOTE***
  6330.     ;A little history -- the MissileDefender now uses the assets of the TankHunter. 
  6331.     ;The TH uses assets of the GLA tunnel defender, and the TD uses assets of the NEW
  6332.     ;MD. It was a design/art/code decision because the new missile defender animations
  6333.     ;don't suit that of a mobile/offensive unit with packing and unpacking.
  6334.  
  6335.     DefaultConditionState
  6336.       Model             = NITHNT_SKN
  6337.       IdleAnimation     = NITHNT_SKL.NITHNT_STA 0 30
  6338.       IdleAnimation     = NITHNT_SKL.NITHNT_IDA
  6339.       IdleAnimation     = NITHNT_SKL.NITHNT_IDB
  6340.       AnimationMode     = ONCE
  6341.       AnimationSpeedFactorRange = 0.8 1.2
  6342.       TransitionKey     = TRANS_Stand
  6343.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  6344.       WeaponFireFXBone  = PRIMARY Muzzle
  6345.       WeaponLaunchBone  = PRIMARY Muzzle
  6346.       WeaponLaunchBone  = SECONDARY Muzzle
  6347.  
  6348.     End
  6349.     AliasConditionState = REALLYDAMAGED
  6350.  
  6351.     ConditionState      = FIRING_A 
  6352.       Animation         = NITHNT_SKL.NITHNT_ATA 
  6353.       AnimationMode     = ONCE
  6354.       TransitionKey     = TRANS_START_FIRING
  6355.     End
  6356.     AliasConditionState = FIRING_A REALLYDAMAGED
  6357.  
  6358.     ConditionState      = BETWEEN_FIRING_SHOTS_A
  6359.       Animation         = NITHNT_SKL.NITHNT_STA
  6360.       AnimationMode     = ONCE
  6361.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  6362.       ; and a long recycle time between shots. we want him to finish his fire animation
  6363.       ; (unless he's ordered to do something else), so this is just a handy trick that
  6364.       ; says, "if the previous state had this transition key, allow it to finish before
  6365.       ; switching to us, if possible".
  6366.       WaitForStateToFinishIfPossible = TRANS_START_FIRING
  6367.     End
  6368.     AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  6369.  
  6370.     ConditionState      = MOVING
  6371.       Animation         = NITHNT_SKL.NITHNT_RNA 20
  6372.       AnimationMode     = LOOP
  6373.       Flags             = RANDOMSTART
  6374.       TransitionKey     = None
  6375.       ParticleSysBone   = None InfantryDustTrails
  6376.     End
  6377.     AliasConditionState = MOVING REALLYDAMAGED
  6378.  
  6379.     ConditionState      = RELOADING_A
  6380.       Animation         = NITHNT_SKL.NITHNT_ATA 10
  6381.       AnimationMode     = ONCE
  6382.       ;WeaponLaunchBone = PRIMARY WeaponA
  6383.     End
  6384.     AliasConditionState = MOVING RELOADING_A
  6385.     AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
  6386.  
  6387.     ConditionState      = DYING
  6388.       Animation         = NITHNT_SKL.NITHNT_DTA
  6389.       Animation         = NITHNT_SKL.NITHNT_DTB
  6390.       AnimationSpeedFactorRange = 0.9 1.25
  6391.       AnimationMode     = ONCE
  6392.       TransitionKey     = TRANS_Dying
  6393.     End
  6394.  
  6395.     TransitionState     = TRANS_Dying TRANS_Flailing
  6396.       Animation         = NITHNT_SKL.NITHNT_ADTA1
  6397.       AnimationMode     = ONCE
  6398.     End
  6399.  
  6400.     ConditionState      = DYING EXPLODED_FLAILING
  6401.       Animation         = NITHNT_SKL.NITHNT_ADTA2
  6402.       AnimationMode     = LOOP
  6403.       TransitionKey     = TRANS_Flailing
  6404.     End
  6405.  
  6406.     ConditionState      = DYING EXPLODED_BOUNCING
  6407.       Animation         = NITHNT_SKL.NITHNT_ADTA3
  6408.       AnimationMode     = ONCE
  6409.       TransitionKey     = None
  6410.     End
  6411.  
  6412.     ;PARACHUTING ANIMATIONS
  6413.     ConditionState      = FREEFALL
  6414.       Animation         = NITHNT_SKL.NITHNT_PFL
  6415.       AnimationMode     = LOOP
  6416.       TransitionKey     = TRANS_Falling
  6417.     End
  6418.     AliasConditionState = FREEFALL REALLYDAMAGED
  6419.     AliasConditionState = FREEFALL DYING
  6420.  
  6421.     ConditionState      = PARACHUTING
  6422.       Animation         = NITHNT_SKL.NITHNT_PHG
  6423.       AnimationMode     = LOOP
  6424.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  6425.       TransitionKey     = TRANS_Chute
  6426.     End
  6427.     AliasConditionState = PARACHUTING REALLYDAMAGED
  6428.     AliasConditionState = PARACHUTING DYING
  6429.  
  6430.     TransitionState     = TRANS_Falling TRANS_Chute
  6431.       Animation         = NITHNT_SKL.NITHNT_POP
  6432.       AnimationMode     = ONCE
  6433.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  6434.     End
  6435.  
  6436.     TransitionState     = TRANS_Chute TRANS_Stand
  6437.       Animation         = NITHNT_SKL.NITHNT_PTD
  6438.       AnimationMode     = ONCE
  6439.     End
  6440.  
  6441.   End
  6442.  
  6443.   ; ***DESIGN parameters ***
  6444.   DisplayName         = OBJECT:MissileTeam
  6445.   Side                = America
  6446.   EditorSorting       = INFANTRY
  6447.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  6448.   
  6449.   WeaponSet
  6450.     Conditions = None 
  6451.     Weapon = PRIMARY    MissileDefenderMissileWeapon 
  6452.     Weapon = SECONDARY  MissileDefenderLaserGuidedMissileWeapon ;Controlled by special ability
  6453.     AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  6454.     AutoChooseSources = SECONDARY NONE
  6455.   End
  6456.   ArmorSet
  6457.     Conditions      = None
  6458.     Armor           = HumanArmor
  6459.     DamageFX        = InfantryDamageFX
  6460.   End
  6461.  
  6462.   VisionRange = 150
  6463.   ShroudClearingRange = 300
  6464.   Prerequisites
  6465.     Object = AmericaBarracks
  6466.  
  6467.   End
  6468.   BuildCost = 300
  6469.   BuildTime = 5.0          ;in seconds  
  6470.   
  6471.   ExperienceValue = 20 20 40 60    ;Experience point value at each level
  6472.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  6473.   IsTrainable = Yes             ;Can gain experience
  6474.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  6475.   CommandSet          = AmericaInfantryMissileDefenderCommandSet
  6476.  
  6477.   ; *** AUDIO Parameters ***
  6478.   VoiceSelect = MissileDefenderVoiceSelect
  6479.   VoiceMove = MissileDefenderVoiceMove
  6480.   VoiceGuard = MissileDefenderVoiceMove
  6481.   VoiceAttack = MissileDefenderVoiceAttack
  6482.   VoiceAttackAir = MissileDefenderVoiceAttack
  6483.   SoundDie = MissileDefenderVoiceDie
  6484.   SoundDieFire = DieByFireUSA
  6485.   SoundDieToxin = DieByToxinUSA
  6486.   VoiceFear = MissileDefenderVoiceFear
  6487.   
  6488.   UnitSpecificSounds
  6489.   VoiceGarrison = MissileDefenderVoiceGarrison
  6490.     VoiceCreate          = MissileDefenderVoiceCreate
  6491.     VoiceEnter = MissileDefenderVoiceMove
  6492.     VoiceGetHealed      = MissileDefenderVoiceMove
  6493.   End
  6494.  
  6495.   ; *** ENGINEERING Parameters ***
  6496.   RadarPriority = UNIT
  6497.   KindOf = PRELOAD SELECTABLE CAN_ATTACK  ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
  6498.  
  6499.   Body = ActiveBody ModuleTag_02
  6500.     MaxHealth       = 100.0
  6501.     InitialHealth   = 100.0
  6502.   End
  6503.  
  6504.   Behavior = ExperienceScalarUpgrade ModuleTag_03
  6505.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  6506.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  6507.   End
  6508.  
  6509.   Behavior = AIUpdateInterface ModuleTag_04
  6510.     AutoAcquireEnemiesWhenIdle = Yes
  6511.   End
  6512.  
  6513.   Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
  6514.     ScanRate = 1000 ; once a second.
  6515.     ScanRange = 300 ;
  6516.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  6517.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  6518.   End
  6519.  
  6520.   Locomotor = SET_NORMAL MissileDefenderLocomotor
  6521.  
  6522.   Behavior = PhysicsBehavior ModuleTag_06
  6523.     Mass = 5.0
  6524.   End
  6525.  
  6526.   Behavior = SpecialAbility ModuleTag_08
  6527.     SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles
  6528.     UpdateModuleStartsAttack = Yes
  6529.     InitiateSound = MissileDefenderVoiceAttackLaser
  6530.   End
  6531.   Behavior = SpecialAbilityUpdate ModuleTag_09
  6532.     SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles
  6533.     StartAbilityRange = 200.0
  6534.     AbilityAbortRange = 250.0 ;If the target moves outside this range, abort.
  6535.     PreparationTime = 1000
  6536.     PersistentPrepTime = 500
  6537.     SpecialObject = LaserBeam
  6538.     SpecialObjectAttachToBone = Muzzle01
  6539.   End
  6540.  
  6541.   Behavior = SquishCollide ModuleTag_10
  6542.     ;nothing
  6543.   End
  6544.  
  6545.  
  6546. ; --- begin Death modules ---
  6547.   Behavior = SlowDeathBehavior ModuleTag_Death01
  6548.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  6549.     SinkDelay           = 3000
  6550.     SinkRate            = 0.5     ; in Dist/Sec
  6551.     DestructionDelay    = 8000
  6552.     FX                  = INITIAL FX_GIDie
  6553.   End
  6554.   Behavior = SlowDeathBehavior ModuleTag_Death02
  6555.     DeathTypes          = NONE +CRUSHED +SPLATTED
  6556.     SinkDelay           = 3000
  6557.     SinkRate            = 0.5     ; in Dist/Sec
  6558.     DestructionDelay    = 8000
  6559.     FX                  = INITIAL FX_GIDieCrushed
  6560.   End
  6561.   Behavior = SlowDeathBehavior ModuleTag_Death03
  6562.     DeathTypes          = NONE +EXPLODED
  6563.     SinkDelay           = 3000
  6564.     SinkRate            = 0.5     ; in Dist/Sec
  6565.     DestructionDelay    = 8000
  6566.     FX                  = INITIAL FX_GIDie
  6567.     FlingForce          = 8
  6568.     FlingForceVariance  = 3
  6569.     FlingPitch          = 60
  6570.     FlingPitchVariance  = 10
  6571.   End
  6572.   Behavior = SlowDeathBehavior ModuleTag_Death04
  6573.     DeathTypes          = NONE +BURNED
  6574.     DestructionDelay    = 0
  6575.     FX                  = INITIAL FX_GIDie
  6576.     OCL                 = INITIAL OCL_FlamingInfantry
  6577.   End
  6578.   Behavior = SlowDeathBehavior ModuleTag_Death05
  6579.     DeathTypes          = NONE +POISONED
  6580.     DestructionDelay    = 0
  6581.     FX                  = INITIAL FX_GIDie
  6582.     OCL                 = INITIAL OCL_ToxicInfantry
  6583.   End
  6584.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  6585.     DeathTypes          = NONE +POISONED_BETA
  6586.     DestructionDelay    = 0
  6587.     FX                  = INITIAL FX_GIDie
  6588.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  6589.   End
  6590. ; --- end Death modules ---
  6591.  
  6592.   Behavior = PoisonedBehavior ModuleTag_13
  6593.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  6594.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  6595.   End
  6596.  
  6597.   Geometry = CYLINDER
  6598.   GeometryMajorRadius = 7.0
  6599.   GeometryMinorRadius = 7.0
  6600.   GeometryHeight = 12.0
  6601.   GeometryIsSmall = Yes
  6602.   Shadow = SHADOW_DECAL
  6603.   ShadowSizeX = 14;
  6604.   ShadowSizeY = 14;
  6605.   ShadowTexture = ShadowI;
  6606.   BuildCompletion = APPEARS_AT_RALLY_POINT
  6607.  
  6608. End
  6609.  
  6610. ;------------------------------------------------------------------------------
  6611. ; @todo -- this entire unit is "first pass only" and needs lots of specialization
  6612. Object AmericaInfantryPilot
  6613.  
  6614.   ; *** ART Parameters ***
  6615.   SelectPortrait         = SAPilot_L
  6616.   ButtonImage            = SAPilot
  6617.   
  6618.   ;UpgradeCameo1 = NONE
  6619.   ;UpgradeCameo2 = NONE
  6620.   ;UpgradeCameo3 = NONE
  6621.   ;UpgradeCameo4 = NONE
  6622.   ;UpgradeCameo5 = NONE
  6623.   
  6624.   Draw = W3DModelDraw ModuleTag_01
  6625.     OkToChangeModelColor = Yes
  6626.  
  6627.     DefaultConditionState
  6628.       Model = AIRPlt_SKN
  6629.       IdleAnimation = AIRPlt_SKL.AIRPlt_STA 0 20
  6630.       IdleAnimation = AIRPlt_SKL.AIRPlt_IDA 
  6631.       IdleAnimation = AIRPlt_SKL.AIRPlt_IDB 
  6632.       AnimationMode = ONCE
  6633.       TransitionKey = TRANS_Stand
  6634.     End
  6635.  
  6636.     ConditionState = FREEFALL
  6637.       Animation = AIRPlt_SKL.AIRPLT_PFL
  6638.       AnimationMode = ONCE
  6639.       TransitionKey = TRANS_Falling
  6640.     End
  6641.     AliasConditionState = FREEFALL DYING
  6642.  
  6643.     ConditionState = PARACHUTING
  6644.       Animation = AIRPlt_SKL.AIRPlt_PHG
  6645.       AnimationMode = LOOP
  6646.       TransitionKey = TRANS_Chute
  6647.       WaitForStateToFinishIfPossible = TRANS_Falling
  6648.     End
  6649.     AliasConditionState = PARACHUTING DYING
  6650.  
  6651.     ConditionState = MOVING
  6652.       Animation = AIRPlt_SKL.AIRPlt_RNA 
  6653.       AnimationMode = LOOP
  6654.       TransitionKey = TRANS_Stand
  6655.       ParticleSysBone     = None InfantryDustTrails
  6656.     End
  6657.     
  6658.  
  6659.     ConditionState = DYING
  6660.       Animation = AIRPlt_SKL.AIRPlt_DTA 
  6661.       Animation = AIRPlt_SKL.AIRPlt_DTB 
  6662.       AnimationMode = ONCE
  6663.       TransitionKey = TRANS_Dying
  6664.     End
  6665.  
  6666.     TransitionState = TRANS_Dying TRANS_Flailing
  6667.       Animation = AIRPlt_SKL.AIRPlt_ADTE1
  6668.       AnimationMode = ONCE
  6669.     End
  6670.  
  6671.     ConditionState = DYING EXPLODED_FLAILING
  6672.       Animation = AIRPlt_SKL.AIRPlt_ADTE2
  6673.       AnimationMode = LOOP
  6674.       TransitionKey = TRANS_Flailing
  6675.     End
  6676.  
  6677.     ConditionState = DYING EXPLODED_BOUNCING
  6678.       Animation = AIRPlt_SKL.AIRPlt_ADTE3
  6679.       AnimationMode = ONCE
  6680.       TransitionKey = None
  6681.     End
  6682.  
  6683.     ConditionState = SPECIAL_CHEERING
  6684.       Animation = AIRPLT_SKL.AIRPLT_CHA
  6685.       AnimationMode = LOOP
  6686.     End
  6687.  
  6688.     ;@TODO -- MISSING ANIMATION FILE
  6689.     ;TransitionState = TRANS_Falling TRANS_Chute
  6690.     ;  Animation = AIRPLT_SKL.AIRPLT_POP
  6691.     ;  AnimationMode = ONCE
  6692.     ;  Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  6693.     ;End
  6694.     
  6695.     TransitionState = TRANS_Chute TRANS_Stand
  6696.       Animation = AIRPlt_SKL.AIRPlt_PTD
  6697.       AnimationMode = ONCE
  6698.     End
  6699.  
  6700.   End
  6701.  
  6702.   ; ***DESIGN parameters ***
  6703.   DisplayName = OBJECT:Pilot
  6704.   Side = America
  6705.   EditorSorting = INFANTRY
  6706.   TransportSlotCount = 1               ;how many "slots" we take in a transport (0 == not transportable)
  6707.   ExperienceValue    = 10 10 10 10 ;Experience point value at each level
  6708.   ExperienceRequired =  0 1 2 3 ;Experience points needed to gain each level
  6709.   IsTrainable     = Yes  ;Can gain experience
  6710.   CommandSet = AmericaInfantryPilotCommandSet
  6711.  
  6712.   ArmorSet
  6713.     Conditions      = None
  6714.     Armor           = HumanArmor
  6715.     DamageFX        = InfantryDamageFX
  6716.   End
  6717.  
  6718.   VisionRange = 150
  6719.   ShroudClearingRange = 300
  6720.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  6721.  
  6722.   ; *** AUDIO Parameters ***
  6723.   VoiceSelect = PilotVoiceSelect
  6724.   VoiceMove = PilotVoiceMove
  6725.   VoiceAttack = PilotVoiceMove
  6726.   SoundDie = PilotVoiceDie
  6727.   SoundDieFire = DieByFireUSA
  6728.   SoundDieToxin = DieByToxinUSA
  6729.   VoiceGarrison = PilotVoiceGarrison
  6730.   VoiceFear = PilotVoiceFear
  6731.   UnitSpecificSounds
  6732.     VoiceEnter = PilotVoiceEnter
  6733.     VoiceEnterHostile     = PilotVoiceEnter
  6734.     VoiceGetHealed      = PilotVoiceMove
  6735.   End
  6736.  
  6737.   ; *** ENGINEERING Parameters ***
  6738.   RadarPriority = UNIT
  6739.   KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY NO_GARRISON SCORE IGNORES_SELECT_ALL
  6740.  
  6741.   Behavior = VeterancyGainCreate ModuleTag_02
  6742.     ; omit the "ScienceRequired" so that this upgrade always occurs.
  6743.     ; Pilots should never (repeat, never) be less than VETERAN status.
  6744.     StartingLevel = VETERAN
  6745.   End
  6746.  
  6747.   Behavior = VeterancyCrateCollide       ModuleTag_03
  6748.     RequiredKindOf = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
  6749.     ForbiddenKindOf = DOZER       ; but not to TRANSPORTs or DOZERs!
  6750.     EffectRange = 0               ; 0=="affect only the thing you collide with"
  6751.     AddsOwnerVeterancy = Yes      ; we add our own veterancy to the target (rather than just +1 level)
  6752.     IsPilot = Yes                 ; set the pilot flag because it's different than the veterancy crate and has extra checking
  6753.   End
  6754.  
  6755.   Body = ActiveBody ModuleTag_04
  6756.     MaxHealth       = 100.0
  6757.     InitialHealth   = 100.0
  6758.   End
  6759.  
  6760.   Behavior = AIUpdateInterface ModuleTag_05
  6761.     AutoAcquireEnemiesWhenIdle = Yes
  6762.   End
  6763.  
  6764.   Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
  6765.     ScanRate = 1000 ; once a second.
  6766.     ScanRange = 300 ;
  6767.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  6768.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  6769.   End
  6770.  
  6771.   Behavior = PilotFindVehicleUpdate   ModuleTag_07 ; This update will have the unit go to a vehicle. jba 
  6772.     ScanRate = 1000 ; once a second.
  6773.     ScanRange = 300 ;
  6774.     MinHealth = 0.5 ;  don't enter a vehicle less than 50% healthy.
  6775.   End
  6776.  
  6777.   Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
  6778.   Locomotor = SET_NORMAL_UPGRADED BasicHumanLocomotorPlus25
  6779.  
  6780.   Behavior = PhysicsBehavior ModuleTag_08
  6781.     Mass = 5.0
  6782.   End
  6783.  
  6784.   Behavior = LocomotorSetUpgrade ModuleTag_10
  6785.     TriggeredBy = Upgrade_Veterancy_HEROIC
  6786.   End
  6787.  
  6788.   Behavior = SquishCollide ModuleTag_11
  6789.     ;nothing
  6790.   End
  6791.  
  6792.  
  6793. ; --- begin Death modules ---
  6794.   Behavior = SlowDeathBehavior ModuleTag_Death01
  6795.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  6796.     SinkDelay           = 3000
  6797.     SinkRate            = 0.5     ; in Dist/Sec
  6798.     DestructionDelay    = 8000
  6799.     FX                  = INITIAL FX_GIDie
  6800.   End
  6801.   Behavior = SlowDeathBehavior ModuleTag_Death02
  6802.     DeathTypes          = NONE +CRUSHED +SPLATTED
  6803.     SinkDelay           = 3000
  6804.     SinkRate            = 0.5     ; in Dist/Sec
  6805.     DestructionDelay    = 8000
  6806.     FX                  = INITIAL FX_GIDieCrushed
  6807.   End
  6808.   Behavior = SlowDeathBehavior ModuleTag_Death03
  6809.     DeathTypes          = NONE +EXPLODED
  6810.     SinkDelay           = 3000
  6811.     SinkRate            = 0.5     ; in Dist/Sec
  6812.     DestructionDelay    = 8000
  6813.     FX                  = INITIAL FX_GIDie
  6814.     FlingForce          = 8
  6815.     FlingForceVariance  = 3
  6816.     FlingPitch          = 60
  6817.     FlingPitchVariance  = 10
  6818.   End
  6819.   Behavior = SlowDeathBehavior ModuleTag_Death04
  6820.     DeathTypes          = NONE +BURNED
  6821.     DestructionDelay    = 0
  6822.     FX                  = INITIAL FX_GIDie
  6823.     OCL                 = INITIAL OCL_FlamingInfantry
  6824.   End
  6825.   Behavior = SlowDeathBehavior ModuleTag_Death05
  6826.     DeathTypes          = NONE +POISONED
  6827.     DestructionDelay    = 0
  6828.     FX                  = INITIAL FX_GIDie
  6829.     OCL                 = INITIAL OCL_ToxicInfantry
  6830.   End
  6831.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  6832.     DeathTypes          = NONE +POISONED_BETA
  6833.     DestructionDelay    = 0
  6834.     FX                  = INITIAL FX_GIDie
  6835.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  6836.   End
  6837. ; --- end Death modules ---
  6838.  
  6839.   Behavior = PoisonedBehavior ModuleTag_14
  6840.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  6841.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  6842.   End
  6843.  
  6844.   Geometry = CYLINDER
  6845.   GeometryMajorRadius = 10.0
  6846.   GeometryMinorRadius = 10.0
  6847.   GeometryHeight = 12.0
  6848.   GeometryIsSmall = Yes
  6849.   Shadow = SHADOW_DECAL
  6850.   ShadowSizeX = 14;
  6851.   ShadowSizeY = 14;
  6852.   ShadowTexture = ShadowI;
  6853.   BuildCompletion = APPEARS_AT_RALLY_POINT
  6854.  
  6855. End
  6856.  
  6857. ;------------------------------------------------------------------------------
  6858. Object AmericaInfantryPathfinder
  6859.  
  6860.     ; *** ART Parameters ***
  6861.   SelectPortrait         = SAPathfinder1_L
  6862.   ButtonImage            = SAPathfinder1
  6863.   
  6864.   UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
  6865.   ;UpgradeCameo2 = NONE
  6866.   ;UpgradeCameo3 = NONE
  6867.   ;UpgradeCameo4 = NONE
  6868.   ;UpgradeCameo5 = NONE
  6869.   
  6870.   Draw = W3DModelDraw ModuleTag_01
  6871.  
  6872.     OkToChangeModelColor = Yes
  6873.  
  6874.     DefaultConditionState
  6875.       Model = AIPFDR_SKN
  6876.       IdleAnimation = AIPFDR_SKL.AIPFDR_STA 
  6877.       IdleAnimation = AIPFDR_SKL.AIPFDR_IDA
  6878.       AnimationMode = ONCE
  6879.       WeaponFireFXBone = PRIMARY Muzzle
  6880.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  6881.       TransitionKey = TRANS_Standing
  6882.     End
  6883.     AliasConditionState = REALLYDAMAGED
  6884.  
  6885.     ConditionState = MOVING
  6886.       Animation = AIPFDR_SKL.AIPFDR_RNA 25
  6887.       AnimationMode = LOOP
  6888.       Flags = RANDOMSTART
  6889.       TransitionKey = TRANS_Standing
  6890.       ParticleSysBone   = None InfantryDustTrails
  6891.     End
  6892.     AliasConditionState = MOVING REALLYDAMAGED
  6893.  
  6894.     ConditionState  = FIRING_A 
  6895.       Animation     = AIPFDR_SKL.AIPFDR_ATB                 ; recoil in standing position
  6896.       AnimationMode = ONCE
  6897.       TransitionKey = TRANS_FiringA
  6898.     End
  6899.     AliasConditionState = FIRING_A MOVING
  6900.     AliasConditionState = FIRING_A MOVING REALLYDAMAGED
  6901.     AliasConditionState = FIRING_A REALLYDAMAGED
  6902.  
  6903.     ConditionState  = BETWEEN_FIRING_SHOTS_A
  6904.       Animation     = AIPFDR_SKL.AIPFDR_ATBST               ; motionless in standing position
  6905.       AnimationMode = ONCE
  6906.       WaitForStateToFinishIfPossible = TRANS_FiringA
  6907.     End
  6908.     AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  6909.     AliasConditionState = RELOADING_A
  6910.     AliasConditionState = RELOADING_A REALLYDAMAGED
  6911.  
  6912.     ConditionState = DYING
  6913.       Animation = AIPFDR_SKL.AIPFDR_DTA
  6914.       AnimationMode = ONCE
  6915.       TransitionKey = TRANS_Dying
  6916.     End
  6917.     
  6918.     TransitionState = TRANS_Dying TRANS_Flailing
  6919.       Animation = AIPFDR_SKL.AIPFDR_ADTA1
  6920.       AnimationMode = ONCE
  6921.     End
  6922.  
  6923.     ConditionState = DYING EXPLODED_FLAILING
  6924.       Animation = AIPFDR_SKL.AIPFDR_ADTA2
  6925.       AnimationMode = LOOP
  6926.       TransitionKey = TRANS_Flailing
  6927.     End
  6928.  
  6929.     ConditionState = DYING EXPLODED_BOUNCING
  6930.       Animation = AIPFDR_SKL.AIPFDR_ADTA3
  6931.       AnimationMode = ONCE
  6932.       TransitionKey = None
  6933.     End
  6934.  
  6935.     ConditionState = FREEFALL
  6936.       Animation = AIPFDR_SKL.AIPFDR_PFL
  6937.       AnimationMode = LOOP
  6938.       TransitionKey = TRANS_Falling
  6939.     End
  6940.     AliasConditionState = FREEFALL DYING
  6941.  
  6942.     ConditionState = PARACHUTING
  6943.       Animation = AIPFDR_SKL.AIPFDR_PHG
  6944.       AnimationMode = LOOP
  6945.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
  6946.       ;our bone positions should come from the last frame, rather than the first
  6947.       TransitionKey = TRANS_Chute
  6948.     End
  6949.     AliasConditionState = PARACHUTING DYING
  6950.  
  6951.  
  6952.     TransitionState = TRANS_Falling TRANS_Chute
  6953.       Animation = AIPFDR_SKL.AIPFDR_POP
  6954.       AnimationMode = ONCE
  6955.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
  6956.       ;our bone positions should come from the last frame, rather than the first
  6957.     End
  6958.  
  6959.     TransitionState = TRANS_Chute TRANS_Standing
  6960.       Animation = AIPFDR_SKL.AIPFDR_PTD
  6961.       AnimationMode = ONCE
  6962.     End
  6963.   End
  6964.  
  6965.   
  6966.   ; ***DESIGN parameters ***
  6967.   DisplayName      = OBJECT:Pathfinder
  6968.   Side = America
  6969.   EditorSorting = INFANTRY
  6970.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  6971.   
  6972.   WeaponSet
  6973.     Conditions = None 
  6974.     Weapon = PRIMARY USAPathfinderSniperRifle
  6975.   End
  6976.   ArmorSet
  6977.     Conditions      = None
  6978.     Armor           = HumanArmor
  6979.     DamageFX        = InfantryDamageFX
  6980.   End
  6981.  
  6982.   VisionRange = 200
  6983.   ShroudClearingRange = 400
  6984.   Prerequisites
  6985.     Object = AmericaBarracks
  6986.     Science = SCIENCE_Pathfinder
  6987.   End
  6988.   BuildCost = 600
  6989.   BuildTime = 10.0          ;in seconds  
  6990.   
  6991.   ExperienceValue = 40 40 60 80    ;Experience point value at each level
  6992.   ExperienceRequired = 0 50 100 200  ;Experience points needed to gain each level
  6993.   IsTrainable = Yes             ;Can gain experience
  6994.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  6995.   CommandSet      = AmericaInfantryPathfinderCommandSet
  6996.  
  6997.   ; *** AUDIO Parameters ***
  6998.   VoiceSelect = PathfinderVoiceSelect
  6999.   VoiceMove = PathfinderVoiceMove
  7000.   VoiceGuard = PathfinderVoiceMove
  7001.   VoiceAttack = PathfinderVoiceAttack
  7002.   SoundDie = PathfinderVoiceDie
  7003.   SoundDieFire = DieByFireUSA
  7004.   SoundDieToxin = DieByToxinUSA
  7005.   VoiceFear = PathfinderVoiceFear
  7006.   SoundStealthOn = StealthOn
  7007.   SoundStealthOff = StealthOff
  7008.   VoiceFear = PathfinderVoiceFear
  7009.   
  7010.   UnitSpecificSounds
  7011.     VoiceCreate          = PathfinderVoiceCreate
  7012.     VoiceGarrison = PathfinderVoiceGarrison
  7013.     VoiceEnter = PathfinderVoiceMove
  7014.     VoiceEnterHostile =  PathfinderVoiceMove
  7015.     VoiceGetHealed      = PathfinderVoiceMove
  7016.   End
  7017.  
  7018.   ; *** ENGINEERING Parameters ***
  7019.   RadarPriority = UNIT
  7020.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY STEALTH_GARRISON SCORE
  7021.  
  7022.   Body = ActiveBody ModuleTag_02
  7023.     MaxHealth       = 120.0
  7024.     InitialHealth   = 120.0
  7025.   End
  7026.  
  7027.   Behavior = AIUpdateInterface ModuleTag_03
  7028.     AutoAcquireEnemiesWhenIdle = Yes Stealthed
  7029.     MoodAttackCheckRate        = 250
  7030.   End
  7031.  
  7032.   Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
  7033.     ScanRate = 1000 ; once a second.
  7034.     ScanRange = 300 ;
  7035.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  7036.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  7037.   End
  7038.  
  7039.   Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
  7040.  
  7041.   Behavior = ExperienceScalarUpgrade ModuleTag_05
  7042.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  7043.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  7044.   End
  7045.  
  7046.   Behavior = PhysicsBehavior ModuleTag_06
  7047.     Mass = 5.0
  7048.   End
  7049.   Behavior = StealthDetectorUpdate ModuleTag_08
  7050.     DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
  7051.     ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
  7052.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  7053.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  7054.   End
  7055.   Behavior = StealthUpdate ModuleTag_09
  7056.     StealthDelay                = 0           ; msec
  7057.     StealthForbiddenConditions  = MOVING ; stays stealthy while attacking
  7058.     FriendlyOpacityMin          = 30.0%
  7059.     FriendlyOpacityMax          = 80.0%
  7060.     PulseFrequency              = 500   ; msec
  7061.     MoveThresholdSpeed          = 3
  7062.     InnateStealth               = Yes
  7063.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  7064.   End
  7065.  
  7066.   Behavior = SquishCollide ModuleTag_10
  7067.     ;nothing
  7068.   End
  7069.  
  7070.  
  7071. ; --- begin Death modules ---
  7072.   Behavior = SlowDeathBehavior ModuleTag_Death01
  7073.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  7074.     SinkDelay           = 3000
  7075.     SinkRate            = 0.5     ; in Dist/Sec
  7076.     DestructionDelay    = 8000
  7077.     FX                  = INITIAL FX_GIDie
  7078.   End
  7079.   Behavior = SlowDeathBehavior ModuleTag_Death02
  7080.     DeathTypes          = NONE +CRUSHED +SPLATTED
  7081.     SinkDelay           = 3000
  7082.     SinkRate            = 0.5     ; in Dist/Sec
  7083.     DestructionDelay    = 8000
  7084.     FX                  = INITIAL FX_GIDieCrushed
  7085.   End
  7086.   Behavior = SlowDeathBehavior ModuleTag_Death03
  7087.     DeathTypes          = NONE +EXPLODED
  7088.     SinkDelay           = 3000
  7089.     SinkRate            = 0.5     ; in Dist/Sec
  7090.     DestructionDelay    = 8000
  7091.     FX                  = INITIAL FX_GIDie
  7092.     FlingForce          = 8
  7093.     FlingForceVariance  = 3
  7094.     FlingPitch          = 60
  7095.     FlingPitchVariance  = 10
  7096.   End
  7097.   Behavior = SlowDeathBehavior ModuleTag_Death04
  7098.     DeathTypes          = NONE +BURNED
  7099.     DestructionDelay    = 0
  7100.     FX                  = INITIAL FX_GIDie
  7101.     OCL                 = INITIAL OCL_FlamingInfantry
  7102.   End
  7103.   Behavior = SlowDeathBehavior ModuleTag_Death05
  7104.     DeathTypes          = NONE +POISONED
  7105.     DestructionDelay    = 0
  7106.     FX                  = INITIAL FX_GIDie
  7107.     OCL                 = INITIAL OCL_ToxicInfantry
  7108.   End
  7109.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  7110.     DeathTypes          = NONE +POISONED_BETA
  7111.     DestructionDelay    = 0
  7112.     FX                  = INITIAL FX_GIDie
  7113.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  7114.   End
  7115. ; --- end Death modules ---
  7116.  
  7117.   Behavior = PoisonedBehavior ModuleTag_13
  7118.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  7119.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  7120.   End
  7121.  
  7122.   Geometry = CYLINDER
  7123.   GeometryMajorRadius = 10.0
  7124.   GeometryMinorRadius = 10.0
  7125.   GeometryHeight = 12.0
  7126.   GeometryIsSmall = Yes
  7127.   Shadow = SHADOW_DECAL
  7128.   ShadowSizeX = 14;
  7129.   ShadowSizeY = 14;
  7130.   ShadowTexture = ShadowI;
  7131.   BuildCompletion = APPEARS_AT_RALLY_POINT
  7132.  
  7133. End
  7134.  
  7135. ;------------------------------------------------------------------------------
  7136. Object CINE_AmericanInfantryPathfinder
  7137.  
  7138.     ; *** ART Parameters ***
  7139.   SelectPortrait         = SAPathfinder1_L
  7140.   ButtonImage            = SAPathfinder1
  7141.   
  7142.   UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
  7143.   ;UpgradeCameo2 = NONE
  7144.   ;UpgradeCameo3 = NONE
  7145.   ;UpgradeCameo4 = NONE
  7146.   ;UpgradeCameo5 = NONE
  7147.   
  7148.   Draw = W3DModelDraw ModuleTag_01
  7149.  
  7150.     OkToChangeModelColor = Yes
  7151.  
  7152.     DefaultConditionState
  7153.       Model = AIPFDR_SKN
  7154.       IdleAnimation = AIPFDR_SKL.AIPFDR_STA 0 14
  7155.       IdleAnimation = AIPFDR_SKL.AIPFDR_IDA
  7156.       AnimationMode = ONCE
  7157.       WeaponFireFXBone = PRIMARY Muzzle
  7158.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  7159.       TransitionKey = TRANS_Standing
  7160.     End
  7161.  
  7162.     ConditionState = MOVING
  7163.       Animation = AIPFDR_SKL.AIPFDR_RNA 30
  7164.       AnimationMode = LOOP
  7165.       Flags = RANDOMSTART
  7166.       TransitionKey = TRANS_Standing
  7167.       ParticleSysBone   = None InfantryDustTrails
  7168.     End
  7169.  
  7170.     TransitionState = TRANS_Standing TRANS_PreAttack 
  7171.       Animation = AIPFDR_SKL.AIPFDR_DVA                           ; dive to the ground
  7172.       AnimationMode = ONCE
  7173.     End
  7174.  
  7175.     ConditionState = PREATTACK_A   
  7176.       Animation = AIPFDR_SKL.AIPFDR_STB                           ; motionless in prone position
  7177.       AnimationMode = ONCE
  7178.       TransitionKey = TRANS_PreAttack 
  7179.     End
  7180.     AliasConditionState = PREATTACK_A MOVING
  7181.     AliasConditionState = PREATTACK_A FIRING_A
  7182.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  7183.  
  7184.     ConditionState = FIRING_A
  7185.       Animation = AIPFDR_SKL.AIPFDR_ATA                          ; recoil in prone position
  7186.       AnimationMode = ONCE
  7187.       TransitionKey = TRANS_LyingDown 
  7188.     End
  7189.     AliasConditionState = RELOADING_A
  7190.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  7191.  
  7192.     ConditionState = MOVING FIRING_A 
  7193.       Animation = AIPFDR_SKL.AIPFDR_CLA 15                        ; crawling
  7194.       AnimationMode = LOOP
  7195.       TransitionKey = TRANS_LyingDown 
  7196.       ParticleSysBone   = None InfantryDustTrails
  7197.     End
  7198.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  7199.     AliasConditionState = MOVING RELOADING_A
  7200.  
  7201. ;    TransitionState = TRANS_Standing TRANS_LyingDown 
  7202. ;      Animation = AIPFDR_SKL.AIPFDR_DVA                           ; dive to the ground
  7203. ;      AnimationMode = ONCE
  7204. ;    End
  7205.  
  7206.     TransitionState = TRANS_LyingDown TRANS_Dying 
  7207.       Animation = AIPFDR_SKL.AIPFDR_SUA                           ; getting up
  7208.       AnimationMode = ONCE
  7209.     End
  7210.     TransitionState = TRANS_LyingDown TRANS_Standing 
  7211.       Animation = AIPFDR_SKL.AIPFDR_SUA                           ; getting up
  7212.       AnimationMode = ONCE
  7213.     End
  7214.  
  7215.     ConditionState = DYING
  7216.       Animation = AIPFDR_SKL.AIPFDR_DTA
  7217.       AnimationMode = ONCE
  7218.       TransitionKey = TRANS_Dying
  7219.     End
  7220.     
  7221.     TransitionState = TRANS_Dying TRANS_Flailing
  7222.       Animation = AIPFDR_SKL.AIPFDR_ADTA1
  7223.       AnimationMode = ONCE
  7224.     End
  7225.  
  7226.     ConditionState = DYING EXPLODED_FLAILING
  7227.       Animation = AIPFDR_SKL.AIPFDR_ADTA2
  7228.       AnimationMode = LOOP
  7229.       TransitionKey = TRANS_Flailing
  7230.     End
  7231.  
  7232.     ConditionState = DYING EXPLODED_BOUNCING
  7233.       Animation = AIPFDR_SKL.AIPFDR_ADTA3
  7234.       AnimationMode = ONCE
  7235.       TransitionKey = None
  7236.     End
  7237.  
  7238.     ConditionState = FREEFALL
  7239.       Animation = AIPFDR_SKL.AIPFDR_PFL
  7240.       AnimationMode = LOOP
  7241.       TransitionKey = TRANS_Falling
  7242.     End
  7243.     AliasConditionState = FREEFALL DYING
  7244.  
  7245.     ConditionState = PARACHUTING
  7246.       Animation = AIPFDR_SKL.AIPFDR_PHG
  7247.       AnimationMode = LOOP
  7248.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
  7249.       ;our bone positions should come from the last frame, rather than the first
  7250.       TransitionKey = TRANS_Chute
  7251.     End
  7252.     AliasConditionState = PARACHUTING DYING
  7253.  
  7254.  
  7255.     TransitionState = TRANS_Falling TRANS_Chute
  7256.       Animation = AIPFDR_SKL.AIPFDR_POP
  7257.       AnimationMode = ONCE
  7258.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
  7259.       ;our bone positions should come from the last frame, rather than the first
  7260.     End
  7261.  
  7262.     TransitionState = TRANS_Chute TRANS_Standing
  7263.       Animation = AIPFDR_SKL.AIPFDR_PTD
  7264.       AnimationMode = ONCE
  7265.     End
  7266.   End
  7267.  
  7268.   
  7269.   ; ***DESIGN parameters ***
  7270.   DisplayName      = OBJECT:Pathfinder
  7271.   Side = America
  7272.   EditorSorting = INFANTRY
  7273.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  7274.   
  7275.   WeaponSet
  7276.     Conditions = None 
  7277.     Weapon = PRIMARY CINE_USAPathfinderSniperRifle
  7278.   End
  7279.   ArmorSet
  7280.     Conditions      = None
  7281.     Armor           = HumanArmor
  7282.     DamageFX        = InfantryDamageFX
  7283.   End
  7284.  
  7285.   VisionRange = 300
  7286.   ShroudClearingRange = 400
  7287.   Prerequisites
  7288.     Object = AmericaBarracks
  7289.     Science = SCIENCE_Pathfinder
  7290.   End
  7291.   BuildCost = 600
  7292.   BuildTime = 10.0          ;in seconds  
  7293.   
  7294.   ExperienceValue = 40 40 60 80    ;Experience point value at each level
  7295.   ExperienceRequired = 0 50 100 200  ;Experience points needed to gain each level
  7296.   IsTrainable = Yes             ;Can gain experience
  7297.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  7298.   CommandSet      = AmericaInfantryPathfinderCommandSet
  7299.  
  7300.   ; *** AUDIO Parameters ***
  7301.   VoiceSelect = PathfinderVoiceSelect
  7302.   VoiceMove = PathfinderVoiceMove
  7303.   VoiceGuard = PathfinderVoiceMove
  7304.   VoiceAttack = PathfinderVoiceAttack
  7305.   SoundDie = PathfinderVoiceDie
  7306.   SoundDieFire = DieByFireUSA
  7307.   SoundDieToxin = DieByToxinUSA
  7308.   VoiceFear = PathfinderVoiceFear
  7309.   SoundStealthOn = StealthOn
  7310.   SoundStealthOff = StealthOff
  7311.   VoiceFear = PathfinderVoiceFear
  7312.   
  7313.   UnitSpecificSounds
  7314.     VoiceCreate          = PathfinderVoiceCreate
  7315.     VoiceGarrison = PathfinderVoiceGarrison
  7316.     VoiceEnter = PathfinderVoiceMove
  7317.     VoiceEnterHostile =  PathfinderVoiceMove
  7318.     VoiceGetHealed      = PathfinderVoiceMove
  7319.   End
  7320.  
  7321.   ; *** ENGINEERING Parameters ***
  7322.   RadarPriority = UNIT
  7323.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY STEALTH_GARRISON SCORE
  7324.  
  7325.   Body = ActiveBody ModuleTag_02
  7326.     MaxHealth       = 120.0
  7327.     InitialHealth   = 120.0
  7328.   End
  7329.  
  7330.   Behavior = AIUpdateInterface ModuleTag_03
  7331.     AutoAcquireEnemiesWhenIdle = Yes Stealthed
  7332.     MoodAttackCheckRate        = 250
  7333.   End
  7334.  
  7335.   Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
  7336.     ScanRate = 1000 ; once a second.
  7337.     ScanRange = 300 ;
  7338.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  7339.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  7340.   End
  7341.  
  7342.   Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
  7343.  
  7344.   Behavior = ExperienceScalarUpgrade ModuleTag_05
  7345.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  7346.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  7347.   End
  7348.  
  7349.   Behavior = PhysicsBehavior ModuleTag_06
  7350.     Mass = 5.0
  7351.   End
  7352.  
  7353.  
  7354.   Behavior = SquishCollide ModuleTag_10
  7355.     ;nothing
  7356.   End
  7357.  
  7358.  
  7359. ; --- begin Death modules ---
  7360.   Behavior = SlowDeathBehavior ModuleTag_Death01
  7361.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  7362.     SinkDelay           = 3000
  7363.     SinkRate            = 0.5     ; in Dist/Sec
  7364.     DestructionDelay    = 8000
  7365.     FX                  = INITIAL FX_GIDie
  7366.   End
  7367.   Behavior = SlowDeathBehavior ModuleTag_Death02
  7368.     DeathTypes          = NONE +CRUSHED +SPLATTED
  7369.     SinkDelay           = 3000
  7370.     SinkRate            = 0.5     ; in Dist/Sec
  7371.     DestructionDelay    = 8000
  7372.     FX                  = INITIAL FX_GIDieCrushed
  7373.   End
  7374.   Behavior = SlowDeathBehavior ModuleTag_Death03
  7375.     DeathTypes          = NONE +EXPLODED
  7376.     SinkDelay           = 3000
  7377.     SinkRate            = 0.5     ; in Dist/Sec
  7378.     DestructionDelay    = 8000
  7379.     FX                  = INITIAL FX_GIDie
  7380.     FlingForce          = 8
  7381.     FlingForceVariance  = 3
  7382.     FlingPitch          = 60
  7383.     FlingPitchVariance  = 10
  7384.   End
  7385.   Behavior = SlowDeathBehavior ModuleTag_Death04
  7386.     DeathTypes          = NONE +BURNED
  7387.     DestructionDelay    = 0
  7388.     FX                  = INITIAL FX_GIDie
  7389.     OCL                 = INITIAL OCL_FlamingInfantry
  7390.   End
  7391.   Behavior = SlowDeathBehavior ModuleTag_Death05
  7392.     DeathTypes          = NONE +POISONED
  7393.     DestructionDelay    = 0
  7394.     FX                  = INITIAL FX_GIDie
  7395.     OCL                 = INITIAL OCL_ToxicInfantry
  7396.   End
  7397.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  7398.     DeathTypes          = NONE +POISONED_BETA
  7399.     DestructionDelay    = 0
  7400.     FX                  = INITIAL FX_GIDie
  7401.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  7402.   End
  7403. ; --- end Death modules ---
  7404.  
  7405.   Behavior = PoisonedBehavior ModuleTag_13
  7406.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  7407.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  7408.   End
  7409.  
  7410.   Geometry = CYLINDER
  7411.   GeometryMajorRadius = 10.0
  7412.   GeometryMinorRadius = 10.0
  7413.   GeometryHeight = 12.0
  7414.   GeometryIsSmall = Yes
  7415.   Shadow = SHADOW_DECAL
  7416.   ShadowSizeX = 14;
  7417.   ShadowSizeY = 14;
  7418.   ShadowTexture = ShadowI;
  7419.   BuildCompletion = APPEARS_AT_RALLY_POINT
  7420.  
  7421. End
  7422.  
  7423. ;------------------------------------------------------------------------------
  7424. Object GLAInfantryRebel
  7425.  
  7426.   ; *** ART Parameters ***
  7427.   SelectPortrait         = SURebel_L
  7428.   ButtonImage            = SURebel
  7429.  
  7430.   UpgradeCameo1 = Upgrade_GLAAPBullets
  7431.   UpgradeCameo2 = Upgrade_GLACamouflage
  7432.   UpgradeCameo3 = Upgrade_InfantryCaptureBuilding
  7433.   ;UpgradeCameo4 = NONE
  7434.   ;UpgradeCameo5 = NONE
  7435.  
  7436.   Draw = W3DModelDraw ModuleTag_01
  7437.  
  7438.     OkToChangeModelColor = Yes
  7439.     
  7440.     ; this says "we don't use these condition states at all, so completely
  7441.     ; ignore them for purposes of matchmaking"... this is useful to help
  7442.     ; reduce the number of AliasConditionState clauses you must add in
  7443.     ; order to avoid ambiguity in some cases.
  7444.     IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
  7445.  
  7446.     ; ---- standing
  7447.     DefaultConditionState
  7448.       Model               = UIRGrd_SKN
  7449.       IdleAnimation       = UIRGrd_SKL.UIRGrd_STN 0 35
  7450.       IdleAnimation       = UIRGrd_SKL.UIRGrd_IDA 
  7451.       IdleAnimation       = UIRGrd_SKL.UIRGrd_IDB 
  7452.       AnimationMode       = ONCE
  7453.       WeaponFireFXBone    = PRIMARY Muzzle
  7454.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  7455.       TransitionKey       = TRANS_Standing
  7456.     End
  7457.  
  7458.     ConditionState        = REALLYDAMAGED
  7459.       IdleAnimation       = UIRGrd_SKL.UIRGrd_STB 0 35
  7460.       IdleAnimation       = UIRGrd_SKL.UIRGrd_IDC
  7461.       IdleAnimation       = UIRGrd_SKL.UIRGrd_IDD 
  7462.       AnimationMode       = ONCE
  7463.       TransitionKey       = TRANS_StandingHurt
  7464.     End
  7465.  
  7466.     ; ---- moving
  7467.     ConditionState        = MOVING
  7468.       Animation           = UIRGrd_SKL.UIRGrd_RNA 15
  7469.       AnimationMode       = LOOP
  7470.       TransitionKey       = TRANS_Walking
  7471.       ParticleSysBone     = None InfantryDustTrails
  7472.     End
  7473.     AliasConditionState   = MOVING ATTACKING
  7474.  
  7475.     ConditionState        = MOVING REALLYDAMAGED
  7476.       Animation           = UIRGrd_SKL.UIRGrd_RNB 25
  7477.       AnimationMode       = LOOP
  7478.       TransitionKey       = TRANS_WalkingHurt
  7479.       ParticleSysBone     = None InfantryDustTrails
  7480.     End
  7481.     AliasConditionState   = MOVING ATTACKING REALLYDAMAGED
  7482.     
  7483.     ; ---- dying 
  7484.     ConditionState        = DYING
  7485.       Animation           = UIRGrd_SKL.UIRGrd_DTA 
  7486.       Animation           = UIRGrd_SKL.UIRGrd_DTB 
  7487.       AnimationMode       = ONCE
  7488.       TransitionKey       = TRANS_Dying
  7489.     End
  7490.  
  7491.     TransitionState = TRANS_Dying TRANS_Flailing
  7492.       Animation = UIRGrd_SKL.UIRGrd_ADTE1
  7493.       AnimationMode = ONCE
  7494.     End
  7495.  
  7496.     ConditionState = DYING EXPLODED_FLAILING
  7497.       Animation = UIRGrd_SKL.UIRGrd_ADTE2
  7498.       AnimationMode = LOOP
  7499.       TransitionKey = TRANS_Flailing
  7500.     End
  7501.  
  7502.     ConditionState = DYING EXPLODED_BOUNCING
  7503.       Animation = UIRGrd_SKL.UIRGrd_ADTE3
  7504.       AnimationMode = ONCE
  7505.       TransitionKey = None
  7506.     End
  7507.     
  7508.     ConditionState = SPECIAL_CHEERING
  7509.       Animation = UIRGrd_SKL.UIRGrd_IDB
  7510.     End
  7511.  
  7512.     ; ---- firing
  7513.     ConditionState = USING_WEAPON_A
  7514.       Animation = UIRGrd_SKL.UIRGrd_ATA
  7515.       AnimationMode = LOOP
  7516.       TransitionKey = TRANS_Firing
  7517.     End
  7518.  
  7519.     ConditionState = USING_WEAPON_A REALLYDAMAGED
  7520.       Animation = UIRGrd_SKL.UIRGrd_ATA2
  7521.       AnimationMode = LOOP
  7522.       TransitionKey = TRANS_FiringHurt
  7523.     End
  7524.  
  7525.     TransitionState = TRANS_Standing TRANS_Firing
  7526.       Animation = UIRGrd_SKL.UIRGrd_ATAST
  7527.       AnimationMode = ONCE
  7528.     End
  7529.  
  7530.     TransitionState = TRANS_Firing TRANS_Standing
  7531.       Animation = UIRGrd_SKL.UIRGrd_ATAED
  7532.       AnimationMode = ONCE
  7533.     End
  7534.  
  7535.     TransitionState = TRANS_StandingHurt TRANS_FiringHurt
  7536.       Animation = UIRGrd_SKL.UIRGrd_ATA2ED
  7537.       AnimationMode = ONCE_BACKWARDS
  7538.     End
  7539.  
  7540.     TransitionState = TRANS_FiringHurt TRANS_StandingHurt
  7541.       Animation = UIRGrd_SKL.UIRGrd_ATA2ED
  7542.       AnimationMode = ONCE
  7543.     End
  7544.  
  7545.     TransitionState = TRANS_Standing TRANS_StandingHurt
  7546.       Animation = UIRGrd_SKL.UIRGrd_ATA2ED
  7547.       AnimationMode = ONCE
  7548.     End
  7549.  
  7550.     
  7551.  
  7552.     ; ------- Bldg-capture
  7553.  
  7554.     ConditionState = UNPACKING
  7555.       Model             = UIRGrd_F_SKN
  7556.       Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
  7557.       AnimationMode     = ONCE
  7558.     End
  7559.     AliasConditionState = UNPACKING REALLYDAMAGED
  7560.  
  7561.     ConditionState = RAISING_FLAG
  7562.       Model             = UIRGrd_F_SKN
  7563.       Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
  7564.       AnimationMode     = ONCE
  7565.       TransitionKey     = TRANS_Raising
  7566.     End
  7567.     AliasConditionState = RAISING_FLAG REALLYDAMAGED
  7568.  
  7569.     ConditionState = PACKING
  7570.       Model             = UIRGrd_F_SKN
  7571.       Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
  7572.       AnimationMode     = ONCE_BACKWARDS
  7573.       Flags             = START_FRAME_LAST
  7574.       TransitionKey     = TRANS_Packing
  7575.     End
  7576.     AliasConditionState = PACKING REALLYDAMAGED
  7577.  
  7578.     TransitionState = TRANS_Raising TRANS_Packing
  7579.       Model             = UIRGrd_F_SKN
  7580.       Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
  7581.       AnimationMode     = ONCE_BACKWARDS
  7582.       Flags             = START_FRAME_LAST
  7583.     End
  7584.  
  7585.   End
  7586.  
  7587.   ; ***DESIGN parameters ***
  7588.   DisplayName         = OBJECT:Rebel
  7589.   Side                = GLA
  7590.   EditorSorting       = INFANTRY
  7591.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  7592.  
  7593.   WeaponSet
  7594.     Conditions = None 
  7595.     Weapon = PRIMARY GLARebelMachineGun
  7596.   End
  7597. ; sorry, no tranqs, cut for this version (srj)
  7598. ;  WeaponSet
  7599. ;    Conditions = PLAYER_UPGRADE 
  7600. ;    Weapon = PRIMARY GLARebelMachineGun
  7601. ;    Weapon = SECONDARY GLARebelTranqDartsWeapon
  7602. ;    AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  7603. ;    AutoChooseSources = SECONDARY NONE
  7604. ;  End
  7605.  
  7606.   ArmorSet
  7607.     Conditions      = None
  7608.     Armor           = HumanArmor
  7609.     DamageFX        = InfantryDamageFX
  7610.   End
  7611.   VisionRange         = 150
  7612.   ShroudClearingRange = 300
  7613.   Prerequisites
  7614.     Object = GLABarracks
  7615.   End
  7616.   BuildCost = 150
  7617.   BuildTime = 5.0          ;in seconds  
  7618.  
  7619.   ExperienceValue     = 15 15 30 40     ;Experience point value at each level
  7620.   ExperienceRequired  = 0 40 60 120     ;Experience points needed to gain each level
  7621.   IsTrainable         = Yes             ;Can gain experience
  7622.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  7623.   CommandSet          = GLAInfantryRebelCommandSet
  7624.  
  7625.   ; *** AUDIO Parameters ***
  7626.   VoiceSelect = RebelVoiceSelect
  7627.   VoiceMove = RebelVoiceMove
  7628.   VoiceGuard = RebelVoiceMove
  7629.   VoiceAttack = RebelVoiceAttack
  7630.   SoundDie = RebelVoiceDie
  7631.   SoundDieFire = DieByFireGLA
  7632.   SoundDieToxin = DieByToxinGLA
  7633.   SoundStealthOn = StealthOn
  7634.   SoundStealthOff = StealthOff
  7635.   VoiceFear = RebelVoiceFear
  7636.   VoiceTaskComplete = RebelVoiceCaptureComplete
  7637.   UnitSpecificSounds
  7638.     VoiceCreate = RebelVoiceCreate
  7639.     VoiceSubdue = RebelVoiceSubdue
  7640.     VoiceGarrison = RebelVoiceGarrison
  7641.     VoiceEnter = RebelVoiceMove
  7642.     VoiceEnterHostile = RebelVoiceMove
  7643.     VoiceGetHealed      = RebelVoiceMove
  7644.   End
  7645.  
  7646.   ; *** ENGINEERING Parameters ***
  7647.   RadarPriority = UNIT
  7648.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE 
  7649.  
  7650.   Body = ActiveBody ModuleTag_02
  7651.     MaxHealth       = 120.0
  7652.     InitialHealth   = 120.0
  7653.   End
  7654.  
  7655.   Behavior = AIUpdateInterface ModuleTag_03
  7656.     AutoAcquireEnemiesWhenIdle = Yes
  7657.   End
  7658.  
  7659.   Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
  7660.   End
  7661.  
  7662.   Locomotor = SET_NORMAL BasicHumanLocomotor
  7663.  
  7664.   Behavior = PhysicsBehavior ModuleTag_05
  7665.     Mass = 5.0
  7666.   End
  7667.   Behavior = StealthUpdate ModuleTag_07
  7668.     StealthDelay                = 2500 ; msec
  7669.     StealthForbiddenConditions  = ATTACKING USING_ABILITY
  7670.     MoveThresholdSpeed          = 3
  7671.     InnateStealth               = No ;Requires upgrade first
  7672.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  7673.   End
  7674.  
  7675. ; sorry, no tranq or stun bullets, cut for this version (srj)
  7676. ;  Behavior = WeaponSetUpgrade ModuleTag_08
  7677. ;    TriggeredBy = Upgrade_GLATranqDarts
  7678. ;  End
  7679.   Behavior = WeaponBonusUpgrade ModuleTag_09
  7680.     TriggeredBy = Upgrade_GLAAPBullets
  7681.   End
  7682.   Behavior = StealthUpgrade ModuleTag_10
  7683.     TriggeredBy = Upgrade_GLACamouflage
  7684.   End
  7685.  
  7686.  
  7687.   Behavior = SquishCollide ModuleTag_11
  7688.     ;nothing
  7689.   End
  7690.  
  7691.  
  7692. ; --- begin Death modules ---
  7693.   Behavior = SlowDeathBehavior ModuleTag_Death01
  7694.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  7695.     SinkDelay           = 3000
  7696.     SinkRate            = 0.5     ; in Dist/Sec
  7697.     DestructionDelay    = 8000
  7698.     FX                  = INITIAL FX_GIDie
  7699.   End
  7700.   Behavior = SlowDeathBehavior ModuleTag_Death02
  7701.     DeathTypes          = NONE +CRUSHED +SPLATTED
  7702.     SinkDelay           = 3000
  7703.     SinkRate            = 0.5     ; in Dist/Sec
  7704.     DestructionDelay    = 8000
  7705.     FX                  = INITIAL FX_GIDieCrushed
  7706.   End
  7707.   Behavior = SlowDeathBehavior ModuleTag_Death03
  7708.     DeathTypes          = NONE +EXPLODED
  7709.     SinkDelay           = 3000
  7710.     SinkRate            = 0.5     ; in Dist/Sec
  7711.     DestructionDelay    = 8000
  7712.     FX                  = INITIAL FX_GIDie
  7713.     FlingForce          = 8
  7714.     FlingForceVariance  = 3
  7715.     FlingPitch          = 60
  7716.     FlingPitchVariance  = 10
  7717.   End
  7718.   Behavior = SlowDeathBehavior ModuleTag_Death04
  7719.     DeathTypes          = NONE +BURNED
  7720.     DestructionDelay    = 0
  7721.     FX                  = INITIAL FX_GIDie
  7722.     OCL                 = INITIAL OCL_FlamingInfantry
  7723.   End
  7724.   Behavior = SlowDeathBehavior ModuleTag_Death05
  7725.     DeathTypes          = NONE +POISONED
  7726.     DestructionDelay    = 0
  7727.     FX                  = INITIAL FX_GIDie
  7728.     OCL                 = INITIAL OCL_ToxicInfantry
  7729.   End
  7730.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  7731.     DeathTypes          = NONE +POISONED_BETA
  7732.     DestructionDelay    = 0
  7733.     FX                  = INITIAL FX_GIDie
  7734.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  7735.   End
  7736. ; --- end Death modules ---
  7737.  
  7738.   Behavior = PoisonedBehavior ModuleTag_16
  7739.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  7740.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  7741.   End
  7742.  
  7743.   Behavior = SpecialAbility ModuleTag_17
  7744.     SpecialPowerTemplate      = SpecialAbilityRebelCaptureBuilding
  7745.     UpdateModuleStartsAttack  = Yes
  7746.     StartsPaused              = Yes
  7747.     InitiateSound         = RebelVoiceCapture
  7748.   End
  7749.   Behavior = SpecialAbilityUpdate ModuleTag_18
  7750.     SpecialPowerTemplate  = SpecialAbilityRebelCaptureBuilding
  7751.     StartAbilityRange  = 5.0
  7752.     UnpackTime            = 3000  ; (changing this will scale anim speed)
  7753.     PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
  7754.     PackTime              = 2000  ; (changing this will scale anim speed)
  7755.     DoCaptureFX           = Yes
  7756.     AwardXPForTriggering  = 12
  7757.     ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  7758.   End
  7759.  
  7760.   Behavior = UnpauseSpecialPowerUpgrade ModuleTag_19
  7761.     SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding
  7762.     TriggeredBy = Upgrade_InfantryCaptureBuilding
  7763.   End
  7764.  
  7765.  
  7766.   Geometry = CYLINDER
  7767.   GeometryMajorRadius = 10.0
  7768.   GeometryMinorRadius = 10.0
  7769.   GeometryHeight = 12.0
  7770.   GeometryIsSmall = Yes
  7771.   Shadow = SHADOW_DECAL
  7772.   ShadowSizeX = 14;
  7773.   ShadowSizeY = 14;
  7774.   ShadowTexture = ShadowI;
  7775.   BuildCompletion = APPEARS_AT_RALLY_POINT
  7776.  
  7777. End
  7778.  
  7779. ;----------------------------------------------------------------------------
  7780. Object GLAInfantryJarmenKell
  7781.  
  7782.   ; *** ART Parameters ***
  7783.   SelectPortrait         = SUJermanKell1_L  ;NOTE: Asset spelling mistake
  7784.   ButtonImage            = SUJermanKell1
  7785.   
  7786.   UpgradeCameo1 = Upgrade_GLAAPBullets
  7787.   ;UpgradeCameo2 = NONE
  7788.   ;UpgradeCameo3 = NONE
  7789.   ;UpgradeCameo4 = NONE
  7790.   ;UpgradeCameo5 = NONE
  7791.   
  7792.   Draw = W3DModelDraw ModuleTag_01
  7793.     OkToChangeModelColor = Yes
  7794.  
  7795.     ; --- idle
  7796.     DefaultConditionState
  7797.       Model             = UIHERO_SKN
  7798.       IdleAnimation     = UIHERO_SKL.UIHERO_STA 0 21
  7799.       IdleAnimation     = UIHERO_SKL.UIHERO_IDA
  7800.       IdleAnimation     = UIHERO_SKL.UIHERO_IDB
  7801.       AnimationMode     = ONCE
  7802.       WeaponFireFXBone  = PRIMARY Muzzle
  7803.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  7804.       TransitionKey     = TRANS_Stand
  7805.     End
  7806.  
  7807.     ConditionState      = REALLYDAMAGED
  7808.       IdleAnimation     = UIHERO_SKL.UIHERO_ISTA 0 30
  7809.       IdleAnimation     = UIHERO_SKL.UIHERO_IIDA
  7810.       IdleAnimation     = UIHERO_SKL.UIHERO_IIDB
  7811.       AnimationMode     = ONCE
  7812.       TransitionKey     = TRANS_StandInjured
  7813.     End
  7814.  
  7815.     TransitionState     = TRANS_Stand TRANS_StandInjured
  7816.       Animation         = UIHERO_SKL.UIHERO_ISTAHIT
  7817.       AnimationMode     = ONCE
  7818.     End
  7819.  
  7820.     ; --- attack
  7821.  
  7822.     ConditionState      = FIRING_A 
  7823.       Animation         = UIHERO_SKL.UIHERO_ATA 
  7824.       AnimationMode     = ONCE
  7825.       TransitionKey     = TRANS_FiringA
  7826.       AnimationSpeedFactorRange = 1.5 1.5
  7827.     End
  7828.  
  7829.     ConditionState      = BETWEEN_FIRING_SHOTS_A
  7830.       Animation         = UIHERO_SKL.UIHERO_STA
  7831.       AnimationMode     = ONCE
  7832.       WaitForStateToFinishIfPossible = TRANS_FiringA
  7833.     End
  7834.     AliasConditionState = RELOADING_A
  7835.   
  7836.     ConditionState      = FIRING_A REALLYDAMAGED
  7837.       Animation         = UIHERO_SKL.UIHERO_IATA2
  7838.       AnimationMode     = ONCE
  7839.       TransitionKey     = TRANS_FiringAInjured
  7840.       AnimationSpeedFactorRange = 1.5 1.5
  7841.     End
  7842.  
  7843.     ConditionState      = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  7844.       Animation         = UIHERO_SKL.UIHERO_IATA2
  7845.       AnimationMode     = MANUAL
  7846.       Flags             = START_FRAME_LAST
  7847.       WaitForStateToFinishIfPossible = TRANS_FiringAInjured
  7848.     End
  7849.     AliasConditionState = RELOADING_A REALLYDAMAGED
  7850.  
  7851.     TransitionState     = TRANS_FiringA TRANS_FiringAInjured
  7852.       Animation         = UIHERO_SKL.UIHERO_IATAHIT
  7853.       AnimationMode     = ONCE
  7854.     End
  7855.  
  7856.     ; --- moving
  7857.     ConditionState      = MOVING
  7858.       Animation         = UIHERO_SKL.UIHERO_RNA2 30
  7859.       AnimationMode     = LOOP
  7860.       Flags             = RANDOMSTART
  7861.       TransitionKey     = None
  7862.       ParticleSysBone   = None InfantryDustTrails
  7863.     End
  7864.     AliasConditionState = MOVING FIRING_A
  7865.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  7866.     AliasConditionState = MOVING RELOADING_A
  7867.  
  7868.     ConditionState      = MOVING REALLYDAMAGED
  7869.       Animation         = UIHERO_SKL.UIHERO_IRNA 30
  7870.       AnimationMode     = LOOP
  7871.       Flags             = RANDOMSTART
  7872.       TransitionKey     = None
  7873.       ParticleSysBone   = None InfantryDustTrails
  7874.     End
  7875.     AliasConditionState = MOVING FIRING_A REALLYDAMAGED
  7876.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  7877.     AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
  7878.     
  7879.     ; --- cheering
  7880.     ConditionState      = SPECIAL_CHEERING
  7881.       Animation         = UIHERO_SKL.UIHERO_CHA
  7882.       AnimationMode     = LOOP
  7883.     End
  7884.  
  7885.     ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
  7886.       Animation         = UIHERO_SKL.UIHERO_ICHA
  7887.       AnimationMode     = LOOP
  7888.     End
  7889.     
  7890.     ; --- dying
  7891.     ConditionState      = DYING
  7892.       Animation         = UIHERO_SKL.UIHERO_DTA
  7893.       Animation         = UIHERO_SKL.UIHERO_DTB
  7894.       Animation         = UIHERO_SKL.UIHERO_IDTA
  7895.       Animation         = UIHERO_SKL.UIHERO_IDTB
  7896.       AnimationMode     = ONCE
  7897.       TransitionKey     = TRANS_Dying
  7898.     End
  7899.  
  7900.     TransitionState     = TRANS_Dying TRANS_Flailing
  7901.       Animation         = UIHERO_SKL.UIHERO_ADTG21
  7902.       AnimationMode     = ONCE
  7903.     End
  7904.  
  7905.     ConditionState      = DYING EXPLODED_FLAILING
  7906.       Animation         = UIHERO_SKL.UIHERO_ADTG22
  7907.       AnimationMode     = LOOP
  7908.       TransitionKey     = TRANS_Flailing
  7909.     End
  7910.  
  7911.     ConditionState      = DYING EXPLODED_BOUNCING
  7912.       Animation         = UIHERO_SKL.UIHERO_ADTG23
  7913.       AnimationMode     = ONCE
  7914.       TransitionKey     = None
  7915.     End
  7916.     
  7917.     ; --- falling
  7918.     ConditionState      = FREEFALL
  7919.       Animation         = UIHERO_SKL.UIHERO_PFL
  7920.       AnimationMode     = LOOP
  7921.       TransitionKey     = TRANS_Falling
  7922.     End
  7923.     AliasConditionState = FREEFALL REALLYDAMAGED
  7924.     AliasConditionState = FREEFALL DYING
  7925.  
  7926.     ConditionState      = PARACHUTING
  7927.       Animation         = UIHERO_SKL.UIHERO_PHG
  7928.       AnimationMode     = LOOP
  7929.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  7930.       TransitionKey     = TRANS_Chute
  7931.     End
  7932.     AliasConditionState = PARACHUTING REALLYDAMAGED
  7933.     AliasConditionState = PARACHUTING DYING
  7934.  
  7935.     TransitionState     = TRANS_Falling TRANS_Chute
  7936.       Animation         = UIHERO_SKL.UIHERO_POP
  7937.       AnimationMode     = ONCE
  7938.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  7939.     End
  7940.  
  7941.     TransitionState     = TRANS_Chute TRANS_Stand
  7942.       Animation         = UIHERO_SKL.UIHERO_PTD
  7943.       AnimationMode     = ONCE
  7944.     End
  7945.  
  7946.     TransitionState     = TRANS_Chute TRANS_StandInjured
  7947.       Animation         = UIHERO_SKL.UIHERO_PTD
  7948.       AnimationMode     = ONCE
  7949.     End
  7950.     
  7951.   End
  7952.  
  7953.   ; ***DESIGN parameters ***
  7954.   DisplayName           = OBJECT:JarmenKell
  7955.   Side                  = GLA
  7956.   EditorSorting         = INFANTRY
  7957.   TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  7958.   MaxSimultaneousOfType = 1
  7959.  
  7960.   WeaponSet
  7961.     Conditions = None 
  7962.     Weapon = PRIMARY GLAJarmenKellRifle
  7963.     Weapon = SECONDARY GLAJarmenKellVehiclePilotSniperRifle
  7964.     AutoChooseSources = PRIMARY NONE
  7965.     AutoChooseSources = SECONDARY NONE
  7966.   End
  7967. ;  WeaponSet
  7968. ;    Conditions = SNIPEVEHICLE 
  7969. ;    Weapon = PRIMARY GLAJarmenKellVehiclePilotSniperRifle
  7970. ;  End
  7971.  
  7972.   ArmorSet
  7973.     Conditions      = None
  7974.     Armor           = HumanArmor
  7975.     DamageFX        = InfantryDamageFX
  7976.   End
  7977.   VisionRange         = 200
  7978.   ShroudClearingRange = 300
  7979.   Prerequisites
  7980.     Object = GLABarracks
  7981.     Object = GLAPalace
  7982.   End
  7983.   BuildCost = 1500
  7984.   BuildTime = 20.0          ;in seconds  
  7985.  
  7986.   ExperienceValue     = 50 50 100 150    ;Experience point value at each level
  7987.   ExperienceRequired  = 0 100 200 400  ;Experience points needed to gain each level
  7988.   IsTrainable         = Yes             ;Can gain experience
  7989.   CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  7990.   CommandSet          = GLAInfantryJarmenKellCommandSet
  7991.  
  7992.   ; *** AUDIO Parameters ***
  7993.   VoiceSelect = JarmenKellVoiceSelect
  7994.   VoiceMove = JarmenKellVoiceMove
  7995.   VoiceGuard = JarmenKellVoiceMove
  7996.   VoiceAttack = JarmenKellVoiceAttack
  7997.   VoiceFear = JarmenKellVoiceFear
  7998.   SoundDie = JarmenKellVoiceDie
  7999.   SoundDieFire = DieByFireGLA
  8000.   SoundDieToxin = DieByToxinGLA
  8001.   SoundStealthOn = StealthOn
  8002.   SoundStealthOff = StealthOff
  8003.   
  8004.   UnitSpecificSounds
  8005.     VoiceCreate          = JarmenKellVoiceCreate
  8006.     VoiceSnipePilot      = JarmenKellVoiceSnipe
  8007.     VoiceGarrison = JarmenKellVoiceGarrison
  8008.     VoiceEnter = JarmenKellVoiceMove
  8009.     VoiceEnterHostile = JarmenKellVoiceMove
  8010.     VoiceGetHealed      = JarmenKellVoiceMove
  8011.   End
  8012.  
  8013.  
  8014.   ; *** ENGINEERING Parameters ***
  8015.   RadarPriority = UNIT
  8016.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER STEALTH_GARRISON SCORE HERO
  8017.  
  8018.   Body = ActiveBody ModuleTag_02
  8019.     MaxHealth       = 200.0
  8020.     InitialHealth   = 200.0
  8021.   End
  8022.  
  8023.   Behavior = AIUpdateInterface ModuleTag_03
  8024.     AutoAcquireEnemiesWhenIdle = Yes
  8025.   End
  8026.   Locomotor = SET_NORMAL JarmenKellLocomotor
  8027.  
  8028.   Behavior = PhysicsBehavior ModuleTag_04
  8029.     Mass = 5.0
  8030.   End
  8031.   Behavior = StealthUpdate ModuleTag_06
  8032.     StealthDelay                = 2000 ; msec
  8033.     StealthForbiddenConditions  = ATTACKING
  8034.     InnateStealth               = Yes
  8035.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  8036.   End
  8037.  
  8038.   Behavior = CommandButtonHuntUpdate  ModuleTag_07 ; allows use of command button hunt script with this unit. 
  8039.   End
  8040.  
  8041.   Behavior = WeaponBonusUpgrade ModuleTag_08
  8042.     TriggeredBy = Upgrade_GLAAPBullets
  8043.   End
  8044.  
  8045.   ;Hero units can't be squished!
  8046.   ;Behavior = SquishCollide ModuleTag_09
  8047.   ;  ;nothing
  8048.   ;End
  8049.  
  8050.  
  8051. ; --- begin Death modules ---
  8052.   Behavior = SlowDeathBehavior ModuleTag_Death01
  8053.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  8054.     SinkDelay           = 3000
  8055.     SinkRate            = 0.5     ; in Dist/Sec
  8056.     DestructionDelay    = 8000
  8057.     FX                  = INITIAL FX_GIDie
  8058.   End
  8059.   Behavior = SlowDeathBehavior ModuleTag_Death02
  8060.     DeathTypes          = NONE +CRUSHED +SPLATTED
  8061.     SinkDelay           = 3000
  8062.     SinkRate            = 0.5     ; in Dist/Sec
  8063.     DestructionDelay    = 8000
  8064.     FX                  = INITIAL FX_GIDieCrushed
  8065.   End
  8066.   Behavior = SlowDeathBehavior ModuleTag_Death03
  8067.     DeathTypes          = NONE +EXPLODED
  8068.     SinkDelay           = 3000
  8069.     SinkRate            = 0.5     ; in Dist/Sec
  8070.     DestructionDelay    = 8000
  8071.     FX                  = INITIAL FX_GIDie
  8072.     FlingForce          = 8
  8073.     FlingForceVariance  = 3
  8074.     FlingPitch          = 60
  8075.     FlingPitchVariance  = 10
  8076.   End
  8077.   Behavior = SlowDeathBehavior ModuleTag_Death04
  8078.     DeathTypes          = NONE +BURNED
  8079.     DestructionDelay    = 0
  8080.     FX                  = INITIAL FX_GIDie
  8081.     OCL                 = INITIAL OCL_FlamingInfantry
  8082.   End
  8083.   Behavior = SlowDeathBehavior ModuleTag_Death05
  8084.     DeathTypes          = NONE +POISONED
  8085.     DestructionDelay    = 0
  8086.     FX                  = INITIAL FX_GIDie
  8087.     OCL                 = INITIAL OCL_ToxicInfantry
  8088.   End
  8089.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  8090.     DeathTypes          = NONE +POISONED_BETA
  8091.     DestructionDelay    = 0
  8092.     FX                  = INITIAL FX_GIDie
  8093.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  8094.   End
  8095. ; --- end Death modules ---
  8096.  
  8097.   Behavior = PoisonedBehavior ModuleTag_14
  8098.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  8099.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  8100.   End
  8101.  
  8102.   Geometry = CYLINDER
  8103.   GeometryMajorRadius = 10.0
  8104.   GeometryMinorRadius = 10.0
  8105.   GeometryHeight = 12.0
  8106.   GeometryIsSmall = Yes
  8107.   Shadow = SHADOW_DECAL
  8108.   ShadowSizeX = 14;
  8109.   ShadowSizeY = 14;
  8110.   ShadowTexture = ShadowI;
  8111.   BuildCompletion = APPEARS_AT_RALLY_POINT
  8112.  
  8113. End
  8114.  
  8115.  
  8116.  
  8117. ;------------------------------------------------------------------------------
  8118. Object CINE_GLAInfantryJarmenKell
  8119.  
  8120.   ; *** ART Parameters ***
  8121.   SelectPortrait         = SUJermanKell1_L  ;NOTE: Asset spelling mistake
  8122.   ButtonImage            = SUJermanKell1
  8123.   
  8124.   ;UpgradeCameo1 = NONE
  8125.   ;UpgradeCameo2 = NONE
  8126.   ;UpgradeCameo3 = NONE
  8127.   ;UpgradeCameo4 = NONE
  8128.   ;UpgradeCameo5 = NONE
  8129.   
  8130.   Draw = W3DModelDraw ModuleTag_01
  8131.     OkToChangeModelColor = Yes
  8132.  
  8133.     ; --- idle
  8134.     DefaultConditionState
  8135.       Model             = UIHERO_SKN
  8136.       IdleAnimation     = UIHERO_SKL.UIHERO_STA 0 21
  8137.       IdleAnimation     = UIHERO_SKL.UIHERO_IDA
  8138.       IdleAnimation     = UIHERO_SKL.UIHERO_IDB
  8139.       AnimationMode     = ONCE
  8140.       WeaponFireFXBone  = PRIMARY Muzzle
  8141.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  8142.       TransitionKey     = TRANS_Stand
  8143.     End
  8144.  
  8145.     ConditionState      = REALLYDAMAGED
  8146.       IdleAnimation     = UIHERO_SKL.UIHERO_ISTA 0 30
  8147.       IdleAnimation     = UIHERO_SKL.UIHERO_IIDA
  8148.       IdleAnimation     = UIHERO_SKL.UIHERO_IIDB
  8149.       AnimationMode     = ONCE
  8150.       TransitionKey     = TRANS_StandInjured
  8151.     End
  8152.  
  8153.     TransitionState     = TRANS_Stand TRANS_StandInjured
  8154.       Animation         = UIHERO_SKL.UIHERO_ISTAHIT
  8155.       AnimationMode     = ONCE
  8156.     End
  8157.  
  8158.     ; --- attack
  8159.     ConditionState      = FIRING_A
  8160.       Animation         = UIHERO_SKL.UIHERO_ATA
  8161.       AnimationMode     = ONCE
  8162.       TransitionKey     = TRANS_FiringA
  8163.     End
  8164.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  8165.     AliasConditionState = RELOADING_A
  8166.  
  8167.     ConditionState      = FIRING_A REALLYDAMAGED
  8168.       Animation         = UIHERO_SKL.UIHERO_IATA2
  8169.       AnimationMode     = ONCE
  8170.       TransitionKey     = TRANS_FiringAInjured
  8171.     End
  8172.     AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  8173.     AliasConditionState = RELOADING_A REALLYDAMAGED
  8174.  
  8175.     TransitionState     = TRANS_FiringA TRANS_FiringAInjured
  8176.       Animation         = UIHERO_SKL.UIHERO_IATAHIT
  8177.       AnimationMode     = ONCE
  8178.     End
  8179.  
  8180.     ; --- moving
  8181.     ConditionState      = MOVING
  8182.       Animation         = UIHERO_SKL.UIHERO_RNA2 40
  8183.       AnimationMode     = LOOP
  8184.       Flags             = RANDOMSTART
  8185.       TransitionKey     = None
  8186.  
  8187.     End
  8188.     AliasConditionState = MOVING FIRING_A
  8189.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  8190.     AliasConditionState = MOVING RELOADING_A
  8191.  
  8192.     ConditionState      = MOVING REALLYDAMAGED
  8193.       Animation         = UIHERO_SKL.UIHERO_IRNA 24
  8194.       AnimationMode     = LOOP
  8195.       Flags             = RANDOMSTART
  8196.       TransitionKey     = None
  8197.  
  8198.     End
  8199.     AliasConditionState = MOVING FIRING_A REALLYDAMAGED
  8200.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  8201.     AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
  8202.     
  8203.     ; --- cheering
  8204.     ConditionState      = SPECIAL_CHEERING
  8205.       Animation         = UIHERO_SKL.UIHERO_CHA
  8206.       AnimationMode     = LOOP
  8207.     End
  8208.  
  8209.     ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
  8210.       Animation         = UIHERO_SKL.UIHERO_ICHA
  8211.       AnimationMode     = LOOP
  8212.     End
  8213.     
  8214.     ; --- dying
  8215.     ConditionState      = DYING
  8216.       Animation         = UIHERO_SKL.UIHERO_DTA
  8217.       Animation         = UIHERO_SKL.UIHERO_DTB
  8218.       Animation         = UIHERO_SKL.UIHERO_IDTA
  8219.       Animation         = UIHERO_SKL.UIHERO_IDTB
  8220.       AnimationMode     = ONCE
  8221.       TransitionKey     = TRANS_Dying
  8222.     End
  8223.  
  8224.     TransitionState     = TRANS_Dying TRANS_Flailing
  8225.       Animation         = UIHERO_SKL.UIHERO_ADTG21
  8226.       AnimationMode     = ONCE
  8227.     End
  8228.  
  8229.     ConditionState      = DYING EXPLODED_FLAILING
  8230.       Animation         = UIHERO_SKL.UIHERO_ADTG22
  8231.       AnimationMode     = LOOP
  8232.       TransitionKey     = TRANS_Flailing
  8233.     End
  8234.  
  8235.     ConditionState      = DYING EXPLODED_BOUNCING
  8236.       Animation         = UIHERO_SKL.UIHERO_ADTG23
  8237.       AnimationMode     = ONCE
  8238.       TransitionKey     = None
  8239.     End
  8240.     
  8241.     ; --- falling
  8242.     ConditionState      = FREEFALL
  8243.       Animation         = UIHERO_SKL.UIHERO_PFL
  8244.       AnimationMode     = LOOP
  8245.       TransitionKey     = TRANS_Falling
  8246.     End
  8247.     AliasConditionState = FREEFALL REALLYDAMAGED
  8248.     AliasConditionState = FREEFALL DYING
  8249.  
  8250.     ConditionState      = PARACHUTING
  8251.       Animation         = UIHERO_SKL.UIHERO_PHG
  8252.       AnimationMode     = LOOP
  8253.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  8254.       TransitionKey     = TRANS_Chute
  8255.     End
  8256.     AliasConditionState = PARACHUTING REALLYDAMAGED
  8257.     AliasConditionState = PARACHUTING DYING
  8258.  
  8259.     TransitionState     = TRANS_Falling TRANS_Chute
  8260.       Animation         = UIHERO_SKL.UIHERO_POP
  8261.       AnimationMode     = ONCE
  8262.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  8263.     End
  8264.  
  8265.     TransitionState     = TRANS_Chute TRANS_Stand
  8266.       Animation         = UIHERO_SKL.UIHERO_PTD
  8267.       AnimationMode     = ONCE
  8268.     End
  8269.  
  8270.     TransitionState     = TRANS_Chute TRANS_StandInjured
  8271.       Animation         = UIHERO_SKL.UIHERO_PTD
  8272.       AnimationMode     = ONCE
  8273.     End
  8274.     
  8275.   End
  8276.  
  8277.   ; ***DESIGN parameters ***
  8278.   DisplayName           = OBJECT:JarmenKell
  8279.   Side                  = GLA
  8280.   EditorSorting         = INFANTRY
  8281.   TransportSlotCount    = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  8282.   MaxSimultaneousOfType = 1
  8283.  
  8284.   WeaponSet
  8285.     Conditions = None 
  8286.     Weapon = PRIMARY CINE_GLAJarmenKellRifle
  8287.     Weapon = SECONDARY GLAJarmenKellVehiclePilotSniperRifle
  8288.     AutoChooseSources = PRIMARY NONE
  8289.     AutoChooseSources = SECONDARY NONE
  8290.   End
  8291. ;  WeaponSet
  8292. ;    Conditions = SNIPEVEHICLE 
  8293. ;    Weapon = PRIMARY GLAJarmenKellVehiclePilotSniperRifle
  8294. ;  End
  8295.  
  8296.   ArmorSet
  8297.     Conditions      = None
  8298.     Armor           = HumanArmor
  8299.     DamageFX        = InfantryDamageFX
  8300.   End
  8301.   VisionRange         = 225
  8302.   ShroudClearingRange = 300
  8303.   Prerequisites
  8304.     Object = GLABarracks
  8305.     Object = GLAPalace
  8306.   End
  8307.   BuildCost = 1500
  8308.   BuildTime = 20.0          ;in seconds  
  8309.  
  8310.   ExperienceValue     = 50 50 100 150    ;Experience point value at each level
  8311.   ExperienceRequired  = 0 100 200 400  ;Experience points needed to gain each level
  8312.   IsTrainable         = Yes             ;Can gain experience
  8313.   CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  8314.   CommandSet          = GLAInfantryJarmenKellCommandSet
  8315.  
  8316.   ; *** AUDIO Parameters ***
  8317.   VoiceSelect = JarmenKellVoiceSelect
  8318.   VoiceMove = JarmenKellVoiceMove
  8319.   VoiceGuard = JarmenKellVoiceMove
  8320.   VoiceAttack = JarmenKellVoiceAttack
  8321.   VoiceFear = JarmenKellVoiceFear
  8322.   SoundDie = JarmenKellVoiceDie
  8323.   SoundDieFire = DieByFireGLA
  8324.   SoundDieToxin = DieByToxinGLA
  8325.   SoundStealthOn = StealthOn
  8326.   SoundStealthOff = StealthOff
  8327.   
  8328.   UnitSpecificSounds
  8329.     VoiceCreate          = JarmenKellVoiceCreate
  8330.     VoiceSnipePilot      = JarmenKellVoiceSnipe
  8331.     VoiceGarrison = JarmenKellVoiceGarrison
  8332.     VoiceEnter = JarmenKellVoiceMove
  8333.     VoiceEnterHostile = JarmenKellVoiceMove
  8334.   End
  8335.  
  8336.  
  8337.   ; *** ENGINEERING Parameters ***
  8338.   RadarPriority = UNIT
  8339.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER STEALTH_GARRISON SCORE
  8340.  
  8341.   Body = ActiveBody ModuleTag_02
  8342.     MaxHealth       = 200.0
  8343.     InitialHealth   = 200.0
  8344.   End
  8345.  
  8346.   Behavior = AIUpdateInterface ModuleTag_03
  8347.     AutoAcquireEnemiesWhenIdle = Yes
  8348.   End
  8349.   Locomotor = SET_NORMAL CINE_JarmenKellLocomotor
  8350.  
  8351.   Behavior = PhysicsBehavior ModuleTag_04
  8352.     Mass = 5.0
  8353.   End
  8354.  
  8355.  
  8356.   Behavior = CommandButtonHuntUpdate  ModuleTag_07 ; allows use of command button hunt script with this unit. 
  8357.   End
  8358.  
  8359.   Behavior = WeaponBonusUpgrade ModuleTag_08
  8360.     TriggeredBy = Upgrade_GLAAPBullets
  8361.   End
  8362.  
  8363.   Behavior = SquishCollide ModuleTag_09
  8364.     ;nothing
  8365.   End
  8366.  
  8367.  
  8368. ; --- begin Death modules ---
  8369.   Behavior = SlowDeathBehavior ModuleTag_Death01
  8370.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  8371.     SinkDelay           = 3000
  8372.     SinkRate            = 0.5     ; in Dist/Sec
  8373.     DestructionDelay    = 8000
  8374.     FX                  = INITIAL FX_GIDie
  8375.   End
  8376.   Behavior = SlowDeathBehavior ModuleTag_Death02
  8377.     DeathTypes          = NONE +CRUSHED +SPLATTED
  8378.     SinkDelay           = 3000
  8379.     SinkRate            = 0.5     ; in Dist/Sec
  8380.     DestructionDelay    = 8000
  8381.     FX                  = INITIAL FX_GIDieCrushed
  8382.   End
  8383.   Behavior = SlowDeathBehavior ModuleTag_Death03
  8384.     DeathTypes          = NONE +EXPLODED
  8385.     SinkDelay           = 3000
  8386.     SinkRate            = 0.5     ; in Dist/Sec
  8387.     DestructionDelay    = 8000
  8388.     FX                  = INITIAL FX_GIDie
  8389.     FlingForce          = 8
  8390.     FlingForceVariance  = 3
  8391.     FlingPitch          = 60
  8392.     FlingPitchVariance  = 10
  8393.   End
  8394.   Behavior = SlowDeathBehavior ModuleTag_Death04
  8395.     DeathTypes          = NONE +BURNED
  8396.     DestructionDelay    = 0
  8397.     FX                  = INITIAL FX_GIDie
  8398.     OCL                 = INITIAL OCL_FlamingInfantry
  8399.   End
  8400.   Behavior = SlowDeathBehavior ModuleTag_Death05
  8401.     DeathTypes          = NONE +POISONED
  8402.     DestructionDelay    = 0
  8403.     FX                  = INITIAL FX_GIDie
  8404.     OCL                 = INITIAL OCL_ToxicInfantry
  8405.   End
  8406.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  8407.     DeathTypes          = NONE +POISONED_BETA
  8408.     DestructionDelay    = 0
  8409.     FX                  = INITIAL FX_GIDie
  8410.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  8411.   End
  8412. ; --- end Death modules ---
  8413.  
  8414.   Behavior = PoisonedBehavior ModuleTag_14
  8415.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  8416.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  8417.   End
  8418.  
  8419.   Geometry = CYLINDER
  8420.   GeometryMajorRadius = 10.0
  8421.   GeometryMinorRadius = 10.0
  8422.   GeometryHeight = 12.0
  8423.   GeometryIsSmall = Yes
  8424.   Shadow = SHADOW_DECAL
  8425.   ShadowSizeX = 14;
  8426.   ShadowSizeY = 14;
  8427.   ShadowTexture = ShadowI;
  8428.   BuildCompletion = APPEARS_AT_RALLY_POINT
  8429.  
  8430. End
  8431.  
  8432.  
  8433.  
  8434. ;------------------------------------------------------------------------------
  8435. ;Tunnel Fanatic ;Now called the RPG Trooper
  8436. Object GLAInfantryTunnelDefender
  8437.  
  8438.   ; *** ART Parameters ***
  8439.   SelectPortrait         = SURPG_L
  8440.   ButtonImage            = SURPG
  8441.   
  8442.   UpgradeCameo1 = Upgrade_GLAAPRockets
  8443.   ;UpgradeCameo2 = NONE
  8444.   ;UpgradeCameo3 = NONE
  8445.   ;UpgradeCameo4 = NONE
  8446.   ;UpgradeCameo5 = NONE
  8447.  
  8448.   Draw = W3DModelDraw ModuleTag_01
  8449.     OkToChangeModelColor = Yes
  8450.  
  8451.     DefaultConditionState
  8452.       Model = UITunF_SKN
  8453.       IdleAnimation = UITunF_SKL.UITunF_STA 0 20
  8454.       IdleAnimation = UITunF_SKL.UITunF_IDA 
  8455.       IdleAnimation = UITunF_SKL.UITunF_IDB 
  8456.       IdleAnimation = UITunF_SKL.UITunF_IDC 
  8457.       AnimationMode = ONCE
  8458.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  8459.       WeaponFireFXBone = PRIMARY Muzzle
  8460.       WeaponLaunchBone = PRIMARY Muzzle
  8461.     End
  8462.  
  8463.     ConditionState = MOVING
  8464.       Animation = UITunF_SKL.UITunF_WKA 16
  8465.       Animation = UITunF_SKL.UITunF_WKB 30
  8466.       Animation = UITunF_SKL.UITunF_WKC 30
  8467.       Animation = UITunF_SKL.UITunF_RNA 15
  8468.       Animation = UITunF_SKL.UITunF_RNB 25   
  8469.       AnimationMode = LOOP
  8470.       ParticleSysBone   = None InfantryDustTrails
  8471.     End
  8472.  
  8473.     ConditionState = DYING
  8474.       Animation = UITunF_SKL.UITunF_DTA 
  8475.       Animation = UITunF_SKL.UITunF_DTB 
  8476.       AnimationMode = ONCE
  8477.       TransitionKey = TRANS_Dying
  8478.     End
  8479.  
  8480.     TransitionState = TRANS_Dying TRANS_Flailing
  8481.       Animation = UITunF_SKL.UITunF_ADTA1
  8482.       Animation = UITunF_SKL.UITunF_ADTE1
  8483.       Animation = UITunF_SKL.UITunF_ADTF1
  8484.       AnimationMode = ONCE
  8485.     End
  8486.  
  8487.     ConditionState = DYING EXPLODED_FLAILING
  8488.       Animation = UITunF_SKL.UITunF_ADTA2
  8489.       Animation = UITunF_SKL.UITunF_ADTE2
  8490.       Animation = UITunF_SKL.UITunF_ADTF2
  8491.       AnimationMode = LOOP
  8492.       TransitionKey = TRANS_Flailing
  8493.     End
  8494.  
  8495.     ConditionState = DYING EXPLODED_BOUNCING
  8496.       Animation = UITunF_SKL.UITunF_ADTA3
  8497.       Animation = UITunF_SKL.UITunF_ADTE3
  8498.       Animation = UITunF_SKL.UITunF_ADTF3
  8499.       AnimationMode = ONCE
  8500.       TransitionKey = None
  8501.     End
  8502.  
  8503.     ConditionState = FIRING_A 
  8504.       Animation = UITunF_SKL.UITunF_ATA 
  8505.       AnimationMode = ONCE
  8506.       TransitionKey = TRANS_START_FIRING
  8507.     End
  8508.     ConditionState = BETWEEN_FIRING_SHOTS_A
  8509.       Animation = UITunF_SKL.UITunF_STA
  8510.       AnimationMode = ONCE
  8511.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  8512.       ; and a long recycle time between shots. we want him to finish his fire animation
  8513.       ; (unless he's ordered to do something else), so this is just a handy trick that
  8514.       ; says, "if the previous state had this transition key, allow it to finish before
  8515.       ; switching to us, if possible".
  8516.       WaitForStateToFinishIfPossible = TRANS_START_FIRING
  8517.     End
  8518.     AliasConditionState = RELOADING_A
  8519.  
  8520.     ConditionState = SPECIAL_CHEERING
  8521.       Animation = UITUNF_SKL.UITUNF_CHA
  8522.       AnimationMode = LOOP
  8523.     End
  8524.  
  8525.   End
  8526.  
  8527.   ; ***DESIGN parameters ***
  8528.   DisplayName      = OBJECT:TunnelDefender
  8529.   Side = GLA
  8530.   EditorSorting = INFANTRY
  8531.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  8532.   WeaponSet
  8533.     Conditions = None 
  8534.     Weapon = PRIMARY TunnelDefenderRocketWeapon
  8535.   End
  8536.   ArmorSet
  8537.     Conditions      = None
  8538.     Armor           = HumanArmor
  8539.     DamageFX        = InfantryDamageFX
  8540.   End
  8541.   VisionRange = 150
  8542.   ShroudClearingRange = 400
  8543.  ; Prerequisites
  8544.  ;   Object = GLATunnelNetwork
  8545.  ; End
  8546.   BuildCost = 300
  8547.   BuildTime = 5.0          ;in seconds  
  8548.  
  8549.   ExperienceValue = 20 20 40 60    ;Experience point value at each level
  8550.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  8551.   IsTrainable = Yes             ;Can gain experience
  8552.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  8553.   CommandSet      = GLAInfantryTunnelDefenderCommandSet
  8554.  
  8555.   ; *** AUDIO Parameters ***
  8556.   VoiceSelect = RPGTrooperVoiceSelect
  8557.   VoiceMove = RPGTrooperVoiceMove
  8558.   VoiceGuard = RPGTrooperVoiceMove
  8559.   VoiceAttack = RPGTrooperVoiceAttack
  8560.   SoundDie = RPGTrooperVoiceDie
  8561.   SoundDieFire = DieByFireGLA
  8562.   SoundDieToxin = DieByToxinGLA
  8563.   VoiceFear = RPGTrooperVoiceFear
  8564.   UnitSpecificSounds
  8565.     VoiceCreate          = RPGTrooperVoiceCreate
  8566.     VoiceGarrison = RPGTrooperVoiceGarrison
  8567.     VoiceEnter = RPGTrooperVoiceMove
  8568.     VoiceEnterHostile = RPGTrooperVoiceMove
  8569.     VoiceGetHealed      = RPGTrooperVoiceMove
  8570.   End
  8571.  
  8572.  
  8573.   ; *** ENGINEERING Parameters ***
  8574.   RadarPriority = UNIT
  8575.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
  8576.  
  8577.   Body = ActiveBody ModuleTag_02
  8578.     MaxHealth       = 100.0
  8579.     InitialHealth   = 100.0
  8580.   End
  8581.  
  8582.   Behavior = AIUpdateInterface ModuleTag_03
  8583.     AutoAcquireEnemiesWhenIdle = Yes
  8584.   End
  8585.   Locomotor = SET_NORMAL MissileDefenderLocomotor
  8586.  
  8587.   Behavior = PhysicsBehavior ModuleTag_04
  8588.     Mass = 5.0
  8589.   End
  8590.  
  8591.   Behavior = SquishCollide ModuleTag_06
  8592.     ;nothing
  8593.   End
  8594.  
  8595. ; --- begin Death modules ---
  8596.   Behavior = SlowDeathBehavior ModuleTag_Death01
  8597.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  8598.     SinkDelay           = 3000
  8599.     SinkRate            = 0.5     ; in Dist/Sec
  8600.     DestructionDelay    = 8000
  8601.     FX                  = INITIAL FX_GIDie
  8602.   End
  8603.   Behavior = SlowDeathBehavior ModuleTag_Death02
  8604.     DeathTypes          = NONE +CRUSHED +SPLATTED
  8605.     SinkDelay           = 3000
  8606.     SinkRate            = 0.5     ; in Dist/Sec
  8607.     DestructionDelay    = 8000
  8608.     FX                  = INITIAL FX_GIDieCrushed
  8609.   End
  8610.   Behavior = SlowDeathBehavior ModuleTag_Death03
  8611.     DeathTypes          = NONE +EXPLODED
  8612.     SinkDelay           = 3000
  8613.     SinkRate            = 0.5     ; in Dist/Sec
  8614.     DestructionDelay    = 8000
  8615.     FX                  = INITIAL FX_GIDie
  8616.     FlingForce          = 8
  8617.     FlingForceVariance  = 3
  8618.     FlingPitch          = 60
  8619.     FlingPitchVariance  = 10
  8620.   End
  8621.   Behavior = SlowDeathBehavior ModuleTag_Death04
  8622.     DeathTypes          = NONE +BURNED
  8623.     DestructionDelay    = 0
  8624.     FX                  = INITIAL FX_GIDie
  8625.     OCL                 = INITIAL OCL_FlamingInfantry
  8626.   End
  8627.   Behavior = SlowDeathBehavior ModuleTag_Death05
  8628.     DeathTypes          = NONE +POISONED
  8629.     DestructionDelay    = 0
  8630.     FX                  = INITIAL FX_GIDie
  8631.     OCL                 = INITIAL OCL_ToxicInfantry
  8632.   End
  8633.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  8634.     DeathTypes          = NONE +POISONED_BETA
  8635.     DestructionDelay    = 0
  8636.     FX                  = INITIAL FX_GIDie
  8637.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  8638.   End
  8639. ; --- end Death modules ---
  8640.  
  8641.   Behavior = PoisonedBehavior ModuleTag_12
  8642.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  8643.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  8644.   End
  8645.  
  8646.   Geometry = CYLINDER
  8647.   GeometryMajorRadius = 10.0
  8648.   GeometryMinorRadius = 10.0
  8649.   GeometryHeight = 12.0
  8650.   GeometryIsSmall = Yes
  8651.   Shadow = SHADOW_DECAL
  8652.   ShadowSizeX = 14;
  8653.   ShadowSizeY = 14;
  8654.   ShadowTexture = ShadowI;
  8655.   BuildCompletion = APPEARS_AT_RALLY_POINT
  8656.  
  8657. End
  8658.  
  8659. ;------------------------------------------------------------------------------
  8660. ;***THESE UNITS ARE NOT SELECTABLE ANYMORE! To kill them, you must target
  8661. ;   the stinger site. If the weapon does particular types of damage, it'll
  8662. ;   kill guys inside first, then the site.
  8663. Object GLAInfantryStingerSoldier
  8664.  
  8665.   ; *** ART Parameters ***
  8666.   SelectPortrait         = SUStinger_L
  8667.   ButtonImage            = SUStinger
  8668.  
  8669.   Draw = W3DModelDraw ModuleTag_01
  8670.     OkToChangeModelColor = Yes
  8671.  
  8672.     DefaultConditionState
  8673.       Model = UISmsd_SKN
  8674.       IdleAnimation = UISmsd_SKL.UISmsd_STA 0 45
  8675.       IdleAnimation = UISmsd_SKL.UISmsd_IDA 
  8676.       IdleAnimation = UISmsd_SKL.UISmsd_IDB 
  8677.       IdleAnimation = UISmsd_SKL.UISmsd_IDC 
  8678.       IdleAnimation = UISmsd_SKL.UISmsd_IDD 
  8679.       AnimationMode = ONCE
  8680.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  8681.       WeaponFireFXBone = PRIMARY Exhaust
  8682.       WeaponLaunchBone = PRIMARY Muzzle
  8683.       WeaponFireFXBone = SECONDARY Exhaust
  8684.       WeaponLaunchBone = SECONDARY Muzzle
  8685.  
  8686.       WaitForStateToFinishIfPossible = TRANS_START_FIRING
  8687.  
  8688.     End
  8689.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  8690.     AliasConditionState = BETWEEN_FIRING_SHOTS_B
  8691.     AliasConditionState = RELOADING_A
  8692.     AliasConditionState = RELOADING_B
  8693.  
  8694.     ConditionState = MOVING
  8695.       Animation = UISmsd_SKL.UISmsd_WKB 25
  8696.       AnimationMode = LOOP
  8697.     End
  8698.  
  8699.     ConditionState = DYING
  8700.       Animation = UISmsd_SKL.UISmsd_DTA 
  8701.       Animation = UISmsd_SKL.UISmsd_DTB 
  8702.       AnimationMode = ONCE
  8703.       TransitionKey = TRANS_Dying
  8704.       WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish
  8705.     End
  8706.  
  8707.     TransitionState = TRANS_Dying TRANS_Flailing
  8708.       Animation = UISmsd_SKL.UISmsd_ADTF1
  8709.       Animation = UISmsd_SKL.UISmsd_ADTG21
  8710.       AnimationMode = ONCE
  8711.     End
  8712.  
  8713.     ConditionState = DYING EXPLODED_FLAILING
  8714.       Animation = UISmsd_SKL.UISmsd_ADTF2
  8715.       Animation = UISmsd_SKL.UISmsd_ADTG22
  8716.       AnimationMode = LOOP
  8717.       TransitionKey = TRANS_Flailing
  8718.       WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish
  8719.     End
  8720.  
  8721.     ConditionState = DYING EXPLODED_BOUNCING
  8722.       Animation = UISmsd_SKL.UISmsd_ADTF3
  8723.       Animation = UISmsd_SKL.UISmsd_ADTG23
  8724.       AnimationMode = ONCE
  8725.       TransitionKey = None
  8726.       WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish
  8727.     End
  8728.  
  8729.     ConditionState = FIRING_A
  8730.       Animation = UISmsd_SKL.UISmsd_ATA
  8731.       AnimationMode = ONCE
  8732.       TransitionKey = TRANS_START_FIRING
  8733.     End
  8734.     ; AliasConditionState is a new keyword that says,
  8735.     ; "give me another ConditionState exactly like the previous
  8736.     ; one, except with different conditions". Useful when you
  8737.     ; have several states that are the same with only different condition bits.
  8738.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  8739.     AliasConditionState = MOVING FIRING_A
  8740.     AliasConditionState = MOVING RELOADING_A
  8741.  
  8742.     ConditionState = FIRING_B
  8743.       Animation = UISmsd_SKL.UISmsd_ATB
  8744.       AnimationMode = ONCE
  8745.       TransitionKey = TRANS_START_FIRINGB
  8746.     End
  8747.     ; AliasConditionState is a new keyword that says,
  8748.     ; "give me another ConditionState exactly like the previous
  8749.     ; one, except with different conditions". Useful when you
  8750.     ; have several states that are the same with only different condition bits.
  8751.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  8752.     AliasConditionState = MOVING FIRING_B
  8753.     AliasConditionState = MOVING RELOADING_B
  8754.  
  8755.  
  8756.     ConditionState = SPECIAL_CHEERING
  8757.       Animation = UISMSD_SKL.UISMSD_CHA
  8758.       AnimationMode = LOOP
  8759.     End
  8760.  
  8761.   End
  8762.  
  8763.   ; ***DESIGN parameters ***
  8764.   DisplayName      = OBJECT:StingerSoldier
  8765.   Side = GLA
  8766.   EditorSorting = INFANTRY
  8767.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  8768.   WeaponSet
  8769.     Conditions          = None 
  8770.     Weapon              = PRIMARY   StingerMissileWeapon
  8771.     AutoChooseSources   = PRIMARY   FROM_PLAYER FROM_AI FROM_SCRIPT
  8772.     Weapon              = SECONDARY StingerMissileWeaponAir
  8773.     PreferredAgainst    = SECONDARY BALLISTIC_MISSILE AIRCRAFT
  8774.   End
  8775.   ArmorSet
  8776.     Conditions      = None
  8777.     Armor           = StingerSoldierArmor ;Extra protection due to being enclosed by the stinger site.
  8778.     DamageFX        = None
  8779.   End
  8780.   VisionRange = 400.0
  8781.   ShroudClearingRange = 400
  8782.  
  8783.   Prerequisites
  8784.     Object = GLABarracks
  8785.   End
  8786.   BuildCost = 100
  8787.   BuildTime = 1.0          ;in seconds    
  8788.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  8789.  
  8790.   ;I don't know what is right, but this is SO wrong.
  8791. ;  CommandSet      = GLAInfantryRebelCommandSet
  8792.  
  8793.   ; *** AUDIO Parameters ***
  8794.   VoiceSelect = StingerSoldierVoiceSelect
  8795.   VoiceMove = StingerSoldierVoiceMove
  8796.   VoiceAttack = StingerSoldierVoiceAttack
  8797.   SoundDie = StingerSoldierVoiceDie
  8798.   SoundDieFire = DieByFireGLA
  8799.   SoundDieToxin = DieByToxinGLA
  8800.  
  8801.   ; *** ENGINEERING Parameters ***
  8802.   RadarPriority = UNIT
  8803.   KindOf = PRELOAD CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER CLICK_THROUGH SPAWNS_ARE_THE_WEAPONS
  8804.  
  8805.   Body = ActiveBody ModuleTag_02
  8806.     MaxHealth       = 100.0
  8807.     InitialHealth   = 100.0
  8808.   End
  8809.  
  8810.   Behavior = StealthDetectorUpdate ModuleTag_16
  8811.     DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
  8812.     DetectionRange = 200 ;Dustin, enable this for independant balancing!
  8813.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  8814.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  8815.   End
  8816.  
  8817.   Behavior = AIUpdateInterface ModuleTag_03
  8818.     AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
  8819.     MoodAttackCheckRate        = 250
  8820.   End
  8821.   Locomotor = SET_NORMAL BasicHumanLocomotor
  8822.   Behavior = PhysicsBehavior ModuleTag_04
  8823.     Mass = 5.0
  8824.   End
  8825.   Behavior = SlavedUpdate ModuleTag_06
  8826.     ;nothing
  8827.   End
  8828. ;  Behavior = ProneUpdate ModuleTag_07
  8829. ;    DamageToFramesRatio = 5.0 ; I take 20 damage, I go prone for 100.  For this guy, if any of my buds or my building take damage too (I have SlaveUpdate + ProneUpdate) Prone may get cut by itself though
  8830. ;  End
  8831.  
  8832.   Behavior = SquishCollide ModuleTag_08
  8833.     ;nothing
  8834.   End
  8835.  
  8836.  
  8837. ; --- begin Death modules ---
  8838.   Behavior = SlowDeathBehavior ModuleTag_Death01
  8839.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  8840.     SinkDelay           = 3000
  8841.     SinkRate            = 0.5     ; in Dist/Sec
  8842.     DestructionDelay    = 8000
  8843.     FX                  = INITIAL FX_GIDie
  8844.   End
  8845.   Behavior = SlowDeathBehavior ModuleTag_Death02
  8846.     DeathTypes          = NONE +CRUSHED +SPLATTED
  8847.     SinkDelay           = 3000
  8848.     SinkRate            = 0.5     ; in Dist/Sec
  8849.     DestructionDelay    = 8000
  8850.     FX                  = INITIAL FX_GIDieCrushed
  8851.   End
  8852.   Behavior = SlowDeathBehavior ModuleTag_Death03
  8853.     DeathTypes          = NONE +EXPLODED
  8854.     SinkDelay           = 3000
  8855.     SinkRate            = 0.5     ; in Dist/Sec
  8856.     DestructionDelay    = 8000
  8857.     FX                  = INITIAL FX_GIDie
  8858.     FlingForce          = 8
  8859.     FlingForceVariance  = 3
  8860.     FlingPitch          = 60
  8861.     FlingPitchVariance  = 10
  8862.   End
  8863.   Behavior = SlowDeathBehavior ModuleTag_Death04
  8864.     DeathTypes          = NONE +BURNED
  8865.     DestructionDelay    = 0
  8866.     FX                  = INITIAL FX_GIDie
  8867.     OCL                 = INITIAL OCL_FlamingInfantry
  8868.   End
  8869.   Behavior = SlowDeathBehavior ModuleTag_Death05
  8870.     DeathTypes          = NONE +POISONED
  8871.     DestructionDelay    = 0
  8872.     FX                  = INITIAL FX_GIDie
  8873.     OCL                 = INITIAL OCL_ToxicInfantry
  8874.   End
  8875.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  8876.     DeathTypes          = NONE +POISONED_BETA
  8877.     DestructionDelay    = 0
  8878.     FX                  = INITIAL FX_GIDie
  8879.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  8880.   End
  8881. ; --- end Death modules ---
  8882.  
  8883.   Behavior = PoisonedBehavior ModuleTag_14
  8884.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  8885.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  8886.   End
  8887.  
  8888.   Geometry = CYLINDER
  8889.   GeometryMajorRadius = 10.0
  8890.   GeometryMinorRadius = 10.0
  8891.   GeometryHeight = 12.0
  8892.   GeometryIsSmall = Yes
  8893.   Shadow = SHADOW_DECAL
  8894.   ShadowSizeX = 14
  8895.   ShadowSizeY = 14
  8896.   ShadowTexture = ShadowI;
  8897.   BuildCompletion = APPEARS_AT_RALLY_POINT
  8898.  
  8899. End
  8900. ;------------------------------------------------------------------------------
  8901. Object CINE_GLAInfantryStingerSoldier
  8902.  
  8903.   ; *** ART Parameters ***
  8904.   SelectPortrait         = SUStinger_L
  8905.   ButtonImage            = SUStinger
  8906.  
  8907.   Draw = W3DModelDraw ModuleTag_01
  8908.     OkToChangeModelColor = Yes
  8909.  
  8910.     DefaultConditionState
  8911.       Model = UISmsd_SKN
  8912.       IdleAnimation = UISmsd_SKL.UISmsd_STA 0 45
  8913.       IdleAnimation = UISmsd_SKL.UISmsd_IDA 
  8914.       IdleAnimation = UISmsd_SKL.UISmsd_IDB 
  8915.       IdleAnimation = UISmsd_SKL.UISmsd_IDC 
  8916.       IdleAnimation = UISmsd_SKL.UISmsd_IDD 
  8917.       AnimationMode = ONCE
  8918.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  8919.       WeaponFireFXBone = PRIMARY Exhaust
  8920.       WeaponLaunchBone = PRIMARY Muzzle
  8921.       WeaponFireFXBone = SECONDARY Exhaust
  8922.       WeaponLaunchBone = SECONDARY Muzzle
  8923.  
  8924.       WaitForStateToFinishIfPossible = TRANS_START_FIRING
  8925.  
  8926.     End
  8927.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  8928.     AliasConditionState = BETWEEN_FIRING_SHOTS_B
  8929.     AliasConditionState = RELOADING_A
  8930.     AliasConditionState = RELOADING_B
  8931.  
  8932.     ConditionState = MOVING
  8933.       Animation = UISmsd_SKL.UISmsd_WKB 25
  8934.       AnimationMode = LOOP
  8935.     End
  8936.  
  8937.     ConditionState = DYING
  8938.       Animation = UISmsd_SKL.UISmsd_DTA 
  8939.       Animation = UISmsd_SKL.UISmsd_DTB 
  8940.       AnimationMode = ONCE
  8941.       TransitionKey = TRANS_Dying
  8942.     End
  8943.  
  8944.     TransitionState = TRANS_Dying TRANS_Flailing
  8945.       Animation = UISmsd_SKL.UISmsd_ADTF1
  8946.       Animation = UISmsd_SKL.UISmsd_ADTG21
  8947.       AnimationMode = ONCE
  8948.     End
  8949.  
  8950.     ConditionState = DYING EXPLODED_FLAILING
  8951.       Animation = UISmsd_SKL.UISmsd_ADTF2
  8952.       Animation = UISmsd_SKL.UISmsd_ADTG22
  8953.       AnimationMode = LOOP
  8954.       TransitionKey = TRANS_Flailing
  8955.     End
  8956.  
  8957.     ConditionState = DYING EXPLODED_BOUNCING
  8958.       Animation = UISmsd_SKL.UISmsd_ADTF3
  8959.       Animation = UISmsd_SKL.UISmsd_ADTG23
  8960.       AnimationMode = ONCE
  8961.       TransitionKey = None
  8962.     End
  8963.  
  8964.     ConditionState = FIRING_A
  8965.       Animation = UISmsd_SKL.UISmsd_ATA
  8966.       AnimationMode = ONCE
  8967.       TransitionKey = TRANS_START_FIRING
  8968.     End
  8969.     ; AliasConditionState is a new keyword that says,
  8970.     ; "give me another ConditionState exactly like the previous
  8971.     ; one, except with different conditions". Useful when you
  8972.     ; have several states that are the same with only different condition bits.
  8973.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  8974.     AliasConditionState = MOVING FIRING_A
  8975.     AliasConditionState = MOVING RELOADING_A
  8976.  
  8977.     ConditionState = FIRING_B
  8978.       Animation = UISmsd_SKL.UISmsd_ATB
  8979.       AnimationMode = ONCE
  8980.       TransitionKey = TRANS_START_FIRINGB
  8981.     End
  8982.     ; AliasConditionState is a new keyword that says,
  8983.     ; "give me another ConditionState exactly like the previous
  8984.     ; one, except with different conditions". Useful when you
  8985.     ; have several states that are the same with only different condition bits.
  8986.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  8987.     AliasConditionState = MOVING FIRING_B
  8988.     AliasConditionState = MOVING RELOADING_B
  8989.  
  8990.  
  8991.     ConditionState = SPECIAL_CHEERING
  8992.       Animation = UISMSD_SKL.UISMSD_CHA
  8993.       AnimationMode = LOOP
  8994.     End
  8995.  
  8996.   End
  8997.  
  8998.   ; ***DESIGN parameters ***
  8999.   DisplayName      = OBJECT:StingerSoldier
  9000.   Side = GLA
  9001.   EditorSorting = INFANTRY
  9002.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  9003.   WeaponSet
  9004.     Conditions          = None 
  9005.     Weapon              = PRIMARY   CINE_StingerMissileWeapon
  9006.     AutoChooseSources   = PRIMARY   FROM_PLAYER FROM_AI FROM_SCRIPT
  9007.     Weapon              = SECONDARY StingerMissileWeaponAir
  9008.     PreferredAgainst    = SECONDARY BALLISTIC_MISSILE AIRCRAFT
  9009.   End
  9010.   ArmorSet
  9011.     Conditions      = None
  9012.     Armor           = StingerSoldierArmor ;Extra protection due to being enclosed by the stinger site.
  9013.     DamageFX        = None
  9014.   End
  9015.   VisionRange = 400.0
  9016.   ShroudClearingRange = 400
  9017.  
  9018.   Prerequisites
  9019.     Object = GLABarracks
  9020.   End
  9021.   BuildCost = 100
  9022.   BuildTime = 1.0          ;in seconds    
  9023.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  9024.  
  9025.   ;I don't know what is right, but this is SO wrong.
  9026. ;  CommandSet      = GLAInfantryRebelCommandSet
  9027.  
  9028.   ; *** AUDIO Parameters ***
  9029.   VoiceSelect = StingerSoldierVoiceSelect
  9030.   VoiceMove = StingerSoldierVoiceMove
  9031.   VoiceAttack = StingerSoldierVoiceAttack
  9032.   SoundDie = StingerSoldierVoiceDie
  9033.   SoundDieFire = DieByFireGLA
  9034.   SoundDieToxin = DieByToxinGLA
  9035.  
  9036.  
  9037.   ; *** ENGINEERING Parameters ***
  9038.   RadarPriority = UNIT
  9039.   KindOf = PRELOAD CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER CLICK_THROUGH
  9040.  
  9041.   Body = ActiveBody ModuleTag_02
  9042.     MaxHealth       = 100.0
  9043.     InitialHealth   = 100.0
  9044.   End
  9045.  
  9046.   Behavior = StealthDetectorUpdate ModuleTag_16
  9047.     DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
  9048.     DetectionRange = 200 ;Dustin, enable this for independant balancing!
  9049.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  9050.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  9051.   End
  9052.  
  9053.   Behavior = AIUpdateInterface ModuleTag_03
  9054.     AutoAcquireEnemiesWhenIdle = Yes
  9055.     MoodAttackCheckRate        = 250
  9056.   End
  9057.   Locomotor = SET_NORMAL BasicHumanLocomotor
  9058.   Behavior = PhysicsBehavior ModuleTag_04
  9059.     Mass = 5.0
  9060.   End
  9061.   Behavior = SlavedUpdate ModuleTag_06
  9062.     ;nothing
  9063.   End
  9064. ;  Behavior = ProneUpdate ModuleTag_07
  9065. ;    DamageToFramesRatio = 5.0 ; I take 20 damage, I go prone for 100.  For this guy, if any of my buds or my building take damage too (I have SlaveUpdate + ProneUpdate) Prone may get cut by itself though
  9066. ;  End
  9067.  
  9068.   Behavior = SquishCollide ModuleTag_08
  9069.     ;nothing
  9070.   End
  9071.  
  9072.  
  9073. ; --- begin Death modules ---
  9074.   Behavior = SlowDeathBehavior ModuleTag_Death01
  9075.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  9076.     SinkDelay           = 3000
  9077.     SinkRate            = 0.5     ; in Dist/Sec
  9078.     DestructionDelay    = 8000
  9079.     FX                  = INITIAL FX_GIDie
  9080.   End
  9081.   Behavior = SlowDeathBehavior ModuleTag_Death02
  9082.     DeathTypes          = NONE +CRUSHED +SPLATTED
  9083.     SinkDelay           = 3000
  9084.     SinkRate            = 0.5     ; in Dist/Sec
  9085.     DestructionDelay    = 8000
  9086.     FX                  = INITIAL FX_GIDieCrushed
  9087.   End
  9088.   Behavior = SlowDeathBehavior ModuleTag_Death03
  9089.     DeathTypes          = NONE +EXPLODED
  9090.     SinkDelay           = 3000
  9091.     SinkRate            = 0.5     ; in Dist/Sec
  9092.     DestructionDelay    = 8000
  9093.     FX                  = INITIAL FX_GIDie
  9094.     FlingForce          = 8
  9095.     FlingForceVariance  = 3
  9096.     FlingPitch          = 60
  9097.     FlingPitchVariance  = 10
  9098.   End
  9099.   Behavior = SlowDeathBehavior ModuleTag_Death04
  9100.     DeathTypes          = NONE +BURNED
  9101.     DestructionDelay    = 0
  9102.     FX                  = INITIAL FX_GIDie
  9103.     OCL                 = INITIAL OCL_FlamingInfantry
  9104.   End
  9105.   Behavior = SlowDeathBehavior ModuleTag_Death05
  9106.     DeathTypes          = NONE +POISONED
  9107.     DestructionDelay    = 0
  9108.     FX                  = INITIAL FX_GIDie
  9109.     OCL                 = INITIAL OCL_ToxicInfantry
  9110.   End
  9111.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  9112.     DeathTypes          = NONE +POISONED_BETA
  9113.     DestructionDelay    = 0
  9114.     FX                  = INITIAL FX_GIDie
  9115.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  9116.   End
  9117.   
  9118. ; --- end Death modules ---
  9119.  
  9120.   Behavior = PoisonedBehavior ModuleTag_14
  9121.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  9122.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  9123.   End
  9124.  
  9125.   Geometry = CYLINDER
  9126.   GeometryMajorRadius = 10.0
  9127.   GeometryMinorRadius = 10.0
  9128.   GeometryHeight = 12.0
  9129.   GeometryIsSmall = Yes
  9130.   Shadow = SHADOW_DECAL
  9131.   ShadowSizeX = 14
  9132.   ShadowSizeY = 14
  9133.   ShadowTexture = ShadowI;
  9134.   BuildCompletion = APPEARS_AT_RALLY_POINT
  9135.  
  9136. End
  9137.  
  9138. ;------------------------------------------------------------------------------
  9139. Object GLAInfantryTerrorist
  9140.  
  9141. ; *** ART Parameters ***
  9142.   SelectPortrait         = SUTerrorist_L
  9143.   ButtonImage            = SUTerrorist
  9144.   
  9145.   ;UpgradeCameo1 = NONE
  9146.   ;UpgradeCameo2 = NONE
  9147.   ;UpgradeCameo3 = NONE
  9148.   ;UpgradeCameo4 = NONE
  9149.   ;UpgradeCameo5 = NONE
  9150.  
  9151.   Draw = W3DModelDraw ModuleTag_01
  9152.     OkToChangeModelColor = Yes
  9153.     DefaultConditionState
  9154.       Model = UITRST_SKN
  9155.       IdleAnimation = UITRST_SKL.UITRST_STA 0 25
  9156.       ;Regular spice animations
  9157.       IdleAnimation = UITRST_SKL.UITRST_IDA
  9158.       IdleAnimation = UITRST_SKL.UITRST_IDB
  9159.       AnimationMode = ONCE
  9160.       TransitionKey = TRANS_Stand
  9161.     End
  9162.  
  9163.     ConditionState = REALLYDAMAGED
  9164.       Animation = UITRST_SKL.UITRST_STA
  9165.       AnimationMode = LOOP
  9166.       TransitionKey = TRANS_Stand
  9167.     End
  9168.  
  9169.     ConditionState = FREEFALL
  9170.       Animation = UITRST_SKL.UITRST_PFL
  9171.       AnimationMode = LOOP
  9172.       TransitionKey = TRANS_Falling
  9173.     End
  9174.     AliasConditionState = FREEFALL REALLYDAMAGED
  9175.     AliasConditionState = FREEFALL DYING
  9176.  
  9177.     ConditionState = PARACHUTING
  9178.       Animation = UITRST_SKL.UITRST_PHG
  9179.       AnimationMode = LOOP
  9180.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  9181.       TransitionKey = TRANS_Chute
  9182.     End
  9183.     AliasConditionState = PARACHUTING REALLYDAMAGED
  9184.     AliasConditionState = PARACHUTING DYING
  9185.  
  9186.     ConditionState = MOVING
  9187.       Animation = UITRST_SKL.UITRST_RNA 15
  9188.       AnimationMode = LOOP
  9189.       Flags = RANDOMSTART
  9190.       TransitionKey = None
  9191.       ParticleSysBone   = None InfantryDustTrails
  9192.     End
  9193.     AliasConditionState = MOVING REALLYDAMAGED
  9194.  
  9195.     ConditionState = ATTACKING MOVING
  9196.       Animation = UITRST_SKL.UITRST_RNB 10
  9197.       AnimationMode = LOOP
  9198.       Flags = RANDOMSTART
  9199.       TransitionKey = None
  9200.     End
  9201.     AliasConditionState = ATTACKING MOVING REALLYDAMAGED
  9202.  
  9203.     ConditionState = PREATTACK_A
  9204.       Animation = UITRST_SKL.UITRST_ATA
  9205.       AnimationMode = ONCE
  9206.     End
  9207.     AliasConditionState = PREATTACK_A MOVING
  9208.  
  9209.     ConditionState = DYING
  9210.       Animation = UITRST_SKL.UITRST_DTA
  9211.       Animation = UITRST_SKL.UITRST_DTC
  9212.       AnimationMode = ONCE
  9213.       TransitionKey = TRANS_Dying
  9214.     End
  9215.  
  9216.     TransitionState = TRANS_Dying TRANS_Flailing
  9217.       Animation = UITRST_SKL.UITRST_ADTE1
  9218.       AnimationMode = ONCE
  9219.     End
  9220.  
  9221.     ConditionState = DYING EXPLODED_FLAILING
  9222.       Animation = UITRST_SKL.UITRST_ADTE2
  9223.       AnimationMode = LOOP
  9224.       TransitionKey = TRANS_Flailing
  9225.     End
  9226.  
  9227.     ConditionState = DYING EXPLODED_BOUNCING
  9228.       Animation = UITRST_SKL.UITRST_ADTE3
  9229.       AnimationMode = ONCE
  9230.       TransitionKey = None
  9231.     End
  9232.  
  9233.     ConditionState = SPECIAL_CHEERING
  9234.       Animation = UITRST_SKL.UITRST_CHA
  9235.       AnimationMode = LOOP
  9236.     End
  9237.  
  9238.     TransitionState = TRANS_Falling TRANS_Chute
  9239.       Animation = UITRST_SKL.UITRST_POP
  9240.       AnimationMode = ONCE
  9241.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  9242.     End
  9243.  
  9244.     TransitionState = TRANS_Chute TRANS_Stand
  9245.       Animation = UITRST_SKL.UITRST_PTD
  9246.       AnimationMode = ONCE
  9247.     End
  9248.  
  9249.   End
  9250.  
  9251.   ; ***DESIGN parameters ***
  9252.   DisplayName      = OBJECT:Terrorist
  9253.   Side = GLA
  9254.   EditorSorting = INFANTRY
  9255.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  9256.   WeaponSet
  9257.     Conditions = None 
  9258.     ;Kill himself so we can use FireWeaponWhenDead to fire the real weapon -- and use UNRESISTABLE
  9259.     ;damage to do ini logic for type of death to play -- unresistable for success.
  9260.     Weapon = PRIMARY TerroristSuicideWeapon 
  9261.   End
  9262.   ArmorSet
  9263.     Conditions      = None
  9264.     Armor           = HumanArmor
  9265.     DamageFX        = InfantryDamageFX
  9266.   End
  9267.   VisionRange = 150
  9268.   ShroudClearingRange = 200
  9269.   Prerequisites
  9270.     Object = GLABarracks
  9271.   End
  9272.   BuildCost = 200
  9273.   BuildTime = 5.0          ;in seconds    
  9274.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  9275.   CommandSet    = GLAInfantryTerroristCommandSet
  9276.  
  9277.   ; *** AUDIO Parameters ***
  9278.   VoiceSelect = TerroristVoiceSelect
  9279.   VoiceMove = TerroristVoiceMove
  9280.   VoiceAttack = TerroristVoiceAttack
  9281.   SoundDie = TerroristVoiceDie
  9282.   SoundDieFire = DieByFireGLA
  9283.   SoundDieToxin = DieByToxinGLA
  9284.   VoiceFear = TerroristVoiceFear
  9285.   VoiceGuard = TerroristVoiceMove
  9286.   UnitSpecificSounds
  9287.     VoiceGarrison         = TerroristVoiceMove
  9288.     VoiceCreate           = TerroristVoiceCreate
  9289.     VoiceEnter            = TerroristVoiceEnter
  9290.     VoiceEnterHostile     = TerroristVoiceEnterHostile
  9291.     VoiceGetHealed      = TerroristVoiceMove
  9292.   End
  9293.  
  9294.   ; *** ENGINEERING Parameters ***
  9295.   RadarPriority = UNIT
  9296.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
  9297.  
  9298.   Body = ActiveBody ModuleTag_02
  9299.     MaxHealth       = 120.0
  9300.     InitialHealth   = 120.0
  9301.   End
  9302.  
  9303.   ExperienceValue     = 20 20 20 20  ; Experience point value at each level
  9304.  
  9305.   Behavior = AIUpdateInterface ModuleTag_03
  9306.     AutoAcquireEnemiesWhenIdle = Yes
  9307.   End
  9308.   Locomotor = SET_NORMAL FastHumanLocomotor
  9309.   Behavior = PhysicsBehavior ModuleTag_04
  9310.     Mass = 5.0
  9311.   End
  9312.  
  9313.   ;Kris
  9314.   Behavior = ConvertToCarBombCrateCollide       ModuleTag_06
  9315.     RequiredKindOf    = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
  9316.     ;ForbiddenKindOf  = TRANSPORT DOZER  ; but not to TRANSPORTs or DOZERs!
  9317.     FXList            = FX_MakeCarBombSuccess
  9318.   End
  9319.  
  9320.   Behavior = SquishCollide ModuleTag_07
  9321.     ;nothing
  9322.   End
  9323.  
  9324. ; --- begin Death modules ---
  9325.   Behavior = SlowDeathBehavior ModuleTag_Death01
  9326.     DeathTypes          = ALL  -SUICIDED -POISONED -POISONED_BETA
  9327.     SinkDelay           = 3000
  9328.     SinkRate            = 0.5     ; in Dist/Sec
  9329.     DestructionDelay    = 8000
  9330.     FX                  = INITIAL FX_GIDie
  9331.   End
  9332.  
  9333.  
  9334.   ;POISON_DEATHS POISON_DEATHS POISON_DEATHS POISON_DEATHS
  9335.   Behavior = SlowDeathBehavior ModuleTag_Death02
  9336.     DeathTypes          = NONE +POISONED
  9337.     DestructionDelay    = 0
  9338.     FX                  = INITIAL FX_GIDie
  9339.     OCL                 = INITIAL OCL_GLAToxicInfantry
  9340.   End
  9341.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  9342.     DeathTypes          = NONE +POISONED_BETA
  9343.     DestructionDelay    = 0
  9344.     FX                  = INITIAL FX_GIDie
  9345.     OCL                 = INITIAL OCL_GLAToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  9346.   End
  9347.   ;POISON_DEATHS POISON_DEATHS POISON_DEATHS POISON_DEATHS
  9348.  
  9349.  
  9350.   ; I have just pulled my ripcord, and this ain't no parachute!
  9351.   Behavior = SlowDeathBehavior ModuleTag_Death03
  9352.     DeathTypes          = NONE +SUICIDED
  9353.     SinkDelay           = 3000
  9354.     SinkRate            = 0.5     ; in Dist/Sec
  9355.     DestructionDelay    = 8000
  9356.     FX                  = INITIAL FX_TerroristExplode
  9357.     FlingForce          = 8
  9358.     FlingForceVariance  = 3
  9359.     FlingPitch          = 60
  9360.     FlingPitchVariance  = 10
  9361.   End
  9362.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_Death04
  9363.     DeathWeapon   = SuicideDynamitePack
  9364.     StartsActive  = Yes                      ; turned on by upgrade
  9365.     DeathTypes = NONE +SUICIDED +CRUSHED +SPLATTED +LASERED +BURNED +EXPLODED
  9366.   End
  9367. ; --- end Death modules ---
  9368.  
  9369.   Behavior = PoisonedBehavior ModuleTag_14
  9370.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  9371.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  9372.   End
  9373.  
  9374.   Geometry = CYLINDER
  9375.   GeometryMajorRadius = 10.0
  9376.   GeometryMinorRadius = 10.0
  9377.   GeometryHeight = 12.0
  9378.   GeometryIsSmall = Yes
  9379.   Shadow = SHADOW_DECAL
  9380.   ShadowSizeX = 14;
  9381.   ShadowSizeY = 14;
  9382.   ShadowTexture = ShadowI;
  9383.   BuildCompletion = APPEARS_AT_RALLY_POINT
  9384.  
  9385. End
  9386.  
  9387.  
  9388.  
  9389.  
  9390.  
  9391.  
  9392.  
  9393.  
  9394. ;------------------------------------------------------------------------------
  9395. ;------------------------------------------------------------------------------
  9396. Object GLAInfantryAngryMobNexus 
  9397.  
  9398. ;**** ART Parameters **************************
  9399.   SelectPortrait         = SUAngryMob_L
  9400.   ButtonImage            = SUAngryMob
  9401.   
  9402.   UpgradeCameo1 = Upgrade_GLAArmTheMob
  9403.   ;UpgradeCameo2 = NONE
  9404.   ;UpgradeCameo3 = NONE
  9405.   ;UpgradeCameo4 = NONE
  9406.   ;UpgradeCameo5 = NONE
  9407.   
  9408.   Draw = W3DModelDraw ModuleTag_01
  9409.     OkToChangeModelColor = Yes
  9410.     DefaultConditionState
  9411.       Model = None
  9412. ;      Model = AVBomber_B
  9413.     End
  9414.   End
  9415.  
  9416.  
  9417. ;****DESIGN parameters **************************
  9418.  
  9419.   DisplayName      = OBJECT:AngryMobNexus
  9420.   Side = GLA
  9421.  
  9422.   RadarPriority       = NOT_ON_RADAR
  9423.  
  9424.   EditorSorting   = INFANTRY
  9425.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  9426.  
  9427.   WeaponSet
  9428.     Conditions = None 
  9429.     Weapon = PRIMARY GLAAngryMobNexusHarmlessWeapon
  9430.     Weapon = SECONDARY GLAAngryMobNexusHarmlessWeapon
  9431.     Weapon = TERTIARY GLAAngryMobNexusHarmlessWeapon
  9432.   End
  9433.  
  9434.  
  9435.   ArmorSet
  9436.     Conditions      = None
  9437.     Armor           = InvulnerableAllArmor
  9438.     DamageFX        = None
  9439.   End
  9440.  
  9441.   BuildCost       = 800
  9442.   BuildTime       = 15.0          ;in seconds    
  9443.   VisionRange     = 150  ; it can scout for the spawn
  9444.   ShroudClearingRange = 0
  9445.  
  9446.   Prerequisites
  9447.     Object = GLABarracks
  9448.     Object = GLAPalace
  9449.   End
  9450.  
  9451.   ExperienceValue    = 5 5 5 5 ;Experience point value at each level
  9452.  
  9453.   IsTrainable     = No
  9454.  
  9455.  
  9456.  
  9457.   CommandSet    = GLAInfantryAngryMobCommandSet;
  9458.  
  9459. ;**** AUDIO Parameters *****************************
  9460.   VoiceSelect = AngryMobVoiceSelect
  9461.   VoiceMove = AngryMobVoiceMove
  9462.   VoiceGuard = AngryMobVoiceMove
  9463.   VoiceAttack = AngryMobVoiceAttack
  9464.   SoundMoveStart = NoSound
  9465.   SoundAmbient = AngryMobAmbientLoop
  9466.   SoundAmbientRubble = NoSound
  9467.   SoundDie = CivilianArabMaleDie
  9468.   SoundDieFire = DieByFireGLA
  9469.   SoundDieToxin = DieByToxinGLA
  9470.   UnitSpecificSounds
  9471.     VoiceCreate          = AngryMobVoiceCreate
  9472.   End
  9473.  
  9474.  
  9475. ;**** ENGINEERING Parameters ******************************
  9476.  
  9477.   RadarPriority = UNIT
  9478.   KindOf = PRELOAD CAN_ATTACK INFANTRY MOB_NEXUS ATTACK_NEEDS_LINE_OF_SIGHT NO_COLLIDE SELECTABLE SCORE
  9479.   Body = ImmortalBody ModuleTag_02
  9480.     MaxHealth       = 99999.0
  9481.     InitialHealth   = 99999.0
  9482.   End
  9483.  
  9484.   Behavior = AIUpdateInterface ModuleTag_03
  9485.     AutoAcquireEnemiesWhenIdle = Yes
  9486.   End
  9487.  
  9488.   Locomotor = SET_NORMAL AngryMobNexusLocomotor ;Important! don't make the Nexus any faster!
  9489.   Locomotor = SET_WANDER AngryMobNexusLocomotor ;Important! don't make the Nexus any faster!
  9490.   Locomotor = SET_PANIC AngryMobNexusLocomotor ;Important! don't make the Nexus any faster!
  9491.  
  9492. ;  Locomotor = SET_NORMAL WanderHumanLocomotor ;Important! don't make the Nexus any faster!
  9493. ;  Locomotor = SET_WANDER WanderHumanLocomotor ;Important! don't make the Nexus any faster!
  9494. ;  Locomotor = SET_PANIC WanderHumanLocomotor ;Important! don't make the Nexus any faster!
  9495.  
  9496.   Behavior = PhysicsBehavior ModuleTag_04
  9497.     Mass = 50.0
  9498.   End
  9499.  
  9500.   Behavior            = SpawnBehavior ModuleTag_05
  9501.     SpawnNumber       = 10
  9502.     SpawnReplaceDelay = 30000 ; 30 seconds
  9503.  
  9504.         SpawnTemplateName = GLAInfantryAngryMobPistol01 ; Aladdin
  9505.         SpawnTemplateName = GLAInfantryAngryMobRock02 ; Woman in the Gypsy Costume
  9506.         SpawnTemplateName = GLAInfantryAngryMobMolotov02 ; The Lady with the hot sauce
  9507.         SpawnTemplateName = GLAInfantryAngryMobPistol03 ; Skinny Guy with the Green Beret
  9508.         SpawnTemplateName = GLAInfantryAngryMobRock04 ; Fat guy with the tank top
  9509.         SpawnTemplateName = GLAInfantryAngryMobMolotov02 ; The Lady with the hot sauce
  9510.         SpawnTemplateName = GLAInfantryAngryMobPistol05 ; The robed dude with the Man-Veil
  9511.  
  9512.  
  9513.  
  9514.     ExitByBudding = Yes;!
  9515.  
  9516.     InitialBurst = 5 ; the first set of 5 will not delay
  9517.     OneShot     = No
  9518.     AggregateHealth = Yes
  9519.   End
  9520.  
  9521.   Behavior = QueueProductionExitUpdate ModuleTag_06
  9522.     UnitCreatePoint   = X:  0.0  Y:  0.0   Z:0.0
  9523.     NaturalRallyPoint = X: 0.0  Y:  0.0   Z:0.0
  9524.     ExitDelay     = 5000 ; 5 sec
  9525.     InitialBurst = 5 ; the first set of 5 will not delay
  9526.   End
  9527.  
  9528.   Behavior = DestroyDie ModuleTag_07
  9529.     DeathTypes = ALL
  9530.   End
  9531.  
  9532.   Geometry = CYLINDER
  9533.   GeometryMajorRadius = 1.0
  9534.   GeometryMinorRadius = 1.0
  9535.   GeometryHeight = 1.0     
  9536.   GeometryIsSmall = Yes 
  9537.   Shadow = SHADOW_VOLUME
  9538.  
  9539. End
  9540.  
  9541.  
  9542.  
  9543.  
  9544.  
  9545. ;------------------------------------------------------------------------------
  9546. ;------------------------------------------------------------------------------
  9547. Object GLAInfantryAngryMobPistol01
  9548.  
  9549. ;**** ART Parameters ***
  9550.   Draw = W3DModelDraw DrawTag_01
  9551.     OkToChangeModelColor = Yes
  9552.  
  9553.  
  9554.  
  9555.     ; WHILE CARRYING PISTOL
  9556.     ;---------------------------------------------------------
  9557.     DefaultConditionState ;Idle with Pistol Holstered
  9558.       Model = UIMOB01_SKN
  9559.       IdleAnimation = UIMOB01_SKL.UIMOB01_IDA1 0 12
  9560.       IdleAnimation = UIMOB01_SKL.UIMOB01_IDA2 0 5
  9561.       IdleAnimation = UIMOB01_SKL.UIMOB01_CHA  0 5
  9562.       IdleAnimation = UIMOB01_SKL.UIMOB01_STA  0 5
  9563.       AnimationMode = ONCE
  9564.       AnimationSpeedFactorRange 0.9 1.1
  9565.       TransitionKey = TRANS_STAND_A
  9566.  
  9567.       WeaponFireFXBone = PRIMARY Muzzle
  9568.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  9569.       WeaponFireFXBone = SECONDARY MuzzleAK
  9570.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  9571.     End
  9572.  
  9573.     ; Drawing pistol
  9574.     ConditionState  = PREATTACK_A
  9575.       Animation     = UIMOB01_SKL.UIMOB01_ATA1_ST ; start firing
  9576.       AnimationMode = ONCE
  9577.     End
  9578.     AliasConditionState = PREATTACK_A FIRING_A
  9579.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  9580.  
  9581.     ; Firing pistol
  9582.     ConditionState = FIRING_A
  9583.       Animation = UIMOB01_SKL.UIMOB01_ATA1_LP ; looping firing
  9584.       AnimationMode = LOOP
  9585.       TransitionKey = TRANS_FIRING_A
  9586.     End
  9587.     AliasConditionState  = BETWEEN_FIRING_SHOTS_A
  9588.     
  9589.     ConditionState  = RELOADING_A
  9590.       Animation     = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing
  9591.       AnimationMode = ONCE
  9592.     End
  9593.  
  9594.     ; This transition allows him to put his gun away when he's finished attacking.
  9595.     TransitionState = TRANS_FIRING_A TRANS_STAND_A
  9596.       Animation     = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing
  9597.       AnimationMode = ONCE
  9598.     End
  9599.  
  9600.     ConditionState = MOVING
  9601.       Animation = UIMOB01_SKL.UIMOB01_RNA 
  9602.       AnimationMode = LOOP
  9603.       Flags = RANDOMSTART
  9604.       TransitionKey   = MOVING
  9605.       ParticleSysBone   = None InfantryDustTrails
  9606.     End
  9607.     AliasConditionState = MOVING RELOADING_A
  9608.     AliasConditionState = MOVING PREATTACK_A
  9609.     AliasConditionState = MOVING FIRING_A
  9610.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  9611.     AliasConditionState = MOVING RELOADING_C RELOADING_A 
  9612.     AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  9613.  
  9614.     ConditionState = DYING
  9615.       Animation = UIMOB01_SKL.UIMOB01_DA1    
  9616.       Animation = UIMOB01_SKL.UIMOB01_DA2
  9617.       AnimationMode = ONCE
  9618.       TransitionKey = TRANS_Dying
  9619.     End
  9620.  
  9621.  
  9622.     ConditionState = SPECIAL_CHEERING
  9623.       Animation = UIMOB01_SKL.UIMOB01_CHA
  9624.       AnimationMode = ONCE
  9625.     End
  9626.  
  9627.     ;--------------------------------------------------------
  9628.     ; TRANSITION FROM PISTOL TO AK47
  9629.     TransitionState = TRANS_STAND_A TRANS_STAND_AK
  9630.       Animation = UIMOB01_SKL.UIMOB01_TA-D
  9631.       AnimationMode = ONCE
  9632.     End
  9633.  
  9634.  
  9635.     ; WHILE CARRYING AK47 
  9636.     ;---------------------------------------------------------
  9637.     ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
  9638.       Model = UIMOB01_SKN
  9639.       IdleAnimation = UIMOB01_SKL.UIMOB01_IDD1 0 6
  9640.       IdleAnimation = UIMOB01_SKL.UIMOB01_IDD2 0 6
  9641.       IdleAnimation = UIMOB01_SKL.UIMOB01_CHD  0 6
  9642.       IdleAnimation = UIMOB01_SKL.UIMOB01_STD
  9643.       AnimationMode = ONCE
  9644.       AnimationSpeedFactorRange 0.9 1.1
  9645.       TransitionKey = TRANS_STAND_AK
  9646.     End
  9647.  
  9648.     ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
  9649.       Animation = UIMOB01_SKL.UIMOB01_RND 
  9650.       AnimationMode = LOOP
  9651.       Flags = RANDOMSTART
  9652.       TransitionKey   = MOVING_AK
  9653.     End
  9654.  
  9655.     ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
  9656.       Animation = UIMOB01_SKL.UIMOB01_DD1    
  9657.       Animation = UIMOB01_SKL.UIMOB01_DD2
  9658.       AnimationMode = ONCE
  9659.       TransitionKey = TRANS_Dying
  9660.     End
  9661.  
  9662.     ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
  9663.       Animation = UIMOB01_SKL.UIMOB01_CHD
  9664.       AnimationMode = ONCE
  9665.     End
  9666.  
  9667.     ; Drawing AK47
  9668.     ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
  9669.       Animation     = UIMOB01_SKL.UIMOB01_ATD1_ST ; start firing
  9670.       AnimationMode = ONCE
  9671.     End
  9672.     AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
  9673.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
  9674.  
  9675.     ; Firing Gun
  9676.     ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
  9677.       Animation = UIMOB01_SKL.UIMOB01_ATD1_LP ; looping firing
  9678.       AnimationMode = LOOP
  9679.       WeaponFireFXBone = SECONDARY MuzzleAK
  9680.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  9681.       TransitionKey = TRANS_FIRING_AK
  9682.     End
  9683.     AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
  9684.  
  9685.  
  9686.     ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
  9687.       Animation     = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing
  9688.       AnimationMode = ONCE
  9689.     End
  9690.  
  9691.  
  9692.     ; This transition allows him to put his gun away when he's finished attacking.
  9693.     TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
  9694.       Animation     = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing
  9695.       AnimationMode = ONCE
  9696.     End
  9697.  
  9698.  
  9699.  
  9700.  
  9701.  
  9702.  
  9703. ;    ;Throwing bottle----------------------------------------------------------------
  9704. ;    ConditionState = PREATTACK_C 
  9705. ;      Animation     = UIMOB01_SKL.UIMOB01_ATCA_BF ; the wind up
  9706. ;    End
  9707. ;    AliasConditionState = PREATTACK_C FIRING_A
  9708. ;    AliasConditionState = PREATTACK_C RELOADING_A
  9709. ;    AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  9710. ;
  9711. ;    ConditionState = FIRING_C 
  9712. ;      Animation     = UIMOB01_SKL.UIMOB01_ATCA_AF ; the release and follow-thru
  9713. ;      TransitionKey = TRANS_THROW
  9714. ;    End
  9715. ;    AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
  9716. ;
  9717. ;    ConditionState RELOADING_C
  9718. ;      Animation =UIMOB01_SKL.UIMOB01_IDA1
  9719. ;      WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  9720. ;    End
  9721. ;    AliasConditionState = RELOADING_C RELOADING_A
  9722. ;    AliasConditionState = RELOADING_C FIRING_A
  9723. ;    AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
  9724.  
  9725.  
  9726. ;    TransitionState = TRANSXXX TRANS_THROW
  9727. ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway gun and take out bottle
  9728. ;    End
  9729.  
  9730. ;    TransitionState = TRANS_THROW TRANS_FIRING_A
  9731. ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get PISTOL
  9732. ;    End
  9733.  
  9734. ;    TransitionState = TRANSXXXAK TRANS_THROW
  9735. ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway AK and take out bottle
  9736. ;    End
  9737.  
  9738. ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
  9739. ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get AK
  9740. ;    End
  9741.  
  9742.  
  9743.  
  9744.  
  9745.  
  9746.     ;--------------------------------------------------------
  9747.  
  9748.  
  9749.  
  9750.  
  9751.  
  9752.  
  9753.     TransitionState = TRANS_Dying TRANS_Flailing
  9754.       Animation = UIMOB01_SKL.UIMOB01_A_ADTE1
  9755.       Animation = UIMOB01_SKL.UIMOB01_D_ADTE1
  9756.       AnimationMode = ONCE
  9757.     End
  9758.  
  9759.     ConditionState = DYING EXPLODED_FLAILING
  9760.       Animation = UIMOB01_SKL.UIMOB01_A_ADTE2
  9761.       Animation = UIMOB01_SKL.UIMOB01_D_ADTE2
  9762.       AnimationMode = LOOP
  9763.       TransitionKey = TRANS_Flailing
  9764.     End
  9765.  
  9766.     ConditionState = DYING EXPLODED_BOUNCING
  9767.       Animation = UIMOB01_SKL.UIMOB01_A_ADTE3
  9768.       Animation = UIMOB01_SKL.UIMOB01_D_ADTE3
  9769.       AnimationMode = ONCE
  9770.       TransitionKey = None
  9771.     End
  9772.  
  9773.  
  9774.   End
  9775.  
  9776.  
  9777. ;**** DESIGN parameters ***
  9778.  
  9779.   DisplayName      = OBJECT:AngryMob
  9780.   Side = GLA
  9781.   EditorSorting = INFANTRY
  9782.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  9783.  
  9784.   WeaponSet
  9785.     Conditions = None 
  9786.     Weapon = PRIMARY GLAAngryMobPistolWeapon
  9787.   End
  9788.  
  9789.   WeaponSet
  9790.     Conditions = PLAYER_UPGRADE 
  9791.     Weapon = PRIMARY GLAAngryMobAK47NoDamageWeapon ; for atttacking in AK-proof conditions
  9792.     Weapon = SECONDARY GLAAngryMobAK47Weapon
  9793.   End
  9794.  
  9795.   ArmorSet
  9796.     Conditions      = None
  9797.     Armor           = HumanArmor
  9798.     DamageFX        = InfantryDamageFX
  9799.   End
  9800.  
  9801.   VisionRange = 150
  9802.   ShroudClearingRange = 150
  9803.   Prerequisites
  9804.     Object = GLABarracks
  9805.   End
  9806.   BuildCost = 100
  9807.   BuildTime = 0.0           
  9808.  
  9809.   ExperienceValue = 5 5 5 5    ;Experience point value at each level
  9810.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  9811.   IsTrainable = Yes             ;Can gain experience
  9812.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  9813.  
  9814.   ; *** AUDIO Parameters ***
  9815.   VoiceSelect = NoSound 
  9816.   VoiceMove = NoSound   
  9817.   VoiceAttack = NoSound 
  9818.   SoundDie = CivilianArabMaleDie
  9819.  
  9820.  
  9821. ;**** ENGINEERING Parameters *** ;MOB01
  9822.   RadarPriority = UNIT
  9823.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
  9824.  
  9825.   Body = ActiveBody BodyTag_01
  9826.     MaxHealth       = 50.0
  9827.     InitialHealth   = 50.0
  9828.   End
  9829.  
  9830.   Behavior = AIUpdateInterface ModuleTag_03
  9831.     AutoAcquireEnemiesWhenIdle = Yes
  9832.   End
  9833.  
  9834.   Behavior = MobMemberSlavedUpdate ModuleTag_04
  9835.     MustCatchUpRadius   = 40
  9836.     NoNeedToCatchUpRadius = 15
  9837.     Squirrelliness = 0.05
  9838.     CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
  9839.   End
  9840.  
  9841.   Locomotor = SET_NORMAL AngryMobNormalLocomotor
  9842.   Locomotor = SET_WANDER AngryMobWanderLocomotor
  9843.   Locomotor = SET_PANIC AngryMobPanicLocomotor
  9844.  
  9845.   Behavior = PhysicsBehavior BehaviorTag_01
  9846.     Mass = 5.0
  9847.   End
  9848.  
  9849.   Behavior = SquishCollide ModuleTag_08
  9850.     ;nothing
  9851.   End
  9852.  
  9853.   Behavior = WeaponSetUpgrade UpgradeTag_01
  9854.     TriggeredBy = Upgrade_GLAArmTheMob
  9855.   End
  9856.  
  9857.  
  9858. ; --- begin Death modules ---
  9859.   Behavior = SlowDeathBehavior DeathTag_01
  9860.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  9861.     SinkDelay           = 3000
  9862.     SinkRate            = 0.5     ; in Dist/Sec
  9863.     DestructionDelay    = 8000
  9864.     FX                  = INITIAL FX_GIDie
  9865.   End
  9866.   Behavior = SlowDeathBehavior DeathTag_02
  9867.     DeathTypes          = NONE +CRUSHED +SPLATTED
  9868.     SinkDelay           = 3000
  9869.     SinkRate            = 0.5     ; in Dist/Sec
  9870.     DestructionDelay    = 8000
  9871.     FX                  = INITIAL FX_GIDieCrushed
  9872.   End
  9873.   Behavior = SlowDeathBehavior DeathTag_03
  9874.     DeathTypes          = NONE +EXPLODED
  9875.     SinkDelay           = 3000
  9876.     SinkRate            = 0.5     ; in Dist/Sec
  9877.     DestructionDelay    = 8000
  9878.     FX                  = INITIAL FX_GIDie
  9879.     FlingForce          = 8
  9880.     FlingForceVariance  = 3
  9881.     FlingPitch          = 60
  9882.     FlingPitchVariance  = 10
  9883.   End
  9884.   Behavior = SlowDeathBehavior DeathTag_04
  9885.     DeathTypes          = NONE +BURNED
  9886.     DestructionDelay    = 0
  9887.     FX                  = INITIAL FX_GIDie
  9888.     OCL                 = INITIAL OCL_FlamingInfantry
  9889.   End
  9890.   Behavior = SlowDeathBehavior DeathTag_05
  9891.     DeathTypes          = NONE +POISONED
  9892.     DestructionDelay    = 0
  9893.     FX                  = INITIAL FX_GIDie
  9894.     OCL                 = INITIAL OCL_ToxicInfantry
  9895.   End
  9896. ; --- end Death modules ---
  9897.  
  9898.   Behavior = PoisonedBehavior BehaviorTag_02
  9899.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  9900.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  9901.   End
  9902.  
  9903.   Geometry = CYLINDER
  9904.   GeometryMajorRadius = 4.0 ; very thin
  9905.   GeometryHeight = 12.0
  9906.   GeometryIsSmall = Yes
  9907.   Shadow = SHADOW_DECAL
  9908.   ShadowSizeX = 14;
  9909.   ShadowSizeY = 14;
  9910.   ShadowTexture = ShadowI;
  9911.   BuildCompletion = APPEARS_AT_RALLY_POINT
  9912.  
  9913. End
  9914.  
  9915.  
  9916. ;------------------------------------------------------------------------------
  9917. ;------------------------------------------------------------------------------
  9918. Object GLAInfantryAngryMobRock02
  9919.  
  9920. ;**** ART Parameters ***
  9921.   Draw = W3DModelDraw ModuleTag_01
  9922.     OkToChangeModelColor = Yes
  9923.  
  9924.     ; WHILE CARRYING ROCK
  9925.     ;---------------------------------------------------------
  9926.     DefaultConditionState
  9927.       Model = UIMOB02_SKN
  9928.       IdleAnimation = UIMOB02_SKL.UIMOB02_IDB1 0 12
  9929.       IdleAnimation = UIMOB02_SKL.UIMOB02_IDB2 0 5
  9930.       IdleAnimation = UIMOB02_SKL.UIMOB02_CHB  0 5
  9931.       IdleAnimation = UIMOB02_SKL.UIMOB02_STB  0 12
  9932.       AnimationMode = ONCE
  9933.       AnimationSpeedFactorRange 0.9 1.1
  9934.       TransitionKey = TRANS_STAND_A
  9935.  
  9936.       ;WeaponFireFXBone  = PRIMARY   "UIMOB02 R HAND"
  9937.       ;WeaponMuzzleFlash = PRIMARY   "UIMOB02 R HAND"
  9938.       WeaponFireFXBone =  SECONDARY MuzzleAK
  9939.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  9940.     End
  9941.  
  9942.  
  9943.     ; Drawing rock
  9944.     ConditionState  = PREATTACK_A
  9945.       Animation     = UIMOB02_SKL.UIMOB02_ATB2_BF ; wind up
  9946.       AnimationMode = ONCE
  9947.     End
  9948.     AliasConditionState = PREATTACK_A FIRING_A
  9949.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  9950.  
  9951.     ; throwing rock
  9952.     ConditionState = FIRING_A
  9953.       Animation = UIMOB02_SKL.UIMOB02_ATB1_AF ; throw
  9954.       Animation = UIMOB02_SKL.UIMOB02_ATB2_AF ; throw
  9955.       AnimationMode = ONCE
  9956.       TransitionKey = TRANS_FIRING_A
  9957.     End
  9958.     
  9959.     ConditionState = BETWEEN_FIRING_SHOTS_A
  9960.       Animation         = UIMOB02_SKL.UIMOB02_STB
  9961.       AnimationMode     = ONCE
  9962.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  9963.       ; and a long recycle time between shots. we want him to finish his fire animation
  9964.       ; (unless he's ordered to do something else), so this is just a handy trick that
  9965.       ; says, "if the previous state had this transition key, allow it to finish before
  9966.       ; switching to us, if possible".
  9967.       WaitForStateToFinishIfPossible = TRANS_FIRING_A
  9968.     End
  9969.     AliasConditionState = RELOADING_A
  9970.  
  9971.  
  9972.     ConditionState = MOVING
  9973.       Animation = UIMOB02_SKL.UIMOB02_RNB 
  9974.       AnimationMode = LOOP
  9975.       Flags = RANDOMSTART
  9976.       TransitionKey   = MOVING
  9977.       ParticleSysBone   = None InfantryDustTrails
  9978.     End
  9979.  
  9980.     ConditionState = DYING
  9981.       Animation = UIMOB02_SKL.UIMOB02_DB1    
  9982.       Animation = UIMOB02_SKL.UIMOB02_DB2
  9983.       AnimationMode = ONCE
  9984.       TransitionKey = TRANS_Dying
  9985.     End
  9986.  
  9987.     ConditionState = SPECIAL_CHEERING
  9988.       Animation = UIMOB02_SKL.UIMOB02_CHB
  9989.       Flags = RANDOMSTART
  9990.       AnimationMode = LOOP
  9991.     End
  9992.  
  9993.  
  9994.     ;--------------------------------------------------------
  9995.     ; TRANSITION FROM PISTOL TO AK47
  9996.     TransitionState = TRANS_STAND_A TRANS_STAND_AK
  9997.       Animation = UIMOB02_SKL.UIMOB02_TB-D
  9998.       AnimationMode = ONCE
  9999.     End
  10000.  
  10001.  
  10002.     ; WHILE CARRYING AK47 
  10003.     ;---------------------------------------------------------
  10004.     ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
  10005.       Model = UIMOB02_SKN
  10006.       IdleAnimation = UIMOB02_SKL.UIMOB02_IDD1 0 6
  10007.       IdleAnimation = UIMOB02_SKL.UIMOB02_IDD2 0 6
  10008.       IdleAnimation = UIMOB02_SKL.UIMOB02_CHD  0 6
  10009.       IdleAnimation = UIMOB02_SKL.UIMOB02_STD
  10010.       AnimationMode = ONCE
  10011.       AnimationSpeedFactorRange 0.9 1.1
  10012.       TransitionKey = TRANS_STAND_AK
  10013.     End
  10014.  
  10015.     ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
  10016.       Animation = UIMOB02_SKL.UIMOB02_RND 
  10017.       AnimationMode = LOOP
  10018.       Flags = RANDOMSTART
  10019.       TransitionKey   = MOVING_AK
  10020.     End
  10021.  
  10022.     ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
  10023.       Animation = UIMOB02_SKL.UIMOB02_DD1    
  10024.       Animation = UIMOB02_SKL.UIMOB02_DD2
  10025.       AnimationMode = ONCE
  10026.       TransitionKey = TRANS_Dying
  10027.     End
  10028.  
  10029.     ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
  10030.       Animation = UIMOB02_SKL.UIMOB02_CHD
  10031.       AnimationMode = ONCE
  10032.     End
  10033.  
  10034.     ; Drawing AK47
  10035.     ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
  10036.       Animation     = UIMOB02_SKL.UIMOB02_ATD1_ST ; start firing
  10037.       AnimationMode = ONCE
  10038.     End
  10039.     AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
  10040.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
  10041.  
  10042.     ; Firing Gun
  10043.     ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
  10044.       Animation = UIMOB02_SKL.UIMOB02_ATD1_LP ; looping firing
  10045.       AnimationMode = LOOP
  10046.       WeaponFireFXBone = SECONDARY MuzzleAK
  10047.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  10048.       TransitionKey = TRANS_FIRING_AK
  10049.     End
  10050.     AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
  10051.  
  10052.  
  10053.     ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
  10054.       Animation     = UIMOB02_SKL.UIMOB02_ATD1_ED ; end firing
  10055.       AnimationMode = ONCE
  10056.     End
  10057.  
  10058.  
  10059.     ; This transition allows him to put his gun away when he's finished attacking.
  10060.     TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
  10061.       Animation     = UIMOB02_SKL.UIMOB02_ATD1_ED ; end firing
  10062.       AnimationMode = ONCE
  10063.     End
  10064.  
  10065.  
  10066.  
  10067.  
  10068.     TransitionState = TRANS_Dying TRANS_Flailing
  10069.       Animation = UIMOB02_SKL.UIMOB02_B_ADTA1
  10070.       Animation = UIMOB02_SKL.UIMOB02_D_ADTA1
  10071.       AnimationMode = ONCE
  10072.     End
  10073.  
  10074.     ConditionState = DYING EXPLODED_FLAILING
  10075.       Animation = UIMOB02_SKL.UIMOB02_B_ADTA2
  10076.       Animation = UIMOB02_SKL.UIMOB02_D_ADTA2
  10077.       AnimationMode = LOOP
  10078.       TransitionKey = TRANS_Flailing
  10079.     End
  10080.  
  10081.     ConditionState = DYING EXPLODED_BOUNCING
  10082.       Animation = UIMOB02_SKL.UIMOB02_B_ADTA3
  10083.       Animation = UIMOB02_SKL.UIMOB02_D_ADTA3
  10084.       AnimationMode = ONCE
  10085.       TransitionKey = None
  10086.     End
  10087.  
  10088.  
  10089.   End
  10090.  
  10091.  
  10092. ;**** DESIGN parameters ***
  10093.  
  10094.   DisplayName      = OBJECT:AngryMob
  10095.   Side = GLA
  10096.   EditorSorting = INFANTRY
  10097.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  10098.  
  10099.   WeaponSet
  10100.     Conditions = None 
  10101.     Weapon = PRIMARY GLAAngryMobRockProjectileWeapon
  10102.   End
  10103.  
  10104.   WeaponSet
  10105.     Conditions = PLAYER_UPGRADE 
  10106.     Weapon = PRIMARY GLAAngryMobAK47NoDamageWeapon ; for atttacking in AK-proof conditions
  10107.     Weapon = SECONDARY GLAAngryMobAK47Weapon
  10108.   End
  10109.  
  10110.   ArmorSet
  10111.     Conditions      = None
  10112.     Armor           = HumanArmor
  10113.     DamageFX        = InfantryDamageFX
  10114.   End
  10115.  
  10116.   VisionRange = 150
  10117.   ShroudClearingRange = 150
  10118.   Prerequisites
  10119.     Object = GLABarracks
  10120.   End
  10121.   BuildCost = 100
  10122.   BuildTime = 0.0            
  10123.  
  10124.   ExperienceValue = 5 5 5 5    ;Experience point value at each level
  10125.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  10126.   IsTrainable = Yes             ;Can gain experience
  10127.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  10128.  
  10129.   ; *** AUDIO Parameters ***
  10130.   VoiceSelect = NoSound 
  10131.   VoiceMove = NoSound   
  10132.   VoiceAttack = NoSound 
  10133.   SoundDie = CivilianArabFemaleDie
  10134.  
  10135.  
  10136. ;**** ENGINEERING Parameters *** ;MOB02
  10137.   RadarPriority = UNIT
  10138.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
  10139.  
  10140.   Body = ActiveBody BodyTag_01
  10141.     MaxHealth       = 50.0
  10142.     InitialHealth   = 50.0
  10143.   End
  10144.  
  10145.   Behavior = AIUpdateInterface ModuleTag_03
  10146.     AutoAcquireEnemiesWhenIdle = Yes
  10147.   End
  10148.  
  10149.   Behavior = MobMemberSlavedUpdate ModuleTag_04
  10150.     MustCatchUpRadius   = 40
  10151.     NoNeedToCatchUpRadius = 15
  10152.     Squirrelliness = 0.05
  10153.     CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
  10154.   End
  10155.  
  10156.   Locomotor = SET_NORMAL AngryMobNormalLocomotor
  10157.   Locomotor = SET_WANDER AngryMobWanderLocomotor
  10158.   Locomotor = SET_PANIC AngryMobPanicLocomotor
  10159.  
  10160.   Behavior = PhysicsBehavior ModuleTag_05
  10161.     Mass = 5.0
  10162.   End
  10163.  
  10164.   Behavior = SquishCollide ModuleTag_08
  10165.     ;nothing
  10166.   End
  10167.  
  10168.   Behavior = WeaponSetUpgrade UpgradeTag_01
  10169.     TriggeredBy = Upgrade_GLAArmTheMob
  10170.   End
  10171.  
  10172.  
  10173. ; --- begin Death modules ---
  10174.   Behavior = SlowDeathBehavior ModuleTag_Death01
  10175.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  10176.     SinkDelay           = 3000
  10177.     SinkRate            = 0.5     ; in Dist/Sec
  10178.     DestructionDelay    = 8000
  10179.     FX                  = INITIAL FX_GIDie
  10180.   End
  10181.   Behavior = SlowDeathBehavior ModuleTag_Death02
  10182.     DeathTypes          = NONE +CRUSHED +SPLATTED
  10183.     SinkDelay           = 3000
  10184.     SinkRate            = 0.5     ; in Dist/Sec
  10185.     DestructionDelay    = 8000
  10186.     FX                  = INITIAL FX_GIDieCrushed
  10187.   End
  10188.   Behavior = SlowDeathBehavior ModuleTag_Death03
  10189.     DeathTypes          = NONE +EXPLODED
  10190.     SinkDelay           = 3000
  10191.     SinkRate            = 0.5     ; in Dist/Sec
  10192.     DestructionDelay    = 8000
  10193.     FX                  = INITIAL FX_GIDie
  10194.     FlingForce          = 8
  10195.     FlingForceVariance  = 3
  10196.     FlingPitch          = 60
  10197.     FlingPitchVariance  = 10
  10198.   End
  10199.   Behavior = SlowDeathBehavior ModuleTag_Death04
  10200.     DeathTypes          = NONE +BURNED
  10201.     DestructionDelay    = 0
  10202.     FX                  = INITIAL FX_GIDie
  10203.     OCL                 = INITIAL OCL_FlamingInfantry
  10204.   End
  10205.   Behavior = SlowDeathBehavior ModuleTag_Death05
  10206.     DeathTypes          = NONE +POISONED
  10207.     DestructionDelay    = 0
  10208.     FX                  = INITIAL FX_GIDie
  10209.     OCL                 = INITIAL OCL_ToxicInfantry
  10210.   End
  10211. ; --- end Death modules ---
  10212.  
  10213.   Behavior = PoisonedBehavior ModuleTag_13
  10214.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  10215.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  10216.   End
  10217.  
  10218.   Geometry = CYLINDER
  10219.   GeometryMajorRadius = 4.0 ; very thin
  10220.   GeometryHeight = 12.0
  10221.   GeometryIsSmall = Yes
  10222.   Shadow = SHADOW_DECAL
  10223.   ShadowSizeX = 14;
  10224.   ShadowSizeY = 14;
  10225.   ShadowTexture = ShadowI;
  10226.   BuildCompletion = APPEARS_AT_RALLY_POINT
  10227.  
  10228. End
  10229.  
  10230. ;------------------------------------------------------------------------------
  10231. ;------------------------------------------------------------------------------
  10232.  
  10233. ObjectReskin GLAInfantryAngryMobPistol03 GLAInfantryAngryMobPistol01
  10234.  
  10235. ;**** ART Parameters ***
  10236.   Draw = W3DModelDraw DrawTag_01
  10237.     OkToChangeModelColor = Yes
  10238.  
  10239.  
  10240.  
  10241.     ; WHILE CARRYING PISTOL
  10242.     ;---------------------------------------------------------
  10243.     DefaultConditionState ;Idle with Pistol Holstered
  10244.       Model = UIMOB03_SKN
  10245.       IdleAnimation = UIMOB03_SKL.UIMOB03_IDA1 0 12
  10246.       IdleAnimation = UIMOB03_SKL.UIMOB03_IDA2 0 5
  10247.       IdleAnimation = UIMOB03_SKL.UIMOB03_CHA  0 5
  10248.       IdleAnimation = UIMOB03_SKL.UIMOB03_STA  0 5
  10249.       AnimationMode = ONCE
  10250.       AnimationSpeedFactorRange 0.9 1.1
  10251.       TransitionKey = TRANS_STAND_A
  10252.  
  10253.       WeaponFireFXBone = PRIMARY Muzzle
  10254.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  10255.       WeaponFireFXBone = SECONDARY MuzzleAK
  10256.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  10257.       WeaponFireFXBone = TERTIARY "UIMOB03 R HAND"
  10258.     End
  10259.  
  10260.     ; Drawing pistol
  10261.     ConditionState  = PREATTACK_A
  10262.       Animation     = UIMOB03_SKL.UIMOB03_ATA1_ST ; start firing
  10263.       AnimationMode = ONCE
  10264.     End
  10265.     AliasConditionState = PREATTACK_A FIRING_A
  10266.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  10267.  
  10268.     ; Firing pistol
  10269.     ConditionState = FIRING_A
  10270.       Animation = UIMOB03_SKL.UIMOB03_ATA1_LP ; looping firing
  10271.       AnimationMode = LOOP
  10272.       TransitionKey = TRANS_FIRING_A
  10273.     End
  10274.     AliasConditionState  = BETWEEN_FIRING_SHOTS_A
  10275.  
  10276.     ConditionState  = RELOADING_A
  10277.       Animation     = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing
  10278.       AnimationMode = ONCE
  10279.     End
  10280.  
  10281.     ; This transition allows him to put his gun away when he's finished attacking.
  10282.     TransitionState = TRANS_FIRING_A TRANS_STAND_A
  10283.       Animation     = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing
  10284.       AnimationMode = ONCE
  10285.     End
  10286.  
  10287.     ConditionState = MOVING
  10288.       Animation = UIMOB03_SKL.UIMOB03_RNA 
  10289.       AnimationMode = LOOP
  10290.       Flags = RANDOMSTART
  10291.       TransitionKey   = MOVING
  10292.       ParticleSysBone   = None InfantryDustTrails
  10293.     End
  10294.     AliasConditionState = MOVING RELOADING_A
  10295.     AliasConditionState = MOVING PREATTACK_A
  10296.     AliasConditionState = MOVING FIRING_A
  10297.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  10298.     AliasConditionState = MOVING RELOADING_C RELOADING_A 
  10299.     AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  10300.  
  10301.     ConditionState = DYING
  10302.       Animation = UIMOB03_SKL.UIMOB03_DA1    
  10303.       Animation = UIMOB03_SKL.UIMOB03_DA2
  10304.       AnimationMode = ONCE
  10305.       TransitionKey = TRANS_Dying
  10306.     End
  10307.  
  10308.  
  10309.     ConditionState = SPECIAL_CHEERING
  10310.       Animation = UIMOB03_SKL.UIMOB03_CHA
  10311.       AnimationMode = ONCE
  10312.     End
  10313.  
  10314.     ;--------------------------------------------------------
  10315.     ; TRANSITION FROM PISTOL TO AK47
  10316.     TransitionState = TRANS_STAND_A TRANS_STAND_AK
  10317.       Animation = UIMOB03_SKL.UIMOB03_TA-D
  10318.       AnimationMode = ONCE
  10319.     End
  10320.  
  10321.  
  10322.     ; WHILE CARRYING AK47 
  10323.     ;---------------------------------------------------------
  10324.     ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
  10325.       Model = UIMOB03_SKN
  10326.       IdleAnimation = UIMOB03_SKL.UIMOB03_IDD1 0 6
  10327.       IdleAnimation = UIMOB03_SKL.UIMOB03_IDD2 0 6
  10328.       IdleAnimation = UIMOB03_SKL.UIMOB03_CHD  0 6
  10329.       IdleAnimation = UIMOB03_SKL.UIMOB03_STD
  10330.       AnimationMode = ONCE
  10331.       AnimationSpeedFactorRange 0.9 1.1
  10332.       TransitionKey = TRANS_STAND_AK
  10333.     End
  10334.  
  10335.     ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
  10336.       Animation = UIMOB03_SKL.UIMOB03_RND 
  10337.       AnimationMode = LOOP
  10338.       Flags = RANDOMSTART
  10339.       TransitionKey   = MOVING_AK
  10340.     End
  10341.  
  10342.     ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
  10343.       Animation = UIMOB03_SKL.UIMOB03_DD1    
  10344.       Animation = UIMOB03_SKL.UIMOB03_DD2
  10345.       AnimationMode = ONCE
  10346.       TransitionKey = TRANS_Dying
  10347.     End
  10348.  
  10349.     ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
  10350.       Animation = UIMOB03_SKL.UIMOB03_CHD
  10351.       AnimationMode = ONCE
  10352.     End
  10353.  
  10354.     ; Drawing AK47
  10355.     ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
  10356.       Animation     = UIMOB03_SKL.UIMOB03_ATD_ST ; start firing
  10357.       AnimationMode = ONCE
  10358.     End
  10359.     AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
  10360.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
  10361.  
  10362.     ; Firing Gun
  10363.     ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
  10364.       Animation = UIMOB03_SKL.UIMOB03_ATD_LP ; looping firing
  10365.       AnimationMode = LOOP
  10366.       WeaponFireFXBone = SECONDARY MuzzleAK
  10367.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  10368.       TransitionKey = TRANS_FIRING_AK
  10369.     End
  10370.     AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
  10371.  
  10372.  
  10373.     ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
  10374.       Animation     = UIMOB03_SKL.UIMOB03_ATD_ED ; end firing
  10375.       AnimationMode = ONCE
  10376.     End
  10377.  
  10378.  
  10379.     ; This transition allows him to put his gun away when he's finished attacking.
  10380.     TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
  10381.       Animation     = UIMOB03_SKL.UIMOB03_ATD_ED ; end firing
  10382.       AnimationMode = ONCE
  10383.     End
  10384.  
  10385.  
  10386. ;    ;Throwing bottle----------------------------------------------------------------
  10387. ;    ConditionState = PREATTACK_C 
  10388. ;      Animation     = UIMOB03_SKL.UIMOB03_ATCA_BF ; the wind up
  10389. ;    End
  10390. ;    AliasConditionState = PREATTACK_C FIRING_A
  10391. ;    AliasConditionState = PREATTACK_C RELOADING_A
  10392. ;    AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  10393. ;
  10394. ;    ConditionState = FIRING_C 
  10395. ;      Animation     = UIMOB03_SKL.UIMOB03_ATCA_AF ; the release and follow-thru
  10396. ;      TransitionKey = TRANS_THROW
  10397. ;    End
  10398. ;    AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
  10399. ;
  10400. ;    ConditionState RELOADING_C
  10401. ;      Animation =UIMOB03_SKL.UIMOB03_IDA1
  10402. ;      WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  10403. ;
  10404. ;    End
  10405. ;    AliasConditionState = RELOADING_C RELOADING_A
  10406. ;    AliasConditionState = RELOADING_C FIRING_A
  10407. ;    AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
  10408.  
  10409.  
  10410. ;    TransitionState = TRANSXXX TRANS_THROW
  10411. ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway gun and take out bottle
  10412. ;    End
  10413.  
  10414. ;    TransitionState = TRANS_THROW TRANS_FIRING_A
  10415. ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get PISTOL
  10416. ;    End
  10417.  
  10418. ;    TransitionState = TRANSXXXAK TRANS_THROW
  10419. ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway AK and take out bottle
  10420. ;    End
  10421.  
  10422. ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
  10423. ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get AK
  10424. ;    End
  10425.  
  10426.  
  10427.  
  10428.  
  10429.  
  10430.     ;--------------------------------------------------------
  10431.  
  10432.  
  10433.  
  10434.  
  10435.  
  10436.  
  10437.     TransitionState = TRANS_Dying TRANS_Flailing
  10438.       Animation = UIMOB03_SKL.UIMOB03_A_ADTD1
  10439.       Animation = UIMOB03_SKL.UIMOB03_D_ADTD1
  10440.       AnimationMode = ONCE
  10441.     End
  10442.  
  10443.     ConditionState = DYING EXPLODED_FLAILING
  10444.       Animation = UIMOB03_SKL.UIMOB03_A_ADTD2
  10445.       Animation = UIMOB03_SKL.UIMOB03_D_ADTD2
  10446.       AnimationMode = LOOP
  10447.       TransitionKey = TRANS_Flailing
  10448.     End
  10449.  
  10450.     ConditionState = DYING EXPLODED_BOUNCING
  10451.       Animation = UIMOB03_SKL.UIMOB03_A_ADTD3
  10452.       Animation = UIMOB03_SKL.UIMOB03_D_ADTD3
  10453.       AnimationMode = ONCE
  10454.       TransitionKey = None
  10455.     End
  10456.  
  10457.  
  10458.   End
  10459.  
  10460.  
  10461.   Geometry = CYLINDER
  10462.   GeometryMajorRadius = 3.0 ; very thin
  10463.   GeometryMinorRadius = 3.0 ; very thinD
  10464.   GeometryHeight = 12.0
  10465.   GeometryIsSmall = Yes
  10466.  
  10467. End
  10468.  
  10469. ;------------------------------------------------------------------------------
  10470. ;------------------------------------------------------------------------------
  10471. ObjectReskin GLAInfantryAngryMobRock04 GLAInfantryAngryMobRock02
  10472.  
  10473. ;**** ART Parameters ***
  10474.   Draw = W3DModelDraw ModuleTag_01
  10475.     OkToChangeModelColor = Yes
  10476.  
  10477.     ; WHILE CARRYING ROCK
  10478.     ;---------------------------------------------------------
  10479.     DefaultConditionState
  10480.       Model = UIMOB04_SKN
  10481.       IdleAnimation = UIMOB04_SKL.UIMOB04_IDB1 0 12
  10482.       IdleAnimation = UIMOB04_SKL.UIMOB04_IDB2 0 5 
  10483.       IdleAnimation = UIMOB04_SKL.UIMOB04_CHB  0 5 
  10484.       IdleAnimation = UIMOB04_SKL.UIMOB04_STB  0 12
  10485.       AnimationMode = ONCE
  10486.       AnimationSpeedFactorRange 0.9 1.1
  10487.       TransitionKey = TRANS_STAND_A
  10488.       WaitForStateToFinishIfPossible TRANS_FIRING_A
  10489.  
  10490.       ;WeaponFireFXBone  = PRIMARY   "UIMOB04 R HAND"
  10491.       ;WeaponMuzzleFlash = PRIMARY   "UIMOB04 R HAND"
  10492.       WeaponFireFXBone =  SECONDARY MuzzleAK
  10493.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  10494.     End
  10495.  
  10496.  
  10497.     ; Drawing rock
  10498.     ConditionState  = PREATTACK_A
  10499.       Animation     = UIMOB04_SKL.UIMOB04_ATB2_BF ; wind up
  10500.       AnimationMode = ONCE
  10501.       AnimationSpeedFactorRange 1.0 1.0
  10502.     End
  10503.     AliasConditionState = PREATTACK_A FIRING_A
  10504.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  10505.  
  10506.     ; throwing rock
  10507.     ConditionState = FIRING_A
  10508.       Animation = UIMOB04_SKL.UIMOB04_ATB1_AF ; throw
  10509.       Animation = UIMOB04_SKL.UIMOB04_ATB2_AF ; throw
  10510.       AnimationMode = ONCE
  10511.       TransitionKey = TRANS_FIRING_A
  10512.     End
  10513.  
  10514.     ConditionState = BETWEEN_FIRING_SHOTS_A
  10515.       Animation         = UIMOB04_SKL.UIMOB04_STB
  10516.       AnimationMode     = ONCE
  10517.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  10518.       ; and a long recycle time between shots. we want him to finish his fire animation
  10519.       ; (unless he's ordered to do something else), so this is just a handy trick that
  10520.       ; says, "if the previous state had this transition key, allow it to finish before
  10521.       ; switching to us, if possible".
  10522.       WaitForStateToFinishIfPossible = TRANS_FIRING_A
  10523.     End
  10524.     AliasConditionState = RELOADING_A
  10525.  
  10526.     ConditionState = MOVING
  10527.       Animation = UIMOB04_SKL.UIMOB04_RUN 
  10528.       AnimationMode = LOOP
  10529.       Flags = RANDOMSTART
  10530.       TransitionKey   = MOVING
  10531.       ParticleSysBone   = None InfantryDustTrails
  10532.     End
  10533.  
  10534.     ConditionState = DYING
  10535.       Animation = UIMOB04_SKL.UIMOB04_DB1    
  10536.       Animation = UIMOB04_SKL.UIMOB04_DB2
  10537.       AnimationMode = ONCE
  10538.       TransitionKey = TRANS_Dying
  10539.     End
  10540.  
  10541.     ConditionState = SPECIAL_CHEERING
  10542.       Animation = UIMOB04_SKL.UIMOB04_CHB
  10543.       Flags = RANDOMSTART
  10544.       AnimationMode = LOOP
  10545.     End
  10546.  
  10547.  
  10548.  
  10549.  
  10550.  
  10551.  
  10552.  
  10553.  
  10554.     ;--------------------------------------------------------
  10555.     ; TRANSITION FROM PISTOL TO AK47
  10556.     TransitionState = TRANS_STAND_A TRANS_STAND_AK
  10557.       Animation = UIMOB04_SKL.UIMOB04_TB-D
  10558.       AnimationMode = ONCE
  10559.     End
  10560.  
  10561.  
  10562.     ; WHILE CARRYING AK47 
  10563.     ;---------------------------------------------------------
  10564.     ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
  10565.       Model = UIMOB04_SKN
  10566.       IdleAnimation = UIMOB04_SKL.UIMOB04_IDD1 0 6
  10567.       IdleAnimation = UIMOB04_SKL.UIMOB04_IDD2 0 6
  10568.       IdleAnimation = UIMOB04_SKL.UIMOB04_CHD  0 6
  10569.       IdleAnimation = UIMOB04_SKL.UIMOB04_STD
  10570.       AnimationMode = ONCE
  10571.       AnimationSpeedFactorRange 0.9 1.1
  10572.       TransitionKey = TRANS_STAND_AK
  10573.       WeaponFireFXBone = SECONDARY MuzzleAK
  10574.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  10575.     End
  10576.  
  10577.     ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
  10578.       Animation = UIMOB04_SKL.UIMOB04_RND 
  10579.       AnimationMode = LOOP
  10580.       Flags = RANDOMSTART
  10581.       TransitionKey   = MOVING_AK
  10582.     End
  10583.  
  10584.     ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
  10585.       Animation = UIMOB04_SKL.UIMOB04_DD1    
  10586.       Animation = UIMOB04_SKL.UIMOB04_DD2
  10587.       AnimationMode = ONCE
  10588.       TransitionKey = TRANS_Dying
  10589.     End
  10590.  
  10591.     ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
  10592.       Animation = UIMOB04_SKL.UIMOB04_CHD
  10593.       AnimationMode = ONCE
  10594.     End
  10595.  
  10596.     ; Drawing AK47
  10597.     ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
  10598.       Animation     = UIMOB04_SKL.UIMOB04_ATD1_ST ; start firing
  10599.       AnimationMode = ONCE
  10600.     End
  10601.     AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
  10602.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
  10603.  
  10604.     ; Firing Gun
  10605.     ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
  10606.       Animation = UIMOB04_SKL.UIMOB04_ATD1_LP ; looping firing
  10607.       AnimationMode = LOOP
  10608.       WeaponFireFXBone = PRIMARY MuzzleAK
  10609.       WeaponMuzzleFlash = PRIMARY MuzzleAKFX
  10610.       TransitionKey = TRANS_FIRING_AK
  10611.     End
  10612.     AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
  10613.  
  10614.  
  10615.     ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
  10616.       Animation     = UIMOB04_SKL.UIMOB04_ATD1_ED ; end firing
  10617.       AnimationMode = ONCE
  10618.     End
  10619.  
  10620.  
  10621.     ; This transition allows him to put his gun away when he's finished attacking.
  10622.     TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
  10623.       Animation     = UIMOB04_SKL.UIMOB04_ATD1_ED ; end firing
  10624.       AnimationMode = ONCE
  10625.     End
  10626.  
  10627.  
  10628.  
  10629.  
  10630.  
  10631.  
  10632.  
  10633.  
  10634.  
  10635.  
  10636.     TransitionState = TRANS_Dying TRANS_Flailing
  10637.       Animation = UIMOB04_SKL.UIMOB04_B_ADTF1
  10638.       Animation = UIMOB04_SKL.UIMOB04_D_ADTF1
  10639.       AnimationMode = ONCE
  10640.     End
  10641.  
  10642.     ConditionState = DYING EXPLODED_FLAILING
  10643.       Animation = UIMOB04_SKL.UIMOB04_B_ADTF2
  10644.       Animation = UIMOB04_SKL.UIMOB04_D_ADTF2
  10645.       AnimationMode = LOOP
  10646.       TransitionKey = TRANS_Flailing
  10647.     End
  10648.  
  10649.     ConditionState = DYING EXPLODED_BOUNCING
  10650.       Animation = UIMOB04_SKL.UIMOB04_B_ADTF3
  10651.       Animation = UIMOB04_SKL.UIMOB04_D_ADTF3
  10652.       AnimationMode = ONCE
  10653.       TransitionKey = None
  10654.     End
  10655.  
  10656.  
  10657.   End
  10658.  
  10659.   Geometry = CYLINDER
  10660.   GeometryMajorRadius = 5.0 ; kinda thin
  10661.   GeometryMinorRadius = 5.0 ; kinda thinD
  10662.   GeometryHeight = 12.0
  10663.   GeometryIsSmall = Yes
  10664.  
  10665. End
  10666.  
  10667. ;------------------------------------------------------------------------------
  10668. ;------------------------------------------------------------------------------
  10669. ObjectReskin GLAInfantryAngryMobPistol05 GLAInfantryAngryMobPistol01
  10670.  
  10671. ;**** ART Parameters ***
  10672.   Draw = W3DModelDraw DrawTag_01
  10673.     OkToChangeModelColor = Yes
  10674.  
  10675.  
  10676.  
  10677.     ; WHILE CARRYING PISTOL
  10678.     ;---------------------------------------------------------
  10679.     DefaultConditionState ;Idle with Pistol Holstered
  10680.       Model = UIMOB05_SKN
  10681.       IdleAnimation = UIMOB05_SKL.UIMOB05_IDA1 0 12
  10682.       IdleAnimation = UIMOB05_SKL.UIMOB05_IDA2 0 5
  10683.       IdleAnimation = UIMOB05_SKL.UIMOB05_CHA  0 5
  10684.       IdleAnimation = UIMOB05_SKL.UIMOB05_STA  0 5
  10685.       AnimationMode = ONCE
  10686.       AnimationSpeedFactorRange 0.9 1.1
  10687.       TransitionKey = TRANS_STAND_A
  10688.  
  10689.       WeaponFireFXBone = PRIMARY Muzzle01
  10690.       WeaponMuzzleFlash = PRIMARY Muzzle01
  10691.     End
  10692.  
  10693.     ; Drawing pistol
  10694.     ConditionState  = PREATTACK_A
  10695.       Animation     = UIMOB05_SKL.UIMOB05_ATA1_ST ; start firing
  10696.       AnimationMode = ONCE
  10697.     End
  10698.     AliasConditionState = PREATTACK_A FIRING_A
  10699.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  10700.  
  10701.     ; Firing pistol
  10702.     ConditionState = FIRING_A
  10703.       Animation = UIMOB05_SKL.UIMOB05_ATA1_LP ; looping firing
  10704.       AnimationMode = LOOP
  10705.       TransitionKey = TRANS_FIRING_A
  10706.     End
  10707.     AliasConditionState  = BETWEEN_FIRING_SHOTS_A
  10708.     
  10709.     ConditionState  = RELOADING_A
  10710.       Animation     = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing
  10711.       AnimationMode = ONCE
  10712.     End
  10713.  
  10714.     ; This transition allows him to put his gun away when he's finished attacking.
  10715.     TransitionState = TRANS_FIRING_A TRANS_STAND_A
  10716.       Animation     = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing
  10717.       AnimationMode = ONCE
  10718.     End
  10719.  
  10720.     ConditionState = MOVING
  10721.       Animation = UIMOB05_SKL.UIMOB05_RNA 
  10722.       AnimationMode = LOOP
  10723.       Flags = RANDOMSTART
  10724.       TransitionKey   = MOVING
  10725.       ParticleSysBone   = None InfantryDustTrails
  10726.     End
  10727.     AliasConditionState = MOVING RELOADING_A
  10728.     AliasConditionState = MOVING PREATTACK_A
  10729.     AliasConditionState = MOVING FIRING_A
  10730.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  10731.     AliasConditionState = MOVING RELOADING_C RELOADING_A 
  10732.     AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  10733.  
  10734.     ConditionState = DYING
  10735.       Animation = UIMOB05_SKL.UIMOB05_DA1    
  10736.       Animation = UIMOB05_SKL.UIMOB05_DA2
  10737.       AnimationMode = ONCE
  10738.       TransitionKey = TRANS_Dying
  10739.     End
  10740.  
  10741.  
  10742.     ConditionState = SPECIAL_CHEERING
  10743.       Animation = UIMOB05_SKL.UIMOB05_CHA
  10744.       AnimationMode = ONCE
  10745.     End
  10746.  
  10747.     ;--------------------------------------------------------
  10748.  
  10749.     ; TRANSITION FROM PISTOL TO AK47
  10750.     TransitionState = TRANS_STAND_A TRANS_STAND_AK
  10751.       Animation = UIMOB05_SKL.UIMOB05_TA-D
  10752.       AnimationMode = ONCE
  10753.     End
  10754.  
  10755.  
  10756.     ; WHILE CARRYING AK47 
  10757.     ;---------------------------------------------------------
  10758.     ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
  10759.       Model = UIMOB05_SKN
  10760.       IdleAnimation = UIMOB05_SKL.UIMOB05_IDD1 0 6
  10761.       IdleAnimation = UIMOB05_SKL.UIMOB05_IDD2 0 6
  10762.       IdleAnimation = UIMOB05_SKL.UIMOB05_CHD  0 6
  10763.       IdleAnimation = UIMOB05_SKL.UIMOB05_STD
  10764.       AnimationMode = ONCE
  10765.       AnimationSpeedFactorRange 0.9 1.1
  10766.       TransitionKey = TRANS_STAND_AK
  10767.       WeaponFireFXBone = SECONDARY MuzzleAK
  10768.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  10769.     End
  10770.  
  10771.     ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
  10772.       Animation = UIMOB05_SKL.UIMOB05_RND 
  10773.       AnimationMode = LOOP
  10774.       Flags = RANDOMSTART
  10775.       TransitionKey   = MOVING_AK
  10776.     End
  10777.  
  10778.     ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
  10779.       Animation = UIMOB05_SKL.UIMOB05_DD1    
  10780.       Animation = UIMOB05_SKL.UIMOB05_DD2
  10781.       AnimationMode = ONCE
  10782.       TransitionKey = TRANS_Dying
  10783.     End
  10784.  
  10785.     ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
  10786.       Animation = UIMOB05_SKL.UIMOB05_CHD
  10787.       AnimationMode = ONCE
  10788.     End
  10789.  
  10790.     ; Drawing AK47
  10791.     ConditionState  = PREATTACK_B WEAPONSET_PLAYER_UPGRADE
  10792.       Animation     = UIMOB05_SKL.UIMOB05_ATD1_ST ; start firing
  10793.       AnimationMode = ONCE
  10794.     End
  10795.     AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE
  10796.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
  10797.  
  10798.     ; Firing Gun
  10799.     ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE
  10800.       Animation = UIMOB05_SKL.UIMOB05_ATD1_LP ; looping firing
  10801.       AnimationMode = LOOP
  10802.       WeaponFireFXBone = PRIMARY MuzzleAK
  10803.       WeaponMuzzleFlash = PRIMARY MuzzleAKFX
  10804.       TransitionKey = TRANS_FIRING_AK
  10805.     End
  10806.     AliasConditionState  = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE
  10807.  
  10808.  
  10809.     ConditionState  = RELOADING_B WEAPONSET_PLAYER_UPGRADE
  10810.       Animation     = UIMOB05_SKL.UIMOB05_ATD1_ED ; end firing
  10811.       AnimationMode = ONCE
  10812.     End
  10813.  
  10814.  
  10815.     ; This transition allows him to put his gun away when he's finished attacking.
  10816.     TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
  10817.       Animation     = UIMOB05_SKL.UIMOB05_ATD1_ED ; end firing
  10818.       AnimationMode = ONCE
  10819.     End
  10820.  
  10821.  
  10822. ;    ;Throwing bottle----------------------------------------------------------------
  10823. ;    ConditionState = PREATTACK_C 
  10824. ;      Animation     = UIMOB05_SKL.UIMOB05_ATCA_BF ; the wind up
  10825. ;    End
  10826. ;    AliasConditionState = PREATTACK_C FIRING_A
  10827. ;    AliasConditionState = PREATTACK_C RELOADING_A
  10828. ;    AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  10829. ;
  10830. ;    ConditionState = FIRING_C 
  10831. ;      Animation     = UIMOB05_SKL.UIMOB05_ATCA_AF ; the release and follow-thru
  10832. ;      TransitionKey = TRANS_THROW
  10833. ;    End
  10834. ;    AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
  10835. ;
  10836. ;    ConditionState RELOADING_C
  10837. ;      Animation =UIMOB05_SKL.UIMOB05_IDA1
  10838. ;      WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  10839. ;    End
  10840. ;    AliasConditionState = RELOADING_C RELOADING_A
  10841. ;    AliasConditionState = RELOADING_C FIRING_A
  10842. ;    AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
  10843.  
  10844.  
  10845. ;    TransitionState = TRANSXXX TRANS_THROW
  10846. ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway gun and take out bottle
  10847. ;    End
  10848.  
  10849. ;    TransitionState = TRANS_THROW TRANS_FIRING_A
  10850. ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get PISTOL
  10851. ;    End
  10852.  
  10853. ;    TransitionState = TRANSXXXAK TRANS_THROW
  10854. ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway AK and take out bottle
  10855. ;    End
  10856.  
  10857.  
  10858. ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
  10859. ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get AK
  10860. ;    End
  10861.  
  10862.  
  10863.  
  10864.  
  10865.  
  10866.     ;--------------------------------------------------------
  10867.  
  10868.  
  10869.  
  10870.  
  10871.  
  10872.  
  10873.     TransitionState = TRANS_Dying TRANS_Flailing
  10874.       Animation = UIMOB05_SKL.UIMOB05_A_ADTA1
  10875.       Animation = UIMOB05_SKL.UIMOB05_D_ADTA1
  10876.       AnimationMode = ONCE
  10877.     End
  10878.  
  10879.     ConditionState = DYING EXPLODED_FLAILING
  10880.       Animation = UIMOB05_SKL.UIMOB05_A_ADTA2
  10881.       Animation = UIMOB05_SKL.UIMOB05_D_ADTA2
  10882.       AnimationMode = LOOP
  10883.       TransitionKey = TRANS_Flailing
  10884.     End
  10885.  
  10886.     ConditionState = DYING EXPLODED_BOUNCING
  10887.       Animation = UIMOB05_SKL.UIMOB05_A_ADTA3
  10888.       Animation = UIMOB05_SKL.UIMOB05_D_ADTA3
  10889.       AnimationMode = ONCE
  10890.       TransitionKey = None
  10891.     End
  10892.  
  10893.  
  10894.   End
  10895.  
  10896.  
  10897.  
  10898.   Geometry = CYLINDER
  10899.   GeometryMajorRadius = 3.0 ; very thin
  10900.   GeometryMinorRadius = 3.0 ; very thinD
  10901.   GeometryHeight = 12.0
  10902.   GeometryIsSmall = Yes
  10903.  
  10904. End
  10905.  
  10906.  
  10907. ;------------------------------------------------------------------------------
  10908. ;------------------------------------------------------------------------------
  10909. Object GLAInfantryAngryMobMolotov02
  10910.  
  10911. ;**** ART Parameters ***
  10912.   Draw = W3DModelDraw ModuleTag_01
  10913.     OkToChangeModelColor = Yes
  10914.  
  10915.     ; WHILE CARRYING ROCK
  10916.     ;---------------------------------------------------------
  10917.     DefaultConditionState
  10918.       Model = UIMOB02_SKN
  10919.       IdleAnimation = UIMOB02_SKL.UIMOB02_IDB1 0 12
  10920.       IdleAnimation = UIMOB02_SKL.UIMOB02_IDB2 0 5
  10921.       IdleAnimation = UIMOB02_SKL.UIMOB02_CHB  0 5
  10922.       IdleAnimation = UIMOB02_SKL.UIMOB02_STB  0 12
  10923.       AnimationMode = ONCE
  10924.       AnimationSpeedFactorRange 0.9 1.1
  10925.       TransitionKey = TRANS_STAND_B
  10926.  
  10927.       WeaponFireFXBone  = SECONDARY   "UIMOB02 R HAND"
  10928.  
  10929.     End
  10930.  
  10931.  
  10932.     ; Drawing rock
  10933.     ConditionState  = PREATTACK_B
  10934.       Animation     = UIMOB02_SKL.UIMOB02_ATCB_BF ; wind up
  10935.       AnimationMode = ONCE
  10936.     End
  10937.     AliasConditionState = PREATTACK_B FIRING_B
  10938.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
  10939.  
  10940.     ; throwing rock
  10941.     ConditionState = FIRING_B
  10942.       Animation = UIMOB02_SKL.UIMOB02_ATCB_AF ; throw
  10943.       AnimationMode = ONCE
  10944.       TransitionKey = TRANS_FIRING_B
  10945.     End
  10946.  
  10947.     ConditionState = BETWEEN_FIRING_SHOTS_B
  10948.       Animation         = UIMOB02_SKL.UIMOB02_STB
  10949.       AnimationMode     = ONCE
  10950.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  10951.       ; and a long recycle time between shots. we want him to finish his fire animation
  10952.       ; (unless he's ordered to do something else), so this is just a handy trick that
  10953.       ; says, "if the previous state had this transition key, allow it to finish before
  10954.       ; switching to us, if possible".
  10955.       WaitForStateToFinishIfPossible = TRANS_FIRING_B
  10956.     End
  10957.     AliasConditionState = RELOADING_B
  10958.  
  10959.  
  10960.     ConditionState = MOVING
  10961.       Animation = UIMOB02_SKL.UIMOB02_RNB 
  10962.       AnimationMode = LOOP
  10963.       Flags = RANDOMSTART
  10964.       TransitionKey   = MOVING
  10965.       ParticleSysBone   = None InfantryDustTrails
  10966.     End
  10967.  
  10968.     ConditionState = DYING
  10969.       Animation = UIMOB02_SKL.UIMOB02_DB1    
  10970.       Animation = UIMOB02_SKL.UIMOB02_DB2
  10971.       AnimationMode = ONCE
  10972.       TransitionKey = TRANS_Dying
  10973.     End
  10974.  
  10975.     ConditionState = SPECIAL_CHEERING
  10976.       Animation = UIMOB02_SKL.UIMOB02_CHB
  10977.       Flags = RANDOMSTART
  10978.       AnimationMode = LOOP
  10979.     End
  10980.  
  10981.  
  10982.  
  10983.  
  10984.  
  10985.  
  10986.     TransitionState = TRANS_Dying TRANS_Flailing
  10987.       Animation = UIMOB02_SKL.UIMOB02_B_ADTA1
  10988.       Animation = UIMOB02_SKL.UIMOB02_D_ADTA1
  10989.       AnimationMode = ONCE
  10990.     End
  10991.  
  10992.     ConditionState = DYING EXPLODED_FLAILING
  10993.       Animation = UIMOB02_SKL.UIMOB02_B_ADTA2
  10994.       Animation = UIMOB02_SKL.UIMOB02_D_ADTA2
  10995.       AnimationMode = LOOP
  10996.       TransitionKey = TRANS_Flailing
  10997.     End
  10998.  
  10999.     ConditionState = DYING EXPLODED_BOUNCING
  11000.       Animation = UIMOB02_SKL.UIMOB02_B_ADTA3
  11001.       Animation = UIMOB02_SKL.UIMOB02_D_ADTA3
  11002.       AnimationMode = ONCE
  11003.       TransitionKey = None
  11004.     End
  11005.  
  11006.  
  11007.   End
  11008.  
  11009.  
  11010. ;**** DESIGN parameters ***
  11011.  
  11012.   DisplayName      = OBJECT:AngryMob
  11013.   Side = GLA
  11014.   EditorSorting = INFANTRY
  11015.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  11016.  
  11017.   WeaponSet
  11018.     Conditions = None 
  11019.     Weapon = PRIMARY GLAAngryMobMolotovCocktailProjectileWeapon ; all she does is throw molotovs
  11020.   End
  11021.  
  11022.   ArmorSet
  11023.     Conditions      = None
  11024.     Armor           = HumanArmor
  11025.     DamageFX        = InfantryDamageFX
  11026.   End
  11027.  
  11028.   VisionRange = 150
  11029.   ShroudClearingRange = 150
  11030.   Prerequisites
  11031.     Object = GLABarracks
  11032.  
  11033.   End
  11034.   BuildCost = 100
  11035.   BuildTime = 0.0            
  11036.  
  11037.   ExperienceValue = 5 5 5 5    ;Experience point value at each level
  11038.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  11039.   IsTrainable = Yes             ;Can gain experience
  11040.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  11041.  
  11042.   ; *** AUDIO Parameters ***
  11043.   VoiceSelect = NoSound 
  11044.   VoiceMove = NoSound   
  11045.   VoiceAttack = NoSound 
  11046.   SoundDie = CivilianArabFemaleDie
  11047.  
  11048.  
  11049. ;**** ENGINEERING Parameters *** ;MOB02
  11050.   RadarPriority = UNIT
  11051.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
  11052.  
  11053.   Body = ActiveBody BodyTag_01
  11054.     MaxHealth       = 50.0
  11055.     InitialHealth   = 50.0
  11056.   End
  11057.  
  11058.   Behavior = AIUpdateInterface ModuleTag_03
  11059.     AutoAcquireEnemiesWhenIdle = Yes
  11060.   End
  11061.  
  11062.   Behavior = MobMemberSlavedUpdate ModuleTag_04
  11063.     MustCatchUpRadius   = 40
  11064.     NoNeedToCatchUpRadius = 15
  11065.     Squirrelliness = 0.05
  11066.     CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
  11067.   End
  11068.  
  11069.   Locomotor = SET_NORMAL AngryMobNormalLocomotor
  11070.   Locomotor = SET_WANDER AngryMobWanderLocomotor
  11071.   Locomotor = SET_PANIC AngryMobPanicLocomotor
  11072.  
  11073.   Behavior = PhysicsBehavior ModuleTag_05
  11074.     Mass = 5.0
  11075.   End
  11076.  
  11077.   Behavior = SquishCollide ModuleTag_08
  11078.     ;nothing
  11079.   End
  11080.  
  11081.   Behavior = WeaponSetUpgrade UpgradeTag_01
  11082.     TriggeredBy = Upgrade_GLAArmTheMob
  11083.   End
  11084.  
  11085.  
  11086. ; --- begin Death modules ---
  11087.   Behavior = SlowDeathBehavior ModuleTag_Death01
  11088.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  11089.     SinkDelay           = 3000
  11090.     SinkRate            = 0.5     ; in Dist/Sec
  11091.     DestructionDelay    = 8000
  11092.     FX                  = INITIAL FX_GIDie
  11093.   End
  11094.   Behavior = SlowDeathBehavior ModuleTag_Death02
  11095.     DeathTypes          = NONE +CRUSHED +SPLATTED
  11096.     SinkDelay           = 3000
  11097.     SinkRate            = 0.5     ; in Dist/Sec
  11098.     DestructionDelay    = 8000
  11099.     FX                  = INITIAL FX_GIDieCrushed
  11100.   End
  11101.   Behavior = SlowDeathBehavior ModuleTag_Death03
  11102.     DeathTypes          = NONE +EXPLODED
  11103.     SinkDelay           = 3000
  11104.     SinkRate            = 0.5     ; in Dist/Sec
  11105.     DestructionDelay    = 8000
  11106.     FX                  = INITIAL FX_GIDie
  11107.     FlingForce          = 8
  11108.     FlingForceVariance  = 3
  11109.     FlingPitch          = 60
  11110.     FlingPitchVariance  = 10
  11111.   End
  11112.   Behavior = SlowDeathBehavior ModuleTag_Death04
  11113.     DeathTypes          = NONE +BURNED
  11114.     DestructionDelay    = 0
  11115.     FX                  = INITIAL FX_GIDie
  11116.     OCL                 = INITIAL OCL_FlamingInfantry
  11117.   End
  11118.   Behavior = SlowDeathBehavior ModuleTag_Death05
  11119.     DeathTypes          = NONE +POISONED
  11120.     DestructionDelay    = 0
  11121.     FX                  = INITIAL FX_GIDie
  11122.     OCL                 = INITIAL OCL_ToxicInfantry
  11123.   End
  11124. ; --- end Death modules ---
  11125.  
  11126.   Behavior = PoisonedBehavior ModuleTag_13
  11127.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  11128.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  11129.   End
  11130.  
  11131.   Geometry = CYLINDER
  11132.   GeometryMajorRadius = 4.0 ; very thin
  11133.   GeometryHeight = 12.0
  11134.   GeometryIsSmall = Yes
  11135.   Shadow = SHADOW_DECAL
  11136.   ShadowSizeX = 14;
  11137.   ShadowSizeY = 14;
  11138.   ShadowTexture = ShadowI;
  11139.   BuildCompletion = APPEARS_AT_RALLY_POINT
  11140.  
  11141. End
  11142.  
  11143. ;------------------------------------------------------------------------------
  11144. ;------------------------------------------------------------------------------
  11145.  
  11146.  
  11147.  
  11148. ;------------------------------------------------------------------------------
  11149. ;------------------------------------------------------------------------------
  11150. ;------------------------------------------------------------------------------
  11151. Object GLAInfantryHijacker
  11152.  
  11153.   ; *** ART Parameters ***
  11154.   SelectPortrait         = SUHijacker_L
  11155.   ButtonImage            = SUHijacker
  11156.   
  11157.   ;UpgradeCameo1 = NONE
  11158.   ;UpgradeCameo2 = NONE
  11159.   ;UpgradeCameo3 = NONE
  11160.   ;UpgradeCameo4 = NONE
  11161.   ;UpgradeCameo5 = NONE
  11162.  
  11163.   Draw = W3DModelDraw ModuleTag_01
  11164.     OkToChangeModelColor = Yes
  11165.  
  11166.     DefaultConditionState
  11167.       Model = UIHJCK_SKN
  11168.       IdleAnimation = UIHJCK_SKL.UIHJCK_STA 0 25
  11169.       IdleAnimation = UIHJCK_SKL.UIHJCK_IDA
  11170.       IdleAnimation = UIHJCK_SKL.UIHJCK_IDB
  11171.       AnimationMode = ONCE
  11172.       TransitionKey = TRANS_Stand
  11173.     End
  11174.     AliasConditionState = REALLYDAMAGED
  11175.  
  11176.     ConditionState = MOVING
  11177.       Animation = UIHJCK_SKL.UIHJCK_RUN 
  11178.       AnimationMode = LOOP
  11179.       Flags = RANDOMSTART
  11180.       TransitionKey = None
  11181.       ParticleSysBone   = None InfantryDustTrails
  11182.     End
  11183.     AliasConditionState = REALLYDAMAGED MOVING
  11184.  
  11185.  
  11186.     ConditionState = DYING
  11187.       Animation = UIHJCK_SKL.UIHJCK_DTA
  11188.       Animation = UIHJCK_SKL.UIHJCK_DTB
  11189.       AnimationMode = ONCE
  11190.       TransitionKey = TRANS_Dying
  11191.     End
  11192.  
  11193.     TransitionState = TRANS_Dying TRANS_Flailing
  11194.       Animation = UIHJCK_SKL.UIHJCK_ADTE1
  11195.       AnimationMode = ONCE
  11196.     End
  11197.  
  11198.     ConditionState = DYING EXPLODED_FLAILING
  11199.       Animation = UIHJCK_SKL.UIHJCK_ADTE2
  11200.       AnimationMode = LOOP
  11201.       TransitionKey = TRANS_Flailing
  11202.     End
  11203.  
  11204.     ConditionState = DYING EXPLODED_BOUNCING
  11205.       Animation = UIHJCK_SKL.UIHJCK_ADTE3
  11206.       AnimationMode = ONCE
  11207.       TransitionKey = None
  11208.     End
  11209.  
  11210.     ConditionState = SPECIAL_CHEERING
  11211.       Animation = UIHJCK_SKL.UIHJCK_CHA
  11212.       AnimationMode = LOOP
  11213.     End
  11214.  
  11215.  
  11216.     ConditionState = PARACHUTING
  11217.       Animation = UIHJCK_SKL.UIHJCK_PHG
  11218.       AnimationMode = LOOP
  11219.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  11220.       TransitionKey = TRANS_Chute
  11221.     End
  11222.     AliasConditionState = PARACHUTING REALLYDAMAGED
  11223.     AliasConditionState = PARACHUTING DYING
  11224.     TransitionState = TRANS_Falling TRANS_Chute
  11225.       Animation = UIHJCK_SKL.UIHJCK_POP
  11226.       AnimationMode = ONCE
  11227.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  11228.     End
  11229.     TransitionState = TRANS_Chute TRANS_Stand
  11230.       Animation = UIHJCK_SKL.UIHJCK_PTD
  11231.       AnimationMode = ONCE
  11232.     End
  11233.   End
  11234.  
  11235.   ; ***DESIGN parameters ***
  11236.   DisplayName      = OBJECT:Hijacker
  11237.   Side = GLA
  11238.   EditorSorting = INFANTRY
  11239.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  11240.   
  11241.   
  11242.  
  11243.   ArmorSet
  11244.     Conditions      = None
  11245.     Armor           = HumanArmor
  11246.     DamageFX        = InfantryDamageFX
  11247.   End
  11248.  
  11249.   VisionRange = 100
  11250.   ShroudClearingRange = 200
  11251.   Prerequisites
  11252.     Object = GLABarracks
  11253.     Object = GLAPalace
  11254.     Science = SCIENCE_Hijacker
  11255.   End
  11256.  
  11257.   BuildCost = 400
  11258.   BuildTime = 10.0          ;in seconds    
  11259.  
  11260.  
  11261.  
  11262.  
  11263.   ExperienceValue = 50 100 150 400    ;Experience point value at each level
  11264.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  11265.   IsTrainable = No                    ;Can gain experience
  11266.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  11267.   CommandSet    = GLAInfantryHijackerCommandSet
  11268.  
  11269.   ; *** AUDIO Parameters ***
  11270.   VoiceSelect =    HijackerVoiceSelect
  11271.   VoiceMove =      HijackerVoiceMove
  11272.   VoiceGuard =      HijackerVoiceMove
  11273.   VoiceAttack =    HijackerVoiceAttack
  11274.   SoundDie =       HijackerVoiceDie
  11275.   SoundDieFire = DieByFireGLA
  11276.   SoundDieToxin = DieByToxinGLA
  11277.   VoiceFear =      HijackerVoiceFear
  11278.   UnitSpecificSounds
  11279.     VoiceGarrison =  HijackerVoiceGarrison
  11280.     VoiceCreate           = HijackerVoiceCreate
  11281.     VoiceEnter            = HijackerVoiceEnter
  11282.     VoiceEnterHostile     = HijackerVoiceEnterHostile
  11283.     VoiceGetHealed      = HijackerVoiceMove
  11284.   End
  11285.   
  11286.  
  11287.   ; *** ENGINEERING Parameters ***
  11288.   RadarPriority = UNIT
  11289.   KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE STEALTH_GARRISON
  11290.   ;STEALTH_GARRISON Added per Dustin, 12/14--ML
  11291.  
  11292.  
  11293.   Behavior = StealthUpdate ModuleTag_02
  11294.     StealthDelay                = 500                    ; half second delay before stealthy
  11295.     StealthForbiddenConditions  = MOVING ; only stealthy while stationary
  11296.     MoveThresholdSpeed          = 3
  11297.     InnateStealth               = Yes
  11298.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  11299.   End
  11300.  
  11301.   Body = ActiveBody ModuleTag_03
  11302.     MaxHealth       = 100.0
  11303.     InitialHealth   = 100.0
  11304.   End
  11305.  
  11306.   Behavior = HijackerUpdate ModuleTag_04
  11307.     ParachuteName = AmericaParachute
  11308.   End
  11309.  
  11310.   Behavior = AIUpdateInterface ModuleTag_05
  11311.     AutoAcquireEnemiesWhenIdle = Yes
  11312.   End
  11313.   Locomotor = SET_NORMAL JarmenKellLocomotor
  11314.  
  11315.   Behavior = PhysicsBehavior ModuleTag_06
  11316.     Mass = 5.0
  11317.   End
  11318.  
  11319.   Behavior = ConvertToHijackedVehicleCrateCollide       ModuleTag_08
  11320.     RequiredKindOf = VEHICLE      ; This is my car now, infidel!
  11321.   End
  11322.  
  11323.   Behavior = SquishCollide ModuleTag_09
  11324.     ;nothing
  11325.   End
  11326.  
  11327.  
  11328. ; --- begin Death modules ---
  11329.   Behavior = SlowDeathBehavior ModuleTag_Death01
  11330.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  11331.     SinkDelay           = 3000
  11332.     SinkRate            = 0.5     ; in Dist/Sec
  11333.     DestructionDelay    = 8000
  11334.     FX                  = INITIAL FX_GIDie
  11335.   End
  11336.   Behavior = SlowDeathBehavior ModuleTag_Death02
  11337.     DeathTypes          = NONE +CRUSHED +SPLATTED
  11338.     SinkDelay           = 3000
  11339.     SinkRate            = 0.5     ; in Dist/Sec
  11340.     DestructionDelay    = 8000
  11341.     FX                  = INITIAL FX_GIDieCrushed
  11342.   End
  11343.   Behavior = SlowDeathBehavior ModuleTag_Death03
  11344.     DeathTypes          = NONE +EXPLODED
  11345.     SinkDelay           = 3000
  11346.     SinkRate            = 0.5     ; in Dist/Sec
  11347.     DestructionDelay    = 8000
  11348.     FX                  = INITIAL FX_GIDie
  11349.     FlingForce          = 8
  11350.     FlingForceVariance  = 3
  11351.     FlingPitch          = 60
  11352.     FlingPitchVariance  = 10
  11353.   End
  11354.   Behavior = SlowDeathBehavior ModuleTag_Death04
  11355.     DeathTypes          = NONE +BURNED
  11356.     DestructionDelay    = 0
  11357.     FX                  = INITIAL FX_GIDie
  11358.     OCL                 = INITIAL OCL_FlamingInfantry
  11359.   End
  11360.   Behavior = SlowDeathBehavior ModuleTag_Death05
  11361.     DeathTypes          = NONE +POISONED
  11362.     DestructionDelay    = 0
  11363.     FX                  = INITIAL FX_GIDie
  11364.     OCL                 = INITIAL OCL_ToxicInfantry
  11365.   End
  11366.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  11367.     DeathTypes          = NONE +POISONED_BETA
  11368.     DestructionDelay    = 0
  11369.     FX                  = INITIAL FX_GIDie
  11370.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  11371.   End
  11372. ; --- end Death modules ---
  11373.  
  11374.   Behavior = PoisonedBehavior ModuleTag_14
  11375.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  11376.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  11377.   End
  11378.  
  11379.   Geometry = CYLINDER
  11380.   GeometryMajorRadius = 10.0
  11381.   GeometryMinorRadius = 10.0
  11382.   GeometryHeight = 12.0
  11383.   GeometryIsSmall = Yes
  11384.   Shadow = SHADOW_DECAL
  11385.   ShadowSizeX = 14;
  11386.   ShadowSizeY = 14;
  11387.   ShadowTexture = ShadowI;
  11388.   BuildCompletion = APPEARS_AT_RALLY_POINT
  11389.  
  11390. End
  11391.  
  11392. ;------------------------------------------------------------------------------
  11393. Object ChinaInfantryRedguard
  11394.  
  11395.   ; *** ART Parameters ***
  11396.   SelectPortrait         = SNRedGuard_L  
  11397.   ButtonImage            = SNRedGuard_L
  11398.   
  11399.   UpgradeCameo1 = Upgrade_Nationalism
  11400.   UpgradeCameo2 = Upgrade_InfantryCaptureBuilding
  11401.   ;UpgradeCameo3 = NONE
  11402.   ;UpgradeCameo4 = NONE
  11403.   ;UpgradeCameo5 = NONE
  11404.  
  11405.   Draw = W3DModelDraw ModuleTag_01
  11406.  
  11407.     OkToChangeModelColor = Yes
  11408.  
  11409.     ; this says "we don't use these condition states at all, so completely
  11410.     ; ignore them for purposes of matchmaking"... this is useful to help
  11411.     ; reduce the number of AliasConditionState clauses you must add in
  11412.     ; order to avoid ambiguity in some cases.
  11413.     IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
  11414.  
  11415.     ; ------- Standing-Around Animations
  11416.  
  11417.     DefaultConditionState
  11418.       Model               = NICNSC_SKN
  11419.       IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
  11420.       IdleAnimation       = NICNSC_SKL.NICNSC_IDA
  11421.       IdleAnimation       = NICNSC_SKL.NICNSC_IDB
  11422.       AnimationMode       = ONCE
  11423.       WeaponFireFXBone    = PRIMARY Muzzle
  11424.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  11425.       TransitionKey       = TRANS_Stand
  11426.     End
  11427.  
  11428.     ConditionState        = REALLYDAMAGED
  11429.       IdleAnimation       = NICNSC_SKL.NICNSC_STB
  11430.       AnimationMode       = ONCE
  11431.       TransitionKey       = TRANS_StandDamaged
  11432.     End
  11433.  
  11434.     ; ------- Machine Gun Animations
  11435.  
  11436.     ConditionState      = USING_WEAPON_A 
  11437.       Animation         = NICNSC_SKL.NICNSC_ATA
  11438.       AnimationMode     = LOOP
  11439.       TransitionKey     = TRANS_Firing
  11440.     End
  11441.  
  11442.     ConditionState      = USING_WEAPON_A REALLYDAMAGED
  11443.       Animation         = NICNSC_SKL.NICNSC_ATC
  11444.       AnimationMode     = LOOP
  11445.       TransitionKey     = TRANS_FiringDamaged
  11446.     End
  11447.  
  11448.  
  11449.     ; ------- Firing-related Transitions
  11450.  
  11451.     TransitionState   = TRANS_Firing TRANS_FiringDamaged
  11452.       Animation       = NICNSC_SKL.NICNSC_AA2AC
  11453.       AnimationMode   = ONCE
  11454.     End
  11455.  
  11456.     TransitionState   = TRANS_Stand TRANS_Firing
  11457.       Animation       = NICNSC_SKL.NICNSC_SA2AA
  11458.       AnimationMode   = ONCE
  11459.     End
  11460.  
  11461.     TransitionState   = TRANS_Firing TRANS_Stand
  11462.       Animation       = NICNSC_SKL.NICNSC_AA2SA
  11463.       AnimationMode   = ONCE
  11464.     End
  11465.  
  11466.     TransitionState   = TRANS_StandDamaged TRANS_FiringDamaged
  11467.       Animation       = NICNSC_SKL.NICNSC_ATCST
  11468.       AnimationMode   = ONCE
  11469.     End
  11470.  
  11471.     TransitionState   = TRANS_FiringDamaged TRANS_StandDamaged
  11472.       Animation       = NICNSC_SKL.NICNSC_ATCED
  11473.       AnimationMode   = ONCE
  11474.     End
  11475.  
  11476.  
  11477.     ; ------------- Damage Transitions --------------------
  11478.     TransitionState = TRANS_StandDamaged TRANS_RunDamaged
  11479.       Animation       = NICNSC_SKL.NICNSC_AA2AC
  11480.       AnimationMode   = ONCE
  11481.       AnimationSpeedFactorRange = 2 2
  11482.     End
  11483.     TransitionState = TRANS_RunDamaged TRANS_StandDamaged 
  11484.       Animation       = NICNSC_SKL.NICNSC_AA2AC
  11485.       AnimationMode   = ONCE_BACKWARDS
  11486.       AnimationSpeedFactorRange = 2 2
  11487.       Flags           = START_FRAME_LAST
  11488.     End
  11489.     TransitionState = TRANS_Stand TRANS_StandDamaged 
  11490.       Animation       = NICNSC_SKL.NICNSC_AA2SA
  11491.       AnimationMode   = ONCE_BACKWARDS
  11492.       AnimationSpeedFactorRange = 4 5
  11493.       Flags           = START_FRAME_LAST
  11494.     End
  11495.  
  11496.  
  11497.  
  11498.  
  11499.     ; ------- Bayonet Animations
  11500.  
  11501.     ConditionState    = PREATTACK_C 
  11502.       Animation       = NICNSC_SKL.NICNSC_ATB1
  11503.       AnimationMode   = ONCE
  11504.       TransitionKey   = TRANS_Stab
  11505.     End
  11506.     AliasConditionState = PREATTACK_C MOVING
  11507.     AliasConditionState = PREATTACK_C FIRING_C
  11508.     AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C
  11509.  
  11510.     ConditionState      = FIRING_C
  11511.       Animation         = NICNSC_SKL.NICNSC_ATB2
  11512.       AnimationMode     = ONCE
  11513.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  11514.       ; and a long recycle time between shots. we want him to finish his fire animation
  11515.       ; (unless he's ordered to do something else), so this is just a handy trick that
  11516.       ; says, "if the previous state had this transition key, allow it to finish before
  11517.       ; switching to us, if possible".
  11518.       WaitForStateToFinishIfPossible = TRANS_Stab
  11519.     End
  11520.     AliasConditionState = BETWEEN_FIRING_SHOTS_C
  11521.     AliasConditionState = RELOADING_C
  11522.  
  11523.     ; ------- Parachuting Animations
  11524.  
  11525.     ConditionState    = FREEFALL
  11526.       Animation       = NICNSC_SKL.NICNSC_POP
  11527.       AnimationMode   = MANUAL
  11528.       Flags           = START_FRAME_FIRST
  11529.       TransitionKey   = TRANS_Falling
  11530.     End
  11531.     AliasConditionState = FREEFALL REALLYDAMAGED
  11532.     AliasConditionState = FREEFALL DYING
  11533.  
  11534.     ConditionState    = PARACHUTING
  11535.       Animation       = NICNSC_SKL.NICNSC_PHG
  11536.       AnimationMode   = LOOP
  11537.       Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  11538.       TransitionKey   = TRANS_Chute
  11539.     End
  11540.     AliasConditionState = PARACHUTING REALLYDAMAGED
  11541.     AliasConditionState = PARACHUTING DYING
  11542.  
  11543.     TransitionState   = TRANS_Falling TRANS_Chute
  11544.       Animation       = NICNSC_SKL.NICNSC_POP
  11545.       AnimationMode   = ONCE
  11546.       Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  11547.     End
  11548.  
  11549.     TransitionState   = TRANS_Chute TRANS_Stand
  11550.       Animation       = NICNSC_SKL.NICNSC_PTD
  11551.       AnimationMode   = ONCE
  11552.     End
  11553.  
  11554.     ; ------- Movement Animations
  11555.  
  11556.     ConditionState      = MOVING
  11557.       Animation         = NICNSC_SKL.NICNSC_RNA 26
  11558.       AnimationMode     = LOOP
  11559.       Flags             = RANDOMSTART
  11560.       TransitionKey     = None
  11561.       ParticleSysBone   = None InfantryDustTrails
  11562.     End
  11563.     AliasConditionState = MOVING ATTACKING
  11564.  
  11565.     ConditionState = MOVING REALLYDAMAGED
  11566.       Animation         = NICNSC_SKL.NICNSC_RNB 28
  11567.       AnimationMode     = LOOP
  11568.       Flags             = RANDOMSTART
  11569.       TransitionKey     = TRANS_RunDamaged
  11570.       TransitionKey     = None
  11571.     End
  11572.     AliasConditionState = MOVING ATTACKING REALLYDAMAGED
  11573.  
  11574.     ; ------- Bldg-capture
  11575.  
  11576.     ConditionState      = UNPACKING
  11577.       Model             = NICNSC_F_SKN
  11578.       Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
  11579.       AnimationMode     = ONCE
  11580.     End
  11581.     AliasConditionState = UNPACKING REALLYDAMAGED
  11582.  
  11583.     ConditionState      = RAISING_FLAG
  11584.       Model             = NICNSC_F_SKN
  11585.       Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
  11586.       AnimationMode     = ONCE
  11587.       TransitionKey     = TRANS_Raising
  11588.     End
  11589.     AliasConditionState = RAISING_FLAG REALLYDAMAGED
  11590.  
  11591.     ConditionState      = PACKING
  11592.       Model             = NICNSC_F_SKN
  11593.       Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
  11594.       AnimationMode     = ONCE_BACKWARDS
  11595.       Flags             = START_FRAME_LAST
  11596.       TransitionKey     = TRANS_Packing
  11597.     End
  11598.     AliasConditionState = PACKING REALLYDAMAGED
  11599.  
  11600.     TransitionState     = TRANS_Raising TRANS_Packing
  11601.       Model             = NICNSC_F_SKN
  11602.       Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
  11603.       AnimationMode     = ONCE_BACKWARDS
  11604.       Flags             = START_FRAME_LAST
  11605.     End
  11606.  
  11607.     ; ------- Dying Animations
  11608.  
  11609.     ConditionState      = DYING
  11610.       Animation         = NICNSC_SKL.NICNSC_DTA
  11611.       Animation         = NICNSC_SKL.NICNSC_DTB
  11612.       AnimationMode     = ONCE
  11613.       TransitionKey     = TRANS_Dying
  11614.     End
  11615.  
  11616.     TransitionState     = TRANS_Dying TRANS_Flailing
  11617.       Animation         = NICNSC_SKL.NICNSC_ATDE1
  11618.       AnimationMode     = ONCE
  11619.     End
  11620.  
  11621.     ConditionState      = DYING EXPLODED_FLAILING
  11622.       Animation         = NICNSC_SKL.NICNSC_ATDE2
  11623.       AnimationMode     = LOOP
  11624.       TransitionKey     = TRANS_Flailing
  11625.     End
  11626.  
  11627.     ConditionState      = DYING EXPLODED_BOUNCING
  11628.       Animation         = NICNSC_SKL.NICNSC_ATDE3
  11629.       AnimationMode     = ONCE
  11630.       TransitionKey     = None
  11631.     End
  11632.  
  11633.     ; ------- Misc Animations
  11634.  
  11635.     ConditionState      = SPECIAL_CHEERING
  11636.       Animation         = NICNSC_SKL.NICNSC_CHA
  11637.       AnimationMode     = LOOP
  11638.     End
  11639.  
  11640.   End
  11641.  
  11642.   ; ***DESIGN parameters ***
  11643.   DisplayName         = OBJECT:Redguard
  11644.   Side                = China
  11645.   EditorSorting       = INFANTRY
  11646.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  11647.   WeaponSet
  11648.     Conditions = None 
  11649.     Weapon = PRIMARY RedguardMachineGun
  11650.   End
  11651.   ArmorSet
  11652.     Conditions      = None
  11653.     Armor           = HumanArmor
  11654.     DamageFX        = InfantryDamageFX
  11655.   End
  11656.   VisionRange = 100
  11657.   ShroudClearingRange = 200
  11658.   Prerequisites
  11659.     Object = ChinaBarracks
  11660.   End
  11661.   BuildCost     = 300
  11662.   BuildTime     = 10.0          ;in seconds      
  11663.  
  11664.   ExperienceValue = 5 5 10 20   ;Experience point value at each level
  11665.   ExperienceRequired = 0 20 40 80  ;Experience points needed to gain each level
  11666.   IsTrainable = Yes             ;Can gain experience
  11667.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  11668.   CommandSet    = ChinaInfantryRedguardCommandSet
  11669.  
  11670.   ; *** AUDIO Parameters ***
  11671.   VoiceSelect = RedGuardVoiceSelect
  11672.   VoiceMove = RedGuardVoiceMove
  11673.   VoiceGuard = RedGuardVoiceMove
  11674.   VoiceAttack = RedGuardVoiceAttack
  11675.   VoiceGroupSelect = BattleCrySound
  11676.   SoundDie = RedGuardVoiceDie
  11677.   SoundDieFire = DieByFireChina
  11678.   SoundDieToxin = DieByToxinChina
  11679.   VoiceFear = RedGuardVoiceFear
  11680.   VoiceTaskComplete = RedGuardVoiceCaptureComplete
  11681.   UnitSpecificSounds
  11682.     VoiceMelee      = RedGuardVoiceAttackBayonet
  11683.     VoiceGarrison   = RedGuardVoiceGarrison
  11684.     VoiceCreate     = RedGuardVoiceCreate
  11685.     VoiceSubdue     = RedGuardVoiceSubdue
  11686.     VoiceEnter      = RedGuardVoiceMove
  11687.     VoiceEnterHostile = RedGuardVoiceMove
  11688.     VoiceGetHealed      = RedGuardVoiceMove
  11689.   End
  11690.  
  11691.   ; *** ENGINEERING Parameters ***
  11692.   RadarPriority = UNIT
  11693.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE
  11694.  
  11695.   Body = ActiveBody ModuleTag_02
  11696.     MaxHealth       = 120.0
  11697.     InitialHealth   = 120.0
  11698.   End
  11699.  
  11700.   Behavior = VeterancyGainCreate ModuleTag_03
  11701.     StartingLevel = VETERAN
  11702.     ScienceRequired = SCIENCE_RedGuardTraining
  11703.   End
  11704.  
  11705.   Behavior = AIUpdateInterface ModuleTag_04
  11706.     AutoAcquireEnemiesWhenIdle = Yes
  11707.   End
  11708.  
  11709.   Behavior = CommandButtonHuntUpdate  ModuleTag_05 ; allows use of command button hunt script with this unit. 
  11710.   End
  11711.  
  11712.   Locomotor = SET_NORMAL RedguardLocomotor
  11713.  
  11714.   Behavior = HordeUpdate ModuleTag_06
  11715.     RubOffRadius = 60    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
  11716.     UpdateRate = 1000    ; how often to recheck horde status (msec)
  11717.     Radius = 30          ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
  11718.     KindOf = INFANTRY    ; what KindOf's must match to count towards horde-ness
  11719.     AlliesOnly = Yes     ; do we only count allies towards horde status? 
  11720.     ExactMatch = No      ; do we only count units of our exact same type towards horde status? (overrides kindof)
  11721.     Count = 5            ; how many units must be within Radius to grant us horde-ness
  11722.     Action = HORDE       ; when horde-ing, grant us the HORDE bonus
  11723.   End
  11724.   Behavior = PhysicsBehavior ModuleTag_07
  11725.     Mass = 5.0
  11726.   End
  11727.  
  11728. ; sorry, no tranq or stun bullets, cut for this version (srj)
  11729. ;  Behavior = WeaponSetUpgrade ModuleTag_09
  11730. ;    TriggeredBy = Upgrade_ChinaStunBullets
  11731. ;  End
  11732.  
  11733.   Behavior = SquishCollide ModuleTag_10
  11734.     ;nothing
  11735.   End
  11736.  
  11737. ; --- begin Death modules ---
  11738.   Behavior = SlowDeathBehavior ModuleTag_Death01
  11739.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  11740.     SinkDelay           = 3000
  11741.     SinkRate            = 0.5     ; in Dist/Sec
  11742.     DestructionDelay    = 8000
  11743.     FX                  = INITIAL FX_GIDie
  11744.   End
  11745.   Behavior = SlowDeathBehavior ModuleTag_Death02
  11746.     DeathTypes          = NONE +CRUSHED +SPLATTED
  11747.     SinkDelay           = 3000
  11748.     SinkRate            = 0.5     ; in Dist/Sec
  11749.     DestructionDelay    = 8000
  11750.     FX                  = INITIAL FX_GIDieCrushed
  11751.   End
  11752.   Behavior = SlowDeathBehavior ModuleTag_Death03
  11753.     DeathTypes          = NONE +EXPLODED
  11754.     SinkDelay           = 3000
  11755.     SinkRate            = 0.5     ; in Dist/Sec
  11756.     DestructionDelay    = 8000
  11757.     FX                  = INITIAL FX_GIDie
  11758.     FlingForce          = 8
  11759.     FlingForceVariance  = 3
  11760.     FlingPitch          = 60
  11761.     FlingPitchVariance  = 10
  11762.   End
  11763.   Behavior = SlowDeathBehavior ModuleTag_Death04
  11764.     DeathTypes          = NONE +BURNED
  11765.     DestructionDelay    = 0
  11766.     FX                  = INITIAL FX_GIDie
  11767.     OCL                 = INITIAL OCL_FlamingInfantry
  11768.   End
  11769.   Behavior = SlowDeathBehavior ModuleTag_Death05
  11770.     DeathTypes          = NONE +POISONED
  11771.     DestructionDelay    = 0
  11772.     FX                  = INITIAL FX_GIDie
  11773.     OCL                 = INITIAL OCL_ToxicInfantry
  11774.   End
  11775.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  11776.     DeathTypes          = NONE +POISONED_BETA
  11777.     DestructionDelay    = 0
  11778.     FX                  = INITIAL FX_GIDie
  11779.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  11780.   End
  11781. ; --- end Death modules ---
  11782.  
  11783.   Behavior = PoisonedBehavior ModuleTag_15
  11784.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  11785.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  11786.   End
  11787.  
  11788.   Behavior = SpecialAbility ModuleTag_16
  11789.     SpecialPowerTemplate      = SpecialAbilityRedGuardCaptureBuilding
  11790.     UpdateModuleStartsAttack  = Yes
  11791.     StartsPaused              = Yes
  11792.     InitiateSound         = RedGuardVoiceCapture
  11793.   End
  11794.   Behavior = SpecialAbilityUpdate ModuleTag_17
  11795.     SpecialPowerTemplate  = SpecialAbilityRedGuardCaptureBuilding
  11796.     StartAbilityRange  = 5.0
  11797.     UnpackTime            = 3000  ; (changing this will scale anim speed)
  11798.     PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
  11799.     PackTime              = 2000  ; (changing this will scale anim speed)
  11800.     DoCaptureFX           = Yes
  11801.     AwardXPForTriggering  = 4
  11802.     ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  11803.   End
  11804.  
  11805.   Behavior = UnpauseSpecialPowerUpgrade ModuleTag_18
  11806.     SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
  11807.     TriggeredBy = Upgrade_InfantryCaptureBuilding
  11808.   End
  11809.  
  11810.   Geometry = CYLINDER
  11811.   GeometryMajorRadius = 7.0
  11812.   GeometryMinorRadius = 7.0
  11813.   GeometryHeight = 12.0
  11814.   GeometryIsSmall = Yes
  11815.   Shadow = SHADOW_DECAL
  11816.   ShadowSizeX = 14;
  11817.   ShadowSizeY = 14;
  11818.   ShadowTexture = ShadowI;
  11819.   BuildCompletion = APPEARS_AT_RALLY_POINT
  11820.  
  11821. End
  11822. ;------------------------------------------------------------------------------
  11823. Object ChinaInfantryParadeRedGuard
  11824.  
  11825. ; Unit added per John Lee's request. - GB
  11826.  
  11827.   ; *** ART Parameters ***
  11828.   Draw = W3DModelDraw ModuleTag_01
  11829.     OkToChangeModelColor = Yes
  11830.  
  11831.     ; ------- Standing-Around Animations
  11832.  
  11833.     DefaultConditionState
  11834.       Model               = NICNSC_SKN
  11835.       IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
  11836.       IdleAnimation       = NICNSC_SKL.NICNSC_IDA
  11837.       IdleAnimation       = NICNSC_SKL.NICNSC_IDB
  11838.       AnimationMode       = ONCE
  11839.       WeaponFireFXBone    = PRIMARY Muzzle
  11840.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  11841.       TransitionKey       = TRANS_Stand
  11842.     End
  11843.  
  11844.     ConditionState = REALLYDAMAGED
  11845.       IdleAnimation       = NICNSC_SKL.NICNSC_STB
  11846.       AnimationMode       = ONCE
  11847.       TransitionKey       = TRANS_StandDamaged
  11848.     End
  11849.  
  11850.     ; ------- Machine Gun Animations
  11851.  
  11852.     ConditionState = FIRING_A 
  11853.       Animation         = NICNSC_SKL.NICNSC_ATA
  11854.       AnimationMode     = LOOP
  11855.       TransitionKey     = TRANS_Firing
  11856.     End
  11857.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  11858.     AliasConditionState = RELOADING_A
  11859.  
  11860.     ConditionState = USING_WEAPON_A REALLYDAMAGED
  11861.       Animation         = NICNSC_SKL.NICNSC_ATC
  11862.       AnimationMode     = LOOP
  11863.       TransitionKey     = TRANS_FiringDamaged
  11864.     End
  11865.  
  11866.  
  11867.     ; ------- Firing-related Transitions
  11868.  
  11869.     TransitionState = TRANS_Firing TRANS_FiringDamaged
  11870.       Animation       = NICNSC_SKL.NICNSC_AA2AC
  11871.       AnimationMode   = ONCE
  11872.     End
  11873.  
  11874.     TransitionState = TRANS_Stand TRANS_Firing
  11875.       Animation       = NICNSC_SKL.NICNSC_SA2AA
  11876.       AnimationMode   = ONCE
  11877.     End
  11878.  
  11879.     TransitionState = TRANS_Firing TRANS_Stand
  11880.       Animation       = NICNSC_SKL.NICNSC_AA2SA
  11881.       AnimationMode   = ONCE
  11882.     End
  11883.  
  11884.     TransitionState = TRANS_StandDamaged TRANS_FiringDamaged
  11885.       Animation       = NICNSC_SKL.NICNSC_ATCST
  11886.       AnimationMode   = ONCE
  11887.     End
  11888.  
  11889.     TransitionState = TRANS_FiringDamaged TRANS_StandDamaged
  11890.       Animation       = NICNSC_SKL.NICNSC_ATCED
  11891.       AnimationMode   = ONCE
  11892.     End
  11893.  
  11894.  
  11895.     ; ------------- Damage Transitions --------------------
  11896.     TransitionState = TRANS_StandDamaged TRANS_RunDamaged
  11897.       Animation       = NICNSC_SKL.NICNSC_AA2AC
  11898.       AnimationMode   = ONCE
  11899.       AnimationSpeedFactorRange = 2 2
  11900.     End
  11901.     TransitionState = TRANS_RunDamaged TRANS_StandDamaged 
  11902.       Animation       = NICNSC_SKL.NICNSC_AA2AC
  11903.       AnimationMode   = ONCE_BACKWARDS
  11904.       AnimationSpeedFactorRange = 2 2
  11905.       Flags           = START_FRAME_LAST
  11906.     End
  11907.     TransitionState = TRANS_Stand TRANS_StandDamaged 
  11908.       Animation       = NICNSC_SKL.NICNSC_AA2SA
  11909.       AnimationMode   = ONCE_BACKWARDS
  11910.       AnimationSpeedFactorRange = 4 5
  11911.       Flags           = START_FRAME_LAST
  11912.     End
  11913.  
  11914.  
  11915.     ; ------- Bayonet Animations
  11916.  
  11917.     ConditionState = PREATTACK_C 
  11918.       Animation = NICNSC_SKL.NICNSC_ATB1
  11919.       AnimationMode   = ONCE
  11920.       TransitionKey   = TRANS_Stab
  11921.     End
  11922.     AliasConditionState = PREATTACK_C MOVING
  11923.     AliasConditionState = PREATTACK_C FIRING_C
  11924.     AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C
  11925.  
  11926.     ConditionState = FIRING_C
  11927.       Animation         = NICNSC_SKL.NICNSC_ATB2
  11928.       AnimationMode     = ONCE
  11929.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  11930.       ; and a long recycle time between shots. we want him to finish his fire animation
  11931.       ; (unless he's ordered to do something else), so this is just a handy trick that
  11932.       ; says, "if the previous state had this transition key, allow it to finish before
  11933.       ; switching to us, if possible".
  11934.       WaitForStateToFinishIfPossible = TRANS_Stab
  11935.     End
  11936.     AliasConditionState = BETWEEN_FIRING_SHOTS_C
  11937.     AliasConditionState = RELOADING_C
  11938.  
  11939.     ; ------- Parachuting Animations
  11940.  
  11941.     ConditionState = FREEFALL
  11942.       Animation       = NICNSC_SKL.NICNSC_POP
  11943.       AnimationMode   = MANUAL
  11944.       Flags           = START_FRAME_FIRST
  11945.       TransitionKey   = TRANS_Falling
  11946.     End
  11947.     AliasConditionState = FREEFALL REALLYDAMAGED
  11948.     AliasConditionState = FREEFALL DYING
  11949.  
  11950.     ConditionState = PARACHUTING
  11951.       Animation       = NICNSC_SKL.NICNSC_PHG
  11952.       AnimationMode   = LOOP
  11953.       Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  11954.       TransitionKey   = TRANS_Chute
  11955.     End
  11956.     AliasConditionState = PARACHUTING REALLYDAMAGED
  11957.     AliasConditionState = PARACHUTING DYING
  11958.  
  11959.     TransitionState = TRANS_Falling TRANS_Chute
  11960.       Animation       = NICNSC_SKL.NICNSC_POP
  11961.       AnimationMode   = ONCE
  11962.       Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  11963.     End
  11964.  
  11965.     TransitionState = TRANS_Chute TRANS_Stand
  11966.       Animation       = NICNSC_SKL.NICNSC_PTD
  11967.       AnimationMode   = ONCE
  11968.     End
  11969.  
  11970.     ; ------- Movement Animations
  11971.  
  11972.     ConditionState = MOVING
  11973.       Animation         = NICNSC_SKL.NICNSC_MAR 12
  11974.       AnimationMode     = LOOP
  11975.       Flags             = RANDOMSTART
  11976.       TransitionKey     = None
  11977.       ParticleSysBone     = None InfantryDustTrails
  11978.     End
  11979.     AliasConditionState = MOVING ATTACKING
  11980.  
  11981.     ConditionState = MOVING REALLYDAMAGED
  11982.       Animation         = NICNSC_SKL.NICNSC_RNB
  11983.       AnimationMode     = LOOP
  11984.       Flags             = RANDOMSTART
  11985.       TransitionKey     = TRANS_RunDamaged
  11986.       ParticleSysBone     = None InfantryDustTrails
  11987.     End
  11988.     AliasConditionState = MOVING ATTACKING REALLYDAMAGED
  11989.  
  11990.     ; ------- Bldg-capture
  11991.  
  11992.     ConditionState = UNPACKING
  11993.       Animation         = NICNSC_SKL.NICNSC_FDP1
  11994.       AnimationMode     = ONCE
  11995.     End
  11996.     AliasConditionState = UNPACKING REALLYDAMAGED
  11997.  
  11998.     ConditionState = RAISING_FLAG
  11999.       Animation         = NICNSC_SKL.NICNSC_FDP2
  12000.       AnimationMode     = ONCE
  12001.       TransitionKey     = TRANS_Raising
  12002.     End
  12003.     AliasConditionState = RAISING_FLAG REALLYDAMAGED
  12004.  
  12005.     ConditionState = PACKING
  12006.       Animation         = NICNSC_SKL.NICNSC_FDP1
  12007.       AnimationMode     = ONCE_BACKWARDS
  12008.       Flags             = START_FRAME_LAST
  12009.       TransitionKey     = TRANS_Packing
  12010.     End
  12011.     AliasConditionState = PACKING REALLYDAMAGED
  12012.  
  12013.     TransitionState = TRANS_Raising TRANS_Packing
  12014.       Animation       = NICNSC_SKL.NICNSC_FDP2
  12015.       AnimationMode   = ONCE_BACKWARDS
  12016.       Flags           = START_FRAME_LAST
  12017.     End
  12018.  
  12019.     ; ------- Misc Animations
  12020.  
  12021.     ; ------- Dying Animations
  12022.  
  12023.     ConditionState      = DYING
  12024.       Animation         = NICNSC_SKL.NICNSC_DTA
  12025.       Animation         = NICNSC_SKL.NICNSC_DTB
  12026.       AnimationMode     = ONCE
  12027.       TransitionKey     = TRANS_Dying
  12028.     End
  12029.  
  12030.     TransitionState     = TRANS_Dying TRANS_Flailing
  12031.       Animation         = NICNSC_SKL.NICNSC_ATDE1
  12032.       AnimationMode     = ONCE
  12033.     End
  12034.  
  12035.     ConditionState      = DYING EXPLODED_FLAILING
  12036.       Animation         = NICNSC_SKL.NICNSC_ATDE2
  12037.       AnimationMode     = LOOP
  12038.       TransitionKey     = TRANS_Flailing
  12039.     End
  12040.  
  12041.     ConditionState      = DYING EXPLODED_BOUNCING
  12042.       Animation         = NICNSC_SKL.NICNSC_ATDE3
  12043.       AnimationMode     = ONCE
  12044.       TransitionKey     = None
  12045.     End
  12046.  
  12047.     ConditionState = SPECIAL_CHEERING
  12048.       Animation         = NICNSC_SKL.NICNSC_CHA
  12049.       AnimationMode     = LOOP
  12050.     End
  12051.  
  12052.   End
  12053.  
  12054.   ; ***DESIGN parameters ***
  12055.   DisplayName         = OBJECT:Redguard
  12056.   Side                = China
  12057.   EditorSorting       = INFANTRY
  12058.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  12059.   WeaponSet
  12060.     Conditions = None 
  12061.     Weapon = PRIMARY RedguardMachineGun
  12062.     Weapon = SECONDARY None
  12063.     Weapon = TERTIARY RedguardBayonet
  12064.     AutoChooseSources = TERTIARY None
  12065.   End
  12066. ; sorry, no stun bullets, cut for this version (srj)
  12067. ;  WeaponSet
  12068. ;    Conditions = PLAYER_UPGRADE
  12069. ;    Weapon = PRIMARY RedguardMachineGun
  12070. ;    Weapon = SECONDARY RedguardStunBulletsMachineGun
  12071. ;    Weapon = TERTIARY RedguardBayonet
  12072. ;    AutoChooseSources = SECONDARY None
  12073. ;    AutoChooseSources   = TERTIARY None
  12074. ;  End
  12075.   ArmorSet
  12076.     Conditions      = None
  12077.     Armor           = HumanArmor
  12078.     DamageFX        = InfantryDamageFX
  12079.   End
  12080.   VisionRange = 100
  12081.   ShroudClearingRange = 200
  12082.   Prerequisites
  12083.     Object = ChinaBarracks
  12084.   End
  12085.   BuildCost     = 225
  12086.   BuildTime     = 10.0          ;in seconds      
  12087.  
  12088.   ExperienceValue = 5 5 10 20   ;Experience point value at each level
  12089.   ExperienceRequired = 0 20 40 80  ;Experience points needed to gain each level
  12090.   IsTrainable = Yes             ;Can gain experience
  12091.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  12092.   CommandSet    = ChinaInfantryRedguardCommandSet
  12093.  
  12094.   ; *** AUDIO Parameters ***
  12095.   VoiceSelect = RedGuardVoiceSelect
  12096.   VoiceMove = RedGuardVoiceMove
  12097.   VoiceAttack = RedGuardVoiceAttack
  12098.   VoiceGroupSelect = BattleCrySound
  12099.   SoundDie = RedGuardVoiceDie
  12100.   SoundDieFire = DieByFireChina
  12101.   SoundDieToxin = DieByToxinChina
  12102.  
  12103.   ; *** ENGINEERING Parameters ***
  12104.   RadarPriority = UNIT
  12105.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE
  12106.  
  12107.   Body = ActiveBody ModuleTag_02
  12108.     MaxHealth       = 90.0
  12109.     InitialHealth   = 90.0
  12110.   End
  12111.  
  12112.   Behavior = VeterancyGainCreate ModuleTag_03
  12113.     StartingLevel = VETERAN
  12114.     ScienceRequired = SCIENCE_RedGuardTraining
  12115.   End
  12116.  
  12117.   Behavior = AIUpdateInterface ModuleTag_04
  12118.     AutoAcquireEnemiesWhenIdle = Yes
  12119.   End
  12120.  
  12121.   Locomotor = SET_NORMAL ParadeRedguardLocomotor
  12122.  
  12123.   Behavior = PhysicsBehavior ModuleTag_06
  12124.     Mass = 5.0
  12125.   End
  12126.  
  12127. ; sorry, no tranq or stun bullets, cut for this version (srj)
  12128. ;  Behavior = WeaponSetUpgrade ModuleTag_08
  12129. ;    TriggeredBy = Upgrade_ChinaStunBullets
  12130. ;  End
  12131.  
  12132.   Behavior = SquishCollide ModuleTag_09
  12133.     ;nothing
  12134.   End
  12135.  
  12136. ; --- begin Death modules ---
  12137.   Behavior = SlowDeathBehavior ModuleTag_Death01
  12138.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  12139.     SinkDelay           = 3000
  12140.     SinkRate            = 0.5     ; in Dist/Sec
  12141.     DestructionDelay    = 8000
  12142.     FX                  = INITIAL FX_GIDie
  12143.   End
  12144.   Behavior = SlowDeathBehavior ModuleTag_Death02
  12145.     DeathTypes          = NONE +CRUSHED +SPLATTED
  12146.     SinkDelay           = 3000
  12147.     SinkRate            = 0.5     ; in Dist/Sec
  12148.     DestructionDelay    = 8000
  12149.     FX                  = INITIAL FX_GIDieCrushed
  12150.   End
  12151.   Behavior = SlowDeathBehavior ModuleTag_Death03
  12152.     DeathTypes          = NONE +EXPLODED
  12153.     SinkDelay           = 3000
  12154.     SinkRate            = 0.5     ; in Dist/Sec
  12155.     DestructionDelay    = 8000
  12156.     FX                  = INITIAL FX_GIDie
  12157.     FlingForce          = 8
  12158.     FlingForceVariance  = 3
  12159.     FlingPitch          = 60
  12160.     FlingPitchVariance  = 10
  12161.   End
  12162.   Behavior = SlowDeathBehavior ModuleTag_Death04
  12163.     DeathTypes          = NONE +BURNED
  12164.     DestructionDelay    = 0
  12165.     FX                  = INITIAL FX_GIDie
  12166.     OCL                 = INITIAL OCL_FlamingInfantry
  12167.   End
  12168.   Behavior = SlowDeathBehavior ModuleTag_Death05
  12169.     DeathTypes          = NONE +POISONED
  12170.     DestructionDelay    = 0
  12171.     FX                  = INITIAL FX_GIDie
  12172.     OCL                 = INITIAL OCL_ToxicInfantry
  12173.   End
  12174. ; --- end Death modules ---
  12175.  
  12176.   Behavior = PoisonedBehavior ModuleTag_14
  12177.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  12178.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  12179.   End
  12180.  
  12181.   Behavior = SpecialAbility ModuleTag_15
  12182.     SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
  12183.     UpdateModuleStartsAttack = Yes
  12184.     InitiateSound         = RedGuardVoiceCapture
  12185.   End
  12186.   Behavior = SpecialAbilityUpdate ModuleTag_16
  12187.     SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
  12188.     StartAbilityRange = 5.0
  12189.     UnpackTime            = 3000  ; (changing this will scale anim speed)
  12190.     PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
  12191.     PackTime              = 2000  ; (changing this will scale anim speed)
  12192.     DoCaptureFX           = Yes
  12193.   End
  12194.  
  12195.   Geometry = CYLINDER
  12196.   GeometryMajorRadius = 10.0
  12197.   GeometryMinorRadius = 10.0
  12198.   GeometryHeight = 12.0
  12199.   GeometryIsSmall = Yes
  12200.   Shadow = SHADOW_DECAL
  12201.   ShadowSizeX = 14;
  12202.   ShadowSizeY = 14;
  12203.   ShadowTexture = ShadowI;
  12204.   BuildCompletion = APPEARS_AT_RALLY_POINT
  12205.  
  12206. End
  12207.  
  12208. ;------------------------------------------------------------------------------
  12209. ;**************************** Cinematic-Only unit ****************************
  12210. Object CINE_ChinaInfantryParadeRedGuard
  12211.  
  12212. ; Unit added per John Lee's request. - GB
  12213.  
  12214.   ; *** ART Parameters ***
  12215.   Draw = W3DModelDraw ModuleTag_01
  12216.     OkToChangeModelColor = Yes
  12217.  
  12218.     ; ------- Standing-Around Animations
  12219.  
  12220.     DefaultConditionState
  12221.       Model               = NICNSC_SKN
  12222.       IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
  12223.       IdleAnimation       = NICNSC_SKL.NICNSC_IDA
  12224.       IdleAnimation       = NICNSC_SKL.NICNSC_IDB
  12225.       AnimationMode       = ONCE
  12226.       WeaponFireFXBone    = PRIMARY Muzzle
  12227.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  12228.       TransitionKey       = TRANS_Stand
  12229.     End
  12230.  
  12231.     ConditionState = REALLYDAMAGED
  12232.       IdleAnimation       = NICNSC_SKL.NICNSC_STB
  12233.       AnimationMode       = ONCE
  12234.       TransitionKey       = TRANS_Stand
  12235.     End
  12236.  
  12237.     ; ------- Machine Gun Animations
  12238.  
  12239.     ConditionState = FIRING_A 
  12240.       Animation         = NICNSC_SKL.NICNSC_ATA
  12241.       AnimationMode     = LOOP
  12242.       TransitionKey     = TRANS_Firing
  12243.     End
  12244.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  12245.     AliasConditionState = RELOADING_A
  12246.  
  12247.     ConditionState = FIRING_A REALLYDAMAGED
  12248.       Animation         = NICNSC_SKL.NICNSC_ATC
  12249.       AnimationMode     = LOOP
  12250.       TransitionKey     = TRANS_FiringDamaged
  12251.     End
  12252.     AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  12253.     AliasConditionState = RELOADING_A REALLYDAMAGED
  12254.  
  12255.     ; ------- Stun Bullet Animations
  12256. ; sorry, no tranq or stun bullets, cut for this version (srj)
  12257. ;
  12258. ;    ConditionState = FIRING_B
  12259. ;      Animation         = NICNSC_SKL.NICNSC_ATA
  12260. ;      AnimationMode     = LOOP
  12261. ;      TransitionKey     = TRANS_Firing
  12262. ;    End
  12263. ;    AliasConditionState = BETWEEN_FIRING_SHOTS_B
  12264. ;    AliasConditionState = RELOADING_B
  12265. ;
  12266. ;    ConditionState = FIRING_B REALLYDAMAGED
  12267. ;      Animation         = NICNSC_SKL.NICNSC_ATC
  12268. ;      AnimationMode     = LOOP
  12269. ;      TransitionKey     = TRANS_FiringDamaged
  12270. ;    End
  12271. ;    AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  12272. ;    AliasConditionState = RELOADING_B REALLYDAMAGED
  12273.  
  12274.     ; ------- Firing-related Transitions
  12275.  
  12276.     TransitionState = TRANS_Firing TRANS_FiringDamaged
  12277.       Animation       = NICNSC_SKL.NICNSC_AA2AC
  12278.       AnimationMode   = ONCE
  12279.     End
  12280.  
  12281.     TransitionState = TRANS_Stand TRANS_Firing
  12282.       Animation       = NICNSC_SKL.NICNSC_SA2AA
  12283.       AnimationMode   = ONCE
  12284.       AnimationSpeedFactorRange = 40 40
  12285.     End
  12286.  
  12287.     TransitionState = TRANS_Firing TRANS_Stand
  12288.       Animation       = NICNSC_SKL.NICNSC_AA2SA
  12289.       AnimationMode   = ONCE
  12290.       AnimationSpeedFactorRange = 4 4
  12291.     End
  12292.  
  12293.     TransitionState = TRANS_Stand TRANS_FiringDamaged
  12294.       Animation       = NICNSC_SKL.NICNSC_ATCST
  12295.       AnimationMode   = ONCE
  12296.       AnimationSpeedFactorRange = 40 40
  12297.     End
  12298.  
  12299.     TransitionState = TRANS_FiringDamaged TRANS_Stand
  12300.       Animation       = NICNSC_SKL.NICNSC_ATCED
  12301.       AnimationMode   = ONCE
  12302.        
  12303.     End
  12304.  
  12305.     ; ------- Bayonet Animations
  12306.  
  12307.     ConditionState = PREATTACK_C 
  12308.       Animation = NICNSC_SKL.NICNSC_ATB1
  12309.       AnimationMode   = ONCE
  12310.       TransitionKey   = TRANS_Stab
  12311.     End
  12312.     AliasConditionState = PREATTACK_C MOVING
  12313.     AliasConditionState = PREATTACK_C FIRING_C
  12314.     AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C
  12315.  
  12316.     ConditionState = FIRING_C
  12317.       Animation         = NICNSC_SKL.NICNSC_ATB2
  12318.       AnimationMode     = ONCE
  12319.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  12320.       ; and a long recycle time between shots. we want him to finish his fire animation
  12321.       ; (unless he's ordered to do something else), so this is just a handy trick that
  12322.       ; says, "if the previous state had this transition key, allow it to finish before
  12323.       ; switching to us, if possible".
  12324.       WaitForStateToFinishIfPossible = TRANS_Stab
  12325.     End
  12326.     AliasConditionState = BETWEEN_FIRING_SHOTS_C
  12327.     AliasConditionState = RELOADING_C
  12328.  
  12329.     ; ------- Parachuting Animations
  12330.  
  12331.     ConditionState = FREEFALL
  12332.       Animation       = NICNSC_SKL.NICNSC_POP
  12333.       AnimationMode   = MANUAL
  12334.       Flags           = START_FRAME_FIRST
  12335.       TransitionKey   = TRANS_Falling
  12336.     End
  12337.     AliasConditionState = FREEFALL REALLYDAMAGED
  12338.     AliasConditionState = FREEFALL DYING
  12339.  
  12340.     ConditionState = PARACHUTING
  12341.       Animation       = NICNSC_SKL.NICNSC_PHG
  12342.       AnimationMode   = LOOP
  12343.       Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  12344.       TransitionKey   = TRANS_Chute
  12345.     End
  12346.     AliasConditionState = PARACHUTING REALLYDAMAGED
  12347.     AliasConditionState = PARACHUTING DYING
  12348.  
  12349.     TransitionState = TRANS_Falling TRANS_Chute
  12350.       Animation       = NICNSC_SKL.NICNSC_POP
  12351.       AnimationMode   = ONCE
  12352.       Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  12353.     End
  12354.  
  12355.     TransitionState = TRANS_Chute TRANS_Stand
  12356.       Animation       = NICNSC_SKL.NICNSC_PTD
  12357.       AnimationMode   = ONCE
  12358.     End
  12359.  
  12360.     ; ------- Movement Animations
  12361.  
  12362.     ConditionState = MOVING
  12363.       Animation         = NICNSC_SKL.NICNSC_MAR 12
  12364.       AnimationMode     = LOOP
  12365.       Flags             = RANDOMSTART
  12366.       TransitionKey     = None
  12367.     End
  12368.     AliasConditionState = MOVING FIRING_A
  12369.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  12370.     AliasConditionState = MOVING RELOADING_A
  12371.     AliasConditionState = MOVING FIRING_B
  12372.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
  12373.     AliasConditionState = MOVING RELOADING_B
  12374.     AliasConditionState = MOVING FIRING_C
  12375.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_C
  12376.     AliasConditionState = MOVING RELOADING_C
  12377.  
  12378.     ConditionState = MOVING REALLYDAMAGED
  12379.       Animation         = NICNSC_SKL.NICNSC_RNB
  12380.       AnimationMode     = LOOP
  12381.       Flags             = RANDOMSTART
  12382.       TransitionKey     = None
  12383.     End
  12384.     AliasConditionState = MOVING FIRING_A REALLYDAMAGED
  12385.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  12386.     AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
  12387.     AliasConditionState = MOVING FIRING_B REALLYDAMAGED
  12388.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  12389.     AliasConditionState = MOVING RELOADING_B REALLYDAMAGED
  12390.     AliasConditionState = MOVING FIRING_C REALLYDAMAGED
  12391.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_C REALLYDAMAGED
  12392.     AliasConditionState = MOVING RELOADING_C REALLYDAMAGED
  12393.  
  12394.     ; ------- Bldg-capture
  12395.  
  12396.     ConditionState = UNPACKING
  12397.       Animation         = NICNSC_SKL.NICNSC_FDP1
  12398.       AnimationMode     = ONCE
  12399.     End
  12400.     AliasConditionState = UNPACKING REALLYDAMAGED
  12401.  
  12402.     ConditionState = RAISING_FLAG
  12403.       Animation         = NICNSC_SKL.NICNSC_FDP2
  12404.       AnimationMode     = ONCE
  12405.       TransitionKey     = TRANS_Raising
  12406.     End
  12407.     AliasConditionState = RAISING_FLAG REALLYDAMAGED
  12408.  
  12409.     ConditionState = PACKING
  12410.       Animation         = NICNSC_SKL.NICNSC_FDP1
  12411.       AnimationMode     = ONCE_BACKWARDS
  12412.       Flags             = START_FRAME_LAST
  12413.       TransitionKey     = TRANS_Packing
  12414.     End
  12415.     AliasConditionState = PACKING REALLYDAMAGED
  12416.  
  12417.     TransitionState = TRANS_Raising TRANS_Packing
  12418.       Animation       = NICNSC_SKL.NICNSC_FDP2
  12419.       AnimationMode   = ONCE_BACKWARDS
  12420.       Flags           = START_FRAME_LAST
  12421.     End
  12422.  
  12423.     ; ------- Misc Animations
  12424.  
  12425.     ConditionState      = DYING
  12426.       Animation         = NICNSC_SKL.NICNSC_DTA
  12427.       Animation         = NICNSC_SKL.NICNSC_DTB
  12428.       AnimationMode     = ONCE
  12429.       TransitionKey     = TRANS_Dying
  12430.     End
  12431.  
  12432.     TransitionState     = TRANS_Dying TRANS_Flailing
  12433.       Animation         = NICNSC_SKL.NICNSC_ATDE1
  12434.       AnimationMode     = ONCE
  12435.     End
  12436.  
  12437.     ConditionState      = DYING EXPLODED_FLAILING
  12438.       Animation         = NICNSC_SKL.NICNSC_ATDE2
  12439.       AnimationMode     = LOOP
  12440.       TransitionKey     = TRANS_Flailing
  12441.     End
  12442.  
  12443.     ConditionState      = DYING EXPLODED_BOUNCING
  12444.       Animation         = NICNSC_SKL.NICNSC_ATDE3
  12445.       AnimationMode     = ONCE
  12446.       TransitionKey     = None
  12447.     End
  12448.  
  12449.     ConditionState = SPECIAL_CHEERING
  12450.       Animation         = NICNSC_SKL.NICNSC_CHA
  12451.       AnimationMode     = LOOP
  12452.     End
  12453.  
  12454.   End
  12455.  
  12456.   ; ***DESIGN parameters ***
  12457.   DisplayName         = OBJECT:Redguard
  12458.   Side                = China
  12459.   EditorSorting       = INFANTRY
  12460.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  12461.   WeaponSet
  12462.     Conditions = None 
  12463.     Weapon = PRIMARY RedguardMachineGun
  12464.     Weapon = SECONDARY None
  12465.     Weapon = TERTIARY RedguardBayonet
  12466.     AutoChooseSources = TERTIARY None
  12467.   End
  12468. ; sorry, no stun bullets, cut for this version (srj)
  12469. ;  WeaponSet
  12470. ;    Conditions = PLAYER_UPGRADE
  12471. ;    Weapon = PRIMARY RedguardMachineGun
  12472. ;    Weapon = SECONDARY RedguardStunBulletsMachineGun
  12473. ;    Weapon = TERTIARY RedguardBayonet
  12474. ;    AutoChooseSources = SECONDARY None
  12475. ;    AutoChooseSources   = TERTIARY None
  12476. ;  End
  12477.   ArmorSet
  12478.     Conditions      = None
  12479.     Armor           = HumanArmor
  12480.     DamageFX        = InfantryDamageFX
  12481.   End
  12482.   VisionRange = 100
  12483.   ShroudClearingRange = 200
  12484.   Prerequisites
  12485.     Object = ChinaBarracks
  12486.   End
  12487.   BuildCost     = 225
  12488.   BuildTime     = 10.0          ;in seconds      
  12489.  
  12490.   ExperienceValue = 5 5 10 20   ;Experience point value at each level
  12491.   ExperienceRequired = 0 20 40 80  ;Experience points needed to gain each level
  12492.   IsTrainable = Yes             ;Can gain experience
  12493.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  12494.   CommandSet    = ChinaInfantryRedguardCommandSet
  12495.  
  12496.   ; *** AUDIO Parameters ***
  12497.   VoiceSelect = RedGuardVoiceSelect
  12498.   VoiceMove = RedGuardVoiceMove
  12499.   VoiceAttack = RedGuardVoiceAttack
  12500.   VoiceGroupSelect = BattleCrySound
  12501.   SoundDie = RedGuardVoiceDie
  12502.   SoundDieFire = DieByFireChina
  12503.   SoundDieToxin = DieByToxinChina
  12504.  
  12505.   ; *** ENGINEERING Parameters ***
  12506.   RadarPriority = UNIT
  12507.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE
  12508.  
  12509.   Body = ActiveBody ModuleTag_02
  12510.     MaxHealth       = 90.0
  12511.     InitialHealth   = 90.0
  12512.   End
  12513.  
  12514.   Behavior = VeterancyGainCreate ModuleTag_03
  12515.     StartingLevel = VETERAN
  12516.     ScienceRequired = SCIENCE_RedGuardTraining
  12517.   End
  12518.  
  12519.   Behavior = AIUpdateInterface ModuleTag_04
  12520.     AutoAcquireEnemiesWhenIdle = Yes
  12521.   End
  12522.  
  12523.   Locomotor = SET_NORMAL CINE_ParadeRedguardLocomotor
  12524.  
  12525.   Behavior = PhysicsBehavior ModuleTag_06
  12526.     Mass = 5.0
  12527.   End
  12528.  
  12529. ; sorry, no tranq or stun bullets, cut for this version (srj)
  12530. ;  Behavior = WeaponSetUpgrade ModuleTag_08
  12531. ;    TriggeredBy = Upgrade_ChinaStunBullets
  12532. ;  End
  12533.  
  12534.   Behavior = SquishCollide ModuleTag_09
  12535.     ;nothing
  12536.   End
  12537.  
  12538. ; --- begin Death modules ---
  12539.   Behavior = SlowDeathBehavior ModuleTag_Death01
  12540.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  12541.     SinkDelay           = 3000
  12542.     SinkRate            = 0.5     ; in Dist/Sec
  12543.     DestructionDelay    = 8000
  12544.     FX                  = INITIAL FX_GIDie
  12545.   End
  12546.   Behavior = SlowDeathBehavior ModuleTag_Death02
  12547.     DeathTypes          = NONE +CRUSHED +SPLATTED
  12548.     SinkDelay           = 3000
  12549.     SinkRate            = 0.5     ; in Dist/Sec
  12550.     DestructionDelay    = 8000
  12551.     FX                  = INITIAL FX_GIDieCrushed
  12552.   End
  12553.   Behavior = SlowDeathBehavior ModuleTag_Death03
  12554.     DeathTypes          = NONE +EXPLODED
  12555.     SinkDelay           = 3000
  12556.     SinkRate            = 0.5     ; in Dist/Sec
  12557.     DestructionDelay    = 8000
  12558.     FX                  = INITIAL FX_GIDie
  12559.     FlingForce          = 8
  12560.     FlingForceVariance  = 3
  12561.     FlingPitch          = 60
  12562.     FlingPitchVariance  = 10
  12563.   End
  12564.   Behavior = SlowDeathBehavior ModuleTag_Death04
  12565.     DeathTypes          = NONE +BURNED
  12566.     DestructionDelay    = 0
  12567.     FX                  = INITIAL FX_GIDie
  12568.     OCL                 = INITIAL OCL_FlamingInfantry
  12569.   End
  12570.   Behavior = SlowDeathBehavior ModuleTag_Death05
  12571.     DeathTypes          = NONE +POISONED
  12572.     DestructionDelay    = 0
  12573.     FX                  = INITIAL FX_GIDie
  12574.     OCL                 = INITIAL OCL_ToxicInfantry
  12575.   End
  12576. ; --- end Death modules ---
  12577.  
  12578.   Behavior = PoisonedBehavior ModuleTag_14
  12579.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  12580.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  12581.   End
  12582.  
  12583.   Behavior = SpecialAbility ModuleTag_15
  12584.     SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
  12585.     UpdateModuleStartsAttack = Yes
  12586.     InitiateSound         = RedGuardVoiceCapture
  12587.   End
  12588.   Behavior = SpecialAbilityUpdate ModuleTag_16
  12589.     SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
  12590.     StartAbilityRange = 5.0
  12591.     UnpackTime            = 3000  ; (changing this will scale anim speed)
  12592.     PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
  12593.     PackTime              = 2000  ; (changing this will scale anim speed)
  12594.     DoCaptureFX           = Yes
  12595.   End
  12596.  
  12597.   Geometry = CYLINDER
  12598.   GeometryMajorRadius = 10.0
  12599.   GeometryMinorRadius = 10.0
  12600.   GeometryHeight = 12.0
  12601.   GeometryIsSmall = Yes
  12602.   Shadow = SHADOW_DECAL
  12603.   ShadowSizeX = 14;
  12604.   ShadowSizeY = 14;
  12605.   ShadowTexture = ShadowI;
  12606.   BuildCompletion = APPEARS_AT_RALLY_POINT
  12607.  
  12608. End
  12609.  
  12610. ;------------------------------------------------------------------------------
  12611. Object ChinaInfantryBlackLotus
  12612.  
  12613.   ; *** ART Parameters ***
  12614.   SelectPortrait         = SNBlkLotus_L2
  12615.   ButtonImage            = SNBlkLotus2
  12616.   
  12617.   ;UpgradeCameo1 = NONE
  12618.   ;UpgradeCameo2 = NONE
  12619.   ;UpgradeCameo3 = NONE
  12620.   ;UpgradeCameo4 = NONE
  12621.   ;UpgradeCameo5 = NONE
  12622.   
  12623.   Draw = W3DModelDraw ModuleTag_01
  12624.  
  12625.     OkToChangeModelColor = Yes
  12626.     
  12627.     ; --- idle
  12628.     DefaultConditionState
  12629.       Model             = NIHERO_SKN
  12630.       IdleAnimation     = NIHERO_SKL.NIHERO_STA 0 17
  12631.       IdleAnimation     = NIHERO_SKL.NIHero_IDA
  12632.       IdleAnimation     = NIHERO_SKL.NIHero_IDB
  12633.       AnimationMode     = ONCE
  12634.       TransitionKey     = TRANS_Stand
  12635.     End
  12636.  
  12637.     ConditionState      = REALLYDAMAGED
  12638.       IdleAnimation     = NIHERO_SKL.NIHERO_ISTA 0 30
  12639.       IdleAnimation     = NIHERO_SKL.NIHero_IIDA
  12640.       AnimationMode     = ONCE
  12641.       TransitionKey     = TRANS_StandInjured
  12642.     End
  12643.  
  12644.     TransitionState     = TRANS_Stand TRANS_StandInjured
  12645.       Animation         = NIHero_SKL.NIHero_ISTAHIT
  12646.       AnimationMode     = ONCE
  12647.     End
  12648.  
  12649.     ; --- moving
  12650.     ConditionState      = MOVING
  12651.       Animation         = NIHero_SKL.NIHero_RNA
  12652.       AnimationMode     = LOOP
  12653.       Flags             = RANDOMSTART
  12654.       TransitionKey     = None
  12655.       ParticleSysBone   = None InfantryDustTrails
  12656.     End
  12657.     AliasConditionState = MOVING UNPACKING
  12658.  
  12659.     ConditionState      = MOVING REALLYDAMAGED
  12660.       Animation         = NIHero_SKL.NIHero_IRNA
  12661.       AnimationMode     = LOOP
  12662.       Flags             = RANDOMSTART
  12663.       TransitionKey     = None
  12664.       ParticleSysBone   = None InfantryDustTrails
  12665.     End
  12666.     AliasConditionState = MOVING UNPACKING REALLYDAMAGED
  12667.  
  12668.     ; --- packing states
  12669.     ConditionState      = UNPACKING
  12670.       ;Preparing to attack (unpacking gear)
  12671.       Animation         = NIHero_SKL.NIHero_ATA1
  12672.       AnimationMode     = ONCE
  12673.     End
  12674.     AliasConditionState = UNPACKING FIRING_A
  12675.  
  12676.     ConditionState      = FIRING_A
  12677.       ;Processing attack (hacking)
  12678.       Animation         = NIHero_SKL.NIHero_ATA2
  12679.       AnimationMode     = LOOP
  12680.       TransitionKey     = TRANS_FiringA
  12681.     End
  12682.  
  12683.     ConditionState      = PACKING
  12684.       ;Completing attack (packing gear)
  12685.       Animation         = NIHero_SKL.NIHero_ATA3
  12686.       AnimationMode     = ONCE
  12687.     End
  12688.     AliasConditionState = FIRING_A PACKING 
  12689.  
  12690.     TransitionState     = TRANS_FiringA TRANS_FiringAInjured
  12691.       Animation         = NIHero_SKL.NIHero_IATAHIT
  12692.       AnimationMode     = ONCE
  12693.     End
  12694.  
  12695.     ; --- injured-packing states
  12696.     ConditionState      = UNPACKING REALLYDAMAGED
  12697.       ;Preparing to attack (unpacking gear)
  12698.       Animation         = NIHero_SKL.NIHero_IATA1
  12699.       AnimationMode     = ONCE
  12700.     End
  12701.     AliasConditionState = UNPACKING FIRING_A REALLYDAMAGED
  12702.  
  12703.     ConditionState      = FIRING_A REALLYDAMAGED
  12704.       ;Processing attack (hacking)
  12705.       Animation         = NIHero_SKL.NIHero_IATA2
  12706.       AnimationMode     = LOOP
  12707.       TransitionKey     = TRANS_FiringAInjured
  12708.     End
  12709.  
  12710.     ConditionState      = PACKING REALLYDAMAGED
  12711.       ;Completing attack (packing gear)
  12712.       Animation         = NIHero_SKL.NIHero_IATA3
  12713.       AnimationMode     = ONCE
  12714.     End
  12715.     AliasConditionState = FIRING_A PACKING REALLYDAMAGED
  12716.  
  12717.     ; --- packing-dying states
  12718. ; code doesn't really support this. Oh well.
  12719. ;    ConditionState      = DYING RAISING_FLAG
  12720. ;      Animation         = NIHero_SKL.NIHero_IDTA
  12721. ;      Animation         = NIHero_SKL.NIHero_IDTB
  12722. ;      AnimationMode     = ONCE
  12723. ;    End
  12724. ;    AliasConditionState = DYING RAISING_FLAG EXPLODED_FLAILING EXPLODED_BOUNCING
  12725.  
  12726.     ; --- normal-dying states
  12727.     ConditionState      = DYING
  12728.       Animation         = NIHero_SKL.NIHero_DTA
  12729.       Animation         = NIHero_SKL.NIHero_DTB
  12730.       AnimationMode     = ONCE
  12731.       TransitionKey     = TRANS_Dying
  12732.     End
  12733.  
  12734.     TransitionState     = TRANS_Dying TRANS_Flailing
  12735.       Animation         = NIHero_SKL.NIHero_ADTF1
  12736.       AnimationMode     = ONCE
  12737.     End
  12738.  
  12739.     ConditionState      = DYING EXPLODED_FLAILING
  12740.       Animation         = NIHero_SKL.NIHero_ADTF2
  12741.       AnimationMode     = LOOP
  12742.       TransitionKey     = TRANS_Flailing
  12743.     End
  12744.  
  12745.     ConditionState      = DYING EXPLODED_BOUNCING
  12746.       Animation         = NIHero_SKL.NIHero_ADTF3
  12747.       AnimationMode     = ONCE
  12748.       TransitionKey     = None
  12749.     End
  12750.  
  12751.     ; --- cheering states
  12752.     ConditionState      = SPECIAL_CHEERING
  12753.       Animation         = NIHERO_SKL.NIHERO_CHA
  12754.       AnimationMode     = ONCE
  12755.     End
  12756.  
  12757.     ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
  12758.       Animation         = NIHERO_SKL.NIHERO_ICHA
  12759.       AnimationMode     = ONCE
  12760.     End
  12761.  
  12762.     ; --- falling states
  12763.     ConditionState      = FREEFALL
  12764.       Animation         = NIHero_SKL.NIHero_PFL
  12765.       AnimationMode     = LOOP
  12766.       TransitionKey     = TRANS_Falling
  12767.     End
  12768.     AliasConditionState = FREEFALL REALLYDAMAGED
  12769.     AliasConditionState = FREEFALL DYING
  12770.  
  12771.     ConditionState      = PARACHUTING
  12772.       Animation         = NIHero_SKL.NIHero_PHG
  12773.       AnimationMode     = LOOP
  12774.       TransitionKey     = TRANS_Chute
  12775.     End
  12776.     AliasConditionState = PARACHUTING REALLYDAMAGED
  12777.     AliasConditionState = PARACHUTING DYING
  12778.  
  12779.     TransitionState     = TRANS_Falling TRANS_Chute
  12780.       Animation         = NIHero_SKL.NIHero_POP
  12781.       AnimationMode     = ONCE
  12782.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  12783.     End
  12784.  
  12785.     TransitionState     = TRANS_Chute TRANS_Stand
  12786.       Animation         = NIHero_SKL.NIHero_PTD
  12787.       AnimationMode     = ONCE
  12788.     End
  12789.  
  12790.     TransitionState     = TRANS_Chute TRANS_StandInjured
  12791.       Animation         = NIHero_SKL.NIHero_PTD
  12792.       AnimationMode     = ONCE
  12793.     End
  12794.  
  12795.   End
  12796.  
  12797.   ; ***DESIGN parameters ***
  12798.   DisplayName         = OBJECT:BlackLotus
  12799.   Side                = China
  12800.   EditorSorting       = INFANTRY
  12801.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  12802.   WeaponSet
  12803.     Conditions        = None 
  12804.     Weapon            = PRIMARY None
  12805.   End
  12806.   ArmorSet
  12807.     Conditions      = None
  12808.     Armor           = HumanArmor
  12809.     DamageFX        = InfantryDamageFX
  12810.   End
  12811.   VisionRange         = 300
  12812.   ShroudClearingRange = 400
  12813.   Prerequisites
  12814.     Object = ChinaBarracks
  12815.     Object = ChinaPropagandaCenter
  12816.   End
  12817.   BuildCost             = 1500
  12818.   BuildTime             = 20.0          ;in seconds    
  12819.   MaxSimultaneousOfType = 1
  12820.   CommandSet            = ChinaInfantryBlackLotusCommandSet
  12821.  
  12822.   ExperienceValue       = 50 100 150 400    ;Experience point value at each level
  12823.   ExperienceRequired    = 0 150 450 900  ;Experience points needed to gain each level
  12824.   IsTrainable           = Yes             ;Can gain experience
  12825.   CrushableLevel        = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  12826.   CommandSet            = ChinaInfantryBlackLotusCommandSet
  12827.  
  12828.   ; *** AUDIO Parameters ***
  12829.   VoiceSelect = BlackLotusVoiceSelect
  12830.   VoiceMove = BlackLotusVoiceMove
  12831.   VoiceAttack = BlackLotusVoiceAttack
  12832.   VoiceGuard = BlackLotusVoiceMove
  12833.   VoiceFear = BlackLotusVoiceFear
  12834.   VoiceTaskComplete = BlackLotusVoiceCaptureComplete
  12835.   SoundDie = BlackLotusVoiceDie
  12836.   SoundDieFire = DieByFireFemale
  12837.   SoundDieToxin = DieByToxinFemale
  12838.   SoundStealthOn = StealthOn
  12839.   SoundStealthOff = StealthOff
  12840.   
  12841.   UnitSpecificSounds
  12842.     VoiceCreate          = BlackLotusVoiceCreate
  12843.     VoiceGarrison = BlackLotusVoiceMove
  12844.     VoiceEnter = BlackLotusVoiceMove
  12845.     VoiceEnterHostile = BlackLotusVoiceMove
  12846.     VoiceStealCashComplete = BlackLotusVoiceCashComplete
  12847.     VoiceDisableVehicleComplete = BlackLotusVoiceDisableComplete
  12848.     VoiceCaptureBuildingComplete = BlackLotusVoiceCaptureComplete
  12849.     VoiceGetHealed      = BlackLotusVoiceMove
  12850.   End
  12851.  
  12852.   ; *** ENGINEERING Parameters ***
  12853.   RadarPriority = UNIT
  12854.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE HERO
  12855.  
  12856.   Body = ActiveBody ModuleTag_02
  12857.     MaxHealth       = 150.0
  12858.     InitialHealth   = 150.0
  12859.   End
  12860.  
  12861.   Behavior = CommandButtonHuntUpdate  ModuleTag_03 ; allows use of command button hunt script with this unit. 
  12862.   End
  12863.  
  12864.   Behavior = AIUpdateInterface ModuleTag_04
  12865.     AutoAcquireEnemiesWhenIdle = No
  12866.   End
  12867.   Locomotor = SET_NORMAL BlackLotusLocomotor
  12868.   Locomotor = SET_FREEFALL FreeFallLocomotor
  12869.   Behavior = PhysicsBehavior ModuleTag_05
  12870.     Mass = 5.0
  12871.   End
  12872.   Behavior = StealthUpdate ModuleTag_07
  12873.     StealthDelay                = 2500 ; msec
  12874.     StealthForbiddenConditions  = USING_ABILITY
  12875.     HintDetectableConditions    = USING_ABILITY
  12876.     InnateStealth               = Yes
  12877.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  12878.   End
  12879.  
  12880.   Behavior = StealthDetectorUpdate ModuleTag_44
  12881.     DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
  12882.     ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
  12883.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  12884.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  12885.   End
  12886.  
  12887.   Behavior = SpecialAbility ModuleTag_08
  12888.     SpecialPowerTemplate = SpecialAbilityBlackLotusCaptureBuilding
  12889.     UpdateModuleStartsAttack = Yes
  12890.     InitiateSound         = BlackLotusVoiceHackBuilding
  12891.   End
  12892.   Behavior = SpecialAbilityUpdate ModuleTag_09
  12893.     SpecialPowerTemplate  = SpecialAbilityBlackLotusCaptureBuilding
  12894.     StartAbilityRange     = 150.0
  12895.     UnpackTime            = 6730 ;animation time is 6730 (changing this will scale anim speed)
  12896.     PackTime              = 2800 ;animation time is 5800 (changing this will scale anim speed)
  12897.     PreparationTime       = 6000 ;time to complete hack once prepared (unpacked)
  12898.     SpecialObject         = BinaryDataStream
  12899.     DoCaptureFX           = Yes
  12900.     PackSound             = BlackLotusPack
  12901.     UnpackSound           = BlackLotusUnpack
  12902.     TriggerSound          = BlackLotusTrigger
  12903.     PrepSoundLoop         = BlackLotusPrepLoop
  12904.     AwardXPForTriggering  = 20
  12905.     ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  12906.   End
  12907.   Behavior = SpecialAbility ModuleTag_10
  12908.     SpecialPowerTemplate      = SpecialAbilityBlackLotusDisableVehicleHack
  12909.     UpdateModuleStartsAttack  = Yes
  12910.     InitiateSound           = BlackLotusVoiceHackVehicle
  12911.   End
  12912.   Behavior = SpecialAbilityUpdate ModuleTag_11
  12913.     SpecialPowerTemplate    = SpecialAbilityBlackLotusDisableVehicleHack
  12914.     StartAbilityRange       = 150.0
  12915.     UnpackTime              = 2000 ;6730 ;animation time is 6730 (changing this will scale anim speed)
  12916.     PackTime                = 1000 ;2800 ;animation time is 5800 (changing this will scale anim speed)
  12917.     PreparationTime         = 2000 ;time to complete hack once prepared (unpacked)
  12918.     EffectDuration          = 15000 ;duration vehicle is disabled  (30 seconds)
  12919.     DisableFXParticleSystem = DisabledEffectBinaryShower0
  12920.     SpecialObject           = BinaryDataStream
  12921.     PackSound               = BlackLotusPack
  12922.     UnpackSound             = BlackLotusUnpack
  12923.     TriggerSound            = BlackLotusTrigger
  12924.     PrepSoundLoop           = BlackLotusPrepLoop
  12925.     AwardXPForTriggering    = 0
  12926.     ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  12927.   End
  12928.   Behavior = SpecialAbility ModuleTag_12
  12929.     SpecialPowerTemplate      = SpecialAbilityBlackLotusStealCashHack
  12930.     UpdateModuleStartsAttack  = Yes
  12931.     InitiateSound         = BlackLotusVoiceHackCash
  12932.   End
  12933.   Behavior = SpecialAbilityUpdate ModuleTag_13
  12934.     SpecialPowerTemplate  = SpecialAbilityBlackLotusStealCashHack
  12935.     StartAbilityRange     = 150.0
  12936.     UnpackTime            = 6730 ;animation time is 6730 (changing this will scale anim speed)
  12937.     PackTime              = 5800 ;animation time is 5800 (changing this will scale anim speed)
  12938.     PreparationTime       = 6000 ;time to complete hack once prepared (unpacked)
  12939.     EffectValue           = 1000 ;amount of cash stolen
  12940.     SpecialObject         = BinaryDataStream
  12941.     PackSound             = BlackLotusPack
  12942.     UnpackSound           = BlackLotusUnpack
  12943.     TriggerSound          = BlackLotusTrigger
  12944.     PrepSoundLoop         = BlackLotusPrepLoop
  12945.     AwardXPForTriggering  = 20
  12946.     ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  12947.   End
  12948.  
  12949.   ;Hero units can't be squished!
  12950.   ;Behavior = SquishCollide ModuleTag_14
  12951.   ;  ;nothing
  12952.   ;End
  12953.  
  12954.  
  12955. ; --- begin Death modules ---
  12956.   Behavior = SlowDeathBehavior ModuleTag_Death01
  12957.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  12958.     SinkDelay           = 3000
  12959.     SinkRate            = 0.5     ; in Dist/Sec
  12960.     DestructionDelay    = 8000
  12961.     FX                  = INITIAL FX_GIDie
  12962.   End
  12963.   Behavior = SlowDeathBehavior ModuleTag_Death02
  12964.     DeathTypes          = NONE +CRUSHED +SPLATTED
  12965.     SinkDelay           = 3000
  12966.     SinkRate            = 0.5     ; in Dist/Sec
  12967.     DestructionDelay    = 8000
  12968.     FX                  = INITIAL FX_GIDieCrushed
  12969.   End
  12970.   Behavior = SlowDeathBehavior ModuleTag_Death03
  12971.     DeathTypes          = NONE +EXPLODED
  12972.     SinkDelay           = 3000
  12973.     SinkRate            = 0.5     ; in Dist/Sec
  12974.     DestructionDelay    = 8000
  12975.     FX                  = INITIAL FX_GIDie
  12976.     FlingForce          = 8
  12977.     FlingForceVariance  = 3
  12978.     FlingPitch          = 60
  12979.     FlingPitchVariance  = 10
  12980.   End
  12981.   Behavior = SlowDeathBehavior ModuleTag_Death04
  12982.     DeathTypes          = NONE +BURNED
  12983.     DestructionDelay    = 0
  12984.     FX                  = INITIAL FX_GIDie
  12985.     OCL                 = INITIAL OCL_FlamingInfantry
  12986.   End
  12987.   Behavior = SlowDeathBehavior ModuleTag_Death05
  12988.     DeathTypes          = NONE +POISONED
  12989.     DestructionDelay    = 0
  12990.     FX                  = INITIAL FX_GIDie
  12991.     OCL                 = INITIAL OCL_ToxicInfantry
  12992.   End
  12993.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  12994.     DeathTypes          = NONE +POISONED_BETA
  12995.     DestructionDelay    = 0
  12996.     FX                  = INITIAL FX_GIDie
  12997.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  12998.   End
  12999. ; --- end Death modules ---
  13000.  
  13001.   Behavior = PoisonedBehavior ModuleTag_17
  13002.     PoisonDamageInterval  = 100  ; Every this many msec I will retake the poison damage dealt me...
  13003.     PoisonDuration        = 3000       ; ... for this long after last hit by poison damage
  13004.   End
  13005.  
  13006.   Geometry = CYLINDER
  13007.   GeometryMajorRadius = 10.0
  13008.   GeometryMinorRadius = 10.0
  13009.   GeometryHeight = 12.0
  13010.   GeometryIsSmall = Yes
  13011.   Shadow = SHADOW_DECAL
  13012.   ShadowSizeX = 14;
  13013.   ShadowSizeY = 14;
  13014.   ShadowTexture = ShadowI;
  13015.   BuildCompletion = APPEARS_AT_RALLY_POINT
  13016.  
  13017. End
  13018.  
  13019. ;------------------------------------------------------------------------------
  13020. Object ChinaInfantryTankHunter
  13021.  
  13022.   ; *** ART Parameters ***
  13023.   SelectPortrait         = SNTankHunter_L
  13024.   ButtonImage            = SNTankHunter
  13025.   
  13026.   UpgradeCameo1 = Upgrade_Nationalism
  13027.   ;UpgradeCameo2 = NONE
  13028.   ;UpgradeCameo3 = NONE
  13029.   ;UpgradeCameo4 = NONE
  13030.   ;UpgradeCameo5 = NONE
  13031.  
  13032.   Draw = W3DModelDraw ModuleTag_01
  13033.     OkToChangeModelColor = Yes
  13034.   
  13035.   
  13036.     DefaultConditionState
  13037.       Model             = NIMSST_SKN
  13038.       IdleAnimation     = NIMSST_SKL.NIMSST_STA 0 30
  13039.       IdleAnimation     = NIMSST_SKL.NIMSST_IDA
  13040.       IdleAnimation     = NIMSST_SKL.NIMSST_IDB
  13041.       AnimationMode     = ONCE
  13042.       AnimationSpeedFactorRange = 0.8 1.2
  13043.       TransitionKey     = TRANS_Stand
  13044.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  13045.       WeaponFireFXBone  = PRIMARY Muzzle
  13046.       WeaponLaunchBone  = PRIMARY Muzzle
  13047.       WeaponLaunchBone  = SECONDARY Muzzle
  13048.     End
  13049.     AliasConditionState = REALLYDAMAGED
  13050.  
  13051.     ConditionState      = FIRING_A 
  13052.       Animation         = NIMSST_SKL.NIMSST_ATA 
  13053.       AnimationMode     = ONCE
  13054.       TransitionKey     = TRANS_START_FIRING
  13055.     End
  13056.     AliasConditionState = REALLYDAMAGED FIRING_A
  13057.     
  13058.     ConditionState      = BETWEEN_FIRING_SHOTS_A
  13059.       Animation         = NIMSST_SKL.NIMSST_STA
  13060.       AnimationMode     = ONCE
  13061.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  13062.       ; and a long recycle time between shots. we want him to finish his fire animation
  13063.       ; (unless he's ordered to do something else), so this is just a handy trick that
  13064.       ; says, "if the previous state had this transition key, allow it to finish before
  13065.       ; switching to us, if possible".
  13066.       WaitForStateToFinishIfPossible = TRANS_START_FIRING
  13067.     End
  13068.     AliasConditionState = REALLYDAMAGED BETWEEN_FIRING_SHOTS_A
  13069.  
  13070.     ConditionState      = MOVING
  13071.       Animation         = NIMSST_SKL.NIMSST_RNA 20
  13072.       AnimationMode     = LOOP
  13073.       Flags             = RANDOMSTART
  13074.       TransitionKey     = None
  13075.       ParticleSysBone   = None InfantryDustTrails
  13076.     End
  13077.     AliasConditionState = REALLYDAMAGED MOVING
  13078.  
  13079.     ConditionState      = RELOADING_A
  13080.       Animation         = NIMSST_SKL.NIMSST_ATA 10
  13081.       AnimationMode     = ONCE
  13082.       ;WeaponLaunchBone = PRIMARY WeaponA
  13083.     End
  13084.     AliasConditionState = MOVING RELOADING_A
  13085.     AliasConditionState = REALLYDAMAGED MOVING RELOADING_A
  13086.  
  13087.     ConditionState      = DYING
  13088.       Animation         = NIMSST_SKL.NIMSST_DTA
  13089.       Animation         = NIMSST_SKL.NIMSST_DTB
  13090.       AnimationSpeedFactorRange = 0.9 1.25
  13091.       AnimationMode     = ONCE
  13092.       TransitionKey     = TRANS_Dying
  13093.     End
  13094.  
  13095.     TransitionState     = TRANS_Dying TRANS_Flailing
  13096.       Animation         = NIMSST_SKL.NIMSST_ADTD1
  13097.       AnimationMode     = ONCE
  13098.     End
  13099.  
  13100.     ConditionState      = DYING EXPLODED_FLAILING
  13101.       Animation         = NIMSST_SKL.NIMSST_ADTD2
  13102.       AnimationMode     = LOOP
  13103.       TransitionKey     = TRANS_Flailing
  13104.     End
  13105.  
  13106.     ConditionState      = DYING EXPLODED_BOUNCING
  13107.       Animation         = NIMSST_SKL.NIMSST_ADTD3
  13108.       AnimationMode     = ONCE
  13109.       TransitionKey     = None
  13110.     End
  13111.  
  13112.     ;PARACHUTING ANIMATIONS
  13113.     ConditionState      = FREEFALL
  13114.       Animation         = NIMSST_SKL.NIMSST_POP
  13115.       AnimationMode     = ONCE
  13116.       TransitionKey     = TRANS_Falling
  13117.     End
  13118.     AliasConditionState = FREEFALL REALLYDAMAGED
  13119.     AliasConditionState = FREEFALL DYING
  13120.     
  13121.     ConditionState      = PARACHUTING
  13122.       Animation         = NIMSST_SKL.NIMSST_PHG
  13123.       AnimationMode     = LOOP
  13124.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  13125.       TransitionKey     = TRANS_Chute
  13126.     End
  13127.     AliasConditionState = PARACHUTING REALLYDAMAGED
  13128.     AliasConditionState = PARACHUTING DYING
  13129.     
  13130.    ; TransitionState     = TRANS_Falling TRANS_Chute
  13131.    ;   Animation         = NIMSST_SKL.NIMSST_POP
  13132.    ;   AnimationMode     = ONCE
  13133.    ;   Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  13134.    ; End
  13135.     
  13136.     TransitionState     = TRANS_Chute TRANS_Stand
  13137.       Animation         = NIMSST_SKL.NIMSST_PDN
  13138.       AnimationMode     = ONCE
  13139.     End
  13140.  
  13141.   End
  13142.  
  13143.  
  13144.   ; ***DESIGN parameters ***
  13145.   DisplayName      = OBJECT:TankHunter
  13146.   Side = China
  13147.   EditorSorting = INFANTRY
  13148.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  13149.   WeaponSet
  13150.     Conditions = None 
  13151.     Weapon = PRIMARY ChinaInfantryTankHunterMissileLauncher
  13152.   End
  13153.   ArmorSet
  13154.     Conditions      = None
  13155.     Armor           = HumanArmor
  13156.     DamageFX        = InfantryDamageFX
  13157.   End
  13158.   VisionRange = 150
  13159.   ShroudClearingRange = 400
  13160.   Prerequisites
  13161.     Object = ChinaBarracks
  13162.   End
  13163.   BuildCost = 300
  13164.   BuildTime = 5.0          ;in seconds    
  13165.  
  13166.   ExperienceValue = 20 20 40 60    ;Experience point value at each level
  13167.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  13168.   IsTrainable = Yes             ;Can gain experience
  13169.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  13170.   CommandSet      = ChinaInfantryTankHunterCommandSet
  13171.  
  13172.   ; *** AUDIO Parameters ***
  13173.   VoiceSelect = TankHunterVoiceSelect
  13174.   VoiceMove = TankHunterVoiceMove
  13175.   VoiceAttack = TankHunterVoiceAttack
  13176.   VoiceAttackAir = TankHunterVoiceAttack
  13177.   SoundDie = TankHunterVoiceDie
  13178.   SoundDieFire = DieByFireChina
  13179.   SoundDieToxin = DieByToxinChina
  13180.   VoiceGuard = TankHunterVoiceMove
  13181.   VoiceFear = TankHunterVoiceFear
  13182.   UnitSpecificSounds
  13183.     VoiceCreate          = TankHunterVoiceCreate
  13184.     VoiceGarrison = TankHunterVoiceGarrison
  13185.     VoiceEnter = TankHunterVoiceMove
  13186.     VoiceEnterHostile = TankHunterVoiceMove
  13187.     VoiceGetHealed      = TankHunterVoiceMove
  13188.   End
  13189.  
  13190.   ; *** ENGINEERING Parameters ***
  13191.   RadarPriority = UNIT
  13192.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
  13193.  
  13194.   Body = ActiveBody ModuleTag_02
  13195.     MaxHealth       = 100.0
  13196.     InitialHealth   = 100.0
  13197.   End
  13198.  
  13199.   Behavior = AIUpdateInterface ModuleTag_03
  13200.     AutoAcquireEnemiesWhenIdle = Yes
  13201.   End
  13202.   Locomotor = SET_NORMAL MissileDefenderLocomotor
  13203.   Behavior = HordeUpdate ModuleTag_04
  13204.     UpdateRate = 1000    ; how often to recheck horde status (msec)
  13205.     RubOffRadius = 60    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
  13206.     Radius = 30          ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
  13207.     KindOf = INFANTRY    ; what KindOf's must match to count towards horde-ness
  13208.     AlliesOnly = Yes     ; do we only count allies towards horde status? 
  13209.     ExactMatch = No      ; do we only count units of our exact same type towards horde status? (overrides kindof)
  13210.     Count = 5            ; how many units must be within Radius to grant us horde-ness
  13211.     Action = HORDE       ; when horde-ing, grant us the HORDE bonus
  13212.   End
  13213.   Behavior = PhysicsBehavior ModuleTag_05
  13214.     Mass = 5.0
  13215.   End
  13216.  
  13217.   Behavior = SpecialAbility ModuleTag_07
  13218.     SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack
  13219.     UpdateModuleStartsAttack = Yes
  13220.     InitiateSound = TankHunterVoiceTNT
  13221.   End
  13222.   Behavior = SpecialAbilityUpdate ModuleTag_08
  13223.     SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack
  13224.     StartAbilityRange = 5.0
  13225.     PreparationTime = 0
  13226.     SpecialObject = TNTStickyBomb
  13227.     MaxSpecialObjects = 8
  13228.     SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
  13229.     SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
  13230.     UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
  13231.     FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
  13232.   End
  13233.  
  13234.  
  13235.   Behavior = SquishCollide ModuleTag_09
  13236.     ;nothing
  13237.   End
  13238.  
  13239.  
  13240. ; --- begin Death modules ---
  13241.   Behavior = SlowDeathBehavior ModuleTag_Death01
  13242.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  13243.     SinkDelay           = 3000
  13244.     SinkRate            = 0.5     ; in Dist/Sec
  13245.     DestructionDelay    = 8000
  13246.     FX                  = INITIAL FX_GIDie
  13247.   End
  13248.   Behavior = SlowDeathBehavior ModuleTag_Death02
  13249.     DeathTypes          = NONE +CRUSHED +SPLATTED
  13250.     SinkDelay           = 3000
  13251.     SinkRate            = 0.5     ; in Dist/Sec
  13252.     DestructionDelay    = 8000
  13253.     FX                  = INITIAL FX_GIDieCrushed
  13254.   End
  13255.   Behavior = SlowDeathBehavior ModuleTag_Death03
  13256.     DeathTypes          = NONE +EXPLODED
  13257.     SinkDelay           = 3000
  13258.     SinkRate            = 0.5     ; in Dist/Sec
  13259.     DestructionDelay    = 8000
  13260.     FX                  = INITIAL FX_GIDie
  13261.     FlingForce          = 8
  13262.     FlingForceVariance  = 3
  13263.     FlingPitch          = 60
  13264.     FlingPitchVariance  = 10
  13265.   End
  13266.   Behavior = SlowDeathBehavior ModuleTag_Death04
  13267.     DeathTypes          = NONE +BURNED
  13268.     DestructionDelay    = 0
  13269.     FX                  = INITIAL FX_GIDie
  13270.     OCL                 = INITIAL OCL_FlamingInfantry
  13271.   End
  13272.   Behavior = SlowDeathBehavior ModuleTag_Death05
  13273.     DeathTypes          = NONE +POISONED
  13274.     DestructionDelay    = 0
  13275.     FX                  = INITIAL FX_GIDie
  13276.     OCL                 = INITIAL OCL_ToxicInfantry
  13277.   End
  13278.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  13279.     DeathTypes          = NONE +POISONED_BETA
  13280.     DestructionDelay    = 0
  13281.     FX                  = INITIAL FX_GIDie
  13282.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  13283.   End
  13284. ; --- end Death modules ---
  13285.  
  13286.   Behavior = PoisonedBehavior ModuleTag_12
  13287.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  13288.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  13289.   End
  13290.  
  13291.   Geometry = CYLINDER
  13292.   GeometryMajorRadius = 10.0
  13293.   GeometryMinorRadius = 10.0
  13294.   GeometryHeight = 12.0
  13295.   GeometryIsSmall = Yes
  13296.   Shadow = SHADOW_DECAL
  13297.   ShadowSizeX = 14;
  13298.   ShadowSizeY = 14;
  13299.   ShadowTexture = ShadowI;
  13300.   BuildCompletion = APPEARS_AT_RALLY_POINT
  13301.  
  13302. End
  13303.  
  13304. ;------------------------------------------------------------------------------
  13305. Object TNTStickyBomb ;Created by Chinese Tank Hunters
  13306.  
  13307.   ;No drawable because it's invisible
  13308.   ; *** ART Parameters ***
  13309.  
  13310.   ; ***DESIGN parameters ***
  13311.   Side = China
  13312.   EditorSorting   = SYSTEM
  13313.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  13314.   VisionRange = 75.0  ;Allow the stickybomb to show itself to user?
  13315.   ShroudClearingRange = 75
  13316.   ArmorSet
  13317.     Conditions      = None
  13318.     Armor           = InvulnerableAllArmor
  13319.   End
  13320.  
  13321.   ; *** AUDIO Parameters ***
  13322.   SoundDie = BombTruckDefaultBombDetonation
  13323.   UnitSpecificSounds
  13324.     UnitBombPing = BombTickTimed
  13325.   End
  13326.  
  13327.   ; *** ENGINEERING Parameters ***
  13328.   RadarPriority = NOT_ON_RADAR
  13329.   KindOf = PROJECTILE MINE NO_COLLIDE
  13330.  
  13331.   Behavior = PhysicsBehavior ModuleTag_01
  13332.     Mass = 5
  13333.   End
  13334.  
  13335.   ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
  13336.   Behavior = LifetimeUpdate ModuleTag_02
  13337.     MinLifetime = 10000   ; min lifetime in msec
  13338.     MaxLifetime = 10000   ; max lifetime in msec
  13339.   End
  13340.  
  13341.   Behavior = StickyBombUpdate ModuleTag_03
  13342.     ; nothing
  13343.   End
  13344.  
  13345.   Behavior = SlowDeathBehavior ModuleTag_04
  13346.     DestructionDelay    = 1
  13347.     FX                  = INITIAL WeaponFX_TNTStickyBombDetonation
  13348.     Weapon              = FINAL   TNTDetonationWeapon
  13349.   End
  13350.  
  13351.   Body = HighlanderBody ModuleTag_NewBody
  13352.     MaxHealth = 1.0
  13353.     InitialHealth = 1.0
  13354.   End
  13355.  
  13356. End
  13357.  
  13358. ;------------------------------------------------------------------------------
  13359. Object RemoteC4Charge ;Created by ColonelBurton
  13360.  
  13361.   ;No drawable because it's invisible
  13362.   ; *** ART Parameters ***
  13363.  
  13364.   ; ***DESIGN parameters ***
  13365.   Side = America
  13366.   EditorSorting   = SYSTEM
  13367.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  13368.   VisionRange = 75.0  ;Allow the stickybomb to show itself to user?
  13369.   ShroudClearingRange = 75
  13370.   ArmorSet
  13371.     Conditions      = None
  13372.     Armor           = InvulnerableAllArmor
  13373.   End
  13374.  
  13375.   ; *** AUDIO Parameters ***
  13376.   SoundDie = RemoteDemoChargeExplosion
  13377.   UnitSpecificSounds
  13378.     UnitBombPing = BombTickRemote
  13379.   End
  13380.  
  13381.   ; *** ENGINEERING Parameters ***
  13382.   RadarPriority = NOT_ON_RADAR
  13383.   KindOf =  PROJECTILE MINE NO_COLLIDE
  13384.  
  13385.   ;Body = ActiveBody ModuleTag_02
  13386.   ;  MaxHealth = 1.0
  13387.   ;  InitialHealth = 1.0
  13388.   ;End
  13389.  
  13390.   Body = HighlanderBody ModuleTag_NewBody
  13391.     MaxHealth = 1.0
  13392.     InitialHealth = 1.0
  13393.   End
  13394.  
  13395.   Behavior = StealthUpdate ModuleTag_03
  13396.     StealthDelay                = 0                  ; msec
  13397.     StealthForbiddenConditions  = NONE
  13398.     FriendlyOpacityMin          = 50.0%
  13399.     InnateStealth               = Yes
  13400.   End
  13401.  
  13402.   Behavior = StickyBombUpdate ModuleTag_04
  13403.     ;Keeps it attached properly to the intended target should it move.
  13404.   End
  13405.  
  13406.  
  13407.   Behavior = SlowDeathBehavior ModuleTag_05
  13408.     DestructionDelay = 1
  13409.     FX                  = INITIAL WeaponFX_TNTStickyBombDetonation
  13410.     Weapon              = FINAL   BurtonC4ChargeWeapon
  13411.   End
  13412.  
  13413.   Geometry            = CYLINDER
  13414.   GeometryMajorRadius = 0.0
  13415.   GeometryHeight      = 0.0
  13416.   GeometryIsSmall     = No
  13417.  
  13418. End
  13419.  
  13420. ;------------------------------------------------------------------------------
  13421. Object TimedC4Charge ;Created by Colonel Burton
  13422.  
  13423.   ;No drawable because it's invisible
  13424.   ; *** ART Parameters ***
  13425.  
  13426.   ; ***DESIGN parameters ***
  13427.   Side = America
  13428.   EditorSorting   = SYSTEM
  13429.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  13430.   VisionRange = 75.0  ;Allow the stickybomb to show itself to user?
  13431.   ShroudClearingRange = 75
  13432.   ArmorSet
  13433.     Conditions      = None
  13434.     Armor           = InvulnerableAllArmor
  13435.   End
  13436.  
  13437.   ; *** AUDIO Parameters ***
  13438.   SoundDie = RemoteDemoChargeExplosion
  13439.   UnitSpecificSounds
  13440.     UnitBombPing = BombTickTimed
  13441.   End
  13442.  
  13443.   ; *** ENGINEERING Parameters ***
  13444.   RadarPriority = NOT_ON_RADAR
  13445.   KindOf =  PROJECTILE MINE NO_COLLIDE
  13446.  
  13447.   ;Body = ActiveBody ModuleTag_02
  13448.   ;  MaxHealth = 1.0
  13449.   ;  InitialHealth = 1.0
  13450.   ;End
  13451.   Body = HighlanderBody ModuleTag_NewBody
  13452.     MaxHealth = 1.0
  13453.     InitialHealth = 1.0
  13454.   End
  13455.  
  13456.   Behavior = StealthUpdate ModuleTag_03
  13457.     StealthDelay                = 0                  ; msec
  13458.     StealthForbiddenConditions  = NONE
  13459.     FriendlyOpacityMin          = 50.0%
  13460.     InnateStealth               = Yes
  13461.   End
  13462.  
  13463.   ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
  13464.   Behavior = LifetimeUpdate ModuleTag_04
  13465.     MinLifetime = 20000   ; min lifetime in msec
  13466.     MaxLifetime = 20000   ; max lifetime in msec
  13467.   End
  13468.  
  13469.   Behavior = StickyBombUpdate ModuleTag_05
  13470.     ;Keeps it attached properly to the intended target should it move.
  13471.   End
  13472.  
  13473.   Behavior = SlowDeathBehavior ModuleTag_06
  13474.     DestructionDelay = 1
  13475.     FX                  = INITIAL WeaponFX_TNTStickyBombDetonation
  13476.     Weapon              = FINAL   BurtonC4ChargeWeapon
  13477.   End
  13478.  
  13479.   Geometry            = CYLINDER
  13480.   GeometryMajorRadius = 0.0
  13481.   GeometryHeight      = 0.0
  13482.   GeometryIsSmall     = No
  13483.  
  13484. End
  13485.  
  13486. ;------------------------------------------------------------------------------
  13487. Object DemoTrapDetonationObject ;The explodes-next-frame object when demo trap is triggered.
  13488.  
  13489.   ; ***DESIGN parameters ***
  13490.   Side = GLA
  13491.   EditorSorting   = SYSTEM
  13492.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  13493.   VisionRange = 0.0  ;Allow the stickybomb to show itself to user?
  13494.  
  13495.   ; *** AUDIO Parameters ***
  13496.  
  13497.   ; *** ENGINEERING Parameters ***
  13498.   RadarPriority = NOT_ON_RADAR
  13499.   KindOf = PROJECTILE
  13500.  
  13501.   Behavior = PhysicsBehavior ModuleTag_01
  13502.     Mass = 5
  13503.   End
  13504.  
  13505.   ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
  13506.   Behavior = LifetimeUpdate ModuleTag_02
  13507.     MinLifetime = 1   ; min lifetime in msec
  13508.     MaxLifetime = 1   ; max lifetime in msec
  13509.   End
  13510.  
  13511.   Behavior = SlowDeathBehavior ModuleTag_03
  13512.     DestructionDelay = 1
  13513.     FX                  = INITIAL WeaponFX_DemoTrapDetonation
  13514.     Weapon              = FINAL   DemoTrapDetonationWeapon
  13515.   End
  13516. End
  13517.  
  13518. ;------------------------------------------------------------------------------
  13519. Object CINE_DemoTrapDetonationObject ;The explodes-next-frame object when demo trap is triggered.
  13520.  
  13521.   ; ***DESIGN parameters ***
  13522.   Side = GLA
  13523.   EditorSorting   = SYSTEM
  13524.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  13525.   VisionRange = 0.0  ;Allow the stickybomb to show itself to user?
  13526.  
  13527.   ; *** AUDIO Parameters ***
  13528.  
  13529.   ; *** ENGINEERING Parameters ***
  13530.   RadarPriority = NOT_ON_RADAR
  13531.   KindOf = PROJECTILE
  13532.  
  13533.   Behavior = PhysicsBehavior ModuleTag_01
  13534.     Mass = 5
  13535.   End
  13536.  
  13537.   ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior)
  13538.   Behavior = LifetimeUpdate ModuleTag_02
  13539.     MinLifetime = 1   ; min lifetime in msec
  13540.     MaxLifetime = 1   ; max lifetime in msec
  13541.   End
  13542.  
  13543.   Behavior = SlowDeathBehavior ModuleTag_03
  13544.     DestructionDelay = 1
  13545.     FX                  = INITIAL CINE_WeaponFX_DemoTrapDetonation
  13546.     Weapon              = FINAL   DummyWeapon
  13547.   End
  13548. End
  13549.  
  13550. ;------------------------------------------------------------------------------
  13551. ; @todo  -- this entire unit is "first pass only" and needs lots of specialization
  13552. Object ChinaInfantrySecretPolice
  13553.  
  13554.   ; *** ART Parameters ***
  13555.   Draw = W3DModelDraw ModuleTag_01
  13556.     OkToChangeModelColor = Yes
  13557.  
  13558.     ; @todo srj -- all these states are using placeholder art; need to add anims, etc.
  13559.     DefaultConditionState
  13560.       Model = NIHacker
  13561.     End
  13562.  
  13563.   End
  13564.  
  13565.   ; ***DESIGN parameters ***
  13566.   DisplayName      = OBJECT:SecretPolice
  13567.   Side = China
  13568.   EditorSorting = INFANTRY
  13569.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  13570.   WeaponSet
  13571.     Conditions = None 
  13572.     Weapon = PRIMARY None
  13573.   End
  13574.   ArmorSet
  13575.     Conditions      = None
  13576.     Armor           = HumanArmor
  13577.     DamageFX        = InfantryDamageFX
  13578.   End
  13579.   VisionRange = 150
  13580.   ShroudClearingRange = 150
  13581.   Prerequisites
  13582.     Object = ChinaBarracks
  13583.   End
  13584.   BuildCost = 100
  13585.   BuildTime = 3.0          ;in seconds    
  13586.  
  13587.   ExperienceValue = 50 100 150 400    ;Experience point value at each level
  13588.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  13589.   IsTrainable = Yes             ;Can gain experience
  13590.  
  13591.   ; *** AUDIO Parameters ***
  13592.   VoiceSelect = RedGuardVoiceSelect
  13593.   VoiceMove = RedGuardVoiceMove
  13594.   VoiceAttack = RedGuardVoiceAttack
  13595.   SoundDie = RedGuardVoiceDie
  13596.   SoundDieFire = DieByFireChina
  13597.   SoundDieToxin = DieByToxinChina
  13598.  
  13599.  
  13600.   ; *** ENGINEERING Parameters ***
  13601.   RadarPriority = UNIT
  13602.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
  13603.  
  13604.   Body = ActiveBody ModuleTag_02
  13605.     MaxHealth       = 50.0
  13606.     InitialHealth   = 50.0
  13607.   End
  13608.  
  13609.   Behavior = AIUpdateInterface ModuleTag_03
  13610.     AutoAcquireEnemiesWhenIdle = Yes
  13611.   End
  13612.   Locomotor = SET_NORMAL BasicHumanLocomotor
  13613.   Behavior = PhysicsBehavior ModuleTag_04
  13614.     Mass = 5.0
  13615.   End
  13616.   Behavior = SlowDeathBehavior ModuleTag_05
  13617.     SinkDelay = 3000
  13618.     SinkRate = 0.5     ; in Dist/Sec
  13619.     DestructionDelay = 8000
  13620.   End
  13621.  
  13622.  
  13623.   Behavior = SquishCollide ModuleTag_06
  13624.     ;nothing
  13625.   End
  13626.  
  13627.  
  13628.   Behavior = FXListDie ModuleTag_07
  13629.     DeathTypes = ALL -CRUSHED -SPLATTED
  13630.     DeathFX = FX_GIDie
  13631.   End
  13632.   Behavior = FXListDie ModuleTag_08
  13633.     DeathTypes = NONE +CRUSHED +SPLATTED
  13634.     DeathFX = FX_GIDieCrushed
  13635.   End
  13636.  
  13637.   Behavior = PoisonedBehavior ModuleTag_09
  13638.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  13639.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  13640.   End
  13641.  
  13642.   Geometry = CYLINDER
  13643.   GeometryMajorRadius = 10.0
  13644.   GeometryMinorRadius = 10.0
  13645.   GeometryHeight = 12.0
  13646.   GeometryIsSmall = Yes
  13647.   Shadow = SHADOW_DECAL
  13648.   ShadowSizeX = 14;
  13649.   ShadowSizeY = 14;
  13650.   ShadowTexture = ShadowI;
  13651.   BuildCompletion = APPEARS_AT_RALLY_POINT
  13652.  
  13653. End
  13654.  
  13655. ;------------------------------------------------------------------------------
  13656. ; Also known as the Ambulance
  13657. Object AmericaVehicleMedic
  13658.  
  13659.   ; *** ART Parameters ***
  13660.   SelectPortrait         = SAAmbulance_L
  13661.   ButtonImage            = SAAmbulance
  13662.   
  13663.   UpgradeCameo1 = Upgrade_AmericaBattleDrone
  13664.   UpgradeCameo2 = Upgrade_AmericaScoutDrone
  13665.   ;UpgradeCameo3 = NONE
  13666.   ;UpgradeCameo4 = NONE
  13667.   ;UpgradeCameo5 = NONE
  13668.   
  13669.   Draw = W3DTruckDraw ModuleTag_01
  13670.  
  13671.     ConditionState = NONE
  13672.       Model = AVAmbulance
  13673.       Turret = Turret
  13674.       TurretPitch = TurretEL
  13675.       WeaponFireFXBone = PRIMARY WeaponA
  13676.       WeaponLaunchBone = PRIMARY WeaponA
  13677.     End
  13678.     ConditionState       = REALLYDAMAGED
  13679.       Model              = AVAmbulance_D
  13680.       Turret = Turret
  13681.       TurretPitch = TurretEL
  13682.       WeaponFireFXBone = PRIMARY WeaponA
  13683.       WeaponLaunchBone = PRIMARY WeaponA
  13684.     End      
  13685.     
  13686.     ConditionState       = RUBBLE
  13687.       Model              = AVAmbulance_D
  13688.     End      
  13689.     
  13690.     TrackMarks = EXTireTrack.tga
  13691.     OkToChangeModelColor = Yes
  13692.  
  13693.     Dust = RocketBuggyDust
  13694.     DirtSpray = RocketBuggyDirtSpray
  13695.     PowerslideSpray = RocketBuggyDirtPowerSlide
  13696.  
  13697.     ; These parameters are only used if the model has a separate suspension, 
  13698.     ; and the locomotor has HasSuspension = Yes.
  13699.     LeftFrontTireBone = Tire01
  13700.     RightFrontTireBone = Tire02
  13701.     LeftRearTireBone = Tire03
  13702.     RightRearTireBone = Tire04
  13703.     TireRotationMultiplier = 0.2        ; this * speed = rotation.
  13704.     PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
  13705.  
  13706.  
  13707.   End
  13708.  
  13709.   ; ***DESIGN parameters ***
  13710.   DisplayName      = OBJECT:Medic
  13711.   Side = America
  13712.   EditorSorting   = VEHICLE
  13713.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  13714.   WeaponSet 
  13715.     ;*** Fully automated and driven by the CleanupHazardUpdate ***
  13716.     Conditions        = None 
  13717.     Weapon            = PRIMARY AmbulanceCleanHazardWeapon 
  13718.     AutoChooseSources = PRIMARY NONE
  13719.   End
  13720.   ArmorSet
  13721.     Conditions      = None
  13722.     Armor           = ToxinTruckArmor 
  13723.     DamageFX        = TruckDamageFX
  13724.   End
  13725.   BuildCost       = 600
  13726.   BuildTime       = 10.0          ;in seconds    
  13727.   VisionRange     = 100
  13728.   ShroudClearingRange = 400
  13729.   Prerequisites
  13730.     Object = AmericaWarFactory
  13731.   End
  13732.   ExperienceValue    = 50 50 50 50 ;Experience point value at each level
  13733.   IsTrainable     = No
  13734.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  13735.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  13736.   CommandSet      = AmericaVehicleAmbulanceCommandSet
  13737.   
  13738.   ; *** AUDIO Parameters ***
  13739.   VoiceSelect = AmbulanceVoiceSelect
  13740.   VoiceMove = AmbulanceVoiceMove
  13741.   VoiceGuard = AmbulanceVoiceMove
  13742.   VoiceAttack = AmbulanceVoiceDetox
  13743.   SoundMoveStart = HumveeMoveStart
  13744.   SoundMoveStartDamaged = HumveeMoveStart
  13745.   SoundEnter = HumveeEnter
  13746.   SoundExit = HumveeExit
  13747.  
  13748.   UnitSpecificSounds
  13749.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  13750.     VoiceCreate          = AmbulanceVoiceCreate
  13751.     TurretMoveStart = NoSound
  13752.     TurretMoveLoop = TurretMoveLoop
  13753.     ; Required for the W3DTruckDraw module
  13754.     TruckLandingSound = RocketBuggyLand
  13755.     TruckPowerslideSound = RocketBuggyPowerslide
  13756.     VoiceCrush          = AmbulanceVoiceCrush
  13757.     VoiceEnter = AmbulanceVoiceMove
  13758.   End
  13759.  
  13760.  
  13761.   ; *** ENGINEERING Parameters ***
  13762.   RadarPriority = UNIT
  13763.   KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT
  13764.   
  13765.   Body = ActiveBody ModuleTag_02
  13766.     MaxHealth       = 240.0
  13767.     InitialHealth   = 240.0
  13768.   End
  13769.  
  13770.   Behavior = CleanupHazardUpdate ModuleTag_03
  13771.     WeaponSlot            = PRIMARY
  13772.     ScanRate              = 1000
  13773.     ScanRange             = 100.0 ;If this range exceeds the AmbulanceCleanHazardWeapon AttackRange, it'll move!
  13774.   End
  13775.  
  13776.   ;Can be ordered to clean up a larger area with the ability to move around at an extended range.
  13777.   Behavior = CleanupAreaPower ModuleTag_04
  13778.     SpecialPowerTemplate          = SpecialAbilityAmbulanceCleanupArea
  13779.     MaxMoveDistanceFromLocation   = 300.0 ;allows the unit to move around while cleaning up
  13780.     InitiateSound = AmbulanceVoiceDetox
  13781.   End
  13782.  
  13783.   Behavior = TransportAIUpdate ModuleTag_05
  13784.    AutoAcquireEnemiesWhenIdle = No  ;CleanupHazardUpdate handles this...
  13785.    Turret
  13786.       TurretTurnRate = 180
  13787.       TurretPitchRate = 180
  13788.       AllowsPitch = Yes
  13789.       MinPhysicalPitch = -20 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
  13790.       TurretFireAngleSweep = PRIMARY 25
  13791.       ControlledWeaponSlots = PRIMARY
  13792.     End
  13793.   End
  13794.   Locomotor = SET_NORMAL HumveeLocomotor
  13795.  
  13796.   Behavior = TransportContain ModuleTag_06
  13797.     Slots               = 3
  13798.     HealthRegen%PerSec  = 25
  13799.     DamagePercentToUnits = 10%
  13800.     AllowInsideKindOf   = INFANTRY
  13801.     AllowAlliesInside   = Yes
  13802.     AllowNeutralInside  = No
  13803.     AllowEnemiesInside  = No
  13804.     ExitDelay = 250
  13805.     NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
  13806.     GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
  13807.   End
  13808.  
  13809.   Behavior = PhysicsBehavior ModuleTag_07
  13810.     Mass = 50.0
  13811.   End
  13812.   Behavior = SlowDeathBehavior ModuleTag_08
  13813.     DeathTypes = ALL -CRUSHED -SPLATTED
  13814.     DestructionDelay = 0
  13815.     FX  = FINAL FX_GenericTankDeathExplosion
  13816.     OCL = FINAL OCL_FinalAmbulanceDebris
  13817.   End
  13818.  
  13819.   Behavior = ObjectCreationUpgrade ModuleTag_09
  13820.     UpgradeObject = OCL_AmericanBattleDrone
  13821.     TriggeredBy   = Upgrade_AmericaBattleDrone
  13822.     ConflictsWith = Upgrade_AmericaScoutDrone
  13823.   End
  13824.   Behavior = ObjectCreationUpgrade ModuleTag_10
  13825.     UpgradeObject = OCL_AmericanScoutDrone
  13826.     TriggeredBy   = Upgrade_AmericaScoutDrone
  13827.     ConflictsWith = Upgrade_AmericaBattleDrone
  13828.   End
  13829.   Behavior = ProductionUpdate ModuleTag_11
  13830.     MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  13831.   End
  13832.  
  13833.   Behavior = DestroyDie ModuleTag_12
  13834.     DeathTypes = NONE +CRUSHED +SPLATTED
  13835.   End
  13836.  
  13837.   Behavior = FXListDie ModuleTag_13
  13838.     DeathTypes = NONE +CRUSHED +SPLATTED
  13839.     DeathFX = FX_CarCrush
  13840.   End
  13841.  
  13842.   Behavior = CreateObjectDie ModuleTag_14
  13843.     DeathTypes = NONE +CRUSHED +SPLATTED
  13844.     CreationList = OCL_CrusaderTank_CrushEffect
  13845.   End
  13846.  
  13847.   Behavior = FXListDie ModuleTag_15
  13848.     DeathTypes = ALL -CRUSHED -SPLATTED
  13849.     DeathFX = FX_GenericTankDeathEffect
  13850.   End
  13851.  
  13852.   Behavior = CreateCrateDie ModuleTag_16
  13853.     CrateData = SalvageCrateData
  13854.     ;CrateData = EliteTankCrateData
  13855.     ;CrateData = HeroicTankCrateData
  13856.   End
  13857.  
  13858.   Behavior = ExperienceScalarUpgrade ModuleTag_17
  13859.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  13860.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  13861.   End
  13862.  
  13863.   Behavior = TransitionDamageFX ModuleTag_18
  13864.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  13865.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  13866.   End
  13867.  
  13868.   Behavior = FlammableUpdate ModuleTag_21
  13869.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  13870.     AflameDamageAmount = 3       ; taking this much damage...
  13871.     AflameDamageDelay = 500       ; this often.
  13872.  
  13873.   End
  13874.  
  13875.   Behavior = AutoHealBehavior ModuleTag_22
  13876.     HealingAmount     = 4
  13877.     HealingDelay      = 1000 ; msec
  13878.     Radius            = 100.0f
  13879.     StartsActive      = Yes
  13880.     KindOf            = INFANTRY
  13881.   End
  13882.  
  13883.   Geometry = BOX
  13884.   GeometryMajorRadius = 14.0
  13885.   GeometryMinorRadius = 7.0
  13886.   GeometryHeight = 12.0  ; height set to allow clear clipping of projectile streams   
  13887.   GeometryIsSmall = Yes   
  13888.   Shadow = SHADOW_VOLUME 
  13889.  
  13890. End
  13891.  
  13892. ;------------------------------------------------------------------------------
  13893. Object AmericaVehicleBattleDrone
  13894.  
  13895.   ; *** ART Parameters ***
  13896.   SelectPortrait         = SABattleDrone_L
  13897.   ButtonImage            = SABattleDrone
  13898.   
  13899.   UpgradeCameo1 = Upgrade_AmericaDroneArmor
  13900.   ;UpgradeCameo2 = NONE
  13901.   ;UpgradeCameo3 = NONE
  13902.   ;UpgradeCameo4 = NONE
  13903.   ;UpgradeCameo5 = NONE
  13904.  
  13905.   ;MAIN CHASSIS
  13906.   Draw = W3DModelDraw ModuleTag_01
  13907.     OkToChangeModelColor = Yes
  13908.  
  13909.     DefaultConditionState
  13910.       Model = AVBATTLEDR
  13911.       Animation = AVBATTLEDR.AVBATTLEDR
  13912.       AnimationMode = LOOP
  13913.       Turret = Turret01
  13914.       TurretPitch = TurretEL01
  13915.       WeaponMuzzleFlash = PRIMARY TurretFX01
  13916.       WeaponFireFXBone = PRIMARY Muzzle01
  13917.     End
  13918.  
  13919.     ConditionState = REALLYDAMAGED
  13920.       Model = AVBATTLEDR_D
  13921.       Animation = AVBATTLEDR_D.AVBATTLEDR_D
  13922.       AnimationMode = LOOP
  13923.     End
  13924.   End
  13925.  
  13926.   ;EXTENDING ARM (FOR REPAIRING)
  13927.   Draw = W3DModelDraw ModuleTag_02
  13928.     OkToChangeModelColor = Yes
  13929.  
  13930.     DefaultConditionState
  13931.       Model = AVBATTLEDR_A
  13932.     End
  13933.  
  13934.     ;Unloading the arm (before starting to repair)
  13935.     ConditionState = UNPACKING
  13936.       Animation = AVBATTLEDR_A1.AVBATTLEDR_A1
  13937.       AnimationMode = ONCE
  13938.     End
  13939.  
  13940.     ;Loading the arm (after reparing complete)
  13941.     ConditionState = PACKING
  13942.       Animation = AVBATTLEDR_A1.AVBATTLEDR_A1
  13943.       AnimationMode = ONCE_BACKWARDS
  13944.       Flags = START_FRAME_LAST
  13945.     End
  13946.  
  13947.     ;Repair extending animation 1 (using bogus condition states -- doesn't justify making a whole new set)
  13948.     ConditionState = FIRING_B
  13949.       Animation = AVBATTLEDR_A2.AVBATTLEDR_A2
  13950.       AnimationMode = ONCE
  13951.     End
  13952.  
  13953.  
  13954.     ;Repair retracting animation 1 (using bogus condition states -- doesn't justify making a whole new set)
  13955.     ConditionState = FIRING_C
  13956.       Animation = AVBATTLEDR_A2.AVBATTLEDR_A2
  13957.       AnimationMode = ONCE_BACKWARDS
  13958.       Flags = START_FRAME_LAST
  13959.     End
  13960.  
  13961.   End
  13962.  
  13963.  
  13964.   ; ***DESIGN parameters ***
  13965.   DisplayName         = OBJECT:BattleDrone
  13966.   Side                = America
  13967.   EditorSorting       = VEHICLE
  13968.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  13969.   WeaponSet
  13970.     Conditions        = None 
  13971.     Weapon            = PRIMARY BattleDroneMachineGun
  13972.   End
  13973.   ArmorSet
  13974.     Conditions        = None
  13975.     Armor             = TankArmor
  13976.     DamageFX          = SmallTankDamageFX
  13977.   End
  13978.  
  13979.   BuildCost           = 200
  13980.   BuildTime           = 5.0          ;in seconds    
  13981.   VisionRange         = 150
  13982.   ShroudClearingRange = 150
  13983.   Prerequisites
  13984.     Object = AmericaWarFactory
  13985.   End
  13986.   ExperienceValue     = 10 10 10 10 ;Experience point value at each level
  13987.   IsTrainable         = No
  13988.   
  13989.   ; *** AUDIO Parameters ***
  13990.   VoiceSelect         = NoSound
  13991.   VoiceMove           = NoSound
  13992.   VoiceAttack         = NoSound
  13993.   SoundMoveStart      = NoSound
  13994.   UnitSpecificSounds
  13995.   ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  13996.     TurretMoveStart   = NoSound
  13997.     TurretMoveLoop    = TurretMoveLoop
  13998.   End
  13999.  
  14000.   ; *** ENGINEERING Parameters ***
  14001.   RadarPriority       = UNIT
  14002.   KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SELECTABLE CAN_ATTACK DRONE   
  14003.   Body = ActiveBody ModuleTag_03
  14004.     MaxHealth       = 100.0
  14005.     InitialHealth   = 100.0
  14006.   End
  14007.  
  14008.   Behavior = AIUpdateInterface ModuleTag_04
  14009.     Turret
  14010.       TurretTurnRate        = 360   // turn rate, in degrees per sec
  14011.       TurretPitchRate       = 360
  14012.       MinPhysicalPitch      = -75 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
  14013.       AllowsPitch           = Yes
  14014.       ControlledWeaponSlots = PRIMARY
  14015.     End
  14016.     AutoAcquireEnemiesWhenIdle = Yes
  14017.   End
  14018.   Locomotor = SET_NORMAL BattleDroneLocomotor
  14019.   Locomotor = SET_PANIC BattleDronePanicLocomotor   ;used for repairing master (zippy)
  14020.   Behavior = PhysicsBehavior ModuleTag_05
  14021.     Mass = 50.0
  14022.     KillWhenRestingOnGround = Yes
  14023.     AllowBouncing = No
  14024.   End
  14025.  
  14026.   Behavior = MaxHealthUpgrade ModuleTag_06
  14027.     TriggeredBy   = Upgrade_AmericaDroneArmor
  14028.     AddMaxHealth  = 50.0
  14029.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  14030.   End
  14031.  
  14032.   Behavior = SlavedUpdate ModuleTag_07
  14033.     GuardMaxRange = 35      ;How far away from master I'm allowed when master is idle (doesn't wander)
  14034.     GuardWanderRange = 35   ;How far away I'm allowed to wander from master while guarding.
  14035.     AttackRange = 75        ;How far away from master I'm allowed when master is attacking a target.
  14036.     AttackWanderRange = 10  ;How far I'm allowed to wander from target.
  14037.     ScoutRange = 75         ;How far away from master I'm allowed when master is moving.
  14038.     ScoutWanderRange = 10   ;How far I'm allowed to wander from scout point.
  14039.     RepairRange = 8         ;How far I can zip around while repair (only moves when he stops welding)
  14040.     RepairMinAltitude = 18.0   ;My minimum repair hover altitude.
  14041.     RepairMaxAltitude = 24.0   ;My maximum repair hover altitude.
  14042.     RepairRatePerSecond = 5.0 ;How many health points can I repair per second.
  14043.     RepairWhenBelowHealth% = 60 ;How low should my master's health be (in %) before I should prioritize repairing.
  14044.     RepairMinReadyTime = 300
  14045.     RepairMaxReadyTime = 750
  14046.     RepairMinWeldTime = 250
  14047.     RepairMaxWeldTime = 500
  14048.     RepairWeldingSys = BlueSparks
  14049.     RepairWeldingFXBone = Muzzle02
  14050.     StayOnSameLayerAsMaster = Yes
  14051.   End
  14052.  
  14053.   Behavior = DestroyDie ModuleTag_08
  14054.     DeathTypes = ALL
  14055.   End
  14056.   Behavior                 = CreateObjectDie  ModuleTag_09
  14057.     DeathTypes = ALL
  14058.     CreationList      = OCL_AmericaBattleDroneExplode
  14059.   End
  14060.   
  14061.   Behavior                 = TransitionDamageFX ModuleTag_10
  14062.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  14063.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleDroneDamageTransitionSmall
  14064.   End
  14065.   
  14066.   Behavior                 = FXListDie ModuleTag_11
  14067.     DeathTypes = ALL
  14068.     DeathFX           = FX_AmericaBattleDroneExplode
  14069.   End
  14070.  
  14071.   Behavior = UpgradeDie  ModuleTag_12
  14072.     ;This frees the object based upgrade for the producer object.
  14073.     DeathTypes = ALL
  14074.     UpgradeToRemove     = Upgrade_AmericaBattleDrone ModuleTag_13
  14075.   End
  14076.  
  14077.   Behavior = FlammableUpdate ModuleTag_21
  14078.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  14079.     AflameDamageAmount = 3       ; taking this much damage...
  14080.     AflameDamageDelay = 500       ; this often.
  14081.   End
  14082.  
  14083.   Geometry = CYLINDER
  14084.   GeometryMajorRadius = 5
  14085.   GeometryMinorRadius = 5
  14086.   GeometryHeight = 10.0     
  14087.   GeometryIsSmall = Yes 
  14088.   Shadow = SHADOW_VOLUME
  14089.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  14090.  
  14091. End
  14092.  
  14093. ;------------------------------------------------------------------------------
  14094. ; **data here is a copy and paste of AmericaVehicleMedic**
  14095. Object AmericaVehicleGuardianDrone
  14096.  
  14097.   ; *** ART Parameters ***
  14098.   Draw = W3DTankDraw ModuleTag_01
  14099.     DefaultConditionState
  14100.       Model = AVGuardDr
  14101.       Turret = Turret
  14102.       WeaponFireFXBone = PRIMARY TurretMS
  14103.       WeaponMuzzleFlash = PRIMARY TurretFX
  14104.     End
  14105.     TrackMarks = EXTnkTrack.tga
  14106.     OkToChangeModelColor = Yes
  14107.   End
  14108.  
  14109.   ; ***DESIGN parameters ***
  14110.   DisplayName      = OBJECT:GuardianDrone
  14111.   Side = America
  14112.   EditorSorting   = VEHICLE
  14113.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  14114.   WeaponSet
  14115.     Conditions = None 
  14116.     Weapon = PRIMARY CrusaderTankGun
  14117.   End
  14118.   ArmorSet
  14119.     Conditions      = None
  14120.     Armor           = TankArmor
  14121.     DamageFX        = TankDamageFX
  14122.   End
  14123.   BuildCost       = 700
  14124.   BuildTime       = 8.0          ;in seconds    
  14125.   VisionRange     = 150
  14126.   ShroudClearingRange = 150
  14127.   Prerequisites
  14128.     Object = AmericaWarFactory
  14129.   End
  14130.   ExperienceValue    = 50 100 150 400 ;Experience point value at each level
  14131.   IsTrainable     = No
  14132.   
  14133.   ; *** AUDIO Parameters ***
  14134.   VoiceSelect = NoSound
  14135.   VoiceMove = NoSound
  14136.   VoiceAttack = NoSound
  14137.   SoundMoveStart = NoSound
  14138.  
  14139.   UnitSpecificSounds
  14140.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  14141.     TurretMoveStart = NoSound
  14142.     TurretMoveLoop = TurretMoveLoop
  14143.   End
  14144.  
  14145.  
  14146.   ; *** ENGINEERING Parameters ***
  14147.   RadarPriority = UNIT
  14148.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
  14149.   
  14150.   Body = ActiveBody ModuleTag_02
  14151.     MaxHealth       = 300.0
  14152.     InitialHealth   = 300.0
  14153.   End
  14154.  
  14155.  
  14156.   Behavior = AIUpdateInterface ModuleTag_03
  14157.     Turret
  14158.       TurretTurnRate = 60   // turn rate, in degrees per sec
  14159.       ControlledWeaponSlots = PRIMARY
  14160.     End
  14161.     AutoAcquireEnemiesWhenIdle = Yes
  14162.   End
  14163.   Locomotor = SET_NORMAL BasicTankLocomotor
  14164.   Behavior = PhysicsBehavior ModuleTag_04
  14165.     Mass = 50.0
  14166.   End
  14167.   Behavior = SlowDeathBehavior ModuleTag_05
  14168.     DestructionDelay = 500
  14169.     FX = FINAL FX_GenericTankDeathExplosion
  14170.   End
  14171.  
  14172.   Behavior = MaxHealthUpgrade ModuleTag_06
  14173.     TriggeredBy   = Upgrade_AmericaDroneArmor
  14174.     AddMaxHealth  = 50.0
  14175.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  14176.   End
  14177.  
  14178.   Behavior = FXListDie ModuleTag_07
  14179.     DeathFX = FX_GenericTankDeathEffect
  14180.   End
  14181.   Behavior = CreateObjectDie ModuleTag_08
  14182.     CreationList = OCL_GenericTankDeathEffect
  14183.   End
  14184.   Behavior = CreateCrateDie ModuleTag_09
  14185.     CrateData = SalvageCrateData
  14186.    ;CrateData = EliteTankCrateData
  14187.    ;CrateData = HeroicTankCrateData
  14188.   End
  14189.   
  14190.   Behavior                 = TransitionDamageFX ModuleTag_10
  14191.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  14192.   End
  14193.  
  14194.   Behavior = FlammableUpdate ModuleTag_21
  14195.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  14196.     AflameDamageAmount = 3       ; taking this much damage...
  14197.     AflameDamageDelay = 500       ; this often.
  14198.   End
  14199.  
  14200.   Geometry = BOX
  14201.   GeometryMajorRadius = 15.0
  14202.   GeometryMinorRadius = 10.0
  14203.   GeometryHeight = 10.0     
  14204.   GeometryIsSmall = Yes    
  14205.   Shadow = SHADOW_VOLUME
  14206.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  14207.  
  14208. End
  14209.  
  14210.  
  14211. ;------------------------------------------------------------------------------
  14212. Object AmericaVehicleScoutDrone
  14213.  
  14214.   ; *** ART Parameters ***
  14215.   SelectPortrait         = SAScout_L
  14216.   ButtonImage            = SAScout
  14217.   
  14218.   UpgradeCameo1 = Upgrade_AmericaDroneArmor
  14219.   ;UpgradeCameo2 = NONE
  14220.   ;UpgradeCameo3 = NONE
  14221.   ;UpgradeCameo4 = NONE
  14222.   ;UpgradeCameo5 = NONE
  14223.   
  14224.   Draw = W3DModelDraw ModuleTag_01
  14225.     OkToChangeModelColor = Yes
  14226.  
  14227.     ConditionState = NONE
  14228.       Model = AVScoutDr
  14229.       Animation = AVScoutDr.AVScoutDr
  14230.       AnimationMode = LOOP
  14231.     End
  14232.  
  14233.     ConditionState = REALLYDAMAGED
  14234.       Model = AVScoutDr_d
  14235.       Animation = AVScoutDr_d.AVScoutDr_d
  14236.       AnimationMode = LOOP
  14237.     End
  14238.   End
  14239.  
  14240.   ; ***DESIGN parameters ***
  14241.   DisplayName      = OBJECT:ScoutDrone
  14242.   Side = America
  14243.   EditorSorting   = VEHICLE
  14244.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  14245.   ArmorSet
  14246.     Conditions      = None
  14247.     Armor           = TankArmor
  14248.     DamageFX        = SmallTankDamageFX
  14249.   End
  14250.   BuildCost       = 100
  14251.   BuildTime       = 5.0          ;in seconds    
  14252.   VisionRange     = 150
  14253.   ShroudClearingRange = 500
  14254.   IsTrainable     = No  ;Can gain experience
  14255.   
  14256.   ; *** AUDIO Parameters ***
  14257.   VoiceSelect = NoSound
  14258.   VoiceMove = NoSound
  14259.   VoiceAttack = NoSound
  14260.   SoundMoveStart = NoSound
  14261.  
  14262.   UnitSpecificSounds
  14263.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  14264.     TurretMoveStart = NoSound
  14265.     TurretMoveLoop = TurretMoveLoop
  14266.   End
  14267.  
  14268.  
  14269.   ; *** ENGINEERING Parameters ***
  14270.   RadarPriority = UNIT
  14271.   KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SELECTABLE DRONE
  14272.   
  14273.   Body = ActiveBody ModuleTag_02
  14274.     MaxHealth       = 20.0
  14275.     InitialHealth   = 20.0
  14276.   End
  14277.  
  14278.   Behavior = AIUpdateInterface ModuleTag_03
  14279.     Turret
  14280.       TurretTurnRate = 60   // turn rate, in degrees per sec
  14281.       ControlledWeaponSlots = PRIMARY
  14282.     End
  14283.     AutoAcquireEnemiesWhenIdle = Yes
  14284.   End
  14285.   Locomotor = SET_NORMAL DroneLocomotor
  14286.   Behavior = StealthDetectorUpdate ModuleTag_04
  14287.     DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
  14288.     ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
  14289.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  14290.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  14291.   End
  14292.   Behavior = PhysicsBehavior ModuleTag_05
  14293.     Mass = 50.0
  14294.     KillWhenRestingOnGround = Yes
  14295.     AllowBouncing = No
  14296.   End
  14297.  
  14298.   Behavior = SlavedUpdate ModuleTag_06
  14299.     GuardMaxRange = 35      ;How far away from master I'm allowed when master is idle (doesn't wander)
  14300.     GuardWanderRange = 35   ;How far away I'm allowed to wander from master while guarding.
  14301.     AttackRange = 75        ;How far away from master I'm allowed when master is attacking a target.
  14302.     AttackWanderRange = 10  ;How far I'm allowed to wander from target.
  14303.     ScoutRange = 75         ;How far away from master I'm allowed when master is moving.
  14304.     ScoutWanderRange = 10   ;How far I'm allowed to wander from scout point.
  14305.     DistToTargetToGrantRangeBonus = 20 ;How close I have to be to the master's target in order to grant master a range bonus.
  14306.     StayOnSameLayerAsMaster = Yes
  14307.   End
  14308.  
  14309.   Behavior = MaxHealthUpgrade ModuleTag_07
  14310.     TriggeredBy   = Upgrade_AmericaDroneArmor
  14311.     AddMaxHealth  = 50.0
  14312.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  14313.   End
  14314.  
  14315.   Behavior = DestroyDie ModuleTag_08
  14316.     DeathTypes = ALL
  14317.   End
  14318.   Behavior                 = CreateObjectDie ModuleTag_09
  14319.     DeathTypes = ALL
  14320.     CreationList      = OCL_AmericaScoutDroneExplode
  14321.   End
  14322.   Behavior                 = FXListDie ModuleTag_10
  14323.     DeathTypes = ALL
  14324.     DeathFX           = FX_AmericaScoutDroneExplode
  14325.   End
  14326.   
  14327.   Behavior                 = TransitionDamageFX ModuleTag_11
  14328.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  14329.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleDroneDamageTransitionSmall
  14330.   End
  14331.  
  14332.   Behavior = UpgradeDie  ModuleTag_12
  14333.    ;This frees the object based upgrade for the producer object.
  14334.    DeathTypes = ALL
  14335.    UpgradeToRemove      = Upgrade_AmericaScoutDrone ModuleTag_13
  14336.   End
  14337.  
  14338.  
  14339.   Behavior = FlammableUpdate ModuleTag_21
  14340.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  14341.     AflameDamageAmount = 3       ; taking this much damage...
  14342.     AflameDamageDelay = 500       ; this often.
  14343.   End
  14344.  
  14345.   Geometry = CYLINDER
  14346.   GeometryMajorRadius = 5.0
  14347.   GeometryMinorRadius = 6.0
  14348.   GeometryHeight = 3.0
  14349.   GeometryIsSmall = Yes
  14350.   Shadow = SHADOW_VOLUME
  14351.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  14352.  
  14353. End
  14354.  
  14355. ;------------------------------------------------------------------------------
  14356. Object AmericaVehicleSpyDrone
  14357.  
  14358.   ; *** ART Parameters ***
  14359.   SelectPortrait         = SAScout_L
  14360.   ButtonImage            = SAScout
  14361.   Draw = W3DModelDraw ModuleTag_01
  14362.     OkToChangeModelColor = Yes
  14363.  
  14364.     ConditionState = NONE
  14365.       Model = AVSpyDrone
  14366.       Animation = AVSpyDrone.AVSpyDrone
  14367.       AnimationMode = LOOP
  14368.     End
  14369.  
  14370. ; Damage state waiting for pristine's approval (or may just not need one)
  14371. ;    ConditionState = REALLYDAMAGED
  14372. ;      Model = AVSpyDrone_d
  14373. ;      Animation = AVSpyDrone_d.AVSpyDrone_d
  14374. ;      AnimationMode = LOOP
  14375. ;    End
  14376.   End
  14377.  
  14378.   ; ***DESIGN parameters ***
  14379.   DisplayName      = OBJECT:SpyDrone
  14380.   Side = America
  14381.   EditorSorting   = VEHICLE
  14382.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  14383.   ArmorSet
  14384.     Conditions      = None
  14385.     Armor           = AirplaneArmor
  14386.     DamageFX        = SmallTankDamageFX
  14387.   End
  14388.   VisionRange     = 250
  14389.   ShroudClearingRange = 0; Dynamic range below
  14390.   IsTrainable     = No 
  14391.   
  14392.   ; *** AUDIO Parameters ***
  14393.   VoiceSelect = NoSound
  14394.   VoiceMove = NoSound
  14395.   VoiceAttack = NoSound
  14396.   SoundMoveStart = NoSound
  14397.  
  14398.   UnitSpecificSounds
  14399.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  14400.     TurretMoveStart = NoSound
  14401.     TurretMoveLoop = TurretMoveLoop
  14402.   End
  14403.  
  14404.  
  14405.   ; *** ENGINEERING Parameters ***
  14406.   RadarPriority = UNIT
  14407.   KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE DRONE SELECTABLE INERT
  14408.   
  14409.   Body = ActiveBody ModuleTag_02
  14410.     MaxHealth       = 200.0
  14411.     InitialHealth   = 200.0
  14412.   End
  14413.  
  14414.   Behavior = AIUpdateInterface ModuleTag_03
  14415.     AutoAcquireEnemiesWhenIdle = No
  14416.   End
  14417.  
  14418.   Locomotor = SET_NORMAL SpyDroneLocomtor
  14419.  
  14420.   Behavior = DynamicShroudClearingRangeUpdate ModuleTag_04
  14421.     FinalVision = 250.0 
  14422.     ChangeInterval = 50
  14423.     ShrinkDelay = 2000
  14424.     ShrinkTime = 1000
  14425.     GrowDelay = 0
  14426.     GrowTime = 1000
  14427.     GrowInterval = 10 ; Faster than most
  14428.  
  14429.     GridDecalTemplate
  14430.       Texture           = EXGrid
  14431.       Style             = SHADOW_ADDITIVE_DECAL
  14432.       OpacityMin        = 50%
  14433.       OpacityMax        = 100%
  14434.       OpacityThrobTime  = 500
  14435.       Color             = R:32 G:64 B:128 A:0 //dim blue, additive
  14436.     End
  14437.  
  14438.   End
  14439.  
  14440.   Behavior = StealthDetectorUpdate ModuleTag_05
  14441.     DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
  14442.     ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
  14443.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  14444.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  14445.   End
  14446.   Behavior = PhysicsBehavior ModuleTag_06
  14447.     Mass = 50.0
  14448.   End
  14449.  
  14450.   Behavior = DestroyDie ModuleTag_07
  14451.     DeathTypes = ALL
  14452.   End
  14453.   Behavior                 = CreateObjectDie ModuleTag_08
  14454.     DeathTypes = ALL
  14455.     CreationList      = OCL_AmericaScoutDroneExplode
  14456.   End
  14457.   Behavior = StealthUpdate ModuleTag_09
  14458.     StealthDelay                = 0 ; msec
  14459.     StealthForbiddenConditions  = NONE
  14460.     InnateStealth               = Yes
  14461.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  14462.   End
  14463.   Behavior = MaxHealthUpgrade ModuleTag_10
  14464.     TriggeredBy   = Upgrade_AmericaDroneArmor
  14465.     AddMaxHealth  = 50.0
  14466.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  14467.   End
  14468.  
  14469.   Behavior = FlammableUpdate ModuleTag_21
  14470.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  14471.     AflameDamageAmount = 3       ; taking this much damage...
  14472.     AflameDamageDelay = 500       ; this often.
  14473.   End
  14474.  
  14475.   Geometry = CYLINDER
  14476.   GeometryMajorRadius = 5.0
  14477.   GeometryMinorRadius = 6.0
  14478.   GeometryHeight = 3.0
  14479.   GeometryIsSmall = Yes
  14480.   Shadow = SHADOW_VOLUME
  14481.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  14482.  
  14483. End
  14484.  
  14485. ;------------------------------------------------------------------------------
  14486. Object AmericaTankCrusader
  14487.  
  14488.   ; *** ART Parameters ***
  14489.   SelectPortrait         = SACLeopard_L
  14490.   ButtonImage            = SACLeopard
  14491.   
  14492.   UpgradeCameo1 = Upgrade_AmericaBattleDrone
  14493.   UpgradeCameo2 = Upgrade_AmericaScoutDrone
  14494.   UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
  14495.   UpgradeCameo4 = Upgrade_AmericaCompositeArmor
  14496.   ;UpgradeCameo5 = NONE
  14497.   
  14498.   Draw = W3DTankDraw ModuleTag_01
  14499.     DefaultConditionState
  14500.       Model               = AVLeopard
  14501.       Turret              = Turret
  14502.       WeaponFireFXBone    = PRIMARY TurretMS
  14503.       WeaponRecoilBone    = PRIMARY Barrel
  14504.       WeaponMuzzleFlash   = PRIMARY TurretFX
  14505.       WeaponLaunchBone = PRIMARY TurretMS
  14506.     End
  14507.     ConditionState       = REALLYDAMAGED
  14508.       Model              = AVLeopard_D
  14509.     End
  14510.     ConditionState       = RUBBLE
  14511.       Model              = AVLeopard_D
  14512.     End
  14513.  
  14514.     TrackMarks           = EXTnkTrack.tga
  14515.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  14516.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  14517.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  14518.     OkToChangeModelColor = Yes
  14519.   End
  14520.  
  14521.   ; ***DESIGN parameters ***
  14522.   DisplayName      = OBJECT:Crusader
  14523.   Side                   = America
  14524.   EditorSorting          = VEHICLE
  14525.   TransportSlotCount     = 3
  14526.   WeaponSet
  14527.     Conditions           = None 
  14528.     Weapon               = PRIMARY CrusaderTankGun
  14529.     ; Uncomment this when we want the crusader to have a machine too again
  14530.     ;Weapon               = SECONDARY CrusaderMachineGun
  14531.   End
  14532.   ArmorSet
  14533.     Conditions           = None
  14534.     Armor                = TankArmor
  14535.     DamageFX             = TankDamageFX
  14536.   End
  14537.   ;ArmorSet
  14538.   ;  Conditions           = PLAYER_UPGRADE
  14539.   ;  Armor                = UpgradedTankArmor
  14540.   ;  DamageFX             = TankDamageFX
  14541.   ;End
  14542.   BuildCost              = 900
  14543.   BuildTime              = 10.0          ;in seconds    
  14544.   VisionRange            = 150
  14545.   ShroudClearingRange = 300
  14546.   Prerequisites
  14547.     Object = AmericaWarFactory
  14548.   End
  14549.   ExperienceValue        = 100 100 200 400 ;Experience point value at each level
  14550.   ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level
  14551.   IsTrainable            = Yes  ;Can gain experience
  14552.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  14553.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  14554.   CommandSet             = AmericaTankCrusaderCommandSet
  14555.   
  14556.   ; *** AUDIO Parameters ***
  14557.   VoiceSelect           = CrusaderTankVoiceSelect
  14558.   VoiceMove             = CrusaderTankVoiceMove
  14559.   VoiceGuard            = CrusaderTankVoiceMove
  14560.   VoiceAttack           = CrusaderTankVoiceAttack
  14561.   SoundMoveStart        = CrusaderTankMoveStart
  14562.   SoundMoveStartDamaged = CrusaderTankMoveStart
  14563.   UnitSpecificSounds
  14564.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  14565.     VoiceCreate         = CrusaderTankVoiceCreate
  14566.     VoiceEnter             = CrusaderTankVoiceMove
  14567.     TurretMoveStart     = NoSound
  14568.     TurretMoveLoop      = TurretMoveLoop
  14569.     SoundEject          = PilotSoundEject
  14570.     VoiceEject          = PilotVoiceEject
  14571.     VoiceCrush          = CrusaderTankVoiceCrush
  14572.   End
  14573.  
  14574.   ; *** ENGINEERING Parameters ***
  14575.   RadarPriority          = UNIT
  14576.   KindOf                 = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  14577.   
  14578.   Body                   = ActiveBody ModuleTag_02
  14579.     MaxHealth       = 480
  14580.     InitialHealth   = 480
  14581.   End
  14582.  
  14583.   Behavior = AIUpdateInterface ModuleTag_03
  14584.     Turret
  14585.       TurretTurnRate       = 180 ;60   // turn rate, in degrees per sec
  14586.       ControlledWeaponSlots= PRIMARY
  14587.     End
  14588.     AutoAcquireEnemiesWhenIdle = Yes
  14589.   End
  14590.   Locomotor            = SET_NORMAL CrusaderLocomotor
  14591.   Behavior = PhysicsBehavior ModuleTag_04
  14592.     Mass                 = 50.0
  14593.   End
  14594.  
  14595.   Behavior = ObjectCreationUpgrade ModuleTag_05
  14596.     UpgradeObject = OCL_AmericanBattleDrone
  14597.     TriggeredBy   = Upgrade_AmericaBattleDrone
  14598.     ConflictsWith = Upgrade_AmericaScoutDrone
  14599.   End
  14600.   Behavior = ObjectCreationUpgrade ModuleTag_06
  14601.     UpgradeObject = OCL_AmericanScoutDrone
  14602.     TriggeredBy   = Upgrade_AmericaScoutDrone
  14603.     ConflictsWith = Upgrade_AmericaBattleDrone
  14604.   End
  14605.   Behavior = ProductionUpdate ModuleTag_07
  14606.     MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  14607.   End
  14608.  
  14609.   Behavior = ExperienceScalarUpgrade ModuleTag_08
  14610.     TriggeredBy   = Upgrade_AmericaAdvancedTraining
  14611.     AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
  14612.   End
  14613.   Behavior = MaxHealthUpgrade ModuleTag_09
  14614.     TriggeredBy   = Upgrade_AmericaCompositeArmor
  14615.     AddMaxHealth  = 100.0
  14616.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  14617.   End
  14618.  
  14619.   ; Turret fly off death
  14620.   Behavior = SlowDeathBehavior ModuleTag_10
  14621.     DeathTypes = ALL -CRUSHED -SPLATTED
  14622.     ProbabilityModifier  = 50
  14623.     DestructionDelay  = 500
  14624.     DestructionDelayVariance  = 100
  14625.     FX  = INITIAL  FX_GenericTankDeathEffect
  14626.     OCL = MIDPOINT OCL_GenericTankDeathEffect
  14627.     FX  = FINAL    FX_GenericTankDeathExplosion
  14628.     OCL = FINAL    OCL_CrusaderTurret
  14629.   End
  14630.  
  14631.   ; Catch fire, and explode death
  14632.   Behavior = SlowDeathBehavior ModuleTag_11
  14633.     DeathTypes = ALL -CRUSHED -SPLATTED
  14634.     ProbabilityModifier  = 50
  14635.     DestructionDelay  = 2000
  14636.     DestructionDelayVariance  = 300
  14637.     FX  = INITIAL  FX_CrusaderCatchFire
  14638.     OCL = FINAL    OCL_GenericTankDeathEffect  
  14639.     FX  = FINAL    FX_GenericTankDeathExplosion
  14640.   End
  14641.  
  14642.   Behavior                 = TransitionDamageFX ModuleTag_12
  14643.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  14644.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  14645.   End
  14646.  
  14647.   Behavior = DestroyDie ModuleTag_13
  14648.     DeathTypes = NONE +CRUSHED +SPLATTED
  14649.   End
  14650.  
  14651.   ; A crushing defeat
  14652.   Behavior = FXListDie ModuleTag_14
  14653.     DeathTypes = NONE +CRUSHED +SPLATTED
  14654.     DeathFX = FX_CarCrush
  14655.   End
  14656.  
  14657.   Behavior = CreateObjectDie ModuleTag_15
  14658.     DeathTypes = NONE +CRUSHED +SPLATTED
  14659.     CreationList = OCL_CrusaderTank_CrushEffect
  14660.   End
  14661.  
  14662.   Behavior                    = CreateCrateDie ModuleTag_CratesChange
  14663.    CrateData             = SalvageCrateData
  14664.    ;CrateData             = EliteTankCrateData
  14665.    ;CrateData             = HeroicTankCrateData
  14666.   End
  14667.  
  14668.   Behavior = EjectPilotDie ModuleTag_17
  14669.     GroundCreationList = OCL_EjectPilotOnGround
  14670.     AirCreationList = OCL_EjectPilotViaParachute
  14671.     ExemptStatus = HIJACKED
  14672.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  14673.   End
  14674.  
  14675.   Behavior = MaxHealthUpgrade ModuleTag_18
  14676.     TriggeredBy   = Upgrade_AmericaCompositeArmor
  14677.     AddMaxHealth  = 100.0
  14678.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  14679.   End
  14680.  
  14681.   Behavior = FlammableUpdate ModuleTag_21
  14682.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  14683.     AflameDamageAmount = 3       ; taking this much damage...
  14684.     AflameDamageDelay = 500       ; this often.
  14685.   End
  14686.  
  14687.   Geometry               = BOX
  14688.   GeometryMajorRadius    = 15.0
  14689.   GeometryMinorRadius    = 10.0
  14690.   GeometryHeight         = 10.0     
  14691.   GeometryIsSmall        = Yes    
  14692.   Shadow = SHADOW_VOLUME
  14693.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  14694.  
  14695. End
  14696.  
  14697. ;------------------------------------------------------------------------------
  14698. ;******************************* Cinematic-Only unit **************************
  14699. Object CINE_AmericaTankCrusader
  14700.  
  14701.   ; *** ART Parameters ***
  14702.   SelectPortrait         = SACLeopard_L
  14703.   ButtonImage            = SACLeopard
  14704.   
  14705.   UpgradeCameo1 = Upgrade_AmericaBattleDrone
  14706.   UpgradeCameo2 = Upgrade_AmericaScoutDrone
  14707.   UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
  14708.   UpgradeCameo4 = Upgrade_AmericaCompositeArmor
  14709.   ;UpgradeCameo5 = NONE
  14710.   
  14711.   Draw = W3DTankDraw ModuleTag_01
  14712.     DefaultConditionState
  14713.       Model               = AVLeopard
  14714.       Turret              = Turret
  14715.       WeaponFireFXBone    = PRIMARY TurretMS
  14716.       WeaponRecoilBone    = PRIMARY Barrel
  14717.       WeaponMuzzleFlash   = PRIMARY TurretFX
  14718.       WeaponLaunchBone = PRIMARY TurretMS
  14719.     End
  14720.     ConditionState       = REALLYDAMAGED
  14721.       Model              = AVLeopard_D
  14722.     End
  14723.     ConditionState       = RUBBLE
  14724.       Model              = AVLeopard_D
  14725.     End
  14726.  
  14727.     TrackMarks           = EXTnkTrack.tga
  14728.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  14729.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  14730.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  14731.     OkToChangeModelColor = Yes
  14732.   End
  14733.  
  14734.   ; ***DESIGN parameters ***
  14735.   DisplayName      = OBJECT:Crusader
  14736.   Side                   = America
  14737.   EditorSorting          = VEHICLE
  14738.   TransportSlotCount     = 3
  14739.   WeaponSet
  14740.     Conditions           = None 
  14741.     Weapon               = PRIMARY CrusaderTankGun
  14742.     ; Uncomment this when we want the crusader to have a machine too again
  14743.     ;Weapon               = SECONDARY CrusaderMachineGun
  14744.   End
  14745.   ArmorSet
  14746.     Conditions           = None
  14747.     Armor                = TankArmor
  14748.     DamageFX             = TankDamageFX
  14749.   End
  14750.   ;ArmorSet
  14751.   ;  Conditions           = PLAYER_UPGRADE
  14752.   ;  Armor                = UpgradedTankArmor
  14753.   ;  DamageFX             = TankDamageFX
  14754.   ;End
  14755.   BuildCost              = 900
  14756.   BuildTime              = 10.0          ;in seconds    
  14757.   VisionRange            = 150
  14758.   ShroudClearingRange = 300
  14759.   Prerequisites
  14760.     Object = AmericaWarFactory
  14761.   End
  14762.   ExperienceValue        = 100 100 200 400 ;Experience point value at each level
  14763.   ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level
  14764.   IsTrainable            = Yes  ;Can gain experience
  14765.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  14766.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  14767.   CommandSet             = AmericaTankCrusaderCommandSet
  14768.   
  14769.   ; *** AUDIO Parameters ***
  14770.   VoiceSelect           = CrusaderTankVoiceSelect
  14771.   VoiceMove             = CrusaderTankVoiceMove
  14772.   VoiceGuard            = CrusaderTankVoiceMove
  14773.   VoiceAttack           = CrusaderTankVoiceAttack
  14774.   SoundMoveStart        = CrusaderTankMoveStart
  14775.   SoundMoveStartDamaged = CrusaderTankMoveStart
  14776.   UnitSpecificSounds
  14777.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  14778.     VoiceCreate         = CrusaderTankVoiceCreate
  14779.     VoiceEnter             = CrusaderTankVoiceMove
  14780.     TurretMoveStart     = NoSound
  14781.     TurretMoveLoop      = TurretMoveLoop
  14782.     SoundEject          = PilotSoundEject
  14783.     VoiceEject          = PilotVoiceEject
  14784.     VoiceCrush          = CrusaderTankVoiceCrush
  14785.   End
  14786.  
  14787.   ; *** ENGINEERING Parameters ***
  14788.   RadarPriority          = UNIT
  14789.   KindOf                 = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  14790.   
  14791.   Body                   = ActiveBody ModuleTag_02
  14792.     MaxHealth       = 480
  14793.     InitialHealth   = 480
  14794.   End
  14795.  
  14796.   Behavior = AIUpdateInterface ModuleTag_03
  14797.     Turret
  14798.       TurretTurnRate       = 180 ;60   // turn rate, in degrees per sec
  14799.       ControlledWeaponSlots= PRIMARY
  14800.     End
  14801.     AutoAcquireEnemiesWhenIdle = Yes
  14802.   End
  14803.   Locomotor            = SET_NORMAL CINE_CrusaderLocomotor
  14804.   Behavior = PhysicsBehavior ModuleTag_04
  14805.     Mass                 = 50.0
  14806.   End
  14807.  
  14808.   Behavior = ObjectCreationUpgrade ModuleTag_05
  14809.     UpgradeObject = OCL_AmericanBattleDrone
  14810.     TriggeredBy   = Upgrade_AmericaBattleDrone
  14811.     ConflictsWith = Upgrade_AmericaScoutDrone
  14812.   End
  14813.   Behavior = ObjectCreationUpgrade ModuleTag_06
  14814.     UpgradeObject = OCL_AmericanScoutDrone
  14815.     TriggeredBy   = Upgrade_AmericaScoutDrone
  14816.     ConflictsWith = Upgrade_AmericaBattleDrone
  14817.   End
  14818.   Behavior = ProductionUpdate ModuleTag_07
  14819.     MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  14820.   End
  14821.  
  14822.   Behavior = ExperienceScalarUpgrade ModuleTag_08
  14823.     TriggeredBy   = Upgrade_AmericaAdvancedTraining
  14824.     AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
  14825.   End
  14826.   Behavior = MaxHealthUpgrade ModuleTag_09
  14827.     TriggeredBy   = Upgrade_AmericaCompositeArmor
  14828.     AddMaxHealth  = 100.0
  14829.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  14830.   End
  14831.  
  14832.   ; Turret fly off death
  14833.   Behavior = SlowDeathBehavior ModuleTag_10
  14834.     DeathTypes = ALL -CRUSHED -SPLATTED
  14835.     ProbabilityModifier  = 50
  14836.     DestructionDelay  = 500
  14837.     DestructionDelayVariance  = 100
  14838.     FX  = INITIAL  FX_GenericTankDeathEffect
  14839.     OCL = MIDPOINT OCL_GenericTankDeathEffect
  14840.     FX  = FINAL    FX_GenericTankDeathExplosion
  14841.     OCL = FINAL    OCL_CrusaderTurret
  14842.   End
  14843.  
  14844.   ; Catch fire, and explode death
  14845.   Behavior = SlowDeathBehavior ModuleTag_11
  14846.     DeathTypes = ALL -CRUSHED -SPLATTED
  14847.     ProbabilityModifier  = 50
  14848.     DestructionDelay  = 2000
  14849.     DestructionDelayVariance  = 300
  14850.     FX  = INITIAL  FX_CrusaderCatchFire
  14851.     OCL = FINAL    OCL_GenericTankDeathEffect  
  14852.     FX  = FINAL    FX_GenericTankDeathExplosion
  14853.   End
  14854.  
  14855.   Behavior                 = TransitionDamageFX ModuleTag_12
  14856.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  14857.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  14858.   End
  14859.  
  14860.   Behavior = DestroyDie ModuleTag_13
  14861.     DeathTypes = NONE +CRUSHED +SPLATTED
  14862.   End
  14863.  
  14864.   ; A crushing defeat
  14865.   Behavior = FXListDie ModuleTag_14
  14866.     DeathTypes = NONE +CRUSHED +SPLATTED
  14867.     DeathFX = FX_CarCrush
  14868.   End
  14869.  
  14870.   Behavior = CreateObjectDie ModuleTag_15
  14871.     DeathTypes = NONE +CRUSHED +SPLATTED
  14872.     CreationList = OCL_CrusaderTank_CrushEffect
  14873.   End
  14874.  
  14875.   Behavior                    = CreateCrateDie ModuleTag_CratesChange
  14876.    CrateData             = SalvageCrateData
  14877.    ;CrateData             = EliteTankCrateData
  14878.    ;CrateData             = HeroicTankCrateData
  14879.   End
  14880.  
  14881.   ;Behavior = EjectPilotDie ModuleTag_17
  14882.   ;  GroundCreationList = OCL_EjectPilotOnGround
  14883.   ;  AirCreationList = OCL_EjectPilotViaParachute
  14884.   ;  ExemptStatus = HIJACKED
  14885.   ;  VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  14886.   ;End
  14887.  
  14888.   Behavior = MaxHealthUpgrade ModuleTag_18
  14889.     TriggeredBy   = Upgrade_AmericaCompositeArmor
  14890.     AddMaxHealth  = 100.0
  14891.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  14892.   End
  14893.  
  14894.   Behavior = FlammableUpdate ModuleTag_21
  14895.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  14896.     AflameDamageAmount = 3       ; taking this much damage...
  14897.     AflameDamageDelay = 500       ; this often.
  14898.   End
  14899.  
  14900.   Geometry               = BOX
  14901.   GeometryMajorRadius    = 15.0
  14902.   GeometryMinorRadius    = 10.0
  14903.   GeometryHeight         = 10.0     
  14904.   GeometryIsSmall        = Yes    
  14905.   Shadow = SHADOW_VOLUME
  14906.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  14907.  
  14908. End
  14909.  
  14910. ;------------------------------------------------------------------------------
  14911. Object GLATankScorpion
  14912.  
  14913.   ; *** ART Parameters ***
  14914.   SelectPortrait         = SUScorpion_L
  14915.   ButtonImage            = SUScorpion
  14916.   
  14917.   UpgradeCameo1 = Upgrade_GLAScorpionRocket
  14918.   UpgradeCameo2 = Upgrade_GLAAPRockets
  14919.   UpgradeCameo3 = Upgrade_GLAToxinShells
  14920.   UpgradeCameo4 = Upgrade_GLAJunkRepair
  14921.   ;UpgradeCameo5 = NONE
  14922.   
  14923.   Draw = W3DTankDraw ModuleTag_01
  14924.     OkToChangeModelColor = Yes
  14925.  
  14926.     ProjectileBoneFeedbackEnabledSlots = SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
  14927.   
  14928.     DefaultConditionState
  14929.       Model = UVLiteTank
  14930.       Turret = Turret01
  14931.       ; note, order-dependent: we must hide/show Missile AFTER we hide/show MissileRack!
  14932.       HideSubObject = MissleRack01 Missile ; MissileRack misspelled in the Art
  14933.       WeaponFireFXBone = PRIMARY Muzzle
  14934.       WeaponRecoilBone = PRIMARY Barrel
  14935.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  14936.       WeaponLaunchBone = PRIMARY Muzzle
  14937.     End
  14938.  
  14939.     ConditionState = REALLYDAMAGED
  14940.       Model = UVLiteTank_d
  14941.     End
  14942.     
  14943.     ConditionState = RUBBLE
  14944.       Model = UVLiteTank_d
  14945.     End
  14946.  
  14947.     ConditionState = WEAPONSET_PLAYER_UPGRADE
  14948.       ShowSubObject = MissleRack01
  14949.       WeaponFireFXBone = SECONDARY WeaponA
  14950.       WeaponLaunchBone = SECONDARY WeaponA
  14951.       WeaponHideShowBone = SECONDARY Missile
  14952.     End
  14953.  
  14954.     ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
  14955.       Model = UVLiteTank_d
  14956.       ShowSubObject = MissleRack01
  14957.       WeaponFireFXBone = SECONDARY WeaponA
  14958.       WeaponLaunchBone = SECONDARY WeaponA
  14959.       WeaponHideShowBone = SECONDARY Missile
  14960.     End
  14961.  
  14962.     TrackMarks = EXTnkTrack.tga
  14963.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  14964.   End
  14965.  
  14966.   ; ***DESIGN parameters ***
  14967.   DisplayName           = OBJECT:Scorpion
  14968.   Side                  = GLA
  14969.   EditorSorting         = VEHICLE
  14970.   TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  14971.   WeaponSet
  14972.     Conditions = None 
  14973.     Weapon = PRIMARY ScorpionTankGun
  14974.     Weapon = SECONDARY None
  14975.   End
  14976.   WeaponSet
  14977.     Conditions = PLAYER_UPGRADE 
  14978.     Weapon = PRIMARY ScorpionTankGun
  14979.     Weapon = SECONDARY ScorpionMissileWeapon
  14980.     AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  14981.     AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI
  14982.   End
  14983.   ArmorSet
  14984.     Conditions      = None
  14985.     Armor           = TankArmor
  14986.     DamageFX        = TankDamageFX
  14987.   End
  14988.   BuildCost       = 600
  14989.   BuildTime       = 5.0          ;in seconds    
  14990.   VisionRange     = 125
  14991.   ShroudClearingRange = 300
  14992.   Prerequisites
  14993.     Object = GLAArmsDealer
  14994.   End
  14995.  
  14996.   ExperienceValue = 60 60 120 200    ;Experience point value at each level
  14997.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  14998.   IsTrainable = Yes             ;Can gain experience
  14999.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  15000.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  15001.   CommandSet      = GLATankScorpionCommandSet
  15002.  
  15003.   ; *** AUDIO Parameters ***
  15004.   VoiceSelect = ScorpionTankVoiceSelect
  15005.   VoiceMove = ScorpionTankVoiceMove
  15006.   VoiceAttack = ScorpionTankVoiceAttack
  15007.   SoundMoveStart = ScorpionTankMoveStart
  15008.   SoundMoveStartDamaged = ScorpionTankMoveStart
  15009.   VoiceGuard = ScorpionTankVoiceMove
  15010.  
  15011.   UnitSpecificSounds
  15012.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  15013.     VoiceCreate          = ScorpionTankVoiceCreate
  15014.     ;TurretMoveStart = NoSound
  15015.     TurretMoveLoop = TurretMoveLoop
  15016.     VoiceEnter = ScorpionTankVoiceMove
  15017.   End
  15018.  
  15019.   ; *** ENGINEERING Parameters ***
  15020.   RadarPriority = UNIT
  15021.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
  15022.  
  15023.   Body = ActiveBody ModuleTag_02
  15024.     MaxHealth       = 370.0
  15025.     InitialHealth   = 370.0
  15026.   End
  15027.  
  15028.   Behavior = AIUpdateInterface ModuleTag_03
  15029.     Turret
  15030.       TurretTurnRate = 100
  15031.       RecenterTime = 5000   ; how long to wait during idle before recentering
  15032.       ControlledWeaponSlots = PRIMARY SECONDARY
  15033.     End
  15034.     AutoAcquireEnemiesWhenIdle = Yes
  15035.   End
  15036.   Locomotor = SET_NORMAL ScorpionLocomotor
  15037.   Behavior = PhysicsBehavior ModuleTag_04
  15038.     Mass = 50.0
  15039.   End
  15040.   Behavior = AutoHealBehavior ModuleTag_05
  15041.     HealingAmount = 2
  15042.     HealingDelay = 1000 ; msec
  15043.     TriggeredBy = Upgrade_GLAJunkRepair
  15044.   End
  15045.  
  15046.   ; Catch fire, and explode death
  15047.   Behavior = SlowDeathBehavior ModuleTag_06
  15048.     DeathTypes = ALL -CRUSHED -SPLATTED
  15049.     ProbabilityModifier = 50
  15050.     DestructionDelay = 2000
  15051.     DestructionDelayVariance = 300
  15052.     FX  = INITIAL  FX_CrusaderCatchFire
  15053.     OCL = FINAL    OCL_GenericTankDeathEffect  
  15054.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  15055.   End
  15056.  
  15057.   Behavior = WeaponSetUpgrade ModuleTag_07
  15058.     TriggeredBy = Upgrade_GLAScorpionRocket
  15059.   End
  15060.  
  15061.   Behavior = DestroyDie ModuleTag_09
  15062.     DeathTypes = NONE +CRUSHED +SPLATTED
  15063.   End
  15064.  
  15065.   ; A crushing defeat
  15066.   Behavior = FXListDie ModuleTag_10
  15067.     DeathTypes = NONE +CRUSHED +SPLATTED
  15068.     DeathFX = FX_CarCrush
  15069.   End
  15070.   Behavior = CreateObjectDie ModuleTag_11
  15071.     DeathTypes = NONE +CRUSHED +SPLATTED
  15072.     CreationList = OCL_CrusaderTank_CrushEffect
  15073.   End
  15074.   Behavior = CreateCrateDie ModuleTag_12
  15075.     CrateData = SalvageCrateData
  15076.     ;CrateData = EliteTankCrateData
  15077.     ;CrateData = HeroicTankCrateData
  15078.   End
  15079.   
  15080.   Behavior                 = TransitionDamageFX ModuleTag_13
  15081.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  15082.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  15083.   End
  15084.  
  15085.   Behavior = FlammableUpdate ModuleTag_21
  15086.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  15087.     AflameDamageAmount = 3       ; taking this much damage...
  15088.     AflameDamageDelay = 500       ; this often.
  15089.   End
  15090.  
  15091.   Geometry = BOX
  15092.   GeometryMajorRadius = 14.0
  15093.   GeometryMinorRadius = 9.0
  15094.   GeometryHeight = 10.5    
  15095.   GeometryIsSmall = Yes 
  15096.   Shadow = SHADOW_VOLUME   
  15097.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  15098.  
  15099. End
  15100.  
  15101. ;------------------------------------------------------------------------------
  15102. ;GLA Rocket Buggy
  15103. Object GLAVehicleRocketBuggy
  15104.  
  15105.   ; *** ART Parameters ***
  15106.   SelectPortrait         = SURocketBuggy_L
  15107.   ButtonImage            = SURocketBuggy
  15108.   
  15109.   UpgradeCameo1 = Upgrade_GLABuggyAmmo
  15110.   UpgradeCameo2 = Upgrade_GLAAPRockets
  15111.   UpgradeCameo3 = Upgrade_GLAJunkRepair
  15112.   ;UpgradeCameo4 = NONE
  15113.   ;UpgradeCameo5 = NONE
  15114.   
  15115.   Draw = W3DTruckDraw ModuleTag_01
  15116.     OkToChangeModelColor = Yes
  15117.  
  15118.     DefaultConditionState
  15119.       Model = UVRockBug
  15120.       Turret = Turret
  15121.       ShowSubObject = Turret
  15122.       HideSubObject = TurretUp01 
  15123.       WeaponFireFXBone = PRIMARY WeaponA
  15124.       WeaponLaunchBone = PRIMARY WeaponA
  15125.     End
  15126.     
  15127.     ConditionState = REALLYDAMAGED
  15128.       Model = UVRockBug_D
  15129.       Turret = Turret
  15130.       ShowSubObject = Turret
  15131.       HideSubObject = TurretUp01 
  15132.       WeaponFireFXBone = PRIMARY WeaponA
  15133.       WeaponLaunchBone = PRIMARY WeaponA
  15134.     End
  15135.     
  15136.     ConditionState = RUBBLE
  15137.       Model = UVRockBug_D
  15138.       Turret = Turret
  15139.       ShowSubObject = Turret
  15140.       HideSubObject = TurretUp01 
  15141.       WeaponFireFXBone = PRIMARY WeaponA
  15142.       WeaponLaunchBone = PRIMARY WeaponA
  15143.     End
  15144.  
  15145.     ConditionState =   WEAPONSET_PLAYER_UPGRADE
  15146.       Model = UVRockBug
  15147.       Turret = TurretUp01
  15148.       ShowSubObject = TurretUp01 
  15149.       HideSubObject = Turret
  15150.       WeaponFireFXBone = PRIMARY WeaponB
  15151.       WeaponLaunchBone = PRIMARY WeaponB
  15152.     End
  15153.     
  15154.     ConditionState =   WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
  15155.       Model = UVRockBug_D
  15156.       Turret = TurretUp01
  15157.       ShowSubObject = TurretUp01 
  15158.       HideSubObject = Turret
  15159.       WeaponFireFXBone = PRIMARY WeaponB
  15160.       WeaponLaunchBone = PRIMARY WeaponB
  15161.     End
  15162.     
  15163.     ConditionState =   WEAPONSET_PLAYER_UPGRADE RUBBLE
  15164.       Model = UVRockBug_D
  15165.       Turret = TurretUp01
  15166.       ShowSubObject = TurretUp01 
  15167.       HideSubObject = Turret
  15168.       WeaponFireFXBone = PRIMARY WeaponB
  15169.       WeaponLaunchBone = PRIMARY WeaponB
  15170.     End
  15171.  
  15172.     TrackMarks = EXTireTrack.tga
  15173.  
  15174.     Dust                        = RocketBuggyDust
  15175.     DirtSpray                   = RocketBuggyDirtSpray
  15176.     PowerslideSpray             = RocketBuggyDirtPowerSlide
  15177.  
  15178.     ; These parameters are only used if the model has a separate suspension, 
  15179.     ; and the locomotor has HasSuspension = Yes.
  15180.     LeftFrontTireBone           = Tire01
  15181.     RightFrontTireBone          = Tire02
  15182.     LeftRearTireBone            = Tire03
  15183.     RightRearTireBone           = Tire04
  15184.     TireRotationMultiplier      = 0.2   ; this * speed = rotation.
  15185.     PowerslideRotationAddition  = 2.5   ; This speed is added to the rotation speed when powersliding.
  15186.  
  15187.   End
  15188.  
  15189.   ; ***DESIGN parameters ***
  15190.   DisplayName         = OBJECT:RocketBuggy
  15191.   Side                = GLA
  15192.   EditorSorting       = VEHICLE
  15193.   TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  15194.   WeaponSet
  15195.     Conditions = None 
  15196.     Weapon = PRIMARY BuggyRocketWeapon
  15197.   End
  15198.   WeaponSet
  15199.     Conditions = PLAYER_UPGRADE 
  15200.     Weapon = PRIMARY BuggyRocketWeaponUpgraded
  15201.   End
  15202.   ArmorSet
  15203.     Conditions      = None
  15204.     Armor           = TruckArmor
  15205.     DamageFX        = TankDamageFX
  15206.   End
  15207.   BuildCost       = 900
  15208.   BuildTime       = 10.0          ;in seconds    
  15209.   VisionRange     = 180
  15210.   ShroudClearingRange = 300
  15211.   Prerequisites
  15212.     Object = GLAArmsDealer
  15213.     Object = GLAPalace
  15214.   End
  15215.  
  15216.   ExperienceValue       = 50 50 100 150    ;Experience point value at each level
  15217.   ExperienceRequired    = 0 200 400 800  ;Experience points needed to gain each level
  15218.   IsTrainable           = Yes             ;Can gain experience
  15219.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  15220.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  15221.   CommandSet            = GLAVehicleRocketBuggyCommandSet
  15222.  
  15223.   ; *** AUDIO Parameters ***
  15224.   VoiceSelect = RocketBuggyVoiceSelect
  15225.   VoiceMove = RocketBuggyVoiceMove
  15226.   VoiceAttack = RocketBuggyVoiceAttack
  15227.   SoundMoveStart = RocketBuggyMoveStart
  15228.   SoundMoveStartDamaged = RocketBuggyMoveStart
  15229.   VoiceGuard = RocketBuggyVoiceMove
  15230.  
  15231.  
  15232.   UnitSpecificSounds
  15233.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  15234.     VoiceCreate          = RocketBuggyVoiceCreate
  15235.     TurretMoveStart = NoSound
  15236.     TurretMoveLoop = TurretMoveLoop  
  15237.   ; Required for the W3DTruckDraw module
  15238.     TruckLandingSound = RocketBuggyLand
  15239.     TruckPowerslideSound = RocketBuggyPowerslide
  15240.     VoiceCrush      = RocketBuggyVoiceCrush
  15241.     VoiceEnter = RocketBuggyVoiceMove
  15242.   End
  15243.  
  15244.   ; *** ENGINEERING Parameters ***
  15245.   RadarPriority = UNIT
  15246.   KindOf = PRELOAD SELECTABLE CAN_ATTACK DONT_AUTO_CRUSH_INFANTRY ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
  15247.  
  15248.   Body = ActiveBody ModuleTag_02
  15249.     MaxHealth       = 120
  15250.     InitialHealth   = 120
  15251.   End
  15252.   Behavior = AIUpdateInterface ModuleTag_03
  15253.     Turret
  15254.       TurretTurnRate = 90
  15255.       ControlledWeaponSlots = PRIMARY
  15256.     End
  15257.     AutoAcquireEnemiesWhenIdle = Yes
  15258.   End
  15259.   Locomotor = SET_NORMAL RocketBuggyLocomotor
  15260.   Behavior = PhysicsBehavior ModuleTag_04
  15261.     Mass = 50.0
  15262.   End
  15263.  
  15264. ; The pop up AirDeath 
  15265.   Behavior = SlowDeathBehavior ModuleTag_05
  15266.     DeathTypes = ALL -CRUSHED -SPLATTED
  15267.     ProbabilityModifier = 5
  15268.     ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
  15269.     DestructionDelay = 0
  15270.     FX = INITIAL FX_BuggyNewDeathExplosion
  15271.     OCL = FINAL OCL_RocketBuggyAirDeathStart
  15272.   End
  15273.  
  15274.   Behavior = AutoHealBehavior ModuleTag_08
  15275.     HealingAmount = 2
  15276.     HealingDelay = 1000 ; msec
  15277.     TriggeredBy = Upgrade_GLAJunkRepair
  15278.   End
  15279.  
  15280.   Behavior = WeaponSetUpgrade ModuleTag_09
  15281.     TriggeredBy = Upgrade_GLABuggyAmmo
  15282.   End
  15283.  
  15284.   Behavior = DestroyDie ModuleTag_11
  15285.     DeathTypes = NONE +CRUSHED +SPLATTED
  15286.   End
  15287.  
  15288.   ; A crushing defeat
  15289.   Behavior = FXListDie ModuleTag_12
  15290.     DeathTypes = NONE +CRUSHED +SPLATTED
  15291.     DeathFX = FX_CarCrush
  15292.   End
  15293.   Behavior = CreateObjectDie ModuleTag_13
  15294.     DeathTypes = NONE +CRUSHED +SPLATTED
  15295.     CreationList = OCL_RocketBuggy_CrushEffect
  15296.   End
  15297.   Behavior = CreateCrateDie ModuleTag_14
  15298.     CrateData = SalvageCrateData
  15299.     ;CrateData = EliteTankCrateData
  15300.     ;CrateData = HeroicTankCrateData
  15301.   End
  15302.   
  15303.   Behavior                 = TransitionDamageFX ModuleTag_15
  15304.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  15305.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  15306.   End
  15307.  
  15308.   Behavior = FlammableUpdate ModuleTag_21
  15309.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  15310.     AflameDamageAmount = 3       ; taking this much damage...
  15311.     AflameDamageDelay = 500       ; this often.
  15312.   End
  15313.  
  15314.   Geometry = BOX
  15315.   GeometryMajorRadius = 13.0
  15316.   GeometryMinorRadius = 9.0
  15317.   GeometryHeight = 7.5     
  15318.   GeometryIsSmall = Yes    
  15319.  
  15320.   Shadow = SHADOW_VOLUME
  15321.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  15322.  
  15323. End
  15324.  
  15325. ;------------------------------------------------------------------------------
  15326. ;------------------------------------------------------------------------------
  15327. ;GLA Rocket Buggy
  15328. Object CINE_GLAVehicleRocketBuggy
  15329.  
  15330.   ; *** ART Parameters ***
  15331.   SelectPortrait         = SURocketBuggy_L
  15332.   ButtonImage            = SURocketBuggy
  15333.   
  15334.   UpgradeCameo1 = Upgrade_GLABuggyAmmo
  15335.   UpgradeCameo2 = Upgrade_GLAAPRockets
  15336.   UpgradeCameo3 = Upgrade_GLAJunkRepair
  15337.   ;UpgradeCameo4 = NONE
  15338.   ;UpgradeCameo5 = NONE
  15339.   
  15340.   Draw = W3DTruckDraw ModuleTag_01
  15341.     OkToChangeModelColor = Yes
  15342.  
  15343.     DefaultConditionState
  15344.       Model = UVRockBug
  15345.       Turret = Turret
  15346.       ShowSubObject = Turret
  15347.       HideSubObject = TurretUp01 
  15348.       WeaponFireFXBone = PRIMARY WeaponA
  15349.       WeaponLaunchBone = PRIMARY WeaponA
  15350.     End
  15351.     
  15352.     ConditionState = REALLYDAMAGED
  15353.       Model = UVRockBug_D
  15354.       Turret = Turret
  15355.       ShowSubObject = Turret
  15356.       HideSubObject = TurretUp01 
  15357.       WeaponFireFXBone = PRIMARY WeaponA
  15358.       WeaponLaunchBone = PRIMARY WeaponA
  15359.     End
  15360.     
  15361.     ConditionState = RUBBLE
  15362.       Model = UVRockBug_D
  15363.       Turret = Turret
  15364.       ShowSubObject = Turret
  15365.       HideSubObject = TurretUp01 
  15366.       WeaponFireFXBone = PRIMARY WeaponA
  15367.       WeaponLaunchBone = PRIMARY WeaponA
  15368.     End
  15369.  
  15370.     ConditionState =   WEAPONSET_PLAYER_UPGRADE
  15371.       Model = UVRockBug
  15372.       Turret = TurretUp01
  15373.       ShowSubObject = TurretUp01 
  15374.       HideSubObject = Turret
  15375.       WeaponFireFXBone = PRIMARY WeaponB
  15376.       WeaponLaunchBone = PRIMARY WeaponB
  15377.     End
  15378.     
  15379.     ConditionState =   WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
  15380.       Model = UVRockBug_D
  15381.       Turret = TurretUp01
  15382.       ShowSubObject = TurretUp01 
  15383.       HideSubObject = Turret
  15384.       WeaponFireFXBone = PRIMARY WeaponB
  15385.       WeaponLaunchBone = PRIMARY WeaponB
  15386.     End
  15387.     
  15388.     ConditionState =   WEAPONSET_PLAYER_UPGRADE RUBBLE
  15389.       Model = UVRockBug_D
  15390.       Turret = TurretUp01
  15391.       ShowSubObject = TurretUp01 
  15392.       HideSubObject = Turret
  15393.       WeaponFireFXBone = PRIMARY WeaponB
  15394.       WeaponLaunchBone = PRIMARY WeaponB
  15395.     End
  15396.  
  15397.     TrackMarks = EXTireTrack.tga
  15398.  
  15399.     Dust                        = RocketBuggyDust
  15400.     DirtSpray                   = RocketBuggyDirtSpray
  15401.     PowerslideSpray             = RocketBuggyDirtPowerSlide
  15402.  
  15403.     ; These parameters are only used if the model has a separate suspension, 
  15404.     ; and the locomotor has HasSuspension = Yes.
  15405.     LeftFrontTireBone           = Tire01
  15406.     RightFrontTireBone          = Tire02
  15407.     LeftRearTireBone            = Tire03
  15408.     RightRearTireBone           = Tire04
  15409.     TireRotationMultiplier      = 0.2   ; this * speed = rotation.
  15410.     PowerslideRotationAddition  = 2.5   ; This speed is added to the rotation speed when powersliding.
  15411.  
  15412.   End
  15413.  
  15414.   ; ***DESIGN parameters ***
  15415.   DisplayName         = OBJECT:RocketBuggy
  15416.   Side                = GLA
  15417.   EditorSorting       = VEHICLE
  15418.   TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  15419.   WeaponSet
  15420.     Conditions = None 
  15421.     Weapon = PRIMARY CINE_BuggyRocketWeapon
  15422.   End
  15423.   WeaponSet
  15424.     Conditions = PLAYER_UPGRADE 
  15425.     Weapon = PRIMARY BuggyRocketWeaponUpgraded
  15426.   End
  15427.   ArmorSet
  15428.     Conditions      = None
  15429.     Armor           = TruckArmor
  15430.     DamageFX        = TankDamageFX
  15431.   End
  15432.   BuildCost       = 900
  15433.   BuildTime       = 10.0          ;in seconds    
  15434.   VisionRange     = 200
  15435.   ShroudClearingRange = 300
  15436.   Prerequisites
  15437.     Object = GLAArmsDealer
  15438.     Object = GLAPalace
  15439.   End
  15440.  
  15441.   ExperienceValue       = 50 50 100 150    ;Experience point value at each level
  15442.   ExperienceRequired    = 0 200 400 800  ;Experience points needed to gain each level
  15443.   IsTrainable           = Yes             ;Can gain experience
  15444.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  15445.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  15446.   CommandSet            = GLAVehicleRocketBuggyCommandSet
  15447.  
  15448.   ; *** AUDIO Parameters ***
  15449.   VoiceSelect = RocketBuggyVoiceSelect
  15450.   VoiceMove = RocketBuggyVoiceMove
  15451.   VoiceAttack = RocketBuggyVoiceAttack
  15452.   SoundMoveStart = RocketBuggyMoveStart
  15453.   SoundMoveStartDamaged = RocketBuggyMoveStart
  15454.   VoiceGuard = RocketBuggyVoiceMove
  15455.  
  15456.  
  15457.   UnitSpecificSounds
  15458.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  15459.     VoiceCreate          = RocketBuggyVoiceCreate
  15460.     TurretMoveStart = NoSound
  15461.     TurretMoveLoop = TurretMoveLoop  
  15462.   ; Required for the W3DTruckDraw module
  15463.     TruckLandingSound = RocketBuggyLand
  15464.     TruckPowerslideSound = RocketBuggyPowerslide
  15465.     VoiceCrush      = RocketBuggyVoiceCrush
  15466.     VoiceEnter = RocketBuggyVoiceMove
  15467.   End
  15468.  
  15469.   ; *** ENGINEERING Parameters ***
  15470.   RadarPriority = UNIT
  15471.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
  15472.  
  15473.   Body = ActiveBody ModuleTag_02
  15474.     MaxHealth       = 120
  15475.     InitialHealth   = 120
  15476.   End
  15477.   Behavior = AIUpdateInterface ModuleTag_03
  15478.     Turret
  15479.       TurretTurnRate = 90
  15480.       ControlledWeaponSlots = PRIMARY
  15481.     End
  15482.     AutoAcquireEnemiesWhenIdle = Yes
  15483.   End
  15484.   Locomotor = SET_NORMAL CINE_RocketBuggyLocomotor
  15485.   Behavior = PhysicsBehavior ModuleTag_04
  15486.     Mass = 50.0
  15487.   End
  15488.  
  15489. ; The pop up AirDeath 
  15490.   Behavior = SlowDeathBehavior ModuleTag_05
  15491.     DeathTypes = ALL -CRUSHED -SPLATTED
  15492.     ProbabilityModifier = 5
  15493.     ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
  15494.     DestructionDelay = 0
  15495.     FX = INITIAL FX_BuggyNewDeathExplosion
  15496.     OCL = FINAL OCL_RocketBuggyAirDeathStart
  15497.   End
  15498.  
  15499.   Behavior = AutoHealBehavior ModuleTag_08
  15500.     HealingAmount = 2
  15501.     HealingDelay = 1000 ; msec
  15502.     TriggeredBy = Upgrade_GLAJunkRepair
  15503.   End
  15504.  
  15505.   Behavior = WeaponSetUpgrade ModuleTag_09
  15506.     TriggeredBy = Upgrade_GLABuggyAmmo
  15507.   End
  15508.  
  15509.   Behavior = DestroyDie ModuleTag_11
  15510.     DeathTypes = NONE +CRUSHED +SPLATTED
  15511.   End
  15512.  
  15513.   ; A crushing defeat
  15514.   Behavior = FXListDie ModuleTag_12
  15515.     DeathTypes = NONE +CRUSHED +SPLATTED
  15516.     DeathFX = FX_CarCrush
  15517.   End
  15518.   Behavior = CreateObjectDie ModuleTag_13
  15519.     DeathTypes = NONE +CRUSHED +SPLATTED
  15520.     CreationList = OCL_CrusaderTank_CrushEffect
  15521.   End
  15522.   Behavior = CreateCrateDie ModuleTag_14
  15523.     CrateData = SalvageCrateData
  15524.     ;CrateData = EliteTankCrateData
  15525.     ;CrateData = HeroicTankCrateData
  15526.   End
  15527.   
  15528.   Behavior                 = TransitionDamageFX ModuleTag_15
  15529.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  15530.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  15531.   End
  15532.  
  15533.   Behavior = FlammableUpdate ModuleTag_21
  15534.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  15535.     AflameDamageAmount = 3       ; taking this much damage...
  15536.     AflameDamageDelay = 500       ; this often.
  15537.   End
  15538.  
  15539.   Geometry = BOX
  15540.   GeometryMajorRadius = 13.0
  15541.   GeometryMinorRadius = 9.0
  15542.   GeometryHeight = 7.5     
  15543.   GeometryIsSmall = Yes    
  15544.  
  15545.   Shadow = SHADOW_VOLUME
  15546.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  15547.  
  15548. End
  15549.  
  15550. ;------------------------------------------------------------------------------
  15551. Object StingerMissile
  15552.  
  15553.   ; *** ART Parameters ***
  15554.   Draw = W3DModelDraw ModuleTag_01
  15555.     OkToChangeModelColor = Yes
  15556.     ConditionState = NONE
  15557.       Model = UVRockBug_m
  15558.     End
  15559.   End
  15560.  
  15561.   ; ***DESIGN parameters ***
  15562.   DisplayName      = OBJECT:StingerMissile
  15563.   EditorSorting   = SYSTEM
  15564.   VisionRange = 0.0  
  15565.   ArmorSet
  15566.     Conditions      = None
  15567.     Armor           = ProjectileArmor
  15568.     DamageFX        = None
  15569.   End
  15570.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  15571.  
  15572.   ; *** ENGINEERING Parameters ***
  15573.   KindOf = PROJECTILE SMALL_MISSILE
  15574.   Body = ActiveBody ModuleTag_02
  15575.     MaxHealth       = 100.0
  15576.     InitialHealth   = 100.0
  15577.   End
  15578.  
  15579. ; ---- begin Projectile death behaviors
  15580.   Behavior = InstantDeathBehavior DeathModuleTag_01
  15581.     DeathTypes = NONE +DETONATED
  15582.     ; we detonated normally.
  15583.     ; no FX, just quiet destroy ourselves
  15584.   End
  15585.   Behavior = InstantDeathBehavior DeathModuleTag_02
  15586.     DeathTypes = NONE +LASERED
  15587.     ; shot down by laser.
  15588.     FX         = FX_GenericMissileDisintegrate
  15589.     OCL        = OCL_GenericMissileDisintegrate
  15590.   End
  15591.   Behavior = InstantDeathBehavior DeathModuleTag_03
  15592.     DeathTypes = ALL -LASERED -DETONATED
  15593.     ; shot down by nonlaser.
  15594.     FX         = FX_GenericMissileDeath
  15595.   End
  15596. ; ---- end Projectile death behaviors
  15597.     
  15598.   Behavior = PhysicsBehavior ModuleTag_06
  15599.     Mass = 1
  15600.   End
  15601.   Behavior = MissileAIUpdate ModuleTag_07
  15602.     TryToFollowTarget       = Yes 
  15603.     FuelLifetime            = 5000
  15604.     InitialVelocity         = 200                ; in dist/sec
  15605.     IgnitionDelay           = 0
  15606.     DistanceToTravelBeforeTurning = 5
  15607.     IgnitionFX              = None
  15608.     DistanceToTargetForLock = 100  ; If it gets within 100 of the target, it kills the target.
  15609.   End
  15610.  
  15611.   Behavior = WeaponBonusUpgrade Upgrade_01
  15612.     TriggeredBy = Upgrade_GLAAPRockets
  15613.   End
  15614.  
  15615.   Locomotor = SET_NORMAL StingerMissileLocomotor
  15616.  
  15617.   Geometry = Sphere
  15618.   GeometryIsSmall = Yes
  15619.   GeometryMajorRadius = 2.0
  15620.  
  15621. End
  15622.  
  15623.  
  15624. ;------------------------------------------------------------------------------
  15625. Object ComancheAntiTankMissile
  15626.  
  15627.   ; *** ART Parameters ***
  15628.   Draw = W3DModelDraw ModuleTag_01
  15629.     OkToChangeModelColor = Yes
  15630.     ConditionState = NONE
  15631.       ; @todo -- need real art here
  15632.       Model = UVRockBug_m
  15633.     End
  15634.   End
  15635.  
  15636.   ; ***DESIGN parameters ***
  15637.   DisplayName      = OBJECT:Prop
  15638.   EditorSorting     = SYSTEM
  15639.   VisionRange = 0.0  
  15640.   ArmorSet
  15641.     Conditions      = None
  15642.     Armor           = ProjectileArmor
  15643.     DamageFX        = None
  15644.   End
  15645.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  15646.  
  15647.   ; *** ENGINEERING Parameters ***
  15648.   KindOf = PROJECTILE SMALL_MISSILE
  15649.   Body = ActiveBody ModuleTag_02
  15650.     MaxHealth       = 100.0
  15651.     InitialHealth   = 100.0
  15652.   End
  15653.  
  15654. ; ---- begin Projectile death behaviors
  15655.   Behavior = InstantDeathBehavior DeathModuleTag_01
  15656.     DeathTypes = NONE +DETONATED
  15657.     ; we detonated normally.
  15658.     ; no FX, just quiet destroy ourselves
  15659.   End
  15660.   Behavior = InstantDeathBehavior DeathModuleTag_02
  15661.     DeathTypes = NONE +LASERED
  15662.     ; shot down by laser.
  15663.     FX         = FX_GenericMissileDisintegrate
  15664.     OCL        = OCL_GenericMissileDisintegrate
  15665.   End
  15666.   Behavior = InstantDeathBehavior DeathModuleTag_03
  15667.     DeathTypes = ALL -LASERED -DETONATED
  15668.     ; shot down by nonlaser.
  15669.     FX         = FX_GenericMissileDeath
  15670.   End
  15671. ; ---- end Projectile death behaviors
  15672.     
  15673.   Behavior = PhysicsBehavior ModuleTag_06
  15674.     Mass = 1
  15675.   End
  15676.   Behavior = MissileAIUpdate ModuleTag_07
  15677.     TryToFollowTarget = Yes 
  15678.     FuelLifetime = 1000
  15679.     InitialVelocity = 150                ; in dist/sec
  15680.     IgnitionDelay = 0
  15681.     DistanceToTravelBeforeTurning = 10
  15682.     IgnitionFX = FX_BuggyMissileIgnition
  15683.   End
  15684.   Locomotor = SET_NORMAL ComancheAntiTankMissileLocomotor
  15685.  
  15686.   Geometry = Sphere
  15687.   GeometryIsSmall = Yes
  15688.   GeometryMajorRadius = 2.0
  15689.  
  15690. End
  15691.  
  15692. ;------------------------------------------------------------------------------
  15693. Object ComancheRocketPodRocket
  15694.  
  15695.   ; *** ART Parameters ***
  15696.   Draw = W3DModelDraw ModuleTag_01
  15697.     OkToChangeModelColor = Yes
  15698.     ConditionState = NONE
  15699.       ; @todo -- need real art here
  15700.       Model = UVRockBug_m
  15701.     End
  15702.   End
  15703.  
  15704.   ; ***DESIGN parameters ***
  15705.   DisplayName      = OBJECT:Prop
  15706.   EditorSorting     = SYSTEM
  15707.   VisionRange = 0.0  
  15708.   ArmorSet
  15709.     Conditions      = None
  15710.     Armor           = ProjectileArmor
  15711.     DamageFX        = None
  15712.   End
  15713.  
  15714.   ; *** ENGINEERING Parameters ***
  15715.   KindOf = PROJECTILE SMALL_MISSILE
  15716.   Body = ActiveBody ModuleTag_02
  15717.     MaxHealth       = 100.0
  15718.     InitialHealth   = 100.0
  15719.   End
  15720.  
  15721. ; ---- begin Projectile death behaviors
  15722.   Behavior = InstantDeathBehavior DeathModuleTag_01
  15723.     DeathTypes = NONE +DETONATED
  15724.     ; we detonated normally.
  15725.     ; no FX, just quiet destroy ourselves
  15726.   End
  15727.   Behavior = InstantDeathBehavior DeathModuleTag_02
  15728.     DeathTypes = NONE +LASERED
  15729.     ; shot down by laser.
  15730.     FX         = FX_GenericMissileDisintegrate
  15731.     OCL        = OCL_GenericMissileDisintegrate
  15732.   End
  15733.   Behavior = InstantDeathBehavior DeathModuleTag_03
  15734.     DeathTypes = ALL -LASERED -DETONATED
  15735.     ; shot down by nonlaser.
  15736.     FX         = FX_GenericMissileDeath
  15737.   End
  15738. ; ---- end Projectile death behaviors
  15739.     
  15740.   Behavior = PhysicsBehavior ModuleTag_06
  15741.     Mass = 1
  15742.   End
  15743.   Behavior = MissileAIUpdate ModuleTag_07
  15744.     TryToFollowTarget = No 
  15745.     FuelLifetime = 1000
  15746.     InitialVelocity = 150                ; in dist/sec
  15747.     IgnitionDelay = 0
  15748.     DistanceToTravelBeforeTurning = 10
  15749.     IgnitionFX = FX_BuggyMissileIgnition
  15750.   End
  15751.   Locomotor = SET_NORMAL ComancheRocketPodLocomotor
  15752.   Geometry = Sphere
  15753.   GeometryIsSmall = Yes
  15754.   GeometryMajorRadius = 2.0
  15755.  
  15756. End
  15757.  
  15758. ;------------------------------------------------------------------------------
  15759. Object RocketBuggyMissile
  15760.  
  15761.   ; *** ART Parameters ***
  15762.   Draw = W3DModelDraw ModuleTag_01
  15763.     OkToChangeModelColor = Yes
  15764.     ConditionState = NONE
  15765.       Model = UVRockBug_m
  15766.     End
  15767.   End
  15768.  
  15769.   ; ***DESIGN parameters ***
  15770.   EditorSorting     = SYSTEM
  15771.   VisionRange       = 0.0  
  15772.   ArmorSet
  15773.     Conditions      = None
  15774.     Armor           = ProjectileArmor
  15775.     DamageFX        = None
  15776.   End
  15777.  
  15778.   ; *** ENGINEERING Parameters ***
  15779.   KindOf = PROJECTILE SMALL_MISSILE
  15780.   Body = ActiveBody ModuleTag_02
  15781.     MaxHealth       = 100.0
  15782.     InitialHealth   = 100.0
  15783.   End
  15784.  
  15785. ; ---- begin Projectile death behaviors
  15786.   Behavior = InstantDeathBehavior DeathModuleTag_01
  15787.     DeathTypes = NONE +DETONATED
  15788.     ; we detonated normally.
  15789.     ; no FX, just quiet destroy ourselves
  15790.   End
  15791.   Behavior = InstantDeathBehavior DeathModuleTag_02
  15792.     DeathTypes = NONE +LASERED
  15793.     ; shot down by laser.
  15794.     FX         = FX_GenericMissileDisintegrate
  15795.     OCL        = OCL_GenericMissileDisintegrate
  15796.   End
  15797.   Behavior = InstantDeathBehavior DeathModuleTag_03
  15798.     DeathTypes = ALL -LASERED -DETONATED
  15799.     ; shot down by nonlaser.
  15800.     FX         = FX_GenericMissileDeath
  15801.   End
  15802. ; ---- end Projectile death behaviors
  15803.  
  15804.   Behavior = PhysicsBehavior ModuleTag_06
  15805.     Mass = 1
  15806.   End
  15807.   Behavior = MissileAIUpdate ModuleTag_07
  15808.     TryToFollowTarget               = Yes
  15809.     FuelLifetime                    = 1500
  15810.     InitialVelocity                 = 150                ; in dist/sec
  15811.     IgnitionDelay                   = 0
  15812.     DistanceToTravelBeforeTurning   = 3
  15813.     IgnitionFX                      = FX_BuggyMissileIgnition
  15814.   End
  15815.   Locomotor = SET_NORMAL RocketBuggyMissileLocomotor
  15816.  
  15817.   Behavior = WeaponBonusUpgrade ModuleTag_08
  15818.     TriggeredBy = Upgrade_GLAAPRockets
  15819.   End
  15820.  
  15821.   Geometry = Sphere
  15822.   GeometryIsSmall = Yes
  15823.   GeometryMajorRadius = 2.0
  15824.  
  15825. End
  15826.  
  15827. ;------------------------------------------------------------------------------
  15828. Object SCUDMissile
  15829.  
  15830.   ; *** ART Parameters ***
  15831.   Draw = W3DModelDraw ModuleTag_01
  15832.     OkToChangeModelColor = Yes
  15833.     ConditionState = NONE
  15834.       Model = UVScudLchr_M
  15835.     End
  15836.     ConditionState = REALLYDAMAGED
  15837.       Model = UVScudLchr_DM
  15838.     End
  15839.   End
  15840.  
  15841.   ; ***DESIGN parameters ***
  15842.   DisplayName      = OBJECT:SCUDMissile
  15843.   EditorSorting   = SYSTEM
  15844.   VisionRange = 0.0  
  15845.   ArmorSet
  15846.     Conditions      = None
  15847.     ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
  15848.     ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
  15849.     ;*AntiBallisticMissile = Yes set in the Weapon.ini.
  15850.     Armor           = BallisticMissileArmor 
  15851.     DamageFX        = None
  15852.   End
  15853.  
  15854.   ; *** ENGINEERING Parameters ***
  15855.   KindOf = PROJECTILE BALLISTIC_MISSILE
  15856.   Body = ActiveBody ModuleTag_02
  15857.     MaxHealth       = 100.0
  15858.     InitialHealth   = 100.0
  15859.   End
  15860.  
  15861. ; ---- begin Projectile death behaviors
  15862.   Behavior = InstantDeathBehavior DeathModuleTag_01
  15863.     DeathTypes = NONE +DETONATED
  15864.     ; we detonated normally.
  15865.     ; no FX, just quiet destroy ourselves
  15866.   End
  15867.   Behavior = InstantDeathBehavior DeathModuleTag_02
  15868.     DeathTypes = NONE +LASERED
  15869.     ; shot down by laser.
  15870.     FX         = FX_GenericMissileDisintegrate
  15871.     OCL        = OCL_GenericMissileDisintegrate
  15872.   End
  15873.   Behavior = InstantDeathBehavior DeathModuleTag_03
  15874.     DeathTypes = ALL -LASERED -DETONATED
  15875.     ; shot down by nonlaser.
  15876.     FX         = FX_GenericMissileDeath
  15877.   End
  15878. ; ---- end Projectile death behaviors
  15879.     
  15880.   Behavior = PhysicsBehavior ModuleTag_06
  15881.     Mass = 1
  15882.   End
  15883.   Behavior = MissileAIUpdate ModuleTag_07
  15884.     TryToFollowTarget = No 
  15885.     FuelLifetime = 5000
  15886.     IgnitionDelay = 0
  15887. ;   IgnitionFX = FX_ScudStormIgnition ;NOT WORKING
  15888.     InitialVelocity = 50                ; in dist/sec
  15889.     DistanceToTravelBeforeTurning = 200
  15890.     DistanceToTargetBeforeDiving = 200 ; When I hit this close to target, I ignore PreferredHeight.
  15891.   End
  15892.   Locomotor = SET_NORMAL SCUDMissileLocomotor
  15893.  
  15894.   Behavior = WeaponBonusUpgrade ModuleTag_08
  15895.     TriggeredBy = Upgrade_GLAAPRockets
  15896.   End
  15897.  
  15898.   Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
  15899.   GeometryMajorRadius = 4.0
  15900.   GeometryHeight = 4.0
  15901.   GeometryIsSmall = Yes    
  15902.  
  15903.   Shadow = SHADOW_DECAL
  15904. End
  15905.  
  15906. ;------------------------------------------------------------------------------
  15907. ;*********************** Cinematic Only Unit **********************************
  15908. Object CINE_SCUDMissile
  15909.  
  15910.   ; *** ART Parameters ***
  15911.   Draw = W3DModelDraw ModuleTag_01
  15912.     OkToChangeModelColor = Yes
  15913.     ConditionState = NONE
  15914.       Model = UVScudLchr_M
  15915.     End
  15916.     ConditionState = REALLYDAMAGED
  15917.       Model = UVScudLchr_DM
  15918.     End
  15919.   End
  15920.  
  15921.   ; ***DESIGN parameters ***
  15922.   DisplayName      = OBJECT:SCUDMissile
  15923.   EditorSorting   = SYSTEM
  15924.   VisionRange = 0.0  
  15925.   ArmorSet
  15926.     Conditions      = None
  15927.     ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
  15928.     ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
  15929.     ;*AntiBallisticMissile = Yes set in the Weapon.ini.
  15930.     Armor           = BallisticMissileArmor 
  15931.     DamageFX        = None
  15932.   End
  15933.  
  15934.   ; *** ENGINEERING Parameters ***
  15935.   KindOf = PROJECTILE BALLISTIC_MISSILE
  15936.   Body = ActiveBody ModuleTag_02
  15937.     MaxHealth       = 100.0
  15938.     InitialHealth   = 100.0
  15939.   End
  15940.  
  15941. ; ---- begin Projectile death behaviors
  15942.   Behavior = InstantDeathBehavior DeathModuleTag_01
  15943.     DeathTypes = NONE +DETONATED
  15944.     ; we detonated normally.
  15945.     ; no FX, just quiet destroy ourselves
  15946.   End
  15947.   Behavior = InstantDeathBehavior DeathModuleTag_02
  15948.     DeathTypes = NONE +LASERED
  15949.     ; shot down by laser.
  15950.     FX         = FX_GenericMissileDisintegrate
  15951.     OCL        = OCL_GenericMissileDisintegrate
  15952.   End
  15953.   Behavior = InstantDeathBehavior DeathModuleTag_03
  15954.     DeathTypes = ALL -LASERED -DETONATED
  15955.     ; shot down by nonlaser.
  15956.     FX         = FX_GenericMissileDeath
  15957.   End
  15958. ; ---- end Projectile death behaviors
  15959.     
  15960.   Behavior = PhysicsBehavior ModuleTag_06
  15961.     Mass = 1
  15962.   End
  15963.   Behavior = MissileAIUpdate ModuleTag_07
  15964.     TryToFollowTarget = No 
  15965.     FuelLifetime = 8000
  15966.     IgnitionDelay = 0
  15967. ;   IgnitionFX = FX_ScudStormIgnition ;NOT WORKING
  15968.     InitialVelocity = 50                ; in dist/sec
  15969.     DistanceToTravelBeforeTurning = 200
  15970.     DistanceToTargetBeforeDiving = 200 ; When I hit this close to target, I ignore PreferredHeight.
  15971.   End
  15972.   Locomotor = SET_NORMAL SCUDMissileLocomotor
  15973.  
  15974.   Behavior = WeaponBonusUpgrade ModuleTag_08
  15975.     TriggeredBy = Upgrade_GLAAPRockets
  15976.   End
  15977.  
  15978.   Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
  15979.   GeometryMajorRadius = 4.0
  15980.   GeometryHeight = 4.0
  15981.   GeometryIsSmall = Yes    
  15982.  
  15983.   Shadow = SHADOW_DECAL
  15984. End
  15985.  
  15986.  
  15987. ;------------------------------------------------------------------------------
  15988. Object TomahawkMissile
  15989.  
  15990.   ; *** ART Parameters ***
  15991.   Draw = W3DModelDraw ModuleTag_01
  15992.     OkToChangeModelColor = Yes
  15993.     ConditionState = NONE
  15994.       Model = AVTomahawk_M
  15995.  
  15996.     End
  15997.   End
  15998.  
  15999.   ; ***DESIGN parameters ***
  16000.   DisplayName      = OBJECT:TomahawkMissile
  16001.   EditorSorting   = SYSTEM
  16002.   VisionRange = 0.0  
  16003.   ArmorSet
  16004.     Conditions      = None
  16005.     ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
  16006.     ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
  16007.     ;*AntiBallisticMissile = Yes set in the Weapon.ini.
  16008.     Armor           = BallisticMissileArmor 
  16009.     DamageFX        = None
  16010.   End
  16011.  
  16012.   ; *** ENGINEERING Parameters ***
  16013.   KindOf = PROJECTILE BALLISTIC_MISSILE 
  16014.   Body = ActiveBody ModuleTag_02
  16015.     MaxHealth       = 200.0
  16016.     InitialHealth   = 100.0
  16017.   End
  16018.  
  16019. ; ---- begin Projectile death behaviors
  16020.   Behavior = InstantDeathBehavior DeathModuleTag_01
  16021.     DeathTypes = NONE +DETONATED
  16022.     ; we detonated normally.
  16023.     FX          = WeaponFX_TomahawkMissileDetonation
  16024.   End
  16025.   Behavior = InstantDeathBehavior DeathModuleTag_02
  16026.     DeathTypes = NONE +LASERED
  16027.     ; shot down by laser.
  16028.     FX         = FX_GenericMissileDisintegrate
  16029.     OCL        = OCL_GenericMissileDisintegrate
  16030.   End
  16031.   Behavior = InstantDeathBehavior DeathModuleTag_03
  16032.     DeathTypes = ALL -LASERED -DETONATED
  16033.     ; shot down by nonlaser.
  16034.     FX         = FX_GenericMissileDeath
  16035.   End
  16036. ; ---- end Projectile death behaviors
  16037.     
  16038.   Behavior = PhysicsBehavior ModuleTag_06
  16039.     Mass = 1
  16040.   End
  16041.   Behavior = MissileAIUpdate ModuleTag_07
  16042.     TryToFollowTarget = Yes 
  16043.     FuelLifetime = 4000
  16044.     IgnitionDelay = 0
  16045.     IgnitionFX = FX_TomahawkIgnition
  16046.     InitialVelocity = 50                ; in dist/sec
  16047.     DistanceToTravelBeforeTurning = 80
  16048.     DistanceToTargetBeforeDiving = 100 ; When I hit this close to target, I ignore PreferredHeight. 
  16049.     ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
  16050.     ; heart, being over the target counts as "there", so we'll give up and just go straight.
  16051.  
  16052.     DistanceToTargetForLock = 10 ; Short lock on, as it looks better flying.  jba.
  16053.   End
  16054.   Locomotor = SET_NORMAL TomahawkMissileLocomotor
  16055.  
  16056.   Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
  16057.   GeometryMajorRadius = 8.0
  16058.   GeometryHeight = 4.0
  16059.   GeometryIsSmall = Yes    
  16060.  
  16061.   Shadow = SHADOW_DECAL
  16062. End
  16063.  
  16064. ;------------------------------------------------------------------------------
  16065. Object NuclearCannonShell
  16066.  
  16067.   ; *** ART Parameters ***
  16068.   Draw = W3DModelDraw ModuleTag_01
  16069.     OkToChangeModelColor = Yes
  16070.     ConditionState = NONE
  16071.       Model = NVNUKECN_B
  16072.     End
  16073.   End
  16074.  
  16075.   ; ***DESIGN parameters ***
  16076.   DisplayName      = OBJECT:Missile
  16077.   EditorSorting   = SYSTEM
  16078.   VisionRange = 0.0  
  16079.   ArmorSet
  16080.     Conditions      = None
  16081.     Armor           = ProjectileArmor
  16082.     DamageFX        = None
  16083.   End
  16084.  
  16085.   ; *** ENGINEERING Parameters ***
  16086.   KindOf = PROJECTILE
  16087.   Body = ActiveBody ModuleTag_02
  16088.     MaxHealth       = 100.0
  16089.     InitialHealth   = 100.0
  16090.   End
  16091.  
  16092.  
  16093.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_03
  16094.     DeathWeapon   = ChinaPowerPlantDeathWeapon
  16095.     StartsActive  = Yes
  16096.   End
  16097.  
  16098.   Behavior = HeightDieUpdate ModuleTag_04
  16099.     TargetHeight = 1.0
  16100.     TargetHeightIncludesStructures = No
  16101.     OnlyWhenMovingDown = Yes
  16102.     InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
  16103.   End
  16104.  
  16105. ; ---- begin Projectile death behaviors
  16106.   Behavior = InstantDeathBehavior DeathModuleTag_01
  16107.     DeathTypes = NONE +DETONATED
  16108.     ; we detonated normally.
  16109.     FX         = FX_NukeGLA
  16110.   End
  16111.   Behavior = InstantDeathBehavior DeathModuleTag_02
  16112.     DeathTypes = NONE +LASERED
  16113.     ; shot down by laser.
  16114.     FX         = FX_GenericMissileDisintegrate
  16115.     OCL        = OCL_GenericMissileDisintegrate
  16116.   End
  16117.   Behavior = InstantDeathBehavior DeathModuleTag_03
  16118.     DeathTypes = ALL -LASERED -DETONATED
  16119.     ; shot down by nonlaser.
  16120.     FX         = FX_GenericMissileDeath
  16121.   End
  16122. ; ---- end Projectile death behaviors
  16123.  
  16124.   Behavior = PhysicsBehavior ModuleTag_09
  16125.     Mass = 1
  16126.   End
  16127.   Behavior = MissileAIUpdate ModuleTag_10
  16128.     TryToFollowTarget = No 
  16129.     FuelLifetime = 4000
  16130.     IgnitionDelay = 0
  16131.     IgnitionFX = FX_BuggyMissileIgnition
  16132.     InitialVelocity = 20                ; in dist/sec
  16133.     DistanceToTravelBeforeTurning = 40
  16134.     DistanceToTargetBeforeDiving = 50 ; When I hit this close to target, I ignore PreferredHeight. 
  16135.    ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
  16136.    ; heart, being over the target counts as "there", so we'll give up and just go straight.
  16137.   End
  16138.   Locomotor = SET_NORMAL NuclearCannonShellLocomotor
  16139.  
  16140.   Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
  16141.   GeometryMajorRadius = 4.0
  16142.   GeometryHeight = 4.0
  16143.   GeometryIsSmall = Yes    
  16144.  
  16145.   Shadow = SHADOW_DECAL
  16146. End
  16147.  
  16148. ;------------------------------------------------------------------------------
  16149. Object StrategyCenterArtilleryShell
  16150.  
  16151.   ; *** ART Parameters ***
  16152.   Draw = W3DModelDraw ModuleTag_01
  16153.     OkToChangeModelColor = Yes
  16154.     ConditionState = NONE
  16155.       Model = NVNUKECN_B
  16156.  
  16157.     End
  16158.   End
  16159.  
  16160.   ; ***DESIGN parameters ***
  16161.   DisplayName      = OBJECT:Missile
  16162.   EditorSorting   = SYSTEM
  16163.   VisionRange = 0.0  
  16164.   ArmorSet
  16165.     Conditions      = None
  16166.     Armor           = ProjectileArmor
  16167.     DamageFX        = None
  16168.   End
  16169.  
  16170.  
  16171.   ; *** ENGINEERING Parameters ***
  16172.   KindOf = PROJECTILE
  16173.   Body = ActiveBody ModuleTag_02
  16174.     MaxHealth       = 100.0
  16175.     InitialHealth   = 100.0
  16176.   End
  16177.  
  16178. ; ---- begin Projectile death behaviors
  16179.   Behavior = InstantDeathBehavior DeathModuleTag_01
  16180.     DeathTypes = NONE +DETONATED
  16181.     ; we detonated normally.
  16182.     ; no FX, just quiet destroy ourselves
  16183.   End
  16184.   Behavior = InstantDeathBehavior DeathModuleTag_02
  16185.     DeathTypes = NONE +LASERED
  16186.     ; shot down by laser.
  16187.     FX         = FX_GenericMissileDisintegrate
  16188.     OCL        = OCL_GenericMissileDisintegrate
  16189.   End
  16190.   Behavior = InstantDeathBehavior DeathModuleTag_03
  16191.     DeathTypes = ALL -LASERED -DETONATED
  16192.     ; shot down by nonlaser.
  16193.     FX         = FX_GenericMissileDeath
  16194.   End
  16195. ; ---- end Projectile death behaviors
  16196.  
  16197.   Behavior = PhysicsBehavior ModuleTag_04
  16198.     Mass = 1
  16199.   End
  16200.   Behavior = MissileAIUpdate ModuleTag_05
  16201.     TryToFollowTarget = No 
  16202.     FuelLifetime = 4000
  16203.     IgnitionDelay = 0
  16204.     IgnitionFX = FX_BuggyMissileIgnition
  16205.     InitialVelocity = 20                ; in dist/sec
  16206.     DistanceToTravelBeforeTurning = 40
  16207.     DistanceToTargetBeforeDiving = 50 ; When I hit this close to target, I ignore PreferredHeight. 
  16208.    ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
  16209.    ; heart, being over the target counts as "there", so we'll give up and just go straight.
  16210.   End
  16211.   Locomotor = SET_NORMAL NuclearCannonShellLocomotor
  16212.  
  16213.   Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
  16214.   GeometryMajorRadius = 4.0
  16215.   GeometryHeight = 4.0
  16216.   GeometryIsSmall = Yes    
  16217.  
  16218.   Shadow = SHADOW_DECAL
  16219. End
  16220.  
  16221. ;------------------------------------------------------------------------------
  16222. Object MissileDefenderMissile
  16223.  
  16224.   ; *** ART Parameters ***
  16225.   Draw = W3DModelDraw ModuleTag_01
  16226.     OkToChangeModelColor = Yes
  16227.     ConditionState = NONE
  16228.       Model = ExMsslTm
  16229.     End
  16230.   End
  16231.  
  16232.   ; ***DESIGN parameters ***
  16233.   DisplayName      = OBJECT:RangerTeamMissile
  16234.   EditorSorting   = SYSTEM
  16235.   VisionRange = 0.0  
  16236.   ArmorSet
  16237.     Conditions      = None
  16238.     Armor           = ProjectileArmor
  16239.     DamageFX        = None
  16240.   End
  16241.  
  16242.   ; *** ENGINEERING Parameters ***
  16243.   KindOf = PROJECTILE SMALL_MISSILE
  16244.   Body = ActiveBody ModuleTag_02
  16245.     MaxHealth       = 100.0
  16246.     InitialHealth   = 100.0
  16247.   End
  16248.  
  16249. ; ---- begin Projectile death behaviors
  16250.   Behavior = InstantDeathBehavior DeathModuleTag_01
  16251.     DeathTypes = NONE +DETONATED
  16252.     ; we detonated normally.
  16253.     ; no FX, just quiet destroy ourselves
  16254.   End
  16255.   Behavior = InstantDeathBehavior DeathModuleTag_02
  16256.     DeathTypes = NONE +LASERED
  16257.     ; shot down by laser.
  16258.     FX         = FX_GenericMissileDisintegrate
  16259.     OCL        = OCL_GenericMissileDisintegrate
  16260.   End
  16261.   Behavior = InstantDeathBehavior DeathModuleTag_03
  16262.     DeathTypes = ALL -LASERED -DETONATED
  16263.     ; shot down by nonlaser.
  16264.     FX         = FX_GenericMissileDeath
  16265.   End
  16266. ; ---- end Projectile death behaviors
  16267.     
  16268.   Behavior = PhysicsBehavior ModuleTag_06
  16269.     Mass = 1
  16270.   End
  16271.   Behavior = MissileAIUpdate ModuleTag_07
  16272.     TryToFollowTarget               = Yes;;;;;;;;;No 
  16273.     FuelLifetime                    = 3000
  16274.     InitialVelocity                 = 150                ; in dist/sec
  16275.     IgnitionDelay                   = 0
  16276.     DistanceToTravelBeforeTurning   = 3
  16277.     IgnitionFX                      = FX_BuggyMissileIgnition
  16278.   End
  16279.   Locomotor = SET_NORMAL MissileDefenderMissileLocomotor
  16280.   Geometry = Sphere
  16281.   GeometryIsSmall = Yes
  16282.   GeometryMajorRadius = 2.0
  16283.  
  16284. End
  16285.  
  16286. ;------------------------------------------------------------------------------
  16287. Object TunnelDefenderMissile
  16288.  
  16289.   ; *** ART Parameters ***
  16290.   Draw = W3DModelDraw ModuleTag_01
  16291.     OkToChangeModelColor = Yes
  16292.     ConditionState = NONE
  16293.       Model = EXStinger01
  16294.     End
  16295.   End
  16296.  
  16297.   ; ***DESIGN parameters ***
  16298.   EditorSorting   = SYSTEM
  16299.   VisionRange = 0.0  
  16300.   ArmorSet
  16301.     Conditions      = None
  16302.     Armor           = ProjectileArmor
  16303.     DamageFX        = None
  16304.   End
  16305.  
  16306.   ; *** ENGINEERING Parameters ***
  16307.   KindOf = PROJECTILE SMALL_MISSILE
  16308.   Body = ActiveBody ModuleTag_02
  16309.     MaxHealth       = 100.0
  16310.     InitialHealth   = 100.0
  16311.   End
  16312.  
  16313. ; ---- begin Projectile death behaviors
  16314.   Behavior = InstantDeathBehavior DeathModuleTag_01
  16315.     DeathTypes = NONE +DETONATED
  16316.     ; we detonated normally.
  16317.     ; no FX, just quiet destroy ourselves
  16318.   End
  16319.   Behavior = InstantDeathBehavior DeathModuleTag_02
  16320.     DeathTypes = NONE +LASERED
  16321.     ; shot down by laser.
  16322.     FX         = FX_GenericMissileDisintegrate
  16323.     OCL        = OCL_GenericMissileDisintegrate
  16324.   End
  16325.   Behavior = InstantDeathBehavior DeathModuleTag_03
  16326.     DeathTypes = ALL -LASERED -DETONATED
  16327.     ; shot down by nonlaser.
  16328.     FX         = FX_GenericMissileDeath
  16329.   End
  16330. ; ---- end Projectile death behaviors
  16331.  
  16332.   Behavior = WeaponBonusUpgrade ModuleTag_08
  16333.     TriggeredBy = Upgrade_GLAAPRockets
  16334.   End
  16335.     
  16336.   Behavior = PhysicsBehavior ModuleTag_06
  16337.     Mass = 1
  16338.   End
  16339.   Behavior = MissileAIUpdate ModuleTag_07
  16340.     TryToFollowTarget             = Yes;;;;;;;;;;No 
  16341.     FuelLifetime                  = 1250
  16342.     InitialVelocity               = 150                ; in dist/sec
  16343.     IgnitionDelay                 = 0
  16344.     DistanceToTravelBeforeTurning = 20
  16345.     IgnitionFX                    = FX_BuggyMissileIgnition
  16346.   End
  16347.   Locomotor = SET_NORMAL TunnelDefenderMissileLocomotor
  16348.  
  16349.   Geometry = Sphere
  16350.   GeometryIsSmall = Yes
  16351.   GeometryMajorRadius = 2.0
  16352.  
  16353. End
  16354.  
  16355. ;------------------------------------------------------------------------------
  16356. Object TechnicalRPGMissile
  16357.  
  16358.   ; *** ART Parameters ***
  16359.   Draw = W3DModelDraw ModuleTag_01
  16360.     OkToChangeModelColor = Yes
  16361.     DefaultConditionState
  16362.       Model = EXStinger01
  16363.     End
  16364.   End
  16365.  
  16366.   ; ***DESIGN parameters ***
  16367.   EditorSorting     = SYSTEM
  16368.   VisionRange       = 0.0  
  16369.   ArmorSet
  16370.     Conditions      = None
  16371.     Armor           = ProjectileArmor
  16372.     DamageFX        = None
  16373.   End
  16374.  
  16375.   ; *** ENGINEERING Parameters ***
  16376.   KindOf = PROJECTILE SMALL_MISSILE
  16377.   Body = ActiveBody ModuleTag_02
  16378.     MaxHealth       = 100.0
  16379.     InitialHealth   = 100.0
  16380.   End
  16381.  
  16382. ; ---- begin Projectile death behaviors
  16383.   Behavior = InstantDeathBehavior DeathModuleTag_01
  16384.     DeathTypes = NONE +DETONATED
  16385.     ; we detonated normally.
  16386.     ; no FX, just quiet destroy ourselves
  16387.   End
  16388.   Behavior = InstantDeathBehavior DeathModuleTag_02
  16389.     DeathTypes = NONE +LASERED
  16390.     ; shot down by laser.
  16391.     FX         = FX_GenericMissileDisintegrate
  16392.     OCL        = OCL_GenericMissileDisintegrate
  16393.   End
  16394.   Behavior = InstantDeathBehavior DeathModuleTag_03
  16395.     DeathTypes = ALL -LASERED -DETONATED
  16396.     ; shot down by nonlaser.
  16397.     FX         = FX_GenericMissileDeath
  16398.   End
  16399. ; ---- end Projectile death behaviors
  16400.     
  16401.   Behavior = PhysicsBehavior ModuleTag_06
  16402.     Mass = 1
  16403.   End
  16404.   Behavior = MissileAIUpdate ModuleTag_07
  16405.     TryToFollowTarget             = Yes
  16406.     FuelLifetime                  = 1000
  16407.     InitialVelocity               = 150                ; in dist/sec
  16408.     IgnitionDelay                 = 0
  16409.     DistanceToTravelBeforeTurning = 20
  16410.     IgnitionFX                    = FX_BuggyMissileIgnition
  16411.   End
  16412.   Locomotor = SET_NORMAL TechnicalRPGMissileLocomotor
  16413.  
  16414.   Geometry = Sphere
  16415.   GeometryIsSmall = Yes
  16416.   GeometryMajorRadius = 2.0
  16417.  
  16418. End
  16419.  
  16420. ;------------------------------------------------------------------------------
  16421. Object TankHunterMissile
  16422.  
  16423.   ; *** ART Parameters ***
  16424.   Draw = W3DModelDraw ModuleTag_01
  16425.     OkToChangeModelColor = Yes
  16426.     ConditionState = NONE
  16427.       Model = EXStinger01
  16428.     End
  16429.   End
  16430.  
  16431.   ; ***DESIGN parameters ***
  16432.   EditorSorting   = SYSTEM
  16433.   VisionRange = 0.0  
  16434.   ArmorSet
  16435.     Conditions      = None
  16436.     Armor           = ProjectileArmor
  16437.     DamageFX        = None
  16438.   End
  16439.  
  16440.   ; *** ENGINEERING Parameters ***
  16441.   KindOf = PROJECTILE SMALL_MISSILE
  16442.   Body = ActiveBody ModuleTag_02
  16443.     MaxHealth       = 100.0
  16444.     InitialHealth   = 100.0
  16445.   End
  16446.  
  16447. ; ---- begin Projectile death behaviors
  16448.   Behavior = InstantDeathBehavior DeathModuleTag_01
  16449.     DeathTypes = NONE +DETONATED
  16450.     ; we detonated normally.
  16451.     ; no FX, just quiet destroy ourselves
  16452.   End
  16453.   Behavior = InstantDeathBehavior DeathModuleTag_02
  16454.     DeathTypes = NONE +LASERED
  16455.     ; shot down by laser.
  16456.     FX         = FX_GenericMissileDisintegrate
  16457.     OCL        = OCL_GenericMissileDisintegrate
  16458.   End
  16459.   Behavior = InstantDeathBehavior DeathModuleTag_03
  16460.     DeathTypes = ALL -LASERED -DETONATED
  16461.     ; shot down by nonlaser.
  16462.     FX         = FX_GenericMissileDeath
  16463.   End
  16464. ; ---- end Projectile death behaviors
  16465.     
  16466.   Behavior = PhysicsBehavior ModuleTag_06
  16467.     Mass = 1
  16468.   End
  16469.   Behavior = MissileAIUpdate ModuleTag_07
  16470.     TryToFollowTarget = Yes;;;;;;;;;;;;No 
  16471.     FuelLifetime = 1250
  16472.     InitialVelocity = 150                ; in dist/sec
  16473.     IgnitionDelay = 0
  16474.     DistanceToTravelBeforeTurning = 20
  16475.     IgnitionFX = FX_BuggyMissileIgnition
  16476.   End
  16477.   Locomotor = SET_NORMAL TankHunterMissileLocomotor
  16478.  
  16479.   Geometry = Sphere
  16480.   GeometryIsSmall = Yes
  16481.   GeometryMajorRadius = 2.0
  16482.  
  16483. End
  16484.  
  16485.  
  16486. ;------------------------------------------------------------------------------
  16487. Object GLARocketBuggyFullDebris
  16488.  
  16489.   ; *** ART Parameters ***
  16490.   Draw = W3DModelDraw ModuleTag_01
  16491.     OkToChangeModelColor = Yes
  16492.  
  16493.     DefaultConditionState
  16494.       Model = UVRockBug_D1
  16495.       ShowSubObject = Turret
  16496.       HideSubObject = TurretUp01 
  16497.     End
  16498.  
  16499.     ConditionState =   WEAPONSET_PLAYER_UPGRADE
  16500.       ShowSubObject = TurretUp01 
  16501.       HideSubObject = Turret
  16502.     End
  16503.   End
  16504.  
  16505.   ; ***DESIGN parameters ***
  16506.   DisplayName           = OBJECT:RocketBuggyDebris
  16507.   Side                  = GLA
  16508.   EditorSorting         = SYSTEM
  16509.   TransportSlotCount    = 0
  16510.  
  16511.   ; *** AUDIO Parameters ***
  16512.   ; *** ENGINEERING Parameters ***
  16513.   RadarPriority         = UNIT
  16514.   KindOf                = CAN_CAST_REFLECTIONS 
  16515.  
  16516.   Body = ActiveBody ModuleTag_02
  16517.     MaxHealth       = 1.0
  16518.     InitialHealth   = 1.0
  16519.   End
  16520.  
  16521.   Behavior = PhysicsBehavior ModuleTag_03
  16522.     Mass = 50
  16523.     AllowBouncing = Yes
  16524.   End
  16525.   Behavior = LifetimeUpdate ModuleTag_04
  16526.     MinLifetime = 0   ; min lifetime in msec
  16527.     MaxLifetime = 0   ; max lifetime in msec
  16528.   End
  16529.  
  16530.   Behavior = WeaponSetUpgrade ModuleTag_05
  16531.     TriggeredBy = Upgrade_GLABuggyAmmo
  16532.   End
  16533.  
  16534.   Behavior = SlowDeathBehavior ModuleTag_06
  16535.     DestructionDelay          = 500
  16536.     DestructionDelayVariance  = 1500
  16537.     OCL                       = FINAL     OCL_RocketBuggyAirDeath
  16538.     FX                        = INITIAL   FX_RocketBuggyAirDeathGroundPart
  16539.     FX                        = FINAL     FX_RocketBuggyAirDeathAirPart    ; This happens in the air
  16540.   End
  16541.  
  16542.   Geometry = BOX
  16543.   GeometryMajorRadius = 9.0
  16544.   GeometryMinorRadius = 6.0
  16545.   GeometryHeight = 7.5     
  16546.   GeometryIsSmall = Yes    
  16547.  
  16548. End
  16549.  
  16550. ;------------------------------------------------------------------------------
  16551. Object RocketBuggyMissileDebris
  16552.  
  16553.   ; *** ART Parameters ***
  16554.   Draw = W3DModelDraw ModuleTag_01
  16555.     OkToChangeModelColor = Yes
  16556.     ConditionState = NONE
  16557.       Model = NVMBuggy_m
  16558.     End
  16559.   End
  16560.  
  16561.   ; ***DESIGN parameters ***
  16562.   DisplayName      = OBJECT:RocketBuggyDebris
  16563.   EditorSorting     = SYSTEM
  16564.   ArmorSet
  16565.     Conditions      = None
  16566.     Armor           = ProjectileArmor
  16567.     DamageFX        = None
  16568.   End
  16569.  
  16570.   ; *** ENGINEERING Parameters ***
  16571.   Body = ActiveBody ModuleTag_02
  16572.     MaxHealth       = 100.0
  16573.     InitialHealth   = 100.0
  16574.   End
  16575.  
  16576.   Behavior = PhysicsBehavior ModuleTag_03
  16577.     Mass = 3
  16578.     AllowBouncing = Yes
  16579.   End
  16580.  
  16581.   Behavior = LifetimeUpdate ModuleTag_04
  16582.     MinLifetime = 0   ; min lifetime in msec
  16583.     MaxLifetime = 0   ; max lifetime in msec
  16584.   End
  16585.   Behavior = SlowDeathBehavior ModuleTag_05
  16586.     DestructionDelay = 500
  16587.     DestructionDelayVariance = 500
  16588.     FX = INITIAL FX_BuggyMissileDebris
  16589.     FX = FINAL WeaponFX_RocketBuggyMissileDetonation
  16590.   End
  16591.  
  16592.   Geometry = Sphere
  16593.   GeometryIsSmall = Yes
  16594.   GeometryMajorRadius = 2.0
  16595.  
  16596. End
  16597.  
  16598. ;------------------------------------------------------------------------------
  16599. Object GLAVehicleQuadCannon
  16600.  
  16601.   ; *** ART Parameters ***
  16602.   SelectPortrait         = SUQuadCannon_L
  16603.   ButtonImage            = SUQuadCannon
  16604.   
  16605.   UpgradeCameo1 = Upgrade_GLAAPBullets
  16606.   UpgradeCameo2 = Upgrade_GLAJunkRepair
  16607.   ;UpgradeCameo3 = XXX
  16608.   ;UpgradeCameo4 = XXX
  16609.   ;UpgradeCameo5 = XXX
  16610.   
  16611.   Draw = W3DTankTruckDraw ModuleTag_01
  16612.     OkToChangeModelColor = Yes
  16613.  
  16614.     ConditionState = NONE
  16615.       Model = UVQuadCann
  16616.       Turret = TURRET
  16617.       TurretPitch = TURRETEL
  16618.       WeaponFireFXBone  = PRIMARY   BarrelMS
  16619.       WeaponMuzzleFlash = PRIMARY   BarrelFX
  16620.       WeaponRecoilBone  = PRIMARY   Barrel
  16621.       WeaponFireFXBone  = SECONDARY BarrelMS
  16622.       WeaponMuzzleFlash = SECONDARY BarrelFX
  16623.       WeaponRecoilBone  = SECONDARY Barrel
  16624.       ShowSubObject = TURRET
  16625.       HideSubObject = TURRETUP01 TURRETUP02 BarrelFX01 BarrelFX02 BarrelFX03 BarrelFX04  ; Since we are showing one of three turrets, we need to then hide the subobject muzzleflash
  16626.     End
  16627.       
  16628.     ConditionState = REALLYDAMAGED
  16629.       Model = UVQuadCann_D
  16630.       Turret = TURRET
  16631.       TurretPitch = TURRETEL
  16632.       WeaponFireFXBone  = PRIMARY   BarrelMS
  16633.       WeaponMuzzleFlash = PRIMARY   BarrelFX
  16634.       WeaponRecoilBone  = PRIMARY   Barrel
  16635.       WeaponFireFXBone  = SECONDARY BarrelMS
  16636.       WeaponMuzzleFlash = SECONDARY BarrelFX
  16637.       WeaponRecoilBone  = SECONDARY Barrel
  16638.       ShowSubObject = TURRET
  16639.       HideSubObject = TURRETUP01 TURRETUP02 BarrelFX01 BarrelFX02 BarrelFX03 BarrelFX04
  16640.     End
  16641.     
  16642.     ConditionState = RUBBLE
  16643.       Model = UVQuadCann_D
  16644.       Turret = TURRET
  16645.       TurretPitch = TURRETEL
  16646.       WeaponFireFXBone  = PRIMARY   BarrelMS
  16647.       WeaponMuzzleFlash = PRIMARY   BarrelFX
  16648.       WeaponRecoilBone  = PRIMARY   Barrel
  16649.       WeaponFireFXBone  = SECONDARY BarrelMS
  16650.       WeaponMuzzleFlash = SECONDARY BarrelFX
  16651.       WeaponRecoilBone  = SECONDARY Barrel
  16652.       ShowSubObject = TURRET
  16653.       HideSubObject = TURRETUP01 TURRETUP02 BarrelFX01 BarrelFX02 BarrelFX03 BarrelFX04
  16654.     End
  16655.  
  16656.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE
  16657.       Model = UVQuadCann
  16658.       Turret = TURRETUP01
  16659.       TurretPitch = TURRETEL01
  16660.       WeaponFireFXBone  = PRIMARY   BarrelUp01MS
  16661.       WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
  16662.       WeaponRecoilBone  = PRIMARY   BarrelUp01
  16663.       WeaponFireFXBone  = SECONDARY BarrelUp01MS
  16664.       WeaponMuzzleFlash = SECONDARY BarrelUp01FX
  16665.       WeaponRecoilBone  = SECONDARY BarrelUp01
  16666.       ShowSubObject = TURRETUP01
  16667.       HideSubObject = TURRET TURRETUP02 BarrelUp01FX01 BarrelUp01FX02 BarrelUp01FX03 BarrelUp01FX04
  16668.     End
  16669.     
  16670.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE REALLYDAMAGED
  16671.       Model = UVQuadCann
  16672.       Turret = TURRETUP01
  16673.       TurretPitch = TURRETEL01
  16674.       WeaponFireFXBone  = PRIMARY   BarrelUp01MS
  16675.       WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
  16676.       WeaponRecoilBone  = PRIMARY   BarrelUp01
  16677.       WeaponFireFXBone  = SECONDARY BarrelUp01MS
  16678.       WeaponMuzzleFlash = SECONDARY BarrelUp01FX
  16679.       WeaponRecoilBone  = SECONDARY BarrelUp01
  16680.       ShowSubObject = TURRETUP01
  16681.       HideSubObject = TURRET TURRETUP02 BarrelUp01FX01 BarrelUp01FX02 BarrelUp01FX03 BarrelUp01FX04
  16682.     End
  16683.     
  16684.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE
  16685.       Model = UVQuadCann
  16686.       Turret = TURRETUP01
  16687.       TurretPitch = TURRETEL01
  16688.       WeaponFireFXBone  = PRIMARY   BarrelUp01MS
  16689.       WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
  16690.       WeaponRecoilBone  = PRIMARY   BarrelUp01
  16691.       WeaponFireFXBone  = SECONDARY BarrelUp01MS
  16692.       WeaponMuzzleFlash = SECONDARY BarrelUp01FX
  16693.       WeaponRecoilBone  = SECONDARY BarrelUp01
  16694.       ShowSubObject = TURRETUP01
  16695.       HideSubObject = TURRET TURRETUP02 BarrelUp01FX01 BarrelUp01FX02 BarrelUp01FX03 BarrelUp01FX04
  16696.     End
  16697.  
  16698.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO
  16699.       Model = UVQuadCann
  16700.       Turret = TURRETUP02
  16701.       TurretPitch = TURRETEL02
  16702.       WeaponFireFXBone  = PRIMARY   BarrelUp02MS
  16703.       WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
  16704.       WeaponRecoilBone  = PRIMARY   BarrelUp02
  16705.       WeaponFireFXBone  = SECONDARY BarrelUp02MS
  16706.       WeaponMuzzleFlash = SECONDARY BarrelUp02FX
  16707.       WeaponRecoilBone  = SECONDARY BarrelUp02
  16708.       ShowSubObject = TURRETUP02
  16709.       HideSubObject = TURRETUP01 TURRET BarrelUp02FX01 BarrelUp02FX02 BarrelUp02FX03 BarrelUp02FX04
  16710.     End
  16711.     
  16712.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO REALLYDAMAGED
  16713.       Model = UVQuadCann_D
  16714.       Turret = TURRETUP02
  16715.       TurretPitch = TURRETEL02
  16716.       WeaponFireFXBone  = PRIMARY   BarrelUp02MS
  16717.       WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
  16718.       WeaponRecoilBone  = PRIMARY   BarrelUp02
  16719.       WeaponFireFXBone  = SECONDARY BarrelUp02MS
  16720.       WeaponMuzzleFlash = SECONDARY BarrelUp02FX
  16721.       WeaponRecoilBone  = SECONDARY BarrelUp02
  16722.       ShowSubObject = TURRETUP02
  16723.       HideSubObject = TURRETUP01 TURRET BarrelUp02FX01 BarrelUp02FX02 BarrelUp02FX03 BarrelUp02FX04
  16724.     End
  16725.     
  16726.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE
  16727.       Model = UVQuadCann_D
  16728.       Turret = TURRETUP02
  16729.       TurretPitch = TURRETEL02
  16730.       WeaponFireFXBone  = PRIMARY   BarrelUp02MS
  16731.       WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
  16732.       WeaponRecoilBone  = PRIMARY   BarrelUp02
  16733.       WeaponFireFXBone  = SECONDARY BarrelUp02MS
  16734.       WeaponMuzzleFlash = SECONDARY BarrelUp02FX
  16735.       WeaponRecoilBone  = SECONDARY BarrelUp02
  16736.       ShowSubObject = TURRETUP02
  16737.       HideSubObject = TURRETUP01 TURRET BarrelUp02FX01 BarrelUp02FX02 BarrelUp02FX03 BarrelUp02FX04
  16738.     End
  16739.  
  16740.     TrackMarks = EXTnkTrack.tga
  16741.  
  16742.     TreadAnimationRate = 2.0;  amount of tread texture to move per second
  16743.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  16744.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  16745.  
  16746.     Dust = RocketBuggyDust
  16747.     DirtSpray = RocketBuggyDirtSpray
  16748.  
  16749.     ; These parameters are only used if the model has a separate suspension, 
  16750.     ; and the locomotor has HasSuspension = Yes.
  16751.     LeftFrontTireBone = Tire01
  16752.     RightFrontTireBone = Tire02
  16753.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  16754.     PowerslideRotationAddition = 0   ; This unit doesn't powerslide.
  16755.   End
  16756.  
  16757.   ; ***DESIGN parameters ***
  16758.   DisplayName      = OBJECT:QuadCannon
  16759.   Side = GLA
  16760.   EditorSorting   = VEHICLE
  16761.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  16762.   WeaponSet
  16763.     Conditions = None 
  16764.     Weapon = PRIMARY QuadCannonGun
  16765.     Weapon = SECONDARY QuadCannonGunAir
  16766.   End
  16767.   WeaponSet
  16768.     Conditions = CRATEUPGRADE_ONE 
  16769.     Weapon = PRIMARY QuadCannonGunUpgradeOne
  16770.     Weapon = SECONDARY QuadCannonGunUpgradeOneAir
  16771.   End
  16772.   WeaponSet
  16773.     Conditions = CRATEUPGRADE_TWO 
  16774.     Weapon = PRIMARY QuadCannonGunUpgradeTwo
  16775.     Weapon = SECONDARY QuadCannonGunUpgradeTwoAir
  16776.   End
  16777.   ArmorSet
  16778.     Conditions      = None
  16779.     Armor           = AntiAirVehicle
  16780.     DamageFX        = TankDamageFX
  16781.   End
  16782.   BuildCost       = 700
  16783.   BuildTime       = 10.0          ;in seconds    
  16784.   VisionRange     = 150
  16785.   ShroudClearingRange = 300
  16786.   Prerequisites
  16787.     Object = GLAArmsDealer
  16788.   End
  16789.  
  16790.   CommandSet          = GLAVehicleQuadCannon
  16791.  
  16792.   ExperienceValue = 50 50 100 150    ;Experience point value at each level
  16793.   ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
  16794.   IsTrainable = Yes             ;Can gain experience
  16795.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  16796.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  16797.  
  16798.   ; *** AUDIO Parameters ***
  16799.   VoiceSelect           = QuadCannonVoiceSelect
  16800.   VoiceMove             = QuadCannonVoiceMove
  16801.   VoiceAttack           = QuadCannonVoiceAttack
  16802.   VoiceAttackAir        = QuadCannonVoiceAttackAir
  16803.   SoundMoveStart        = QuadCannonMoveStart
  16804.   SoundMoveStartDamaged = QuadCannonMoveStart
  16805.   VoiceGuard             = QuadCannonVoiceMove
  16806.   UnitSpecificSounds
  16807.    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  16808.     VoiceCreate         = QuadCannonVoiceCreate
  16809.    TurretMoveStart      = NoSound
  16810.    TurretMoveLoop       = TurretMoveLoop
  16811.    ; Required for the W3DTruckDraw module
  16812.    TruckLandingSound    = NoSound
  16813.    TruckPowerslideSound = NoSound
  16814.    VoiceSalvage         = QuadCannonVoiceSalvage
  16815.    VoiceCrush           = QuadCannonVoiceCrush
  16816.    VoiceEnter             = QuadCannonVoiceMove
  16817.   End
  16818.  
  16819.   Behavior = AIUpdateInterface ModuleTag_20
  16820.     AutoAcquireEnemiesWhenIdle = Yes
  16821.     MoodAttackCheckRate        = 250
  16822.   End
  16823.  
  16824.   ; *** ENGINEERING Parameters ***
  16825.   RadarPriority = UNIT
  16826.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE
  16827.  
  16828.   Body = ActiveBody ModuleTag_02
  16829.     MaxHealth       = 220.0
  16830.     InitialHealth   = 220.0
  16831.   End
  16832.   
  16833.   Behavior = AIUpdateInterface ModuleTag_03
  16834.     Turret
  16835.       TurretTurnRate = 360
  16836.       TurretPitchRate = 360
  16837.       AllowsPitch = Yes
  16838.       ControlledWeaponSlots = PRIMARY SECONDARY
  16839.     End
  16840.     AutoAcquireEnemiesWhenIdle = Yes
  16841.   End
  16842.   
  16843.   Locomotor = SET_NORMAL QuadCannonLocomotor
  16844.   
  16845.   Behavior = PhysicsBehavior ModuleTag_04
  16846.     Mass = 40.0
  16847.   End
  16848.   
  16849.   ; Catch fire, and explode death
  16850.   Behavior = SlowDeathBehavior ModuleTag_05
  16851.     DeathTypes = ALL -CRUSHED -SPLATTED
  16852.     ProbabilityModifier = 411
  16853.     DestructionDelay = 150
  16854.     DestructionDelayVariance = 250
  16855.     OCL = FINAL    OCL_QuadCannonDeathEffect  
  16856.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  16857.   End
  16858.   
  16859.   Behavior = AutoHealBehavior ModuleTag_06
  16860.     HealingAmount = 2
  16861.     HealingDelay = 1000 ; msec
  16862.     TriggeredBy = Upgrade_GLAJunkRepair
  16863.   End
  16864.  
  16865.   Behavior = FlammableUpdate ModuleTag_08
  16866.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  16867.     AflameDamageAmount = 3       ; taking this much damage...
  16868.     AflameDamageDelay = 500       ; this often.
  16869.   End
  16870.  
  16871.   Behavior                 = TransitionDamageFX ModuleTag_09
  16872.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  16873.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  16874.   End
  16875.  
  16876.  
  16877.   ; A crushing defeat
  16878.   Behavior = FXListDie ModuleTag_10
  16879.     DeathTypes = NONE +CRUSHED +SPLATTED
  16880.     DeathFX = FX_CarCrush
  16881.   End
  16882.  
  16883.   Behavior = CreateCrateDie ModuleTag_11
  16884.     CrateData = SalvageCrateData
  16885.     ;CrateData = EliteTankCrateData
  16886.     ;CrateData = HeroicTankCrateData
  16887.   End
  16888.  
  16889.   Behavior = WeaponBonusUpgrade ModuleTag_12
  16890.     TriggeredBy = Upgrade_GLAAPBullets
  16891.   End 
  16892.  
  16893.   Behavior = DestroyDie ModuleTag_13
  16894.     DeathTypes = NONE +CRUSHED +SPLATTED
  16895.   End
  16896.  
  16897.   Geometry = BOX
  16898.   GeometryMajorRadius = 18.0
  16899.   GeometryMinorRadius = 7.0
  16900.   GeometryHeight = 11.5     
  16901.   GeometryIsSmall = No
  16902.   Shadow = SHADOW_VOLUME
  16903.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  16904.  
  16905. End
  16906.  
  16907. ;------------------------------------------------------------------------------
  16908. ;Also called Toxin Tractor && ToxinTractor
  16909. Object GLAVehicleToxinTruck
  16910.  
  16911.   ; *** ART Parameters ***
  16912.   SelectPortrait         = SUToxinTractor_L
  16913.   ButtonImage            = SUToxinTractor
  16914.   
  16915.   UpgradeCameo1 = Upgrade_GLAAnthraxBeta
  16916.   UpgradeCameo2 = Upgrade_GLAJunkRepair
  16917.   ;UpgradeCameo3 = NONE
  16918.   ;UpgradeCameo4 = NONE
  16919.   ;UpgradeCameo5 = NONE
  16920.   
  16921.   Draw = W3DTruckDraw ModuleTag_01
  16922.     OkToChangeModelColor = Yes
  16923.     DefaultConditionState 
  16924.       Model = UVToxinTrk
  16925.       Turret = Turret
  16926.       TurretPitch = TurretEL
  16927.       WeaponFireFXBone = PRIMARY WeaponA
  16928.       WeaponLaunchBone = PRIMARY WeaponA
  16929.       WeaponFireFXBone = SECONDARY Spigot
  16930.       WeaponLaunchBone = SECONDARY Spigot
  16931.     End
  16932.     AliasConditionState WEAPONSET_PLAYER_UPGRADE
  16933.     ConditionState = USING_WEAPON_B 
  16934.       Model = UVToxinTrk
  16935.       ParticleSysBone = none ToxinPuddleContinuous
  16936.     END
  16937.     ConditionState = USING_WEAPON_B WEAPONSET_PLAYER_UPGRADE
  16938.       Model = UVToxinTrk
  16939.       ParticleSysBone = none AnthraxPuddleContinuous
  16940.     END
  16941.  
  16942.     ConditionState = REALLYDAMAGED
  16943.       Model = UVToxinTrk_D
  16944.     End
  16945.     AliasConditionState REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE
  16946.     ConditionState = USING_WEAPON_B REALLYDAMAGED
  16947.       Model = UVToxinTrk_D
  16948.       ParticleSysBone = none ToxinPuddleContinuous
  16949.     END
  16950.     ConditionState = USING_WEAPON_B REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE 
  16951.       Model = UVToxinTrk_D
  16952.       ParticleSysBone = none AnthraxPuddleContinuous
  16953.     END
  16954.  
  16955.     ConditionState = RUBBLE
  16956.       Model = UVToxinTrk_D
  16957.     End
  16958.     AliasConditionState WEAPONSET_PLAYER_UPGRADE RUBBLE
  16959.  
  16960.     TrackMarks = EXTireTrack.tga
  16961.     LeftFrontTireBone = Tire01
  16962.     RightFrontTireBone = Tire02
  16963.     LeftRearTireBone = Tire03
  16964.  
  16965.     RightRearTireBone = Tire04
  16966.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  16967.     PowerslideRotationAddition = 0   ; This vehicle doesn't powerslide.
  16968.  
  16969.     Dust = RocketBuggyDust
  16970.     DirtSpray = RocketBuggyDirtSpray
  16971.  
  16972.   End
  16973.  
  16974.   ; ***DESIGN parameters ***
  16975.   DisplayName         = OBJECT:ToxinTruck
  16976.   Side                = GLA
  16977.   EditorSorting       = VEHICLE
  16978.   TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  16979.   WeaponSet 
  16980.     Conditions        = None 
  16981.     Weapon            = PRIMARY     ToxinTruckGun
  16982.     Weapon            = SECONDARY   ToxinTruckSprayer
  16983.     AutoChooseSources = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  16984.     AutoChooseSources = SECONDARY   NONE ;Special attack only
  16985.   End
  16986.   WeaponSet
  16987.     Conditions        = PLAYER_UPGRADE 
  16988.     Weapon            = PRIMARY     ToxinTruckGunUpgraded
  16989.     Weapon            = SECONDARY   ToxinTruckSprayerUpgraded
  16990.     AutoChooseSources = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  16991.     AutoChooseSources = SECONDARY   NONE ;Special attack only
  16992.   End
  16993.   ArmorSet
  16994.     Conditions        = None
  16995.     Armor             = ToxinTruckArmor
  16996.     DamageFX          = TruckDamageFX
  16997.   End
  16998.   BuildCost           = 600
  16999.   BuildTime           = 5.0          ;in seconds    
  17000.   VisionRange         = 100
  17001.   ShroudClearingRange = 200
  17002.   Prerequisites
  17003.     Object = GLAArmsDealer
  17004.   End
  17005.  
  17006.   ExperienceValue     = 50 50 100 150    ;Experience point value at each level
  17007.   ExperienceRequired  = 0 100 150 300  ;Experience points needed to gain each level
  17008.   IsTrainable         = Yes             ;Can gain experience
  17009.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  17010.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  17011.   CommandSet          = GLAVehicleToxinTruckCommandSet
  17012.  
  17013.   ; *** AUDIO Parameters ***
  17014.   VoiceSelect         = ToxinTractorVoiceSelect
  17015.   VoiceMove           = ToxinTractorVoiceMove
  17016.   VoiceGuard          = ToxinTractorVoiceMove
  17017.   VoiceAttack         = ToxinTractorVoiceAttack
  17018.   SoundMoveStart      = ToxinTractorMoveStart
  17019.   SoundMoveStartDamaged = ToxinTractorMoveStart
  17020.   SoundDie            = ToxinTractorDie
  17021.  
  17022.   UnitSpecificSounds
  17023.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  17024.     VoiceCreate         = ToxinTractorVoiceCreate
  17025.     TurretMoveStart     = NoSound
  17026.     TurretMoveLoop      = TurretMoveLoop
  17027.    TruckLandingSound    = NoSound
  17028.    TruckPowerslideSound = NoSound
  17029.     VoiceCrush      = ToxinTractorVoiceCrush
  17030.     VoiceEnter           = ToxinTractorVoiceMove
  17031.     VoicePoisonLocation = ToxinTractorVoiceAttackContam
  17032.  
  17033.   End
  17034.  
  17035.   ; *** ENGINEERING Parameters ***
  17036.   RadarPriority         = UNIT
  17037.   KindOf                = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
  17038.  
  17039.   Body = ActiveBody ModuleTag_02
  17040.     MaxHealth           = 240.0
  17041.     InitialHealth       = 240.0
  17042.   End
  17043.  
  17044.   Behavior = AIUpdateInterface ModuleTag_03
  17045.     AutoAcquireEnemiesWhenIdle = Yes
  17046.     Turret
  17047.       TurretTurnRate            = 180
  17048.       TurretPitchRate           = 180
  17049.       AllowsPitch               = Yes
  17050.       MinPhysicalPitch          = -20 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
  17051.       TurretFireAngleSweep      = PRIMARY 8
  17052.       TurretSweepSpeedModifier  = PRIMARY 0.5    ; Sweep slower than you turn
  17053.       ControlledWeaponSlots     = PRIMARY
  17054.     End
  17055.   End
  17056.   Locomotor             = SET_NORMAL ToxinTruckLocomotor
  17057.   Behavior              = PhysicsBehavior ModuleTag_04
  17058.     Mass                = 10.0
  17059.   End
  17060.  
  17061.   Behavior                    = SlowDeathBehavior  ModuleTag_05
  17062.     DeathTypes                = ALL -CRUSHED -SPLATTED
  17063.     ProbabilityModifier       = 5
  17064.     ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
  17065.     DestructionDelay          = 0
  17066.     DestructionDelayVariance  = 200
  17067.     OCL                       = INITIAL OCL_ToxinTractorDeathEffect
  17068.     FX                        = FINAL FX_ToxinTruckExplosionOneFinal
  17069.   End
  17070.   Behavior                    = InstantDeathBehavior  ModuleTag_06
  17071.     DeathTypes                = NONE +CRUSHED +SPLATTED
  17072.     FX                        = FX_CarCrush
  17073.     OCL                       = OCL_CrusaderTank_CrushEffect
  17074.   End
  17075.     
  17076.   Behavior = CreateCrateDie ModuleTag_07
  17077.     CrateData   = SalvageCrateData
  17078.     ;CrateData  = EliteTankCrateData
  17079.     ;CrateData  = HeroicTankCrateData
  17080.   End
  17081.  
  17082.   Behavior = WeaponSetUpgrade ModuleTag_08
  17083.     ; the Toxin Tractor gets this upgrade if we either buy the upgrade,
  17084.     ; or if it gets HEROIC status
  17085.     TriggeredBy   = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
  17086.   End
  17087.   
  17088.   Behavior                          = TransitionDamageFX ModuleTag_11
  17089.     ReallyDamagedParticleSystem1  = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  17090.     ReallyDamagedFXList1          = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  17091.   End
  17092.   
  17093.   Behavior = AutoHealBehavior ModuleTag_12
  17094.     HealingAmount   = 2
  17095.     HealingDelay    = 1000 ; msec
  17096.     TriggeredBy     = Upgrade_GLAJunkRepair
  17097.   End
  17098.  
  17099.   Behavior = FlammableUpdate ModuleTag_21
  17100.     AflameDuration          = 5000         ; If I catch fire, I'll burn for this long...
  17101.     AflameDamageAmount      = 3       ; taking this much damage...
  17102.     AflameDamageDelay       = 500       ; this often.
  17103.   End
  17104.  
  17105.   Behavior = FireOCLAfterWeaponCooldownUpdate ModuleTag_13
  17106.     WeaponSlot            = SECONDARY
  17107.     ConflictsWith         = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
  17108.     OCL                   = OCL_PoisonFieldMedium
  17109.     MinShotsToCreateOCL   = 4
  17110.     OCLLifetimePerSecond  = 10000
  17111.     OCLLifetimeMaxCap     = 180000
  17112.   End
  17113.   Behavior = FireOCLAfterWeaponCooldownUpdate ModuleTag_14
  17114.     WeaponSlot            = SECONDARY
  17115.     TriggeredBy           = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
  17116.     OCL                   = OCL_PoisonFieldUpgradedMedium
  17117.     MinShotsToCreateOCL   = 4
  17118.     OCLLifetimePerSecond  = 10000
  17119.     OCLLifetimeMaxCap     = 180000
  17120.   End
  17121.  
  17122.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_15    ;These two make the right damage field at death
  17123.     DeathWeapon   = ToxinShellWeapon
  17124.     StartsActive  = Yes   
  17125.     ConflictsWith = Upgrade_GLAAnthraxBeta
  17126.   End
  17127.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_16
  17128.     DeathWeapon   = ToxinShellWeaponUpgraded
  17129.     StartsActive  = No   
  17130.     TriggeredBy = Upgrade_GLAAnthraxBeta
  17131.   End
  17132.  
  17133.   Geometry = BOX
  17134.   GeometryMajorRadius = 13.0
  17135.   GeometryMinorRadius = 9.0
  17136.   GeometryHeight = 10.0   ; set to make the projectile stream look right  
  17137.   GeometryIsSmall = Yes    
  17138.   Shadow = SHADOW_VOLUME
  17139.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  17140.  
  17141. End
  17142.  
  17143. ;------------------------------------------------------------------------------
  17144. Object ToxinTruckStreamProjectile
  17145.  
  17146. ; Explanation - Particles can't do damage, so this is a fast shooting low 
  17147. ; damage invisible missile launcher with a toxin trail for exhaust
  17148.  
  17149.   ; *** ART Parameters ***
  17150.   Draw = W3DModelDraw ModuleTag_01
  17151.     DefaultConditionState
  17152.       Model = NONE 
  17153.     End
  17154.   End
  17155.   ; Must have a draw module to be allowed to draw detonation FX
  17156.  
  17157.   ; ***DESIGN parameters ***
  17158.   EditorSorting     = SYSTEM
  17159.   VisionRange       = 0.0  
  17160.   ArmorSet
  17161.     Conditions      = None
  17162.     Armor           = ProjectileArmor
  17163.     DamageFX        = None
  17164.   End
  17165.  
  17166.   ; *** ENGINEERING Parameters ***
  17167.   KindOf            = PROJECTILE
  17168.   Body              = ActiveBody ModuleTag_02
  17169.     MaxHealth       = 100.0
  17170.     InitialHealth   = 100.0
  17171.   End
  17172.  
  17173.   Behavior = DestroyDie ModuleTag_03
  17174.     ;nothing
  17175.   End
  17176.     
  17177.   Behavior = PhysicsBehavior ModuleTag_04
  17178.     Mass                = 1
  17179.     AllowCollideForce   = No  ; toxins collide, but never apply forces when they do so
  17180.   End
  17181.  
  17182.   Behavior = MissileAIUpdate ModuleTag_05
  17183.     TryToFollowTarget               = No 
  17184.     FuelLifetime                    = 500
  17185.     InitialVelocity                 = 120                ; in dist/sec
  17186.     IgnitionDelay                   = 0
  17187.     DistanceToTravelBeforeTurning   = 2
  17188.     GarrisonHitKillRequiredKindOf   = INFANTRY
  17189.     GarrisonHitKillForbiddenKindOf  = NONE
  17190.     GarrisonHitKillCount            = 2
  17191.     GarrisonHitKillFX               = FX_ToxinStreamGarrisonBuildingHit
  17192.   End
  17193.  
  17194.   Locomotor = SET_NORMAL ToxinTruckStreamLocomotor
  17195.  
  17196.   Behavior = BoneFXUpdate ModuleTag_06
  17197.     PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:ToxinTrail01 ; Covers gap at beginning of line
  17198.   End
  17199.  
  17200.   Behavior = BoneFXDamage ModuleTag_07
  17201.     ;nothing
  17202.   End
  17203.  
  17204.   Geometry = Sphere
  17205.   GeometryIsSmall = Yes
  17206.   GeometryMajorRadius = 2.0
  17207.  
  17208. End
  17209.  
  17210. ;------------------------------------------------------------------------------
  17211. Object ToxinTruckStreamProjectileUpgraded
  17212.  
  17213. ; Explanation - Particles can't do damage, so this is a fast shooting low 
  17214. ; damage invisible missile launcher with a toxin trail for exhaust
  17215.  
  17216.   ; *** ART Parameters ***
  17217.   Draw = W3DModelDraw ModuleTag_01
  17218.     DefaultConditionState
  17219.       Model = NONE 
  17220.     End
  17221.   End
  17222.   ; Must have a draw module to be allowed to draw detonation FX
  17223.  
  17224.   ; ***DESIGN parameters ***
  17225.   EditorSorting     = SYSTEM
  17226.   VisionRange       = 0.0  
  17227.   ArmorSet
  17228.     Conditions      = None
  17229.     Armor           = ProjectileArmor
  17230.     DamageFX        = None
  17231.   End
  17232.  
  17233.   ; *** ENGINEERING Parameters ***
  17234.   KindOf            = PROJECTILE
  17235.   Body              = ActiveBody ModuleTag_02
  17236.     MaxHealth       = 100.0
  17237.     InitialHealth   = 100.0
  17238.   End
  17239.  
  17240.   Behavior = DestroyDie ModuleTag_03
  17241.     ;nothing
  17242.   End
  17243.     
  17244.   Behavior = PhysicsBehavior ModuleTag_04
  17245.     Mass = 1
  17246.     AllowCollideForce = No  ; flames collide, but never apply forces when they do so
  17247.   End
  17248.  
  17249.   Behavior = MissileAIUpdate ModuleTag_05
  17250.     TryToFollowTarget               = No 
  17251.     FuelLifetime                    = 500
  17252.     InitialVelocity                 = 120                ; in dist/sec
  17253.     IgnitionDelay                   = 0
  17254.     DistanceToTravelBeforeTurning   = 2
  17255.     GarrisonHitKillRequiredKindOf   = INFANTRY
  17256.     GarrisonHitKillForbiddenKindOf  = NONE
  17257.     GarrisonHitKillCount            = 2
  17258.     GarrisonHitKillFX               = FX_ToxinStreamUpgradedGarrisonBuildingHit
  17259.   End
  17260.   Locomotor = SET_NORMAL ToxinTruckStreamLocomotor
  17261.  
  17262.   Behavior = BoneFXUpdate ModuleTag_06
  17263.     PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:AnthraxTrail01 ; Covers gap at beginning of line
  17264.   End
  17265.  
  17266.   Behavior = BoneFXDamage ModuleTag_07
  17267.     ;nothing
  17268.   End
  17269.  
  17270.   Geometry = Sphere
  17271.   GeometryIsSmall = Yes
  17272.   GeometryMajorRadius = 2.0
  17273.  
  17274. End
  17275.  
  17276. ;------------------------------------------------------------------------------
  17277. Object ToxinTruckProjectileStream
  17278.  
  17279.   ; *** ART Parameters ***
  17280.   Draw = W3DProjectileStreamDraw ModuleTag_01
  17281.     Texture       = EXToxinStream.tga
  17282.     Width         = 1.5
  17283.     TileFactor    = 2.0 ; put the texture on the line segment this many times
  17284.     ScrollRate    = 6.0; scroll the texture offset this fast
  17285.     MaxSegments   = 14 ; only play the first X if there are a ton of them. 0 means play all
  17286.   End
  17287.  
  17288.   ; *** ENGINEERING Parameters ***
  17289.   KindOf = INERT
  17290.   Behavior = ProjectileStreamUpdate ModuleTag_02
  17291.     ;nothing
  17292.   End
  17293.  
  17294. End
  17295.  
  17296.  
  17297. ;------------------------------------------------------------------------------
  17298. Object ToxinTruckProjectileStreamUpgraded
  17299.  
  17300.   ; *** ART Parameters ***
  17301.   Draw = W3DProjectileStreamDraw ModuleTag_01
  17302.     Texture       = EXAnthraxStream.tga
  17303.     Width         = 1.5
  17304.     TileFactor    = 2.0 ; put the texture on the line segment this many times
  17305.     ScrollRate    = 6.0; scroll the texture offset this fast
  17306.     MaxSegments   = 14 ; only play the first X if there are a ton of them. 0 means play all
  17307.   End
  17308.  
  17309.   ; *** ENGINEERING Parameters ***
  17310.   KindOf = INERT
  17311.   Behavior = ProjectileStreamUpdate ModuleTag_02
  17312.     ;nothing
  17313.   End
  17314.  
  17315. End
  17316.  
  17317. ;------------------------------------------------------------------------------
  17318. Object ToxinTruckSprayProjectile
  17319.  
  17320. ; Explanation - Particles can't do damage, so this is a fast shooting low 
  17321. ; damage invisible missile launcher with a flame trail for exhaust
  17322.  
  17323.   ; *** ART Parameters ***
  17324.   Draw = W3DModelDraw ModuleTag_01
  17325.     DefaultConditionState
  17326.       Model = NONE 
  17327.     End
  17328.   End
  17329.   ; Must have a draw module to be allowed to draw detonation FX
  17330.  
  17331.   ; ***DESIGN parameters ***
  17332.   EditorSorting     = SYSTEM
  17333.   VisionRange       = 0.0  
  17334.   ArmorSet
  17335.     Conditions      = None
  17336.     Armor           = ProjectileArmor
  17337.     DamageFX        = None
  17338.   End
  17339.  
  17340.   ; *** ENGINEERING Parameters ***
  17341.   KindOf = PROJECTILE
  17342.   Body = ActiveBody ModuleTag_02
  17343.     MaxHealth       = 100.0
  17344.     InitialHealth   = 100.0
  17345.   End
  17346.  
  17347.   Behavior = DestroyDie ModuleTag_03
  17348.     ;nothing
  17349.   End
  17350.     
  17351.   Behavior = PhysicsBehavior ModuleTag_04
  17352.     Mass = 50
  17353.     AllowCollideForce = No  ; flames collide, but never apply forces when they do so
  17354.   End
  17355.  
  17356.   Behavior = MissileAIUpdate ModuleTag_05
  17357.     TryToFollowTarget = No 
  17358.     FuelLifetime = 1
  17359.     InitialVelocity = 1                ; in dist/sec
  17360.     IgnitionDelay = 0
  17361.     DistanceToTravelBeforeTurning = 0
  17362.     DistanceToTargetForLock = 0  ; If it gets within 100 of the target, it kills the target.
  17363.  
  17364.   End
  17365.  
  17366.   Locomotor = SET_NORMAL ToxinTruckDribbleLocomotor
  17367.  
  17368.   Geometry = Sphere
  17369.   GeometryIsSmall = Yes
  17370.   GeometryMajorRadius = 2.0
  17371.  
  17372. End
  17373.  
  17374. ;------------------------------------------------------------------------------
  17375. Object CleanupHazardProjectileStream
  17376.  
  17377.   ; *** ART Parameters ***
  17378.   Draw = W3DProjectileStreamDraw ModuleTag_01
  17379.     Texture = EXCleanupStream.tga
  17380.     Width = 1.5
  17381.     TileFactor = 2.0 ; put the texture on the line segment this many times
  17382.     ScrollRate = 6.0; scroll the texture offset this fast
  17383.     MaxSegments = 14 ; only play the first X if there are a ton of them. 0 means play all
  17384.   End
  17385.  
  17386.   ; *** ENGINEERING Parameters ***
  17387.   KindOf = INERT
  17388.   Behavior = ProjectileStreamUpdate ModuleTag_02
  17389.     ;nothing
  17390.   End
  17391.  
  17392. End
  17393.  
  17394. ;------------------------------------------------------------------------------
  17395. Object CleanupStreamProjectile
  17396.  
  17397. ; Explanation - Particles can't do damage, so this is a fast shooting low 
  17398. ; damage invisible missile launcher with a flame trail for exhaust
  17399.  
  17400.   ; *** ART Parameters ***
  17401.   Draw = W3DModelDraw ModuleTag_01
  17402.     DefaultConditionState
  17403.       Model = NONE 
  17404.     End
  17405.   End
  17406.   ; Must have a draw module to be allowed to draw detonation FX
  17407.  
  17408.   ; ***DESIGN parameters ***
  17409.   EditorSorting     = SYSTEM
  17410.   VisionRange       = 0.0  
  17411.   ArmorSet
  17412.     Conditions      = None
  17413.     Armor           = ProjectileArmor
  17414.     DamageFX        = None
  17415.   End
  17416.  
  17417.   ; *** ENGINEERING Parameters ***
  17418.   KindOf            = PROJECTILE
  17419.   Body              = ActiveBody ModuleTag_02
  17420.     MaxHealth       = 100.0
  17421.     InitialHealth   = 100.0
  17422.   End
  17423.  
  17424.   Behavior = DestroyDie ModuleTag_03
  17425.     ;nothing
  17426.   End
  17427.     
  17428.   Behavior = PhysicsBehavior ModuleTag_04
  17429.     Mass = 1
  17430.     AllowCollideForce = No  ; flames collide, but never apply forces when they do so
  17431.   End
  17432.  
  17433.   Behavior = MissileAIUpdate ModuleTag_05
  17434.     TryToFollowTarget = No 
  17435.     FuelLifetime = 600
  17436.     InitialVelocity = 120                ; in dist/sec
  17437.     IgnitionDelay = 0
  17438.     DistanceToTravelBeforeTurning = 2
  17439.   End
  17440.  
  17441.   Locomotor = SET_NORMAL ToxinTruckStreamLocomotor
  17442.  
  17443.   Behavior = BoneFXUpdate ModuleTag_06
  17444.     PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:CleanupTrail01 ; Covers gap at beginning of line
  17445.   End
  17446.  
  17447.   Behavior = BoneFXDamage ModuleTag_07
  17448.     ;nothing
  17449.   End
  17450.  
  17451.   Geometry = Sphere
  17452.   GeometryIsSmall = Yes
  17453.   GeometryMajorRadius = 2.0
  17454.  
  17455. End
  17456.  
  17457. ;------------------------------------------------------------------------------
  17458. Object BioHazardCleanupStreamProjectile
  17459.  
  17460. ; Explanation - Particles can't do damage, so this is a fast shooting low 
  17461. ; damage invisible missile launcher with a flame trail for exhaust
  17462.  
  17463.   ; *** ART Parameters ***
  17464.   Draw = W3DModelDraw ModuleTag_01
  17465.     DefaultConditionState
  17466.       Model = NONE 
  17467.     End
  17468.   End
  17469.   ; Must have a draw module to be allowed to draw detonation FX
  17470.  
  17471.   ; ***DESIGN parameters ***
  17472.   EditorSorting     = SYSTEM
  17473.   VisionRange       = 0.0  
  17474.   ArmorSet
  17475.     Conditions      = None
  17476.     Armor           = ProjectileArmor
  17477.     DamageFX        = None
  17478.   End
  17479.  
  17480.   ; *** ENGINEERING Parameters ***
  17481.   KindOf            = PROJECTILE
  17482.   Body              = ActiveBody ModuleTag_02
  17483.     MaxHealth       = 100.0
  17484.     InitialHealth   = 100.0
  17485.   End
  17486.  
  17487.   Behavior = DestroyDie ModuleTag_03
  17488.     ;nothing
  17489.   End
  17490.     
  17491.   Behavior = PhysicsBehavior ModuleTag_04
  17492.     Mass = 1
  17493.     AllowCollideForce = No  ; flames collide, but never apply forces when they do so
  17494.   End
  17495.  
  17496.   Behavior = MissileAIUpdate ModuleTag_05
  17497.     TryToFollowTarget = No 
  17498.     FuelLifetime = 500
  17499.     InitialVelocity = 120                ; in dist/sec
  17500.     IgnitionDelay = 0
  17501.     DistanceToTravelBeforeTurning = 2
  17502.     ;GarrisonHitKillRequiredKindOf = INFANTRY
  17503.     ;GarrisonHitKillForbiddenKindOf = NONE
  17504.     ;GarrisonHitKillCount = 2
  17505.     ;GarrisonHitKillFX = FX_ToxinStreamGarrisonBuildingHit
  17506.   End
  17507.  
  17508.   Locomotor = SET_NORMAL FasterToxinTruckStreamLocomotor
  17509.  
  17510.  
  17511.   Behavior = BoneFXUpdate ModuleTag_06
  17512.     PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:CleanupTrail01 ; Covers gap at beginning of line
  17513.   End
  17514.  
  17515.   Behavior = BoneFXDamage ModuleTag_07
  17516.     ;nothing
  17517.   End
  17518.  
  17519.   Geometry = Sphere
  17520.   GeometryIsSmall = Yes
  17521.   GeometryMajorRadius = 2.0
  17522. End
  17523.  
  17524.  
  17525. ;------------------------------------------------------------------------------
  17526. Object GLAVehicleBombTruck
  17527.  
  17528.   ; *** ART Parameters ***
  17529.   SelectPortrait         = SUBombTruck_L
  17530.   ButtonImage            = SUBombTruck
  17531.   
  17532.   UpgradeCameo1 = Upgrade_GLABombTruckHighExplosiveBomb
  17533.   UpgradeCameo2 = Upgrade_GLABombTruckBioBomb
  17534.   UpgradeCameo3 = Upgrade_GLAJunkRepair
  17535.   ;UpgradeCameo4 = NONE
  17536.   ;UpgradeCameo5 = NONE
  17537.   
  17538.   
  17539.   Draw = W3DTruckDraw ModuleTag_01
  17540.     OkToChangeModelColor = Yes
  17541.     TrackMarks = EXTireTrack.tga
  17542.     
  17543.     DefaultConditionState
  17544.       Model = UVBMBTRUK
  17545.       Animation = UVBMBTRUK.UVBMBTRUK
  17546.       AnimationMode = LOOP
  17547.  
  17548.       ;Display the default bombload -- and the upgrades will handle the rest!
  17549.       HideSubObject = Bombload02 Bombload03 Bombload04
  17550.     End
  17551.  
  17552.     ConditionState = REALLYDAMAGED
  17553.       Model = UVBMBTRUK_D
  17554.       Animation = UVBMBTRUK_D.UVBMBTRUK_D
  17555.       AnimationMode = LOOP
  17556.     End
  17557.     
  17558.     ConditionState = RUBBLE
  17559.       Model = UVBMBTRUK_D
  17560.     End
  17561.  
  17562.     LeftFrontTireBone = Tire01
  17563.     RightFrontTireBone = Tire02
  17564.     MidLeftFrontTireBone = Tire03
  17565.     MidRightFrontTireBone = Tire04
  17566.     LeftRearTireBone = Tire05
  17567.     RightRearTireBone = Tire06
  17568.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  17569.  
  17570.     Dust = RocketBuggyDust
  17571.     DirtSpray = RocketBuggyDirtSpray
  17572.     PowerslideSpray = RocketBuggyDirtPowerSlide
  17573.  
  17574.   End
  17575.  
  17576.   ; ***DESIGN parameters ***
  17577.   DisplayName      = OBJECT:BombTruck
  17578.   Side = GLA
  17579.   EditorSorting   = VEHICLE
  17580.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  17581.   WeaponSet
  17582.     Conditions = None 
  17583.     Weapon = PRIMARY SuicideWeapon 
  17584.   End
  17585.   ArmorSet
  17586.     Conditions      = None
  17587.     Armor           = TruckArmor
  17588.     DamageFX        = TruckDamageFX
  17589.   End
  17590.   BuildCost       = 1200
  17591.   BuildTime       = 15.0          ;in seconds    
  17592.   VisionRange     = 150 ; Used in attack move targeting
  17593.   ShroudClearingRange     = 200
  17594.   Prerequisites
  17595.     Object = GLAArmsDealer
  17596.     Object = GLAPalace
  17597.   End
  17598.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  17599.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  17600.   CommandSet = GLAVehicleBombTruckCommandSet
  17601.  
  17602.   ; *** AUDIO Parameters ***
  17603.   VoiceSelect = BombTruckVoiceSelect
  17604.   VoiceMove = BombTruckVoiceMove
  17605.   VoiceGuard = BombTruckVoiceMove
  17606.   VoiceAttack = BombTruckVoiceAttack
  17607.   SoundMoveStart = BombTruckMoveStart
  17608.   SoundMoveStartDamaged = BombTruckMoveStart
  17609.   UnitSpecificSounds
  17610.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  17611.     VoiceCreate                   = BombTruckVoiceCreate
  17612.     TurretMoveStart               = NoSound
  17613.     TurretMoveLoop                = NoSound
  17614.     TruckLandingSound             = RocketBuggyLand
  17615.     TruckPowerslideSound          = RocketBuggyPowerslide
  17616.     DisguiseStarted               = BombTruckDisguiseStarted
  17617.     DisguiseRevealedSuccess       = BombTruckDisguiseRevealedSuccess
  17618.     DisguiseRevealedFailure       = BombTruckDisguiseRevealedFailure
  17619.     VoiceEnter = BombTruckVoiceMove
  17620.   End
  17621.  
  17622.   ; *** ENGINEERING Parameters ***
  17623.   RadarPriority = UNIT
  17624.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE DISGUISER
  17625.  
  17626.   Body = ActiveBody ModuleTag_02
  17627.     MaxHealth       = 250.0
  17628.     InitialHealth   = 250.0
  17629.   End
  17630.  
  17631.   ExperienceValue     = 50 50 50 50  ; Experience point value at each level
  17632.  
  17633.   Behavior = VeterancyGainCreate ModuleTag_03
  17634.     StartingLevel = VETERAN
  17635.   End
  17636.  
  17637.   Behavior = AIUpdateInterface ModuleTag_04
  17638.     AutoAcquireEnemiesWhenIdle = No ATTACK_BUILDINGS
  17639.   End
  17640.   Locomotor = SET_NORMAL BombTruckLocomotor
  17641.  
  17642.   Behavior = PhysicsBehavior ModuleTag_05
  17643.     Mass = 40.0
  17644.   End
  17645.  
  17646.   Behavior = AutoHealBehavior ModuleTag_06
  17647.     HealingAmount = 2
  17648.     HealingDelay = 1000 ; msec
  17649.     TriggeredBy = Upgrade_GLAJunkRepair
  17650.   End
  17651.  
  17652.   Behavior = ProductionUpdate ModuleTag_07
  17653.     ; nothing
  17654.   End
  17655.  
  17656.   Behavior = SlowDeathBehavior  ModuleTag_08
  17657.     DeathTypes = ALL -CRUSHED -SPLATTED
  17658.     ProbabilityModifier = 5
  17659.     ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
  17660.     DestructionDelay = 0
  17661.     DestructionDelayVariance = 200
  17662.     FX = FINAL FX_BuggyNewDeathExplosion
  17663.     OCL = FINAL OCL_BombTruckDeathEffect
  17664.   End
  17665.  
  17666.   ;Behavior = DestroyDie
  17667.     ;nothing
  17668.   ;End
  17669.  
  17670.  
  17671.   ;************************************************************************************************
  17672.   ;* WHICH BOMB DO WE USE??? 
  17673.   ;* We have 2 damage possibilities -- (normal OR high explosive) 
  17674.   ;* So part 1 is inflicting the damage itself without creating effects
  17675.   ;* The complicated part is the part where we have 6 possible effect explosions based on 
  17676.   ;* all the possible upgrade combinations. Note that bio weapons don't inflict damage through
  17677.   ;* the explosion.
  17678.   ;*
  17679.   ;* DAMAGE COMBINATIONS (NO EFFECTS):
  17680.   ;* 1) Normal (doesn't have high explosive upgrade)
  17681.   ;* 2) High explosive (has high-explosive upgrade)
  17682.   ;*
  17683.   ;* EFFECT COMBINATIONS (NO DAMAGE):
  17684.   ;* 1) Normal (no upgrades)
  17685.   ;* 2) Bio (bio-bomb upgrade)
  17686.   ;* 3) Anthrax (bio-bomb and anthrax upgrade)
  17687.   ;* 4) High explosive (high explosive upgrade)
  17688.   ;* 5) High explosive bio (high explosive and bio-bomb upgrade)
  17689.   ;* 6) High explosive anthrax (high explosive, bio-bomb, and anthrax upgrades)
  17690.   ;************************************************************************************************
  17691.  
  17692.   ;************************************************************************************************
  17693.   ;* EXCLUSIVE DAMAGE POSSIBILITY 1 -- Normal explosion (can't have high-explosive upgrade)
  17694.   ;************************************************************************************************
  17695.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
  17696.     DeathWeapon   = BombTruckDefaultBombDamage
  17697.     StartsActive  = Yes                      ; turned on by upgrade
  17698.     ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb
  17699.   End
  17700.  
  17701.   ;************************************************************************************************
  17702.   ;* EXCLUSIVE DAMAGE POSSIBILITY 2 -- High explosion (always plays if it has high-explosive upgrade)
  17703.   ;************************************************************************************************
  17704.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_10
  17705.     DeathWeapon   = BombTruckHighExplosionBombDamage
  17706.     StartsActive  = No                      ; turned on by upgrade
  17707.     TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
  17708.   End
  17709.  
  17710.   ;************************************************************************************************
  17711.   ;* EXCLUSIVE EFFECT COMBINATION 1 - Regular explosion (no upgrades)
  17712.   ;************************************************************************************************
  17713.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_11
  17714.     DeathWeapon   = BombTruckDefaultBombEffect
  17715.     StartsActive  = Yes                      ; turned on by upgrade
  17716.     ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
  17717.   End
  17718.  
  17719.   ;************************************************************************************************
  17720.   ;* EXCLUSIVE EFFECT COMBINATION 2 - Bio explosion 
  17721.   ;* Requires:    Bio upgrade
  17722.   ;* Can't have:  Anthrax upgrade, high explosive upgrade
  17723.   ;************************************************************************************************
  17724.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_12
  17725.     DeathWeapon   = BombTruckBioBombEffect
  17726.     StartsActive  = No                      ; turned on by upgrade
  17727.     TriggeredBy   = Upgrade_GLABombTruckBioBomb
  17728.     ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
  17729.     RequiresAllTriggers = Yes
  17730.   End
  17731.  
  17732.   ;************************************************************************************************
  17733.   ;* EXCLUSIVE EFFECT COMBINATION 3 - Anthrax explosion 
  17734.   ;* Requires:    Bio upgrade and anthrax upgrade
  17735.   ;* Can't have:  High explosive upgrade
  17736.   ;************************************************************************************************
  17737.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_13
  17738.     DeathWeapon   = BombTruckAnthraxBombEffect
  17739.     StartsActive  = No                      ; turned on by upgrade
  17740.     TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLAAnthraxBeta
  17741.     ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb 
  17742.     RequiresAllTriggers = Yes
  17743.   End
  17744.  
  17745.   ;************************************************************************************************
  17746.   ;* EXCLUSIVE EFFECT COMBINATION 4 - High explosion
  17747.   ;* Requires:    High explosive upgrade
  17748.   ;* Can't have:  Bio upgrade and anthrax upgrade
  17749.   ;************************************************************************************************
  17750.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_14
  17751.     DeathWeapon   = BombTruckHighExplosiveBombEffect
  17752.     StartsActive  = No                      ; turned on by upgrade
  17753.     TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
  17754.     ConflictsWith = Upgrade_GLABombTruckBioBomb
  17755.     RequiresAllTriggers = Yes
  17756.   End
  17757.  
  17758.   ;************************************************************************************************
  17759.   ;* EXCLUSIVE EFFECT COMBINATION 5 - High explosive bio explosion 
  17760.   ;* Requires:    High explosive upgrade and bio upgrade 
  17761.   ;* Can't have:  Anthrax upgrade
  17762.   ;************************************************************************************************
  17763.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_15
  17764.     DeathWeapon   = BombTruckHighExplosiveBioBombEffect
  17765.     StartsActive  = No                      ; turned on by upgrade
  17766.     TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
  17767.     ConflictsWith = Upgrade_GLAAnthraxBeta
  17768.     RequiresAllTriggers = Yes
  17769.   End
  17770.  
  17771.   ;************************************************************************************************
  17772.   ;* EXCLUSIVE EFFECT COMBINATION 6 - High explosive Anthrax explosion 
  17773.   ;* Requires:    High explosive, Bio, and anthrax upgrade
  17774.   ;************************************************************************************************
  17775.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_16
  17776.     DeathWeapon   = BombTruckHighExplosiveAnthraxBombEffect
  17777.     StartsActive  = No                      ; turned on by upgrade
  17778.     TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
  17779.     RequiresAllTriggers = Yes
  17780.   End
  17781.  
  17782.   ;-------------------------------------------------------------------
  17783.   ; Wheeeee! Now we get to display the payload based on upgrades!!! 
  17784.   ;-------------------------------------------------------------------
  17785.   Behavior = SubObjectsUpgrade ModuleTag_17
  17786.     ;*** Bio bomb load ***
  17787.     TriggeredBy    = Upgrade_GLABombTruckBioBomb 
  17788.     ConflictsWith  = Upgrade_GLABombTruckHighExplosiveBomb
  17789.     ShowSubObjects = Bombload02 
  17790.     HideSubObjects = Bombload01 Bombload03 Bombload04
  17791.   End
  17792.   Behavior = SubObjectsUpgrade ModuleTag_18
  17793.     ;*** High-explosive bomb load ***
  17794.     TriggeredBy    = Upgrade_GLABombTruckHighExplosiveBomb
  17795.     ConflictsWith  = Upgrade_GLABombTruckBioBomb 
  17796.     ShowSubObjects = Bombload03 
  17797.     HideSubObjects = Bombload01 Bombload02 Bombload04
  17798.   End
  17799.   Behavior = SubObjectsUpgrade ModuleTag_19
  17800.     ;*** High-explosive bio bomb load ***
  17801.     TriggeredBy    = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb
  17802.     ShowSubObjects = Bombload04 
  17803.     HideSubObjects = Bombload01 Bombload02 Bombload03
  17804.     RequiresAllTriggers = Yes
  17805.   End
  17806.   ;-------------------------------------------------------------------
  17807.  
  17808.  
  17809.   Behavior = SpecialAbility ModuleTag_20
  17810.     SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
  17811.     UpdateModuleStartsAttack = Yes
  17812.     InitiateSound = BombTruckVoiceDisguise
  17813.   End
  17814.   Behavior = SpecialAbilityUpdate ModuleTag_21
  17815.     SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
  17816.     StartAbilityRange = 1000000.0
  17817.     ApproachRequiresLOS = No
  17818.   End
  17819.  
  17820.   Behavior = StealthUpdate ModuleTag_22
  17821.     StealthDelay                          = 1
  17822.     DisguisesAsTeam                       = Yes
  17823.     RevealDistanceFromTarget              = 100.0f
  17824.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  17825.     DisguiseFX                            = FX_BombTruckDisguise
  17826.     DisguiseRevealFX                      = FX_BombTruckDisguiseReveal
  17827.     InnateStealth                         = Yes
  17828.     DisguiseTransitionTime                = 2000
  17829.     DisguiseRevealTransitionTime          = 1000 
  17830.   End
  17831.  
  17832.   ; A crushing defeat
  17833.   Behavior = FXListDie ModuleTag_23
  17834.     DeathTypes = NONE +CRUSHED +SPLATTED
  17835.     DeathFX = FX_CarCrush
  17836.   End
  17837.   Behavior = CreateObjectDie ModuleTag_24
  17838.     DeathTypes = NONE +CRUSHED +SPLATTED
  17839.     CreationList = OCL_CrusaderTank_CrushEffect
  17840.   End
  17841.   Behavior = CreateCrateDie ModuleTag_25
  17842.     CrateData = SalvageCrateData
  17843.     ;CrateData = EliteTankCrateData
  17844.     ;CrateData = HeroicTankCrateData
  17845.   End
  17846.   
  17847.   Behavior = TransitionDamageFX ModuleTag_26
  17848.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  17849.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  17850.   End
  17851.  
  17852.   Behavior = FlammableUpdate ModuleTag_28
  17853.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  17854.     AflameDamageAmount = 3       ; taking this much damage...
  17855.     AflameDamageDelay = 500       ; this often.
  17856.   End
  17857.  
  17858.   Behavior = DestroyDie ModuleTag_29
  17859.     DeathTypes = NONE +CRUSHED +SPLATTED
  17860.   End
  17861.  
  17862.   Geometry = BOX
  17863.   GeometryMajorRadius = 19.0
  17864.   GeometryMinorRadius = 8.0
  17865.   GeometryHeight = 11.5     
  17866.   GeometryIsSmall = No    
  17867.   Shadow = SHADOW_VOLUME
  17868.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  17869.  
  17870. End
  17871.  
  17872. ;------------------------------------------------------------------------------
  17873. Object GLAVehicleScudLauncher
  17874.  
  17875.   ; *** ART Parameters ***
  17876.   SelectPortrait         = SUScudLauncher_L
  17877.   ButtonImage            = SUScudLauncher
  17878.  
  17879.   UpgradeCameo1 = Upgrade_GLAJunkRepair
  17880.   UpgradeCameo2 = Upgrade_GLAAnthraxBeta
  17881.   ;UpgradeCameo3 = NONE
  17882.   ;UpgradeCameo4 = NONE
  17883.   ;UpgradeCameo5 = NONE
  17884.  
  17885.   Draw = W3DTruckDraw ModuleTag_01
  17886.     OkToChangeModelColor = Yes
  17887.  
  17888.     ProjectileBoneFeedbackEnabledSlots = PRIMARY SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
  17889.   
  17890.     DefaultConditionState
  17891.       Model = UVScudLchr
  17892.       Turret = TURRET
  17893.       TurretPitch = TURRETEL
  17894.       WeaponLaunchBone = PRIMARY WeaponA
  17895.       WeaponLaunchBone = SECONDARY WeaponA
  17896.       WeaponHideShowBone = PRIMARY MISSILE
  17897.       WeaponHideShowBone = SECONDARY MISSILE
  17898.     End
  17899.  
  17900.     ConditionState = REALLYDAMAGED
  17901.       Model = UVScudLchr_d
  17902.     End
  17903.     AliasConditionState = RUBBLE
  17904.  
  17905.     TrackMarks = EXTireTrack.tga
  17906.  
  17907.     Dust = ScudLauncherDust
  17908.     DirtSpray = RocketBuggyDirtSpray
  17909.     PowerslideSpray = RocketBuggyDirtPowerSlide
  17910.  
  17911.     ; These parameters are only used if the model has a separate suspension, 
  17912.     ; and the locomotor has HasSuspension = Yes.
  17913.     LeftFrontTireBone = Tire01
  17914.     RightFrontTireBone = Tire05
  17915.     LeftRearTireBone = Tire04
  17916.     RightRearTireBone = Tire08
  17917.     MidLeftFrontTireBone = Tire02
  17918.     MidRightFrontTireBone = Tire06
  17919.     MidLeftRearTireBone = Tire03
  17920.     MidRightRearTireBone = Tire07
  17921.  
  17922.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  17923.     ;PowerslideRotationAddition = 0.0   ; This speed is added to the rotation speed when powersliding.
  17924.  
  17925.   End
  17926.  
  17927.  
  17928.   ; ***DESIGN parameters ***
  17929.  
  17930.   DisplayName      = OBJECT:ScudLauncher
  17931.   Side = GLA
  17932.   EditorSorting   = VEHICLE
  17933.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  17934.   WeaponSet
  17935.     Conditions = None
  17936.     Weapon = PRIMARY SCUDLauncherGunExplosive
  17937.     Weapon = SECONDARY SCUDLauncherGunToxin
  17938.     AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
  17939.     AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
  17940.     PreferredAgainst = SECONDARY INFANTRY
  17941.     ShareWeaponReloadTime = Yes
  17942.   End
  17943.   WeaponSet
  17944.     Conditions = PLAYER_UPGRADE
  17945.     Weapon = PRIMARY SCUDLauncherGunExplosive
  17946.     Weapon = SECONDARY SCUDLauncherGunAnthrax
  17947.     AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
  17948.     AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
  17949.     PreferredAgainst = SECONDARY INFANTRY
  17950.     ShareWeaponReloadTime = Yes
  17951.   End
  17952.   ArmorSet
  17953.     Conditions      = None
  17954.     Armor           = TruckArmor
  17955.     DamageFX        = TankDamageFX
  17956.   End
  17957.   BuildCost       = 1200
  17958.   BuildTime       = 20.0          ;in seconds    
  17959.   VisionRange     = 180
  17960.   ShroudClearingRange = 300
  17961.   Prerequisites
  17962.     Object = GLAArmsDealer
  17963.     Object = GLAPalace
  17964.     Science = SCIENCE_ScudLauncher
  17965.   End
  17966.  
  17967.   ExperienceValue = 50 50 100 150   ;Experience point value at each level
  17968.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  17969.   IsTrainable = Yes             ;Can gain experience
  17970.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  17971.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  17972.   CommandSet           = GLAVehicleScudLauncherCommandSet
  17973.  
  17974.   ; *** AUDIO Parameters ***
  17975.   VoiceSelect = ScudLauncherVoiceSelect
  17976.   VoiceMove = ScudLauncherVoiceMove
  17977.   VoiceGuard = ScudLauncherVoiceMove
  17978.   VoiceAttack = ScudLauncherVoiceAttack
  17979.   SoundMoveStart = ScudLauncherMoveStart
  17980.   SoundMoveStartDamaged = ScudLauncherMoveStart
  17981.   UnitSpecificSounds
  17982.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  17983.     VoiceCreate       = ScudLauncherVoiceCreate
  17984.     TurretMoveStart = NoSound
  17985.     TurretMoveLoop = TurretMoveLoop
  17986.     TruckLandingSound = NoSound
  17987.     TruckPowerslideSound = NoSound
  17988.     VoiceCrush = ScudLauncherVoiceCrush
  17989.     VoiceEnter = ScudLauncherVoiceMove
  17990.     VoicePrimaryWeaponMode = ScudLauncherVoiceModeHiEx
  17991.     VoiceSecondaryWeaponMode = ScudLauncherVoiceModeAnthrax
  17992.   End
  17993.  
  17994.   ; *** ENGINEERING Parameters ***
  17995.   RadarPriority = UNIT
  17996.   KindOf = PRELOAD SELECTABLE CAN_ATTACK DONT_AUTO_CRUSH_INFANTRY CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
  17997.  
  17998.   Body = ActiveBody ModuleTag_02
  17999.     MaxHealth       = 180.0
  18000.     InitialHealth   = 180.0
  18001.   End
  18002.  
  18003.   Behavior = AIUpdateInterface ModuleTag_03
  18004.     Turret
  18005.       TurretTurnRate = 60   ; turn rate, in degrees per sec
  18006.       TurretPitchRate = 60
  18007.       FirePitch = 90  ; Instead of aiming pitchwise at the target, it will aim here
  18008.       AllowsPitch = Yes
  18009.       ControlledWeaponSlots = PRIMARY SECONDARY
  18010.     End
  18011.     AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
  18012.   End  
  18013.  
  18014.   Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
  18015.   End
  18016.  
  18017.   Locomotor = SET_NORMAL ScudLauncherLocomotor
  18018.   Behavior = PhysicsBehavior ModuleTag_05
  18019.     Mass = 40.0
  18020.   End
  18021.  
  18022.   Behavior = AutoHealBehavior ModuleTag_06
  18023.     HealingAmount = 2
  18024.     HealingDelay = 1000 ; msec
  18025.     TriggeredBy = Upgrade_GLAJunkRepair
  18026.   End
  18027.  
  18028.   Behavior = TransitionDamageFX ModuleTag_08
  18029.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  18030.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_ScudLauncherDamageTransition
  18031.   End
  18032.  
  18033.   ; Catch fire, and explode death
  18034.   Behavior = SlowDeathBehavior ModuleTag_09
  18035.     DeathTypes = ALL -CRUSHED -SPLATTED
  18036.     ProbabilityModifier = 50
  18037.     DestructionDelay = 2000
  18038.     DestructionDelayVariance = 300
  18039.     FX  = INITIAL  FX_CrusaderCatchFire
  18040.     OCL = FINAL    OCL_SCUDLauncherDeathEffect  
  18041.     FX  = FINAL    FX_ScudLauncherExplosionOneFinal
  18042.   End
  18043.  
  18044.   ; A crushing defeat
  18045.   Behavior = FXListDie ModuleTag_10
  18046.     DeathTypes = NONE +CRUSHED +SPLATTED
  18047.     DeathFX = FX_CarCrush
  18048.   End
  18049.  
  18050.   Behavior = CreateObjectDie ModuleTag_11
  18051.     DeathTypes = NONE +CRUSHED +SPLATTED
  18052.     CreationList = OCL_CrusaderTank_CrushEffect
  18053.   End
  18054.  
  18055.   Behavior = FlammableUpdate ModuleTag_21
  18056.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  18057.     AflameDamageAmount = 3       ; taking this much damage...
  18058.     AflameDamageDelay = 500       ; this often.
  18059.   End
  18060.  
  18061.   Behavior = DestroyDie ModuleTag_22
  18062.     DeathTypes = NONE +CRUSHED +SPLATTED
  18063.   End
  18064.  
  18065.   Behavior = WeaponSetUpgrade ModuleTag_23
  18066.     TriggeredBy = Upgrade_GLAAnthraxBeta
  18067.   End
  18068.  
  18069.   Geometry = BOX
  18070.   GeometryMajorRadius = 14.0
  18071.   GeometryMinorRadius = 7.0
  18072.   GeometryHeight = 11.5     
  18073.   GeometryIsSmall = No
  18074.   Shadow = SHADOW_VOLUME   
  18075.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length 
  18076.  
  18077. End
  18078.  
  18079. ;------------------------------------------------------------------------------
  18080. Object ChinaTankBattleMaster
  18081.  
  18082.   ; *** ART Parameters ***
  18083.   SelectPortrait         = SNBattlemaster_L
  18084.   ButtonImage            = SNBattlemaster
  18085.   
  18086.   UpgradeCameo1 = Upgrade_Nationalism
  18087.   UpgradeCameo2 = Upgrade_ChinaUraniumShells
  18088.   UpgradeCameo3 = Upgrade_ChinaNuclearTanks
  18089.   ;UpgradeCameo4 = NONE
  18090.   ;UpgradeCameo5 = NONE
  18091.   
  18092.   Draw = W3DTankDraw ModuleTag_01
  18093.     OkToChangeModelColor = Yes
  18094.     DefaultConditionState
  18095.       Model               = NVBtMstr
  18096.       Turret              = Turret01
  18097.       WeaponFireFXBone    = PRIMARY Muzzle
  18098.       WeaponRecoilBone    = PRIMARY Barrel
  18099.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  18100.       WeaponLaunchBone    = PRIMARY Muzzle
  18101.     End
  18102.     ConditionState = REALLYDAMAGED
  18103.       Model               = NVBtMstr_D
  18104.       Turret              = Turret01
  18105.       WeaponFireFXBone    = PRIMARY Muzzle
  18106.       WeaponRecoilBone    = PRIMARY Barrel
  18107.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  18108.       WeaponLaunchBone    = PRIMARY Muzzle
  18109.     End
  18110.     ConditionState = RUBBLE
  18111.       Model               = NVBtMstr_D
  18112.       Turret              = Turret01
  18113.     End
  18114.  
  18115.     TrackMarks              = EXTnkTrack.tga
  18116.   End
  18117.  
  18118.   ; ***DESIGN parameters ***
  18119.   DisplayName      = OBJECT:BattleMaster
  18120.   Side = China
  18121.   EditorSorting   = VEHICLE
  18122.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  18123.   WeaponSet
  18124.     Conditions = None 
  18125.     Weapon = PRIMARY BattleMasterTankGun
  18126.   End
  18127.   ArmorSet
  18128.     Conditions      = None
  18129.     Armor           = TankArmor
  18130.     DamageFX        = TankDamageFX
  18131.   End
  18132.   BuildCost       = 800
  18133.   BuildTime       = 10.0          ;in seconds    
  18134.   VisionRange     = 150
  18135.   ShroudClearingRange = 300
  18136.   Prerequisites
  18137.     Object = ChinaWarFactory
  18138.   End
  18139.  
  18140.   ExperienceValue = 100 100 200 400    ;Experience point value at each level
  18141.   ExperienceRequired = 0 200 300 600 ;Experience points needed to gain each level
  18142.   IsTrainable = Yes             ;Can gain experience
  18143.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  18144.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  18145.   CommandSet       = ChinaVehicleBattleMasterCommandSet
  18146.  
  18147.   ; *** AUDIO Parameters ***
  18148.   VoiceSelect = BattleMasterTankVoiceSelect
  18149.   VoiceMove = BattleMasterTankVoiceMove
  18150.   VoiceGuard = BattleMasterTankVoiceMove
  18151.   VoiceAttack = BattleMasterTankVoiceAttack
  18152.   SoundMoveStart = BattleMasterTankMoveStart
  18153.   SoundMoveStartDamaged = BattleMasterTankMoveStart
  18154.  
  18155.   UnitSpecificSounds
  18156.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  18157.     VoiceCreate          = BattleMasterTankVoiceCreate
  18158.     TurretMoveStart = NoSound
  18159.     TurretMoveLoop = TurretMoveLoop
  18160.     VoiceCrush = BattleMasterTankVoiceCrush
  18161.     VoiceEnter = BattleMasterTankVoiceMove
  18162.   End
  18163.  
  18164.   ; *** ENGINEERING Parameters ***
  18165.   RadarPriority = UNIT
  18166.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  18167.  
  18168.   Body = ActiveBody ModuleTag_02
  18169.     MaxHealth       = 400.0
  18170.     InitialHealth   = 400.0
  18171.   End
  18172.  
  18173.   Behavior = AIUpdateInterface ModuleTag_03
  18174.     Turret
  18175.       TurretTurnRate = 120   ; turn rate, in degrees per sec
  18176.       ControlledWeaponSlots = PRIMARY
  18177.     End
  18178.     AutoAcquireEnemiesWhenIdle = Yes
  18179.   End
  18180.  
  18181.   Locomotor = SET_NORMAL BattleMasterLocomotor
  18182.   Locomotor = SET_NORMAL_UPGRADED NuclearBattleMasterLocomotor
  18183.  
  18184.   Behavior = HordeUpdate ModuleTag_04
  18185.     RubOffRadius = 150    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
  18186.     UpdateRate = 1000     ; how often to recheck horde status (msec)
  18187.     Radius = 75           ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
  18188.     KindOf = VEHICLE      ; what KindOf's must match to count towards horde-ness
  18189.     AlliesOnly = Yes      ; do we only count allies towards horde status? 
  18190.     ExactMatch = Yes      ; do we only count units of our exact same type towards horde status? (overrides kindof)
  18191.     Count = 5             ; how many units must be within Radius to grant us horde-ness
  18192.     Action = HORDE        ; when horde-ing, grant us the HORDE bonus
  18193.   End
  18194.  
  18195.   Behavior = PhysicsBehavior ModuleTag_05
  18196.     Mass = 40.0
  18197.   End
  18198.  
  18199.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_06
  18200.     DeathWeapon   = NuclearTankDeathWeapon
  18201.     StartsActive  = No                        ; turned on by upgrade
  18202.     TriggeredBy   = Upgrade_ChinaNuclearTanks
  18203.   End
  18204.   Behavior = LocomotorSetUpgrade ModuleTag_07
  18205.     TriggeredBy = Upgrade_ChinaNuclearTanks
  18206.   End
  18207.  
  18208.   ; A crushing defeat
  18209.   Behavior = DestroyDie ModuleTag_08
  18210.     DeathTypes = NONE +CRUSHED +SPLATTED
  18211.   End
  18212.   Behavior = FXListDie ModuleTag_09
  18213.     DeathTypes = NONE +CRUSHED +SPLATTED
  18214.     DeathFX = FX_CarCrush
  18215.   End
  18216.   Behavior = CreateObjectDie ModuleTag_10
  18217.     DeathTypes = NONE +CRUSHED +SPLATTED
  18218.     CreationList = OCL_CrusaderTank_CrushEffect
  18219.   End
  18220.   Behavior = CreateCrateDie ModuleTag_11
  18221.     CrateData = SalvageCrateData
  18222.     ;CrateData = EliteTankCrateData
  18223.     ;CrateData = HeroicTankCrateData
  18224.   End
  18225.  
  18226.  
  18227.   Behavior = SlowDeathBehavior ModuleTag_12
  18228.     DeathTypes = ALL -CRUSHED -SPLATTED
  18229.     ProbabilityModifier = 25
  18230.     DestructionDelay = 200
  18231.     DestructionDelayVariance = 100
  18232.     OCL = FINAL    OCL_ChinaTankBattleMasterDebris
  18233.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  18234.   End
  18235.  
  18236.   Behavior = TransitionDamageFX ModuleTag_13
  18237.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  18238.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  18239.   End
  18240.  
  18241.   Behavior = FlammableUpdate ModuleTag_21
  18242.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  18243.     AflameDamageAmount = 3       ; taking this much damage...
  18244.     AflameDamageDelay = 500       ; this often.
  18245.   End
  18246.  
  18247.   Geometry = BOX
  18248.   GeometryMajorRadius = 13.0
  18249.   GeometryMinorRadius = 9.0
  18250.   GeometryHeight = 10     
  18251.   GeometryIsSmall = Yes
  18252.   Shadow = SHADOW_VOLUME    
  18253.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  18254.  
  18255. End
  18256.  
  18257. ;------------------------------------------------------------------------------
  18258. ;**************************Required For CHI01 INTRO****************************
  18259. Object CINE_ChinaTankBattleMaster
  18260.  
  18261.   ; *** ART Parameters ***
  18262.   SelectPortrait         = SNBattlemaster_L
  18263.   ButtonImage            = SNBattlemaster
  18264.   
  18265.   UpgradeCameo1 = Upgrade_Nationalism
  18266.   UpgradeCameo2 = Upgrade_ChinaUraniumShells
  18267.   UpgradeCameo3 = Upgrade_ChinaNuclearTanks
  18268.   ;UpgradeCameo4 = NONE
  18269.   ;UpgradeCameo5 = NONE
  18270.   
  18271.   Draw = W3DTankDraw ModuleTag_01
  18272.     OkToChangeModelColor = Yes
  18273.     DefaultConditionState
  18274.       Model               = CINE_BttlMstr
  18275.       Turret              = Turret01
  18276.       WeaponFireFXBone    = PRIMARY Muzzle
  18277.       WeaponRecoilBone    = PRIMARY Barrel
  18278.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  18279.       WeaponLaunchBone    = PRIMARY Muzzle
  18280.     End
  18281.     ConditionState = REALLYDAMAGED
  18282.       Model               = NVBtMstr_D
  18283.       Turret              = Turret01
  18284.       WeaponFireFXBone    = PRIMARY Muzzle
  18285.       WeaponRecoilBone    = PRIMARY Barrel
  18286.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  18287.       WeaponLaunchBone    = PRIMARY Muzzle
  18288.     End
  18289.     ConditionState = RUBBLE
  18290.       Model               = NVBtMstr_D
  18291.       Turret              = Turret01
  18292.     End
  18293.  
  18294.     TrackMarks              = EXTnkTrack.tga
  18295.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  18296.     TreadDriveSpeedFraction = 0.1  ; fraction of locomotor speed below which treads stop moving.
  18297.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  18298.   End
  18299.  
  18300.   ; ***DESIGN parameters ***
  18301.   DisplayName      = OBJECT:BattleMaster
  18302.   Side = China
  18303.   EditorSorting   = VEHICLE
  18304.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  18305.   WeaponSet
  18306.     Conditions = None 
  18307.     Weapon = PRIMARY BattleMasterTankGun
  18308.   End
  18309.   ArmorSet
  18310.     Conditions      = None
  18311.     Armor           = TankArmor
  18312.     DamageFX        = TankDamageFX
  18313.   End
  18314.   BuildCost       = 800
  18315.   BuildTime       = 10.0          ;in seconds    
  18316.   VisionRange     = 150
  18317.   ShroudClearingRange = 300
  18318.   Prerequisites
  18319.     Object = ChinaWarFactory
  18320.   End
  18321.  
  18322.   ExperienceValue = 100 100 200 400    ;Experience point value at each level
  18323.   ExperienceRequired = 0 200 300 600 ;Experience points needed to gain each level
  18324.   IsTrainable = Yes             ;Can gain experience
  18325.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  18326.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  18327.   CommandSet       = ChinaVehicleBattleMasterCommandSet
  18328.  
  18329.   ; *** AUDIO Parameters ***
  18330.   VoiceSelect = BattleMasterTankVoiceSelect
  18331.   VoiceMove = BattleMasterTankVoiceMove
  18332.   VoiceGuard = BattleMasterTankVoiceMove
  18333.   VoiceAttack = BattleMasterTankVoiceAttack
  18334.   SoundMoveStart = BattleMasterTankMoveStart
  18335.   SoundMoveStartDamaged = BattleMasterTankMoveStart
  18336.  
  18337.   UnitSpecificSounds
  18338.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  18339.     VoiceCreate          = BattleMasterTankVoiceCreate
  18340.     TurretMoveStart = NoSound
  18341.     TurretMoveLoop = TurretMoveLoop
  18342.     VoiceCrush = BattleMasterTankVoiceCrush
  18343.     VoiceEnter = BattleMasterTankVoiceMove
  18344.   End
  18345.  
  18346.   ; *** ENGINEERING Parameters ***
  18347.   RadarPriority = UNIT
  18348.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  18349.  
  18350.   Body = ActiveBody ModuleTag_02
  18351.     MaxHealth       = 400.0
  18352.     InitialHealth   = 400.0
  18353.   End
  18354.  
  18355.   Behavior = AIUpdateInterface ModuleTag_03
  18356.     Turret
  18357.       TurretTurnRate = 120   ; turn rate, in degrees per sec
  18358.       ControlledWeaponSlots = PRIMARY
  18359.     End
  18360.     AutoAcquireEnemiesWhenIdle = Yes
  18361.   End
  18362.  
  18363.   Locomotor = SET_NORMAL CINE_BattleMasterLocomotor
  18364.   Locomotor = SET_NORMAL_UPGRADED NuclearBattleMasterLocomotor
  18365.  
  18366.  
  18367.   Behavior = PhysicsBehavior ModuleTag_05
  18368.     Mass = 40.0
  18369.   End
  18370.  
  18371.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_06
  18372.     DeathWeapon   = NuclearTankDeathWeapon
  18373.     StartsActive  = No                        ; turned on by upgrade
  18374.     TriggeredBy   = Upgrade_ChinaNuclearTanks
  18375.   End
  18376.   Behavior = LocomotorSetUpgrade ModuleTag_07
  18377.     TriggeredBy = Upgrade_ChinaNuclearTanks
  18378.   End
  18379.  
  18380.   ; A crushing defeat
  18381.   Behavior = DestroyDie ModuleTag_08
  18382.     DeathTypes = NONE +CRUSHED +SPLATTED
  18383.   End
  18384.   Behavior = FXListDie ModuleTag_09
  18385.     DeathTypes = NONE +CRUSHED +SPLATTED
  18386.     DeathFX = FX_CarCrush
  18387.   End
  18388.   Behavior = CreateObjectDie ModuleTag_10
  18389.     DeathTypes = NONE +CRUSHED +SPLATTED
  18390.     CreationList = OCL_CrusaderTank_CrushEffect
  18391.   End
  18392.   ;Behavior = CreateCrateDie ModuleTag_11
  18393.    ; CrateData = SalvageCrateData
  18394.     ;CrateData = EliteTankCrateData
  18395.     ;CrateData = HeroicTankCrateData
  18396.   ;End
  18397.  
  18398.  
  18399.   Behavior = SlowDeathBehavior ModuleTag_12
  18400.     DeathTypes = ALL -CRUSHED -SPLATTED
  18401.     ProbabilityModifier = 25
  18402.     DestructionDelay = 200
  18403.     DestructionDelayVariance = 100
  18404.     OCL = FINAL    OCL_ChinaTankBattleMasterDebris
  18405.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  18406.   End
  18407.  
  18408.   Behavior = TransitionDamageFX ModuleTag_13
  18409.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  18410.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  18411.   End
  18412.  
  18413.   Behavior = FlammableUpdate ModuleTag_21
  18414.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  18415.     AflameDamageAmount = 3       ; taking this much damage...
  18416.     AflameDamageDelay = 500       ; this often.
  18417.   End
  18418.  
  18419.   Geometry = BOX
  18420.   GeometryMajorRadius = 13.0
  18421.   GeometryMinorRadius = 9.0
  18422.   GeometryHeight = 10     
  18423.   GeometryIsSmall = Yes
  18424.   Shadow = SHADOW_VOLUME    
  18425.  
  18426. End
  18427.  
  18428.  
  18429. ;------------------------------------------------------------------------------
  18430. Object ChinaVehicleBattleMasterDeadHull
  18431.   ; *** ART Parameters ***
  18432.   Draw = W3DModelDraw ModuleTag_01
  18433.     OkToChangeModelColor = Yes
  18434.  
  18435.     ConditionState = NONE
  18436.       Model = NVBtMstr_D1
  18437.     End
  18438.   End
  18439.  
  18440.   ; ***DESIGN parameters ***
  18441.   Side = China
  18442.   EditorSorting   = SYSTEM
  18443.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  18444.  
  18445.   ; *** AUDIO Parameters ***
  18446.   ; *** ENGINEERING Parameters ***
  18447.   RadarPriority = UNIT
  18448.   KindOf = CAN_CAST_REFLECTIONS NO_COLLIDE HULK
  18449.  
  18450.   Body = ActiveBody ModuleTag_02
  18451.     MaxHealth       = 1.0
  18452.     InitialHealth   = 1.0
  18453.   End
  18454.  
  18455.  
  18456.   Behavior = PhysicsBehavior ModuleTag_03
  18457.     Mass = 50
  18458.     AllowBouncing = Yes
  18459.   End
  18460.  
  18461.   Behavior = LifetimeUpdate ModuleTag_04
  18462.     MinLifetime = 0   ; min lifetime in msec
  18463.     MaxLifetime = 0   ; max lifetime in msec
  18464.   End
  18465.  
  18466.  
  18467.   Behavior = SlowDeathBehavior ModuleTag_05
  18468.     SinkDelay = 14000
  18469.     SinkRate = 2     ; in Dist/Sec
  18470.     DestructionDelay = 20000
  18471.   End
  18472.  
  18473.   Behavior = TransitionDamageFX ModuleTag_06
  18474.     RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  18475.   End
  18476.  
  18477.   Geometry = BOX
  18478.   GeometryMajorRadius = 9.0
  18479.   GeometryMinorRadius = 6.0
  18480.   GeometryHeight = 7.5     
  18481.   GeometryIsSmall = Yes    
  18482.  
  18483. End
  18484.  
  18485.  
  18486.  
  18487. ;------------------------------------------------------------------------------
  18488. ; this unit is never really "built"; building one triggers the random building of
  18489. ; one of the other chassis. If you want a *specific* chassis, choose it explicitly;
  18490. ; if you want a chassis at random, specify this.
  18491. Object GLAVehicleTechnical
  18492.  
  18493.   ; *** ART Parameters ***
  18494.   SelectPortrait         = SUTechnical_L 
  18495.   ButtonImage            = SUTechnical
  18496.  
  18497.   Draw = W3DModelDraw ModuleTag_01
  18498.     DefaultConditionState
  18499.       ; give it a model so it'll show up in WB
  18500.       Model = UVTechTrck
  18501.     End
  18502.   End
  18503.  
  18504.   ; set cost and time fields here or else they won't work
  18505.   BuildCost       = 500
  18506.   BuildTime       = 5.0          ;in seconds    
  18507.  
  18508.   ; Needed to get the Veterancy Overlays on top of the Technical with his build variations.
  18509.   ;------------------------------------------------------------
  18510.   Behavior = VeterancyGainCreate ModuleTag_03
  18511.     StartingLevel = VETERAN
  18512.     ScienceRequired = SCIENCE_TechnicalTraining
  18513.   End
  18514.  
  18515.   Side = GLA
  18516.   EditorSorting = VEHICLE
  18517.   BuildVariations = GLAVehicleTechnicalChassisOne GLAVehicleTechnicalChassisTwo GLAVehicleTechnicalChassisThree
  18518.  
  18519.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE TRANSPORT
  18520.  
  18521. End
  18522.  
  18523. ;------------------------------------------------------------------------------
  18524. Object GLAVehicleTechnicalChassisOne
  18525.  
  18526.   ; *** ART Parameters ***
  18527.   SelectPortrait         = SUTechnical_L 
  18528.   ButtonImage            = SUTechnical
  18529.  
  18530.   UpgradeCameo1 = Upgrade_GLAAPBullets
  18531.   UpgradeCameo2 = Upgrade_GLAJunkRepair
  18532.   ;UpgradeCameo3 = NONE
  18533.   ;UpgradeCameo4 = NONE
  18534.   ;UpgradeCameo5 = NONE
  18535.  
  18536.   Draw = W3DTruckDraw ModuleTag_01
  18537.  
  18538.     ExtraPublicBone = Dum_Turret 
  18539.  
  18540.     DefaultConditionState
  18541.       Model         = UVTechTrck
  18542.     End
  18543.     ConditionState  = REALLYDAMAGED
  18544.       Model         = UVTechTrck_d
  18545.     End
  18546.     ConditionState  = RUBBLE
  18547.       Model         = UVTechTrck_d
  18548.     End
  18549.  
  18550.     OkToChangeModelColor        = Yes
  18551.     TrackMarks                  = EXTireTrack.tga
  18552.     Dust                        = TechnicalDust
  18553.     DirtSpray                   = RocketBuggyDirtSpray
  18554.     PowerslideSpray             = RocketBuggyDirtPowerSlide
  18555.  
  18556.     ; These parameters are only used if the model has a separate suspension, 
  18557.     ; and the locomotor has HasSuspension = Yes.
  18558.     LeftFrontTireBone           = Tire01
  18559.     RightFrontTireBone          = Tire02
  18560.     LeftRearTireBone            = Tire03
  18561.     RightRearTireBone           = Tire04
  18562.     TireRotationMultiplier      = 0.2        ; this * speed = rotation.
  18563.     PowerslideRotationAddition  = 2.5    ; This speed is added to the rotation speed when powersliding.
  18564.   End
  18565.  
  18566.   Draw = W3DModelDraw ModuleTag_02
  18567.  
  18568.     OkToChangeModelColor        = Yes
  18569.     AttachToBoneInAnotherModule = Dum_Turret
  18570.  
  18571.     ; ------------------ basic technical ------------------------
  18572.     DefaultConditionState
  18573.       Model = UITech_SKN
  18574.       Turret = Dum-TurManMVR
  18575.       TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
  18576.       HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
  18577.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  18578.       IdleAnimation = UITech_SKL.UITech_IDA
  18579.       IdleAnimation = UITech_SKL.UITech_IDB
  18580.       AnimationMode = ONCE
  18581.       ShowSubObject = 20Cal
  18582.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  18583.       WeaponFireFXBone = PRIMARY Muzzle01
  18584.     End
  18585.  
  18586.     ConditionState = RUBBLE MOVING TURRET_ROTATE
  18587.       Animation = None
  18588.       HideSubObject = UITech-SKN
  18589.       ShowSubObject = 20Cal
  18590.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  18591.       WeaponFireFXBone = PRIMARY Muzzle01
  18592.     End
  18593.  
  18594.     ConditionState = MOVING
  18595.       Animation = UITech_SKL.UITech_MVB
  18596.       AnimationMode = LOOP
  18597.       ShowSubObject = 20Cal
  18598.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  18599.       WeaponFireFXBone = PRIMARY Muzzle01
  18600.     End
  18601.  
  18602.     ConditionState = TURRET_ROTATE
  18603.       Animation = UITech_SKL.UITech_TNA
  18604.       AnimationMode = LOOP
  18605.       ShowSubObject = 20Cal
  18606.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  18607.       WeaponFireFXBone = PRIMARY Muzzle01
  18608.     End
  18609.     AliasConditionState = TURRET_ROTATE MOVING
  18610.     AliasConditionState = TURRET_ROTATE FIRING_A
  18611.     AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  18612.     AliasConditionState = TURRET_ROTATE RELOADING_A
  18613.     AliasConditionState = TURRET_ROTATE MOVING FIRING_A
  18614.     AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  18615.     AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
  18616.  
  18617.     ConditionState = FIRING_A 
  18618.       Animation = UITech_SKL.UITech_ATA
  18619.       AnimationMode = LOOP
  18620.       ShowSubObject = 20Cal
  18621.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  18622.       WeaponFireFXBone = PRIMARY Muzzle01
  18623.     End
  18624.  
  18625.     ; AliasConditionState is a new keyword that says,
  18626.     ; "give me another ConditionState exactly like the previous
  18627.     ; one, except with different conditions". Useful when you
  18628.     ; have several states that are the same with only different condition bits.
  18629.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  18630.     AliasConditionState = RELOADING_A
  18631.  
  18632.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  18633.     AliasConditionState = MOVING FIRING_A
  18634.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  18635.     AliasConditionState = MOVING RELOADING_A
  18636.  
  18637.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
  18638.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE
  18639.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  18640.       IdleAnimation = UITech_SKL.UITech_IDA
  18641.       IdleAnimation = UITech_SKL.UITech_IDB
  18642.       AnimationMode = ONCE
  18643.       ShowSubObject = 50Cal
  18644.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  18645.       WeaponFireFXBone = PRIMARY Muzzle02
  18646.       WeaponLaunchBone = PRIMARY Muzzle02
  18647.     End
  18648.  
  18649.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
  18650.       Animation = None
  18651.       HideSubObject = UITech-SKN
  18652.       ShowSubObject = 50Cal
  18653.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  18654.       WeaponFireFXBone = PRIMARY Muzzle02
  18655.       WeaponLaunchBone = PRIMARY Muzzle02
  18656.     End
  18657.  
  18658.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
  18659.       Animation = UITech_SKL.UITech_MVB
  18660.       AnimationMode = LOOP
  18661.       ShowSubObject = 50Cal
  18662.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  18663.       WeaponFireFXBone = PRIMARY Muzzle02
  18664.       WeaponLaunchBone = PRIMARY Muzzle02
  18665.     End
  18666.  
  18667.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
  18668.       Animation = UITech_SKL.UITech_TNA
  18669.       AnimationMode = LOOP
  18670.       ShowSubObject = 50Cal
  18671.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  18672.       WeaponFireFXBone = PRIMARY Muzzle02
  18673.       WeaponLaunchBone = PRIMARY Muzzle02
  18674.     End
  18675.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
  18676.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
  18677.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  18678.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
  18679.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
  18680.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  18681.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
  18682.  
  18683.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A 
  18684.       Animation = UITech_SKL.UITech_ATA
  18685.       AnimationMode = LOOP
  18686.       ShowSubObject = 50Cal
  18687.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  18688.       WeaponFireFXBone = PRIMARY Muzzle02
  18689.       WeaponLaunchBone = PRIMARY Muzzle02
  18690.     End
  18691.  
  18692.     ; AliasConditionState is a new keyword that says,
  18693.     ; "give me another ConditionState exactly like the previous
  18694.     ; one, except with different conditions". Useful when you
  18695.     ; have several states that are the same with only different condition bits.
  18696.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
  18697.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
  18698.  
  18699.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  18700.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
  18701.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
  18702.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
  18703.  
  18704.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
  18705.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO
  18706.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  18707.       IdleAnimation = UITech_SKL.UITech_IDA
  18708.       IdleAnimation = UITech_SKL.UITech_IDB
  18709.       AnimationMode = ONCE
  18710.       ShowSubObject = RPG
  18711.       WeaponFireFXBone = PRIMARY Muzzle03
  18712.       WeaponLaunchBone = PRIMARY Muzzle03
  18713.     End
  18714.  
  18715.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
  18716.       Animation = None
  18717.       HideSubObject = UITech-SKN
  18718.       ShowSubObject = RPG
  18719.       WeaponFireFXBone = PRIMARY Muzzle03
  18720.       WeaponLaunchBone = PRIMARY Muzzle03
  18721.     End
  18722.  
  18723.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
  18724.       Animation = UITech_SKL.UITech_MVB
  18725.       AnimationMode = LOOP
  18726.       ShowSubObject = RPG
  18727.       WeaponFireFXBone = PRIMARY Muzzle03
  18728.       WeaponLaunchBone = PRIMARY Muzzle03
  18729.     End
  18730.  
  18731.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
  18732.       Animation = UITech_SKL.UITech_TNA
  18733.       AnimationMode = LOOP
  18734.       ShowSubObject = RPG
  18735.       WeaponFireFXBone = PRIMARY Muzzle03
  18736.       WeaponLaunchBone = PRIMARY Muzzle03
  18737.     End
  18738.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
  18739.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
  18740.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  18741.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
  18742.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
  18743.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  18744.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
  18745.  
  18746.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A 
  18747.       Animation = UITech_SKL.UITech_ATA
  18748.       AnimationMode = LOOP
  18749.       ShowSubObject = RPG
  18750.       WeaponFireFXBone = PRIMARY Muzzle03
  18751.       WeaponLaunchBone = PRIMARY Muzzle03
  18752.     End
  18753.  
  18754.     ; AliasConditionState is a new keyword that says,
  18755.     ; "give me another ConditionState exactly like the previous
  18756.     ; one, except with different conditions". Useful when you
  18757.     ; have several states that are the same with only different condition bits.
  18758.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
  18759.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
  18760.  
  18761.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  18762.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
  18763.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
  18764.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
  18765.  
  18766.   End
  18767.  
  18768.   ; ***DESIGN parameters ***
  18769.   DisplayName         = OBJECT:Technical
  18770.   Side                = GLA
  18771.   EditorSorting       = VEHICLE
  18772.   TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  18773.  
  18774.   WeaponSet
  18775.     Conditions = None 
  18776.     Weapon = PRIMARY TechnicalMachineGunWeapon
  18777.   End
  18778.   WeaponSet
  18779.     Conditions = CRATEUPGRADE_ONE 
  18780.     Weapon = PRIMARY TechnicalCannonWeapon
  18781.   End
  18782.   WeaponSet
  18783.     Conditions = CRATEUPGRADE_TWO 
  18784.     Weapon = PRIMARY TechnicalRPGWeapon
  18785.   End
  18786.   ArmorSet
  18787.     Conditions      = None
  18788.     Armor           = TruckArmor
  18789.     DamageFX        = TruckDamageFX
  18790.   End
  18791.   ;update cost and time fields in Object GLAVehicleTechnical, or else they won't work
  18792.   ;BuildCost            = 300
  18793.   ;BuildTime            = 5.0          ;in seconds    
  18794.   VisionRange           = 150
  18795.   ShroudClearingRange   = 300
  18796.   Prerequisites
  18797.     Object = GLAArmsDealer
  18798.   End
  18799.  
  18800.   ExperienceValue         = 25 25 50 100    ;Experience point value at each level
  18801.   ExperienceRequired      = 0 50 75 150  ;Experience points needed to gain each level
  18802.   IsTrainable             = Yes             ;Can gain experience
  18803.   CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  18804.   CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  18805.   CommandSet              = GLAVehicleTechnicalCommandSet
  18806.  
  18807.   ; *** AUDIO Parameters ***
  18808.   VoiceSelect = TechnicalVoiceSelect
  18809.   VoiceMove = TechnicalVoiceMove
  18810.   VoiceGuard = TechnicalVoiceMove
  18811.   VoiceAttack = TechnicalVoiceAttack
  18812.   SoundMoveStart = TechnicalMoveStart
  18813.   SoundMoveStartDamaged = TechnicalMoveStart
  18814.   SoundDie = TechnicalVoiceDie
  18815.   SoundEnter = HumveeEnter
  18816.   SoundExit = HumveeExit
  18817.  
  18818.   UnitSpecificSounds
  18819.   ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  18820.     VoiceCreate          = TechnicalVoiceCreate
  18821.     TurretMoveStart = NoSound
  18822.     TurretMoveLoop = TurretMoveLoop
  18823.     TruckLandingSound = RocketBuggyLand
  18824.     TruckPowerslideSound = RocketBuggyPowerslide
  18825.     VoiceSalvage = TechnicalVoiceSalvage
  18826.     VoiceCrush      = TechnicalVoiceCrush
  18827.     VoiceUnload     = TechnicalVoiceUnload
  18828.     VoiceEnter = TechnicalVoiceMove
  18829.   End
  18830.  
  18831.   ; *** ENGINEERING Parameters ***
  18832.   RadarPriority = UNIT
  18833.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE TRANSPORT
  18834.  
  18835.   Behavior = VeterancyGainCreate ModuleTag_03
  18836.     StartingLevel = VETERAN
  18837.     ScienceRequired = SCIENCE_TechnicalTraining
  18838.   End
  18839.  
  18840.   Body = ActiveBody ModuleTag_04
  18841.     MaxHealth       = 180
  18842.     InitialHealth   = 180
  18843.   End
  18844.   Behavior = AIUpdateInterface ModuleTag_05
  18845.     Turret
  18846.       TurretTurnRate = 240       ; turn rate, in degrees per sec
  18847.       NaturalTurretAngle = 0
  18848.       MinIdleScanAngle = 30      ; in degrees off the natural turret angle
  18849.       MaxIdleScanAngle = 60      ; in degrees off the natural turret angle
  18850.       MinIdleScanInterval = 5000 ; in milliseconds
  18851.       MaxIdleScanInterval = 10000 ; in milliseconds
  18852.       ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
  18853.     End
  18854.     AutoAcquireEnemiesWhenIdle = Yes
  18855.   End
  18856.   Locomotor = SET_NORMAL TechnicalLocomotor
  18857.   Behavior = PhysicsBehavior ModuleTag_06
  18858.     Mass = 40.0
  18859.   End
  18860.   Behavior = AutoHealBehavior ModuleTag_07
  18861.     HealingAmount = 2
  18862.     HealingDelay = 1000 ; msec
  18863.     TriggeredBy = Upgrade_GLAJunkRepair
  18864.   End
  18865.  
  18866.   Behavior = FlammableUpdate ModuleTag_09
  18867.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  18868.     AflameDamageAmount = 3       ; taking this much damage...
  18869.     AflameDamageDelay = 500       ; this often.
  18870.   End
  18871.  
  18872.   Behavior                 = TransitionDamageFX ModuleTag_10
  18873.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  18874.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  18875.   End
  18876.  
  18877.   Behavior = DestroyDie ModuleTag_11
  18878.     DeathTypes = NONE +CRUSHED +SPLATTED
  18879.   End
  18880.  
  18881.   ; A crushing defeat
  18882.   Behavior = FXListDie ModuleTag_12
  18883.     DeathTypes = NONE +CRUSHED +SPLATTED
  18884.     DeathFX = FX_CarCrush
  18885.   End
  18886.   Behavior = CreateObjectDie ModuleTag_13
  18887.     DeathTypes = NONE +CRUSHED +SPLATTED
  18888.     CreationList = OCL_TechnicalJeep_CrushEffect
  18889.   End
  18890.   Behavior = CreateCrateDie ModuleTag_14
  18891.     CrateData = SalvageCrateData
  18892.     ;CrateData = EliteTankCrateData
  18893.     ;CrateData = HeroicTankCrateData
  18894.   End
  18895.  
  18896.   Behavior = SlowDeathBehavior ModuleTag_15
  18897.     DeathTypes = ALL -CRUSHED -SPLATTED
  18898.     DestructionDelay = 500
  18899.     DestructionDelayVariance = 1500
  18900.     OCL = INITIAL OCL_TechnicalAirDeathStart
  18901.     FX = INITIAL FX_RocketBuggyAirDeathGroundPart
  18902.     OCL = FINAL OCL_RocketBuggyAirDeath
  18903.     FX = FINAL FX_RocketBuggyAirDeathAirPart    ; This happens in the air
  18904.   End
  18905.  
  18906.   Behavior = TransportContain ModuleTag_16
  18907.     Slots = 5
  18908.     AllowInsideKindOf   = INFANTRY
  18909.     DamagePercentToUnits = 10%
  18910.     GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
  18911.    End
  18912.  
  18913.   Behavior = WeaponBonusUpgrade ModuleTag_17 ; Not a full weapon set switch, just a number tweak reflected in a weapon. 
  18914.     TriggeredBy = Upgrade_GLAAPBullets
  18915.   End 
  18916.  
  18917.   Geometry = BOX
  18918.   GeometryMajorRadius = 18.0
  18919.   GeometryMinorRadius = 9.0
  18920.   GeometryHeight = 7.5     
  18921.   GeometryIsSmall = No    
  18922.   Shadow = SHADOW_VOLUME
  18923.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  18924.  
  18925. End
  18926.  
  18927. ;------------------------------------------------------------------------------
  18928. ObjectReskin GLAVehicleTechnicalChassisTwo GLAVehicleTechnicalChassisOne
  18929.  
  18930.   ; *** ART Parameters ***
  18931.   Draw = W3DTruckDraw ModuleTag_01
  18932.  
  18933.     ExtraPublicBone = Dum_Turret 
  18934.  
  18935.     DefaultConditionState
  18936.       Model = UVTechVan
  18937.     End
  18938.  
  18939.     ConditionState = REALLYDAMAGED
  18940.       Model = UVTechVan_d
  18941.     End
  18942.     ConditionState = RUBBLE
  18943.       Model = UVTechVan_d
  18944.     End
  18945.  
  18946.     OkToChangeModelColor = Yes
  18947.     TrackMarks = EXTireTrack.tga
  18948.     Dust = TechnicalDust
  18949.  
  18950.     ;DirtSpray = RocketBuggyDirtSpray
  18951.     PowerslideSpray = RocketBuggyDirtPowerSlide
  18952.  
  18953.     ; These parameters are only used if the model has a separate suspension, 
  18954.     ; and the locomotor has HasSuspension = Yes.
  18955.     LeftFrontTireBone = Tire01
  18956.     RightFrontTireBone = Tire02
  18957.     LeftRearTireBone = Tire03
  18958.     RightRearTireBone = Tire04
  18959.     TireRotationMultiplier = 0.2        ; this * speed = rotation.
  18960.     PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
  18961.   End
  18962.  
  18963.   Draw = W3DModelDraw ModuleTag_02
  18964.     OkToChangeModelColor = Yes
  18965.     AttachToBoneInAnotherModule = Dum_Turret
  18966.  
  18967.     ; ------------------ basic technical ------------------------
  18968.     DefaultConditionState
  18969.       Model = UITech_SKN
  18970.       Turret = Dum-TurManMVR
  18971.       TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
  18972.       HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
  18973.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  18974.       IdleAnimation = UITech_SKL.UITech_IDA
  18975.       IdleAnimation = UITech_SKL.UITech_IDB
  18976.       AnimationMode = ONCE
  18977.       ShowSubObject = 20Cal
  18978.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  18979.       WeaponFireFXBone = PRIMARY Muzzle01
  18980.     End
  18981.  
  18982.     ConditionState = RUBBLE MOVING TURRET_ROTATE
  18983.       Animation = None
  18984.       HideSubObject = UITech-SKN
  18985.       ShowSubObject = 20Cal
  18986.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  18987.       WeaponFireFXBone = PRIMARY Muzzle01
  18988.     End
  18989.  
  18990.     ConditionState = MOVING
  18991.       Animation = UITech_SKL.UITech_MVB
  18992.       AnimationMode = LOOP
  18993.       ShowSubObject = 20Cal
  18994.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  18995.       WeaponFireFXBone = PRIMARY Muzzle01
  18996.     End
  18997.  
  18998.     ConditionState = TURRET_ROTATE
  18999.       Animation = UITech_SKL.UITech_TNA
  19000.       AnimationMode = LOOP
  19001.       ShowSubObject = 20Cal
  19002.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  19003.       WeaponFireFXBone = PRIMARY Muzzle01
  19004.     End
  19005.     AliasConditionState = TURRET_ROTATE MOVING
  19006.     AliasConditionState = TURRET_ROTATE FIRING_A
  19007.     AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  19008.     AliasConditionState = TURRET_ROTATE RELOADING_A
  19009.     AliasConditionState = TURRET_ROTATE MOVING FIRING_A
  19010.     AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  19011.     AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
  19012.  
  19013.     ConditionState = FIRING_A 
  19014.       Animation = UITech_SKL.UITech_ATA
  19015.       AnimationMode = LOOP
  19016.       ShowSubObject = 20Cal
  19017.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  19018.       WeaponFireFXBone = PRIMARY Muzzle01
  19019.     End
  19020.  
  19021.     ; AliasConditionState is a new keyword that says,
  19022.     ; "give me another ConditionState exactly like the previous
  19023.     ; one, except with different conditions". Useful when you
  19024.     ; have several states that are the same with only different condition bits.
  19025.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  19026.     AliasConditionState = RELOADING_A
  19027.  
  19028.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  19029.     AliasConditionState = MOVING FIRING_A
  19030.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  19031.     AliasConditionState = MOVING RELOADING_A
  19032.  
  19033.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
  19034.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE
  19035.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  19036.       IdleAnimation = UITech_SKL.UITech_IDA
  19037.       IdleAnimation = UITech_SKL.UITech_IDB
  19038.       AnimationMode = ONCE
  19039.       ShowSubObject = 50Cal
  19040.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  19041.       WeaponFireFXBone = PRIMARY Muzzle02
  19042.       WeaponLaunchBone = PRIMARY Muzzle02
  19043.     End
  19044.  
  19045.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
  19046.       Animation = None
  19047.       HideSubObject = UITech-SKN
  19048.       ShowSubObject = 50Cal
  19049.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  19050.       WeaponFireFXBone = PRIMARY Muzzle02
  19051.       WeaponLaunchBone = PRIMARY Muzzle02
  19052.     End
  19053.  
  19054.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
  19055.       Animation = UITech_SKL.UITech_MVB
  19056.       AnimationMode = LOOP
  19057.       ShowSubObject = 50Cal
  19058.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  19059.       WeaponFireFXBone = PRIMARY Muzzle02
  19060.       WeaponLaunchBone = PRIMARY Muzzle02
  19061.     End
  19062.  
  19063.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
  19064.       Animation = UITech_SKL.UITech_TNA
  19065.       AnimationMode = LOOP
  19066.       ShowSubObject = 50Cal
  19067.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  19068.       WeaponFireFXBone = PRIMARY Muzzle02
  19069.       WeaponLaunchBone = PRIMARY Muzzle02
  19070.     End
  19071.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
  19072.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
  19073.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  19074.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
  19075.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
  19076.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  19077.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
  19078.  
  19079.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A
  19080.       Animation = UITech_SKL.UITech_ATA
  19081.       AnimationMode = LOOP
  19082.       ShowSubObject = 50Cal
  19083.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  19084.       WeaponFireFXBone = PRIMARY Muzzle02
  19085.       WeaponLaunchBone = PRIMARY Muzzle02
  19086.     End
  19087.  
  19088.     ; AliasConditionState is a new keyword that says,
  19089.     ; "give me another ConditionState exactly like the previous
  19090.     ; one, except with different conditions". Useful when you
  19091.     ; have several states that are the same with only different condition bits.
  19092.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
  19093.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
  19094.  
  19095.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  19096.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
  19097.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
  19098.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
  19099.  
  19100.  
  19101.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
  19102.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO
  19103.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  19104.       IdleAnimation = UITech_SKL.UITech_IDA
  19105.       IdleAnimation = UITech_SKL.UITech_IDB
  19106.       AnimationMode = ONCE
  19107.       ShowSubObject = RPG
  19108.       WeaponFireFXBone = PRIMARY Muzzle03
  19109.       WeaponLaunchBone = PRIMARY Muzzle03
  19110.     End
  19111.  
  19112.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
  19113.       Animation = None
  19114.       HideSubObject = UITech-SKN
  19115.       ShowSubObject = RPG
  19116.       WeaponFireFXBone = PRIMARY Muzzle03
  19117.       WeaponLaunchBone = PRIMARY Muzzle03
  19118.     End
  19119.  
  19120.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
  19121.       Animation = UITech_SKL.UITech_MVB
  19122.       AnimationMode = LOOP
  19123.       ShowSubObject = RPG
  19124.       WeaponFireFXBone = PRIMARY Muzzle03
  19125.       WeaponLaunchBone = PRIMARY Muzzle03
  19126.     End
  19127.  
  19128.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
  19129.       Animation = UITech_SKL.UITech_TNA
  19130.       AnimationMode = LOOP
  19131.       ShowSubObject = RPG
  19132.       WeaponFireFXBone = PRIMARY Muzzle03
  19133.       WeaponLaunchBone = PRIMARY Muzzle03
  19134.     End
  19135.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
  19136.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
  19137.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  19138.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
  19139.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
  19140.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  19141.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
  19142.  
  19143.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A
  19144.       Animation = UITech_SKL.UITech_ATA
  19145.       AnimationMode = LOOP
  19146.       ShowSubObject = RPG
  19147.       WeaponFireFXBone = PRIMARY Muzzle03
  19148.       WeaponLaunchBone = PRIMARY Muzzle03
  19149.     End
  19150.  
  19151.     ; AliasConditionState is a new keyword that says,
  19152.     ; "give me another ConditionState exactly like the previous
  19153.     ; one, except with different conditions". Useful when you
  19154.     ; have several states that are the same with only different condition bits.
  19155.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
  19156.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
  19157.  
  19158.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  19159.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
  19160.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
  19161.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
  19162.  
  19163.   End 
  19164.   
  19165.  ; Behavior = CreateObjectDie ModuleTag_13
  19166.  ;   DeathTypes = NONE +CRUSHED +SPLATTED
  19167.  ;   CreationList = OCL_TechnicalVan_CrushEffect
  19168.  ; End
  19169.  
  19170.   Geometry = BOX
  19171.   GeometryMajorRadius = 16.0
  19172.   GeometryMinorRadius = 8.0
  19173.   GeometryHeight = 7.5     
  19174.   GeometryIsSmall = Yes  
  19175.   
  19176.  
  19177. End
  19178.  
  19179. ;------------------------------------------------------------------------------
  19180. ObjectReskin GLAVehicleTechnicalChassisThree GLAVehicleTechnicalChassisOne
  19181.  
  19182.   ; *** ART Parameters ***
  19183.   Draw = W3DTruckDraw ModuleTag_01
  19184.  
  19185.     ExtraPublicBone = Dum_Turret 
  19186.  
  19187.     DefaultConditionState
  19188.       Model = UVTechJeep
  19189.     End
  19190.  
  19191.     ConditionState = REALLYDAMAGED
  19192.       Model = UVTechJeep_d
  19193.     End
  19194.     ConditionState = RUBBLE
  19195.       Model = UVTechJeep_d
  19196.     End
  19197.  
  19198.     OkToChangeModelColor = Yes
  19199.     TrackMarks = EXTireTrack.tga
  19200.     Dust = TechnicalDust
  19201.  
  19202.     ;DirtSpray = RocketBuggyDirtSpray
  19203.     PowerslideSpray = RocketBuggyDirtPowerSlide
  19204.  
  19205.     ; These parameters are only used if the model has a separate suspension, 
  19206.     ; and the locomotor has HasSuspension = Yes.
  19207.     LeftFrontTireBone = Tire01
  19208.     RightFrontTireBone = Tire02
  19209.     LeftRearTireBone = Tire03
  19210.     RightRearTireBone = Tire04
  19211.     TireRotationMultiplier = 0.2        ; this * speed = rotation.
  19212.     PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
  19213.   End
  19214.  
  19215.   Draw = W3DModelDraw ModuleTag_02
  19216.     OkToChangeModelColor = Yes
  19217.     AttachToBoneInAnotherModule = Dum_Turret
  19218.  
  19219.     ; ------------------ basic technical ------------------------
  19220.     DefaultConditionState
  19221.       Model = UITech_SKN
  19222.       Turret = Dum-TurManMVR
  19223.       TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
  19224.       HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
  19225.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  19226.       IdleAnimation = UITech_SKL.UITech_IDA
  19227.       IdleAnimation = UITech_SKL.UITech_IDB
  19228.       AnimationMode = ONCE
  19229.       ShowSubObject = 20Cal
  19230.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  19231.       WeaponFireFXBone = PRIMARY Muzzle01
  19232.     End
  19233.  
  19234.     ConditionState = RUBBLE MOVING TURRET_ROTATE
  19235.       Animation = None
  19236.       HideSubObject = UITech-SKN
  19237.       ShowSubObject = 20Cal
  19238.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  19239.       WeaponFireFXBone = PRIMARY Muzzle01
  19240.     End
  19241.  
  19242.     ConditionState = MOVING
  19243.       Animation = UITech_SKL.UITech_MVB
  19244.       AnimationMode = LOOP
  19245.       ShowSubObject = 20Cal
  19246.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  19247.       WeaponFireFXBone = PRIMARY Muzzle01
  19248.     End
  19249.  
  19250.     ConditionState = TURRET_ROTATE
  19251.       Animation = UITech_SKL.UITech_TNA
  19252.       AnimationMode = LOOP
  19253.       ShowSubObject = 20Cal
  19254.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  19255.       WeaponFireFXBone = PRIMARY Muzzle01
  19256.     End
  19257.     AliasConditionState = TURRET_ROTATE MOVING
  19258.     AliasConditionState = TURRET_ROTATE FIRING_A
  19259.     AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  19260.     AliasConditionState = TURRET_ROTATE RELOADING_A
  19261.     AliasConditionState = TURRET_ROTATE MOVING FIRING_A
  19262.     AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  19263.     AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
  19264.  
  19265.     ConditionState = FIRING_A
  19266.       Animation = UITech_SKL.UITech_ATA
  19267.       AnimationMode = LOOP
  19268.       ShowSubObject = 20Cal
  19269.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  19270.       WeaponFireFXBone = PRIMARY Muzzle01
  19271.     End
  19272.  
  19273.     ; AliasConditionState is a new keyword that says,
  19274.     ; "give me another ConditionState exactly like the previous
  19275.     ; one, except with different conditions". Useful when you
  19276.     ; have several states that are the same with only different condition bits.
  19277.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  19278.     AliasConditionState = RELOADING_A
  19279.  
  19280.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  19281.     AliasConditionState = MOVING FIRING_A
  19282.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  19283.     AliasConditionState = MOVING RELOADING_A
  19284.  
  19285.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
  19286.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE
  19287.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  19288.       IdleAnimation = UITech_SKL.UITech_IDA
  19289.       IdleAnimation = UITech_SKL.UITech_IDB
  19290.       AnimationMode = ONCE
  19291.       ShowSubObject = 50Cal
  19292.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  19293.       WeaponFireFXBone = PRIMARY Muzzle02
  19294.       WeaponLaunchBone = PRIMARY Muzzle02
  19295.     End
  19296.  
  19297.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
  19298.       Animation = None
  19299.       HideSubObject = UITech-SKN
  19300.       ShowSubObject = 50Cal
  19301.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  19302.       WeaponFireFXBone = PRIMARY Muzzle02
  19303.       WeaponLaunchBone = PRIMARY Muzzle02
  19304.     End
  19305.  
  19306.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
  19307.       Animation = UITech_SKL.UITech_MVB
  19308.       AnimationMode = LOOP
  19309.       ShowSubObject = 50Cal
  19310.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  19311.       WeaponFireFXBone = PRIMARY Muzzle02
  19312.       WeaponLaunchBone = PRIMARY Muzzle02
  19313.     End
  19314.  
  19315.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
  19316.       Animation = UITech_SKL.UITech_TNA
  19317.       AnimationMode = LOOP
  19318.       ShowSubObject = 50Cal
  19319.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  19320.       WeaponFireFXBone = PRIMARY Muzzle02
  19321.       WeaponLaunchBone = PRIMARY Muzzle02
  19322.     End
  19323.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
  19324.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
  19325.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  19326.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
  19327.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
  19328.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  19329.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
  19330.  
  19331.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A
  19332.       Animation = UITech_SKL.UITech_ATA
  19333.       AnimationMode = LOOP
  19334.       ShowSubObject = 50Cal
  19335.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  19336.       WeaponFireFXBone = PRIMARY Muzzle02
  19337.       WeaponLaunchBone = PRIMARY Muzzle02
  19338.     End
  19339.  
  19340.     ; AliasConditionState is a new keyword that says,
  19341.     ; "give me another ConditionState exactly like the previous
  19342.     ; one, except with different conditions". Useful when you
  19343.     ; have several states that are the same with only different condition bits.
  19344.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
  19345.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
  19346.  
  19347.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  19348.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
  19349.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
  19350.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
  19351.  
  19352.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
  19353.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO
  19354.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  19355.       IdleAnimation = UITech_SKL.UITech_IDA
  19356.       IdleAnimation = UITech_SKL.UITech_IDB
  19357.       AnimationMode = ONCE
  19358.       ShowSubObject = RPG
  19359.       WeaponFireFXBone = PRIMARY Muzzle03
  19360.       WeaponLaunchBone = PRIMARY Muzzle03
  19361.     End
  19362.  
  19363.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
  19364.       Animation = None
  19365.       HideSubObject = UITech-SKN
  19366.       ShowSubObject = RPG
  19367.       WeaponFireFXBone = PRIMARY Muzzle03
  19368.       WeaponLaunchBone = PRIMARY Muzzle03
  19369.     End
  19370.  
  19371.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
  19372.       Animation = UITech_SKL.UITech_MVB
  19373.       AnimationMode = LOOP
  19374.       ShowSubObject = RPG
  19375.       WeaponFireFXBone = PRIMARY Muzzle03
  19376.       WeaponLaunchBone = PRIMARY Muzzle03
  19377.     End
  19378.  
  19379.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
  19380.       Animation = UITech_SKL.UITech_TNA
  19381.       AnimationMode = LOOP
  19382.       ShowSubObject = RPG
  19383.       WeaponFireFXBone = PRIMARY Muzzle03
  19384.       WeaponLaunchBone = PRIMARY Muzzle03
  19385.     End
  19386.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
  19387.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
  19388.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  19389.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
  19390.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
  19391.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  19392.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
  19393.  
  19394.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A
  19395.       Animation = UITech_SKL.UITech_ATA
  19396.       AnimationMode = LOOP
  19397.       ShowSubObject = RPG
  19398.       WeaponFireFXBone = PRIMARY Muzzle03
  19399.       WeaponLaunchBone = PRIMARY Muzzle03
  19400.     End
  19401.  
  19402.     ; AliasConditionState is a new keyword that says,
  19403.     ; "give me another ConditionState exactly like the previous
  19404.     ; one, except with different conditions". Useful when you
  19405.     ; have several states that are the same with only different condition bits.
  19406.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
  19407.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
  19408.  
  19409.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  19410.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
  19411.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
  19412.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
  19413.  
  19414.   End  
  19415.   
  19416.  ; Behavior = CreateObjectDie ModuleTag_13
  19417.  ;   DeathTypes = NONE +CRUSHED +SPLATTED
  19418.  ;   CreationList = OCL_TechnicalJeep_CrushEffect
  19419.  ; End
  19420.   
  19421.   Geometry = BOX
  19422.   GeometryMajorRadius = 14.0
  19423.   GeometryMinorRadius = 9.0
  19424.   GeometryHeight = 9.5     
  19425.   GeometryIsSmall = Yes    
  19426.   
  19427.  
  19428. End
  19429.  
  19430. ;------------------------------------------------------------------------------
  19431. Object ChinaTankOverlord
  19432.  
  19433.   ; *** ART Parameters ***
  19434.   SelectPortrait         = SNOverlord_L
  19435.   ButtonImage            = SNOverlord
  19436.   
  19437.   UpgradeCameo1 = Upgrade_ChinaUraniumShells
  19438.   UpgradeCameo2 = Upgrade_ChinaNuclearTanks
  19439.   UpgradeCameo3 = Upgrade_ChinaOverlordBattleBunker
  19440.   UpgradeCameo4 = Upgrade_ChinaOverlordGattlingCannon
  19441.   UpgradeCameo5 = Upgrade_ChinaOverlordPropagandaTower
  19442.   
  19443.   
  19444.   Draw = W3DOverlordTankDraw ModuleTag_01
  19445.     ConditionState        = NONE
  19446.       Model               = NVOvrlrd
  19447.       Animation           = NVOvrlrd.NVOvrlrd
  19448.       AnimationMode       = LOOP
  19449.       Turret              = Turret01
  19450.       WeaponFireFXBone    = PRIMARY Muzzle
  19451.       WeaponRecoilBone    = PRIMARY Barrel
  19452.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  19453.       WeaponLaunchBone = PRIMARY Muzzle
  19454.     End
  19455.     ConditionState        = REALLYDAMAGED
  19456.       Model               = NVOvrlrd_d
  19457.       Animation           = NVOvrlrd_d.NVOvrlrd_d
  19458.       AnimationMode       = LOOP
  19459.       Turret              = Turret01
  19460.       WeaponFireFXBone    = PRIMARY Muzzle
  19461.       WeaponRecoilBone    = PRIMARY Barrel
  19462.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  19463.       WeaponLaunchBone = PRIMARY Muzzle
  19464.     End
  19465.  
  19466.     ConditionState        = RUBBLE
  19467.       Model               = NVOvrlrd_d
  19468.       Turret              = Turret01
  19469.       WeaponFireFXBone    = PRIMARY Muzzle
  19470.       WeaponRecoilBone    = PRIMARY Barrel
  19471.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  19472.       WeaponLaunchBone = PRIMARY Muzzle
  19473.     End
  19474.  
  19475.     TrackMarks           = EXTnkTrack.tga
  19476.     OkToChangeModelColor = Yes
  19477.     TreadAnimationRate = 2.0;  amount of tread texture to move per second
  19478.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  19479.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  19480.   End
  19481.  
  19482.   ; ***DESIGN parameters ***
  19483.   DisplayName         = OBJECT:Overlord
  19484.   Side                = China
  19485.   EditorSorting       = VEHICLE
  19486.   TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  19487.   WeaponSet
  19488.     Conditions        = None 
  19489.     Weapon            = PRIMARY OverlordTankGun
  19490.   End
  19491.   ArmorSet
  19492.     Conditions        = None
  19493.     Armor             = TankArmor
  19494.     DamageFX          = TankDamageFX
  19495.   End
  19496.   BuildCost       = 2000
  19497.   BuildTime       = 25.0          ;in seconds    
  19498.   VisionRange     = 150
  19499.   ShroudClearingRange = 200
  19500.   Prerequisites
  19501.     Object = ChinaWarFactory
  19502.     Object = ChinaPropagandaCenter
  19503.   End
  19504.  
  19505.   ExperienceValue = 200 200 400 600   ;Experience point value at each level
  19506.   ExperienceRequired = 0 400 600 1200  ;Experience points needed to gain each level
  19507.   IsTrainable = Yes             ;Can gain experience
  19508.   CrusherLevel           = 3  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  19509.   CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  19510.   CommandSet = ChinaTankOverlordDefaultCommandSet
  19511.  
  19512.   ; *** AUDIO Parameters ***
  19513.   VoiceSelect = OverlordTankVoiceSelect
  19514.   SoundMoveStart = OverlordTankMoveStart
  19515.   SoundMoveStartDamaged = OverlordTankMoveStart
  19516.   VoiceMove = OverlordTankVoiceMove
  19517.   VoiceGuard = OverlordTankVoiceMove
  19518.   VoiceAttack = OverlordTankVoiceAttack
  19519.  
  19520.   UnitSpecificSounds
  19521.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  19522.     VoiceCreate          = OverlordTankVoiceCreate
  19523.     TurretMoveStart = NoSound
  19524.     TurretMoveLoop = OverlordTankTurretMoveLoop
  19525.     VoiceCrush = OverlordTankVoiceCrush
  19526.     VoiceEnter = OverlordTankVoiceMove
  19527.     VoiceUnload     = OverlordTankVoiceUnload
  19528.   End
  19529.  
  19530.   ; *** ENGINEERING Parameters ***
  19531.   RadarPriority = UNIT
  19532.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE HUGE_VEHICLE
  19533.   
  19534.   Body = ActiveBody ModuleTag_02
  19535.     MaxHealth       = 1100.0
  19536.     InitialHealth   = 1100.0
  19537.   End
  19538.  
  19539.   Behavior = TransportAIUpdate ModuleTag_03
  19540.     Turret
  19541.       TurretTurnRate = 60 ;30 ;15   // turn rate, in degrees per sec
  19542.       ControlledWeaponSlots = PRIMARY
  19543.     End
  19544.     AutoAcquireEnemiesWhenIdle = Yes
  19545.   End
  19546.  
  19547.   Locomotor = SET_NORMAL OverlordLocomotor
  19548.   Locomotor = SET_NORMAL_UPGRADED NuclearOverlordLocomotor
  19549.  
  19550.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
  19551.     DeathWeapon   = NuclearTankDeathWeapon
  19552.     StartsActive  = No                        ; turned on by upgrade
  19553.     TriggeredBy   = Upgrade_ChinaNuclearTanks
  19554.   End
  19555.   Behavior = LocomotorSetUpgrade ModuleTag_05
  19556.     TriggeredBy = Upgrade_ChinaNuclearTanks
  19557.   End
  19558.  
  19559.   Behavior = OverlordContain ModuleTag_06 ; Like Transport, but when full, passes transport queries along to first passenger (redirects like tunnel) 
  19560.     Slots                 = 1
  19561.     DamagePercentToUnits        = 100%
  19562.     AllowInsideKindOf     = PORTABLE_STRUCTURE
  19563.     PassengersAllowedToFire = Yes
  19564.     PassengersInTurret = Yes ; My passengers ride in my turret, that's where the Firepoint bones are
  19565.   End
  19566.  
  19567.   Behavior = ObjectCreationUpgrade ModuleTag_07
  19568.     UpgradeObject = OCL_OverlordGattlingCannon
  19569.     TriggeredBy   = Upgrade_ChinaOverlordGattlingCannon
  19570.     ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
  19571.   End
  19572.   Behavior = ObjectCreationUpgrade ModuleTag_08
  19573.     UpgradeObject = OCL_OverlordPropagandaTower
  19574.     TriggeredBy   = Upgrade_ChinaOverlordPropagandaTower
  19575.     ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
  19576.   End
  19577.   Behavior = ObjectCreationUpgrade ModuleTag_09
  19578.     UpgradeObject = OCL_OverlordBattleBunker
  19579.     TriggeredBy   = Upgrade_ChinaOverlordBattleBunker
  19580.     ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
  19581.   End
  19582.   Behavior = ProductionUpdate ModuleTag_10
  19583.     MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  19584.   End
  19585.   Behavior = CommandSetUpgrade ModuleTag_11
  19586.     CommandSet = ChinaTankOverlordGattlingCannonCommandSet
  19587.     TriggeredBy   = Upgrade_ChinaOverlordGattlingCannon
  19588.     ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
  19589.   End
  19590.   Behavior = CommandSetUpgrade ModuleTag_12
  19591.     CommandSet = ChinaTankOverlordPropagandaTowerCommandSet
  19592.     TriggeredBy   = Upgrade_ChinaOverlordPropagandaTower
  19593.     ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
  19594.   End
  19595.   Behavior = CommandSetUpgrade ModuleTag_13
  19596.     CommandSet = ChinaTankOverlordBattleBunkerCommandSet
  19597.     TriggeredBy   = Upgrade_ChinaOverlordBattleBunker
  19598.     ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
  19599.   End
  19600.  
  19601.   Behavior = PhysicsBehavior ModuleTag_14
  19602.     Mass = 50.0
  19603.   End
  19604.  
  19605.  
  19606.  
  19607.   ; Smoke for a bit then explode
  19608. ;  Behavior = SlowDeathBehavior
  19609. ;;    ProbabilityModifier = 25
  19610. ;    DestructionDelay = 1500
  19611. ;    DestructionDelayVariance = 500
  19612. ;    FX  = INITIAL   FX_OverlordSmoke
  19613. ;    OCL = FINAL     OCL_ChinaTankOverlordDebris
  19614. ;    FX  = FINAL     FX_GenericTankDeathExplosion
  19615. ;  End
  19616.   
  19617.   ; Catch fire, and explode death
  19618. ;  Behavior = SlowDeathBehavior
  19619. ;;    ProbabilityModifier = 25
  19620. ;    DestructionDelay = 2000
  19621. ;    DestructionDelayVariance = 300
  19622. ;    FX  = INITIAL  FX_CrusaderCatchFire
  19623. ;    OCL = FINAL    OCL_ChinaTankOverlordDebris
  19624. ;    FX  = FINAL    FX_GenericTankDeathExplosion 
  19625. ;  End
  19626.  
  19627.   ; Just explode death
  19628.   Behavior = SlowDeathBehavior ModuleTag_16
  19629.     ProbabilityModifier = 25
  19630.     DestructionDelay = 200
  19631.     DestructionDelayVariance = 100
  19632.     OCL = FINAL    OCL_ChinaTankOverlordDebris
  19633.     FX  = FINAL    FX_OverlordExplosionOneFinal
  19634.   End
  19635.   Behavior = CreateCrateDie ModuleTag_17
  19636.     CrateData = SalvageCrateData
  19637.     ;CrateData = EliteTankCrateData
  19638.     ;CrateData = HeroicTankCrateData
  19639.   End
  19640.  
  19641.   Behavior = TransitionDamageFX ModuleTag_18
  19642.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  19643.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_OverlordDamageTransition
  19644.   End
  19645.  
  19646.   Behavior = FlammableUpdate ModuleTag_21
  19647.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  19648.     AflameDamageAmount = 3       ; taking this much damage...
  19649.     AflameDamageDelay = 500       ; this often.
  19650.   End
  19651.  
  19652.   Geometry = BOX
  19653.   GeometryMajorRadius = 26.0
  19654.   GeometryMinorRadius = 13.0
  19655.   GeometryHeight = 15.0     
  19656.   GeometryIsSmall = No
  19657.   Shadow = SHADOW_VOLUME     
  19658.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  19659.  
  19660. End
  19661.  
  19662. ;------------------------------------------------------------------------------
  19663. Object ChinaTankOverlordGattlingCannon
  19664.  
  19665.   ; *** ART Parameters ***
  19666.   SelectPortrait         = SNGatTower_L
  19667.   ButtonImage            = SNGatTower
  19668.   
  19669.   ;UpgradeCameo1 = Upgrade_Nationalism
  19670.   UpgradeCameo1 = Upgrade_ChinaUraniumShells
  19671.   UpgradeCameo2 = Upgrade_ChinaNuclearTanks
  19672.   ;UpgradeCameo4 = NONE
  19673.   UpgradeCameo5 = Upgrade_ChinaOverlordGattlingCannon
  19674.   
  19675.   
  19676.   Draw                    = W3DDependencyModelDraw ModuleTag_01
  19677.     OkToChangeModelColor  = Yes
  19678.     AttachToBoneInContainer = FIREPOINT01
  19679.  
  19680.     DefaultConditionState
  19681.       Model               = NVOvrlrd_G
  19682.       Turret              = TURRET01
  19683.       TurretPitch         = TURRETEL
  19684.       WeaponFireFXBone    = PRIMARY Muzzle
  19685.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  19686.       WeaponFireFXBone    = SECONDARY Muzzle
  19687.       WeaponMuzzleFlash   = SECONDARY MuzzleFX
  19688.     End
  19689.     ConditionState        = CONTINUOUS_FIRE_SLOW
  19690.       Model               = NVOvrlrd_G
  19691.       Animation           = NVOvrlrd_G.NVOvrlrd_G
  19692.       AnimationMode       = LOOP
  19693.       AnimationSpeedFactorRange = 0.1 0.1 ;set this state to animate  s l o w l y
  19694.     End
  19695.      ConditionState       = CONTINUOUS_FIRE_MEAN
  19696.       Model               = NVOvrlrd_G
  19697.       Animation           = NVOvrlrd_G.NVOvrlrd_G
  19698.       AnimationMode       = LOOP
  19699.       AnimationSpeedFactorRange = 0.2 0.2 ;set this state to animate  medium-fast
  19700.     End
  19701.     ConditionState        = CONTINUOUS_FIRE_FAST
  19702.       Model               = NVOvrlrd_G
  19703.       Animation           = NVOvrlrd_G.NVOvrlrd_G
  19704.       AnimationMode       = LOOP
  19705.       AnimationSpeedFactorRange = 0.3 0.3 ;set this state to animate  vryfst
  19706.       ParticleSysBone    = Muzzle01 GattlingMuzzleSmoke
  19707.       ParticleSysBone    = Muzzle02 GattlingMuzzleSmoke
  19708.     End
  19709.  
  19710.     ConditionState        = REALLYDAMAGED 
  19711.       Model               = NVOvrlrd_GD
  19712.       Turret              = TURRET01
  19713.       TurretPitch         = TURRETEL
  19714.       WeaponFireFXBone    = PRIMARY Muzzle
  19715.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  19716.       WeaponFireFXBone    = SECONDARY Muzzle
  19717.       WeaponMuzzleFlash   = SECONDARY MuzzleFX
  19718.       ParticleSysBone     = Smoke01 SmokeFactionMedium
  19719.       ParticleSysBone     = Smoke02 SmokeFactionMedium
  19720.       ParticleSysBone     = Smoke03 SmokeFactionMedium
  19721.       ParticleSysBone     = SparkM01 SparksMedium
  19722.       ParticleSysBone     = SparkM02 SparksMedium
  19723.     End
  19724.     ConditionState        = CONTINUOUS_FIRE_SLOW REALLYDAMAGED 
  19725.       Model               = NVOvrlrd_GD
  19726.       Animation           = NVOvrlrd_G.NVOvrlrd_G
  19727.       AnimationMode       = LOOP
  19728.       AnimationSpeedFactorRange = 0.1 0.1 ;set this state to animate  s l o w l y
  19729.     End
  19730.      ConditionState       = CONTINUOUS_FIRE_MEAN REALLYDAMAGED 
  19731.       Model               = NVOvrlrd_GD
  19732.       Animation           = NVOvrlrd_G.NVOvrlrd_G
  19733.       AnimationMode       = LOOP
  19734.       AnimationSpeedFactorRange = 0.2 0.2 ;set this state to animate  medium-fast
  19735.     End
  19736.     ConditionState        = CONTINUOUS_FIRE_FAST REALLYDAMAGED 
  19737.       Model               = NVOvrlrd_GD
  19738.       Animation           = NVOvrlrd_G.NVOvrlrd_G
  19739.       AnimationMode       = LOOP
  19740.       AnimationSpeedFactorRange = 0.3 0.3 ;set this state to animate  vryfst
  19741.       ParticleSysBone    = Muzzle01 GattlingMuzzleSmoke
  19742.       ParticleSysBone    = Muzzle02 GattlingMuzzleSmoke
  19743.     End
  19744.  
  19745.   End
  19746.  
  19747.   ; ***DESIGN parameters ***
  19748.   Side             = China
  19749.   EditorSorting    = SYSTEM
  19750.   TransportSlotCount = 1
  19751.   WeaponSet
  19752.     Conditions          = None 
  19753.     Weapon              = PRIMARY   GattlingBuildingGun
  19754.     Weapon              = SECONDARY GattlingBuildingGunAir
  19755.     PreferredAgainst    = SECONDARY BALLISTIC_MISSILE AIRCRAFT
  19756.   End
  19757.   
  19758.   ArmorSet
  19759.     Conditions     = None
  19760.     Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
  19761.   End
  19762.   VisionRange     = 200
  19763.  
  19764.   ; *** AUDIO Parameters ***
  19765.   UnitSpecificSounds
  19766.     TurretMoveStart = NoSound
  19767.     TurretMoveLoop  = NoSound ;TurretMoveLoop
  19768.     VoiceRapidFire  = NoSound
  19769.   End
  19770.  
  19771.   ; *** ENGINEERING Parameters ***
  19772.   KindOf            = PRELOAD PORTABLE_STRUCTURE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CLICK_THROUGH IGNORED_IN_GUI
  19773.     Body            = StructureBody ModuleTag_02
  19774.     MaxHealth       = 100.0
  19775.     InitialHealth   = 100.0
  19776.   End
  19777.  
  19778.   Behavior = AIUpdateInterface ModuleTag_03
  19779.     Turret
  19780.       ControlledWeaponSlots = PRIMARY SECONDARY
  19781.       TurretTurnRate      = 60   // turn rate, in degrees per sec
  19782.       TurretPitchRate     = 60
  19783.       AllowsPitch         = Yes
  19784.     End
  19785.     AutoAcquireEnemiesWhenIdle = Yes 
  19786.   End
  19787.  
  19788.   Behavior             = DestroyDie ModuleTag_04
  19789.     ;nothing
  19790.   End
  19791.  
  19792.   Behavior = WeaponBonusUpgrade ModuleTag_05
  19793.     TriggeredBy = Upgrade_ChinaChainGuns
  19794.   End
  19795.  
  19796.   Behavior = StealthDetectorUpdate ModuleTag_06
  19797.     DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
  19798.     ;DetectionRange = ??? ;   Defaults to VisionRange
  19799.     CanDetectWhileContained   = Yes
  19800.   End
  19801.  
  19802.   Geometry            = BOX
  19803.   GeometryMajorRadius = 8.0
  19804.   GeometryMinorRadius = 8.0
  19805.   GeometryHeight      = 9.0
  19806.   GeometryIsSmall     = No      
  19807.   Shadow              = SHADOW_VOLUME
  19808.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  19809.  
  19810. End
  19811.  
  19812. ;------------------------------------------------------------------------------
  19813. Object ChinaTankOverlordPropagandaTower
  19814.  
  19815.   ; *** ART Parameters ***
  19816.   SelectPortrait         = SNPropSpeaker_L
  19817.   ButtonImage            = SNPropSpeaker
  19818.   
  19819.   UpgradeCameo1 = Upgrade_Nationalism
  19820.   UpgradeCameo2 = Upgrade_ChinaUraniumShells
  19821.   UpgradeCameo3 = Upgrade_ChinaNuclearTanks
  19822.   ;UpgradeCameo4 = NONE
  19823.   UpgradeCameo5 = Upgrade_ChinaOverlordPropagandaTower
  19824.   
  19825.   Draw                    = W3DDependencyModelDraw ModuleTag_01
  19826.     OkToChangeModelColor  = Yes
  19827.     AttachToBoneInContainer = FIREPOINT01
  19828.  
  19829.     ConditionState = NONE
  19830.       Model         = NVOvrlrd_S
  19831.       Animation     = NVOvrlrd_S.NVOvrlrd_S
  19832.       AnimationMode = LOOP
  19833.     End
  19834.     ConditionState = REALLYDAMAGED
  19835.       Model         = NVOvrlrd_SD
  19836.       ParticleSysBone = Smoke01 SmolderingSmoke
  19837.       ParticleSysBone = Smoke02 SmolderingSmoke
  19838.       ParticleSysBone = Flame01 SmolderingFire
  19839.       ParticleSysBone = Flame01 SmolderingFlameCore
  19840.       ParticleSysBone = Spark01 LiveWireSparks
  19841.     End
  19842.     ; night
  19843.     ConditionState = NIGHT
  19844.       Model         = NVOvrlrd_S
  19845.       Animation     = NVOvrlrd_S.NVOvrlrd_S
  19846.       AnimationMode = LOOP
  19847.     End 
  19848.   End
  19849.  
  19850.   PlacementViewAngle = -45
  19851.  
  19852.   ; ***DESIGN parameters ***
  19853.   Side             = China
  19854.   EditorSorting    = SYSTEM
  19855.   TransportSlotCount = 1
  19856.   
  19857.   ArmorSet
  19858.     Conditions     = None
  19859.     Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
  19860.   End
  19861.   VisionRange     = 200
  19862.  
  19863.   ; *** AUDIO Parameters ***
  19864.   UnitSpecificSounds
  19865.    TurretMoveStart = NoSound
  19866.     TurretMoveLoop  = NoSound ;TurretMoveLoop
  19867.   End
  19868.  
  19869.   ; *** ENGINEERING Parameters ***
  19870.   KindOf            = PRELOAD PORTABLE_STRUCTURE CAN_ATTACK CLICK_THROUGH IGNORED_IN_GUI
  19871.     Body            = StructureBody ModuleTag_02
  19872.     MaxHealth       = 100.0
  19873.     InitialHealth   = 100.0
  19874.   End
  19875.  
  19876.   Behavior = AIUpdateInterface ModuleTag_03
  19877.     ;<No Data>
  19878.   End
  19879.   
  19880.   Behavior        = PropagandaTowerBehavior ModuleTag_04
  19881.     Radius                = 150.0
  19882.     DelayBetweenUpdates   = 2000 ; in milliseconds
  19883.     HealPercentEachSecond = 1%   ; get this % of max health every second 
  19884.     PulseFX               = FX_OverlordPropagandaTowerPropagandaPulse ;plays as often as DelayBetweenUpdates
  19885.     UpgradeRequired       = Upgrade_ChinaSubliminalMessaging
  19886.     UpgradedHealPercentEachSecond = 2%   ; get this % of max health every second 
  19887.     UpgradedPulseFX       = FX_OverlordPropagandaTowerSubliminalPulse ;plays as often as DelayBetweenUpdates
  19888.  
  19889.   End
  19890.  
  19891.   Behavior             = DestroyDie ModuleTag_05
  19892.     ;<No Data>
  19893.   End
  19894.  
  19895.   Geometry            = BOX
  19896.   GeometryMajorRadius = 6.0
  19897.   GeometryMinorRadius = 6.0
  19898.   GeometryHeight      = 10.0
  19899.   GeometryIsSmall     = No      
  19900.   Shadow              = SHADOW_VOLUME
  19901.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  19902.  
  19903. End
  19904.  
  19905. ;------------------------------------------------------------------------------
  19906. Object ChinaTankOverlordBattleBunker
  19907.  
  19908.   ; *** ART Parameters ***
  19909.   SelectPortrait         = SNBunker_L
  19910.   ButtonImage            = SNBunker
  19911.   
  19912.   ;UpgradeCameo1 = Upgrade_Nationalism
  19913.   UpgradeCameo1 = Upgrade_ChinaUraniumShells
  19914.   UpgradeCameo2 = Upgrade_ChinaNuclearTanks
  19915.   ;UpgradeCameo4 = NONE
  19916.   UpgradeCameo5 = Upgrade_ChinaOverlordBattleBunker
  19917.   
  19918.   Draw                    = W3DDependencyModelDraw ModuleTag_01
  19919.     OkToChangeModelColor  = Yes
  19920.     AttachToBoneInContainer = FIREPOINT01
  19921.  
  19922.     ConditionState = NONE
  19923.       Model         = NVOvrlrd_B
  19924.     End
  19925.     ConditionState = REALLYDAMAGED
  19926.       Model         = NVOvrlrd_BD
  19927.       ParticleSysBone = Smoke01 SmolderingSmoke
  19928.       ParticleSysBone = Smoke02 SmolderingSmoke
  19929.       ParticleSysBone = Flame01 SmolderingFire
  19930.       ParticleSysBone = Flame01 SmolderingFlameCore
  19931.       ParticleSysBone = Spark01 LiveWireSparks
  19932.     End
  19933.     ; night
  19934.     ConditionState = NIGHT
  19935.       Model         = NVOvrlrd_B
  19936.     End 
  19937.     ConditionState = NIGHT REALLYDAMAGED
  19938.       Model         = NVOvrlrd_BD
  19939.       ParticleSysBone = Smoke01 SmolderingSmoke
  19940.       ParticleSysBone = Smoke02 SmolderingSmoke
  19941.       ParticleSysBone = Flame01 SmolderingFire
  19942.       ParticleSysBone = Flame01 SmolderingFlameCore
  19943.       ParticleSysBone = Spark01 LiveWireSparks
  19944.     End
  19945.   End
  19946.  
  19947.   PlacementViewAngle = -45
  19948.  
  19949.   ; ***DESIGN parameters ***
  19950.   Side             = China
  19951.   EditorSorting    = SYSTEM
  19952.   TransportSlotCount = 1
  19953.   
  19954.   ArmorSet
  19955.     Conditions     = None
  19956.     Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
  19957.   End
  19958.   VisionRange     = 200
  19959.  
  19960.   ; *** AUDIO Parameters ***
  19961.   UnitSpecificSounds
  19962.     TurretMoveStart = NoSound
  19963.     TurretMoveLoop  = NoSound ;TurretMoveLoop
  19964.     VoiceUnload     = OverlordTankVoiceUnload
  19965.   End
  19966.  
  19967.   ; *** ENGINEERING Parameters ***
  19968.   KindOf            = PRELOAD PORTABLE_STRUCTURE CLICK_THROUGH IGNORED_IN_GUI
  19969.     Body            = StructureBody ModuleTag_02
  19970.     MaxHealth       = 100.0
  19971.     InitialHealth   = 100.0
  19972.   End
  19973.  
  19974.   Behavior = TransportContain ModuleTag_03
  19975.     Slots                 = 5
  19976.     PassengersAllowedToFire = Yes
  19977.     AllowInsideKindOf  = INFANTRY
  19978.     EnterSound      = GarrisonEnter
  19979.     ExitSound       = GarrisonExit
  19980.     DamagePercentToUnits  = 50%
  19981.   End
  19982.  
  19983.   Behavior             = DestroyDie ModuleTag_04
  19984.     ;nothing
  19985.   End
  19986.  
  19987.   Geometry            = BOX
  19988.   GeometryMajorRadius = 6.0
  19989.   GeometryMinorRadius = 6.0
  19990.   GeometryHeight      = 10.0
  19991.   GeometryIsSmall     = No      
  19992.   Shadow              = SHADOW_VOLUME
  19993.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  19994.  
  19995. End
  19996.  
  19997. ; -----------------------------------------------------------------------------
  19998.  
  19999. Object ChinaTankOverlordBarrelDebris
  20000.  
  20001.   ; *** ART Parameters ***
  20002.   Draw = W3DModelDraw ModuleTag_01
  20003.     OkToChangeModelColor = Yes
  20004.  
  20005.     ConditionState = NONE
  20006.       Model = NVOvrlrd_D3
  20007.     End
  20008.   End
  20009.  
  20010.   ; ***DESIGN parameters ***
  20011. ;  DisplayName      = OBJECT:RocketBuggyDebris
  20012.  
  20013.   EditorSorting   = DEBRIS
  20014.   Side = China
  20015.  
  20016.   ; *** AUDIO Parameters ***
  20017.   ; *** ENGINEERING Parameters ***
  20018. ;  RadarPriority = UNIT
  20019. ;  KindOf = PRELOAD CAN_CAST_REFLECTIONS 
  20020.  
  20021.   Body = ActiveBody ModuleTag_02
  20022.     MaxHealth       = 1.0
  20023.     InitialHealth   = 1.0
  20024.   End
  20025.  
  20026.   Behavior = PhysicsBehavior ModuleTag_03
  20027.     Mass = 50
  20028.     AllowBouncing = Yes
  20029.   End
  20030.  
  20031.   Behavior = LifetimeUpdate ModuleTag_04
  20032.     MinLifetime = 10000   ; min lifetime in msec
  20033.     MaxLifetime = 15000   ; max lifetime in msec
  20034.   End
  20035.  
  20036.  
  20037.   Behavior = SlowDeathBehavior ModuleTag_05
  20038.     SinkDelay = 1000
  20039.     SinkRate = 1     ; in Dist/Sec
  20040.     DestructionDelay = 2000
  20041.   End
  20042.  
  20043.   Geometry = BOX
  20044.   GeometryMajorRadius = 9.0
  20045.   GeometryMinorRadius = 6.0
  20046.   GeometryHeight = 7.5     
  20047.   GeometryIsSmall = Yes    
  20048.  
  20049.  
  20050. End
  20051.  
  20052. ;------------------------------------------------------------------------------
  20053. Object ChinaTankOverlordDeadHull
  20054.  
  20055.   ; *** ART Parameters ***
  20056.   Draw = W3DModelDraw ModuleTag_01
  20057.     OkToChangeModelColor = Yes
  20058.  
  20059.     ConditionState = NONE
  20060.       Model = NVOvrlrd_D1
  20061.     End
  20062.   End
  20063.  
  20064.   ; ***DESIGN parameters ***
  20065.   DisplayName      = OBJECT:Overlord
  20066.   Side = China
  20067.   EditorSorting   = SYSTEM
  20068.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  20069.  
  20070.   ; *** AUDIO Parameters ***
  20071.   ; *** ENGINEERING Parameters ***
  20072.   RadarPriority = UNIT
  20073.   KindOf = CAN_CAST_REFLECTIONS NO_COLLIDE HULK
  20074.  
  20075.   Body = ActiveBody ModuleTag_02
  20076.     MaxHealth       = 1.0
  20077.     InitialHealth   = 1.0
  20078.   End
  20079.  
  20080.  
  20081.   Behavior = PhysicsBehavior ModuleTag_03
  20082.     Mass = 50
  20083.     AllowBouncing = Yes
  20084.   End
  20085.  
  20086.   Behavior = LifetimeUpdate ModuleTag_04
  20087.     MinLifetime = 0   ; min lifetime in msec
  20088.     MaxLifetime = 0   ; max lifetime in msec
  20089.   End
  20090.  
  20091.  
  20092.   Behavior = SlowDeathBehavior ModuleTag_05
  20093.     SinkDelay = 14000
  20094.     SinkRate = 2     ; in Dist/Sec
  20095.     DestructionDelay = 20000
  20096.   End
  20097.  
  20098.   Behavior = TransitionDamageFX ModuleTag_06
  20099.     RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  20100.   End
  20101.  
  20102.   Geometry = BOX
  20103.   GeometryMajorRadius = 9.0
  20104.   GeometryMinorRadius = 6.0
  20105.   GeometryHeight = 7.5     
  20106.   GeometryIsSmall = Yes    
  20107.  
  20108. End
  20109.  
  20110. ;------------------------------------------------------------------------------
  20111. ;******************************* Cinematic-Only unit **************************
  20112. Object CINE_ChinaTankOverlord
  20113.  
  20114.   ; *** ART Parameters ***
  20115.   SelectPortrait         = SNOverlord_L
  20116.   ButtonImage            = SNOverlord
  20117.   
  20118.   ;UpgradeCameo1 = Upgrade_Nationalism
  20119.   UpgradeCameo1 = Upgrade_ChinaUraniumShells
  20120.   UpgradeCameo2 = Upgrade_ChinaNuclearTanks
  20121.   ;UpgradeCameo4 = NONE
  20122.   ;UpgradeCameo5 = NONE
  20123.   
  20124.   
  20125.   Draw = W3DOverlordTankDraw ModuleTag_01
  20126.     ConditionState        = NONE
  20127.       Model               = NVOvrlrd
  20128.       Animation           = NVOvrlrd.NVOvrlrd
  20129.       AnimationMode       = LOOP
  20130.       Turret              = Turret01
  20131.       WeaponFireFXBone    = PRIMARY Muzzle
  20132.       WeaponRecoilBone    = PRIMARY Barrel
  20133.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  20134.       WeaponLaunchBone = PRIMARY Muzzle
  20135.     End
  20136.     ConditionState        = REALLYDAMAGED
  20137.       Model               = NVOvrlrd_d
  20138.       Animation           = NVOvrlrd_d.NVOvrlrd_d
  20139.       AnimationMode       = LOOP
  20140.       Turret              = Turret01
  20141.       WeaponFireFXBone    = PRIMARY Muzzle
  20142.       WeaponRecoilBone    = PRIMARY Barrel
  20143.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  20144.       WeaponLaunchBone = PRIMARY Muzzle
  20145.     End
  20146.  
  20147.     ConditionState        = RUBBLE
  20148.       Model               = NVOvrlrd_d
  20149.       Turret              = Turret01
  20150.       WeaponFireFXBone    = PRIMARY Muzzle
  20151.       WeaponRecoilBone    = PRIMARY Barrel
  20152.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  20153.       WeaponLaunchBone = PRIMARY Muzzle
  20154.     End
  20155.  
  20156.     TrackMarks           = EXTnkTrack.tga
  20157.     OkToChangeModelColor = Yes
  20158.     TreadAnimationRate = 2.0;  amount of tread texture to move per second
  20159.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  20160.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  20161.   End
  20162.  
  20163.   ; ***DESIGN parameters ***
  20164.   DisplayName         = OBJECT:Overlord
  20165.   Side                = China
  20166.   EditorSorting       = VEHICLE
  20167.   TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  20168.   WeaponSet
  20169.     Conditions        = None 
  20170.     Weapon            = PRIMARY OverlordTankGun
  20171.   End
  20172.   ArmorSet
  20173.     Conditions        = None
  20174.     Armor             = TankArmor
  20175.     DamageFX          = TankDamageFX
  20176.   End
  20177.   BuildCost       = 1800
  20178.   BuildTime       = 20.0          ;in seconds    
  20179.   VisionRange     = 150
  20180.   ShroudClearingRange = 200
  20181.   Prerequisites
  20182.     Object = ChinaWarFactory
  20183.     Object = ChinaPropagandaCenter
  20184.   End
  20185.  
  20186.   ExperienceValue = 200 200 400 600   ;Experience point value at each level
  20187.   ExperienceRequired = 0 400 600 1200  ;Experience points needed to gain each level
  20188.   IsTrainable = Yes             ;Can gain experience
  20189.   CrusherLevel           = 3  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  20190.   CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  20191.   CommandSet = ChinaTankOverlordDefaultCommandSet
  20192.  
  20193.   ; *** AUDIO Parameters ***
  20194.   VoiceSelect = OverlordTankVoiceSelect
  20195.   SoundMoveStart = OverlordTankMoveStart
  20196.   SoundMoveStartDamaged = OverlordTankMoveStart
  20197.   VoiceMove = OverlordTankVoiceMove
  20198.   VoiceGuard = OverlordTankVoiceMove
  20199.   VoiceAttack = OverlordTankVoiceAttack
  20200.   UnitSpecificSounds
  20201.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  20202.     VoiceCreate          = OverlordTankVoiceCreate
  20203.     TurretMoveStart = NoSound
  20204.     TurretMoveLoop = OverlordTankTurretMoveLoop
  20205.     VoiceCrush = OverlordTankVoiceCrush
  20206.     VoiceEnter = OverlordTankVoiceMove
  20207.   End
  20208.  
  20209.   ; *** ENGINEERING Parameters ***
  20210.   RadarPriority = UNIT
  20211.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE HUGE_VEHICLE
  20212.   
  20213.   Body = ActiveBody ModuleTag_02
  20214.     MaxHealth       = 1100.0
  20215.     InitialHealth   = 1100.0
  20216.   End
  20217.  
  20218.   Behavior = TransportAIUpdate ModuleTag_03
  20219.     Turret
  20220.       TurretTurnRate = 60 ;30 ;15   // turn rate, in degrees per sec
  20221.       ControlledWeaponSlots = PRIMARY
  20222.     End
  20223.     AutoAcquireEnemiesWhenIdle = Yes
  20224.   End
  20225.  
  20226.   Locomotor = SET_NORMAL CINE_OverlordLocomotor
  20227.   Locomotor = SET_NORMAL_UPGRADED NuclearOverlordLocomotor
  20228.  
  20229.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
  20230.     DeathWeapon   = NuclearTankDeathWeapon
  20231.     StartsActive  = No                        ; turned on by upgrade
  20232.     TriggeredBy   = Upgrade_ChinaNuclearTanks
  20233.   End
  20234.   Behavior = LocomotorSetUpgrade ModuleTag_05
  20235.     TriggeredBy = Upgrade_ChinaNuclearTanks
  20236.   End
  20237.  
  20238.   Behavior = OverlordContain ModuleTag_06 ; Like Transport, but when full, passes transport queries along to first passenger (redirects like tunnel) 
  20239.     Slots                 = 1
  20240.     DamagePercentToUnits        = 100%
  20241.     AllowInsideKindOf     = PORTABLE_STRUCTURE
  20242.     PassengersAllowedToFire = Yes
  20243.     PassengersInTurret = Yes ; My passengers ride in my turret, that's where the Firepoint bones are
  20244.   End
  20245.  
  20246.   Behavior = ObjectCreationUpgrade ModuleTag_07
  20247.     UpgradeObject = OCL_OverlordGattlingCannon
  20248.     TriggeredBy   = Upgrade_ChinaOverlordGattlingCannon
  20249.     ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
  20250.   End
  20251.   Behavior = ObjectCreationUpgrade ModuleTag_08
  20252.     UpgradeObject = OCL_OverlordPropagandaTower
  20253.     TriggeredBy   = Upgrade_ChinaOverlordPropagandaTower
  20254.     ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
  20255.   End
  20256.   Behavior = ObjectCreationUpgrade ModuleTag_09
  20257.     UpgradeObject = OCL_OverlordBattleBunker
  20258.     TriggeredBy   = Upgrade_ChinaOverlordBattleBunker
  20259.     ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
  20260.   End
  20261.   Behavior = ProductionUpdate ModuleTag_10
  20262.     ; nothing
  20263.   End
  20264.   Behavior = CommandSetUpgrade ModuleTag_11
  20265.     CommandSet = ChinaTankOverlordGattlingCannonCommandSet
  20266.     TriggeredBy   = Upgrade_ChinaOverlordGattlingCannon
  20267.     ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
  20268.   End
  20269.   Behavior = CommandSetUpgrade ModuleTag_12
  20270.     CommandSet = ChinaTankOverlordPropagandaTowerCommandSet
  20271.     TriggeredBy   = Upgrade_ChinaOverlordPropagandaTower
  20272.     ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
  20273.   End
  20274.   Behavior = CommandSetUpgrade ModuleTag_13
  20275.     CommandSet = ChinaTankOverlordBattleBunkerCommandSet
  20276.     TriggeredBy   = Upgrade_ChinaOverlordBattleBunker
  20277.     ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
  20278.   End
  20279.  
  20280.   Behavior = PhysicsBehavior ModuleTag_14
  20281.     Mass = 50.0
  20282.   End
  20283.  
  20284.  
  20285.  
  20286.   ; Smoke for a bit then explode
  20287. ;  Behavior = SlowDeathBehavior
  20288. ;;    ProbabilityModifier = 25
  20289. ;    DestructionDelay = 1500
  20290. ;    DestructionDelayVariance = 500
  20291. ;    FX  = INITIAL   FX_OverlordSmoke
  20292. ;    OCL = FINAL     OCL_ChinaTankOverlordDebris
  20293. ;    FX  = FINAL     FX_GenericTankDeathExplosion
  20294. ;  End
  20295.   
  20296.   ; Catch fire, and explode death
  20297. ;  Behavior = SlowDeathBehavior
  20298. ;;    ProbabilityModifier = 25
  20299. ;    DestructionDelay = 2000
  20300. ;    DestructionDelayVariance = 300
  20301. ;    FX  = INITIAL  FX_CrusaderCatchFire
  20302. ;    OCL = FINAL    OCL_ChinaTankOverlordDebris
  20303. ;    FX  = FINAL    FX_GenericTankDeathExplosion 
  20304. ;  End
  20305.  
  20306.   ; Just explode death
  20307.   Behavior = SlowDeathBehavior ModuleTag_16
  20308.     ProbabilityModifier = 25
  20309.     DestructionDelay = 200
  20310.     DestructionDelayVariance = 100
  20311.     OCL = FINAL    OCL_ChinaTankOverlordDebris
  20312.     FX  = FINAL    FX_OverlordExplosionOneFinal
  20313.   End
  20314.   Behavior = CreateCrateDie ModuleTag_17
  20315.     CrateData = SalvageCrateData
  20316.     ;CrateData = EliteTankCrateData
  20317.     ;CrateData = HeroicTankCrateData
  20318.   End
  20319.  
  20320.   Behavior = TransitionDamageFX ModuleTag_18
  20321.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  20322.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_OverlordDamageTransition
  20323.   End
  20324.  
  20325.   Behavior = FlammableUpdate ModuleTag_21
  20326.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  20327.     AflameDamageAmount = 3       ; taking this much damage...
  20328.     AflameDamageDelay = 500       ; this often.
  20329.   End
  20330.  
  20331.   Geometry = BOX
  20332.   GeometryMajorRadius = 26.0
  20333.   GeometryMinorRadius = 13.0
  20334.   GeometryHeight = 15.0     
  20335.   GeometryIsSmall = No
  20336.   Shadow = SHADOW_VOLUME     
  20337.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  20338.  
  20339. End
  20340.  
  20341. ;------------------------------------------------------------------------------
  20342. ;China Dragon Tank
  20343. Object ChinaTankDragon
  20344.  
  20345.   ; *** ART Parameters ***
  20346.   SelectPortrait         = SNDragonTank_L
  20347.   ButtonImage            = SNDragonTank
  20348.   
  20349.   UpgradeCameo1 = Upgrade_ChinaBlackNapalm
  20350.   ;UpgradeCameo2 = NONE
  20351.   ;UpgradeCameo3 = NONE
  20352.   ;UpgradeCameo4 = NONE
  20353.   ;UpgradeCameo5 = NONE
  20354.   
  20355.   Draw = W3DTankDraw ModuleTag_01
  20356.     OkToChangeModelColor = Yes
  20357.  
  20358.     DefaultConditionState
  20359.       Model = NVDragon
  20360.       Turret = Turret
  20361.       TurretPitch = TURRETEL
  20362.       WeaponFireFXBone = PRIMARY WeaponA
  20363.       WeaponLaunchBone = PRIMARY WeaponA
  20364.       WeaponFireFXBone = SECONDARY WeaponA
  20365.       WeaponLaunchBone = SECONDARY WeaponA
  20366.     End
  20367.     ConditionState = REALLYDAMAGED
  20368.       Model = NVDragon_D
  20369.       Turret = Turret
  20370.       TurretPitch = TURRETEL
  20371.       WeaponFireFXBone = PRIMARY WeaponA
  20372.       WeaponLaunchBone = PRIMARY WeaponA
  20373.       WeaponFireFXBone = SECONDARY WeaponA
  20374.       WeaponLaunchBone = SECONDARY WeaponA
  20375.     End
  20376.     ConditionState = RUBBLE
  20377.       Model = NVDragon_D
  20378.       Turret = Turret
  20379.       TurretPitch = TURRETEL
  20380.       WeaponFireFXBone = PRIMARY WeaponA
  20381.       WeaponLaunchBone = PRIMARY WeaponA
  20382.       WeaponFireFXBone = SECONDARY WeaponA
  20383.       WeaponLaunchBone = SECONDARY WeaponA
  20384.     End
  20385.     
  20386.     TrackMarks              = EXTnkTrack.tga
  20387.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  20388.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  20389.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  20390.   End
  20391.  
  20392.   ; ***DESIGN parameters ***
  20393.   DisplayName      = OBJECT:Dragon
  20394.   Side = China
  20395.   EditorSorting   = VEHICLE
  20396.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  20397.  
  20398.   WeaponSet
  20399.     Conditions = None 
  20400.     Weapon = PRIMARY DragonTankFlameWeapon
  20401.     Weapon = SECONDARY DragonTankFireWallWeapon
  20402.     AutoChooseSources = SECONDARY NONE
  20403.   End
  20404.   WeaponSet
  20405.     Conditions = PLAYER_UPGRADE 
  20406.     Weapon = PRIMARY DragonTankFlameWeaponUpgraded
  20407.     Weapon = SECONDARY DragonTankFireWallWeaponUpgraded
  20408.     AutoChooseSources = SECONDARY NONE
  20409.     WeaponLockSharedAcrossSets = Yes ; This set is so similar to the default set that it can hold the weapon lock
  20410.   End
  20411.  
  20412.   ArmorSet
  20413.     Conditions      = None
  20414.     Armor           = DragonTankArmor
  20415.     DamageFX        = TankDamageFX
  20416.   End
  20417.   BuildCost       = 800
  20418.   BuildTime       = 10.0          ;in seconds    
  20419.   VisionRange     = 100
  20420.   ShroudClearingRange = 200
  20421.   Prerequisites
  20422.     Object = ChinaWarFactory
  20423.   End
  20424.  
  20425.   ExperienceValue = 50 50 100 150    ;Experience point value at each level
  20426.   ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
  20427.   IsTrainable = Yes             ;Can gain experience
  20428.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  20429.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  20430.   CommandSet    = ChinaTankDragonCommandSet
  20431.  
  20432.   ; *** AUDIO Parameters ***
  20433.   VoiceSelect = DragonTankVoiceSelect
  20434.   VoiceMove = DragonTankVoiceMove
  20435.   VoiceGuard = DragonTankVoiceMove
  20436.   VoiceAttack = DragonTankVoiceAttack
  20437.   SoundMoveStart = DragonTankMoveStart
  20438.   SoundMoveStartDamaged = DragonTankMoveStart
  20439.  
  20440.   UnitSpecificSounds
  20441.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  20442.     VoiceCreate     = DragonTankVoiceCreate
  20443.     TurretMoveStart = NoSound
  20444.     TurretMoveLoop = TurretMoveLoop
  20445.     VoiceEnter = DragonTankVoiceMove
  20446.     VoiceFlameLocation = DragonTankVoiceFireStorm
  20447.   End
  20448.  
  20449.  
  20450.   ; *** ENGINEERING Parameters ***
  20451.   RadarPriority = UNIT
  20452.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  20453.   
  20454.   Body = ActiveBody ModuleTag_02
  20455.     MaxHealth       = 280.0
  20456.     InitialHealth   = 280.0
  20457.   End
  20458.   Behavior = AIUpdateInterface ModuleTag_03
  20459.     Turret
  20460.       TurretTurnRate = 120
  20461.       TurretPitchRate = 120
  20462.       AllowsPitch = Yes
  20463.       MinPhysicalPitch = -15
  20464.  
  20465.       TurretFireAngleSweep = PRIMARY 10
  20466.       TurretFireAngleSweep = SECONDARY 60
  20467.       TurretSweepSpeedModifier = PRIMARY 0.5    ; Sweep slower than you turn (aim for 30 for art)
  20468.       TurretSweepSpeedModifier = SECONDARY 2.0  ; Sweep faster than you turn
  20469.       ControlledWeaponSlots = PRIMARY SECONDARY
  20470.     End
  20471.     AutoAcquireEnemiesWhenIdle = Yes
  20472.   End
  20473.   Locomotor = SET_NORMAL DragonLocomotor
  20474.   Behavior = PhysicsBehavior ModuleTag_04
  20475.     Mass = 50.0
  20476.   End
  20477.  
  20478.  
  20479.   Behavior = WeaponSetUpgrade ModuleTag_05
  20480.     TriggeredBy = Upgrade_ChinaBlackNapalm
  20481.   End
  20482.  
  20483.   ; A crushing defeat
  20484.   Behavior = DestroyDie ModuleTag_06
  20485.     DeathTypes = NONE +CRUSHED +SPLATTED
  20486.   End
  20487.   Behavior = FXListDie ModuleTag_07
  20488.     DeathTypes = NONE +CRUSHED +SPLATTED
  20489.     DeathFX = FX_CarCrush
  20490.   End
  20491.   Behavior = CreateObjectDie ModuleTag_08
  20492.     DeathTypes = NONE +CRUSHED +SPLATTED
  20493.     CreationList = OCL_CrusaderTank_CrushEffect
  20494.   End
  20495.   Behavior = CreateCrateDie ModuleTag_09
  20496.     CrateData = SalvageCrateData
  20497.     ;CrateData = EliteTankCrateData
  20498.     ;CrateData = HeroicTankCrateData
  20499.   End
  20500.  
  20501.  
  20502.   ; just explode death
  20503.   Behavior = SlowDeathBehavior ModuleTag_10
  20504.     DeathTypes = ALL -CRUSHED -SPLATTED
  20505. ;    ProbabilityModifier = 33
  20506.     DestructionDelay = 500
  20507.     DestructionDelayVariance = 500
  20508.     FX  = INITIAL  FX_BattleMasterExplosionOneFinal
  20509.     OCL = FINAL    OCL_DragonDebris
  20510.     FX  = FINAL    FX_DragonTankDeathExplosionFinal
  20511.   End
  20512.   
  20513.   ; Catch fire, and explode death
  20514. ;  Behavior = SlowDeathBehavior
  20515. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  20516. ;;    ProbabilityModifier = 33
  20517. ;    DestructionDelay = 2000
  20518. ;    DestructionDelayVariance = 300
  20519. ;    FX  = INITIAL  FX_CrusaderCatchFire
  20520. ;    OCL = FINAL    OCL_DragonDebris  
  20521. ;    FX  = FINAL    FX_GenericTankDeathExplosion 
  20522. ;  End
  20523.  
  20524.   ; Napalm spills out, and explode death
  20525. ;  Behavior = SlowDeathBehavior
  20526. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  20527. ;;    ProbabilityModifier = 34
  20528. ;    DestructionDelay = 2000
  20529. ;    DestructionDelayVariance = 300
  20530. ;    FX  = INITIAL  FX_DragonNapalmSpill
  20531. ;    OCL = FINAL    OCL_DragonDebris  
  20532. ;    FX  = FINAL    FX_DragonTankDeathExplosionFinal
  20533. ;  End
  20534.  
  20535.   ; Turret fly off death
  20536. ;  Behavior = SlowDeathBehavior
  20537. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  20538. ;;    ProbabilityModifier = 25
  20539. ;    DestructionDelay = 500
  20540. ;    DestructionDelayVariance = 100
  20541. ;    FX  = INITIAL  FX_GenericTankDeathEffect
  20542. ;    OCL = MIDPOINT OCL_DragonDebris
  20543. ;    FX  = FINAL    FX_GenericTankDeathExplosionFinal
  20544. ;  End
  20545.  
  20546.  
  20547.   Behavior = FlammableUpdate ModuleTag_12
  20548.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  20549.     AflameDamageAmount = 3       ; taking this much damage...
  20550.     AflameDamageDelay = 500       ; this often.
  20551.   End
  20552.  
  20553.   Behavior = TransitionDamageFX ModuleTag_13
  20554. ;   ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  20555.     ReallyDamagedParticleSystem2 = Bone:Smoke RandomBone:Yes Psys:DragonTransitionFire
  20556.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_DragonDamageTransition
  20557.   End
  20558.  
  20559.   Geometry = BOX
  20560.   GeometryMajorRadius = 15.0
  20561.   GeometryMinorRadius = 10.0
  20562.   GeometryHeight = 11.0   ; Height set to allow clear clipping of projectile stream  
  20563.   GeometryIsSmall = Yes
  20564.   Shadow = SHADOW_VOLUME    
  20565.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  20566.  
  20567. End
  20568.  
  20569. ;------------------------------------------------------------------------------
  20570. Object ChinaTankDragonDeadHull
  20571.  
  20572.   ; *** ART Parameters ***
  20573.   Draw = W3DModelDraw ModuleTag_01
  20574.     OkToChangeModelColor = Yes
  20575.  
  20576.     ConditionState = NONE
  20577.       Model = NVDragon_D1
  20578.     End
  20579.   End
  20580.  
  20581.   ; ***DESIGN parameters ***
  20582.   DisplayName      = OBJECT:Overlord
  20583.   Side = China
  20584.   EditorSorting   = SYSTEM
  20585.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  20586.  
  20587.   ; *** AUDIO Parameters ***
  20588.   ; *** ENGINEERING Parameters ***
  20589.   RadarPriority = UNIT
  20590.   KindOf = CAN_CAST_REFLECTIONS NO_COLLIDE HULK
  20591.  
  20592.   Body = ActiveBody ModuleTag_02
  20593.     MaxHealth       = 1.0
  20594.     InitialHealth   = 1.0
  20595.   End
  20596.  
  20597.  
  20598.   Behavior = PhysicsBehavior ModuleTag_03
  20599.     Mass = 50
  20600.     AllowBouncing = Yes
  20601.   End
  20602.  
  20603.   Behavior = LifetimeUpdate ModuleTag_04
  20604.     MinLifetime = 0   ; min lifetime in msec
  20605.     MaxLifetime = 0   ; max lifetime in msec
  20606.   End
  20607.  
  20608.  
  20609.   Behavior = SlowDeathBehavior ModuleTag_05
  20610.     SinkDelay = 14000
  20611.     SinkRate = 2     ; in Dist/Sec
  20612.     DestructionDelay = 20000
  20613.   End
  20614.  
  20615.   Behavior = TransitionDamageFX ModuleTag_06
  20616.     RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  20617.   End
  20618.  
  20619.   Geometry = BOX
  20620.   GeometryMajorRadius = 9.0
  20621.   GeometryMinorRadius = 6.0
  20622.   GeometryHeight = 7.5     
  20623.   GeometryIsSmall = Yes    
  20624.  
  20625. End
  20626.  
  20627. ;------------------------------------------------------------------------------
  20628. Object DragonTankFlameProjectile
  20629.  
  20630. ; Explanation - Particles can't do damage, so this is a fast shooting low 
  20631. ; damage invisible missile launcher with a flame trail for exhaust
  20632.  
  20633.   ; *** ART Parameters ***
  20634.   Draw = W3DModelDraw ModuleTag_01
  20635.     OkToChangeModelColor = Yes
  20636.     ConditionState = NONE
  20637.       Model = NULL 
  20638.     End
  20639.   End
  20640.   ; Must have a draw module to be allowed to draw detonation FX
  20641.  
  20642.   ; ***DESIGN parameters ***
  20643.   EditorSorting     = SYSTEM
  20644.   VisionRange       = 0.0  
  20645.   ArmorSet
  20646.     Conditions      = None
  20647.     Armor           = ProjectileArmor
  20648.     DamageFX        = None
  20649.   End
  20650.  
  20651.   ; *** ENGINEERING Parameters ***
  20652.   KindOf            = PROJECTILE
  20653.   Body              = ActiveBody ModuleTag_02
  20654.     MaxHealth       = 100.0
  20655.     InitialHealth   = 100.0
  20656.   End
  20657.  
  20658.   Behavior = DestroyDie ModuleTag_03
  20659.     ;nothing
  20660.   End
  20661.     
  20662.   Behavior = PhysicsBehavior ModuleTag_04
  20663.     Mass = 1
  20664.     AllowCollideForce = No  ; flames collide, but never apply forces when they do so
  20665.   End
  20666.   Behavior = MissileAIUpdate ModuleTag_05
  20667.     TryToFollowTarget = No 
  20668.     FuelLifetime = 350
  20669.     DetonateOnNoFuel = Yes
  20670.     InitialVelocity = 120                ; in dist/sec
  20671.     IgnitionDelay = 0
  20672.     DistanceToTravelBeforeTurning = 2
  20673.     GarrisonHitKillRequiredKindOf = INFANTRY
  20674.     GarrisonHitKillForbiddenKindOf = NONE
  20675.     GarrisonHitKillCount = 2
  20676.     GarrisonHitKillFX = FX_DragonFlameGarrisonBuildingHit
  20677.     DistanceToTargetForLock = 0  ; If it gets within 100 of the target, it kills the target.
  20678.  
  20679.   End
  20680.   Locomotor = SET_NORMAL DragonTankFlameLocomotor
  20681.  
  20682.   Behavior = BoneFXUpdate ModuleTag_06
  20683.     PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail01 ; Covers gap at beginning of line
  20684.     PristineParticleSystem2  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail02
  20685.     PristineParticleSystem3  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail03
  20686.     PristineParticleSystem4 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail04
  20687.     PristineParticleSystem5 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail06
  20688.  
  20689.     PristineParticleSystem6 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerSmoke01
  20690.   End
  20691.  
  20692.   Behavior = BoneFXDamage ModuleTag_07
  20693.     ;nothing
  20694.   End
  20695.  
  20696.   Geometry = Sphere
  20697.   GeometryIsSmall = Yes
  20698.   GeometryMajorRadius = 2.0
  20699.  
  20700. End
  20701.  
  20702. ;------------------------------------------------------------------------------
  20703. Object FlamethrowerProjectileStream
  20704.  
  20705.   ; *** ART Parameters ***
  20706.   Draw = W3DProjectileStreamDraw ModuleTag_01
  20707.     Texture = EXfthrowerStream.tga
  20708.     Width = 1.5
  20709.     TileFactor = 3.0 ; put the texture on the line segment this many times
  20710.     ScrollRate = 2.0; scroll the texture offset this fast
  20711.     MaxSegments = 4 ; only play the first X if there are a ton of them. 0 means play all
  20712.   End
  20713.  
  20714.   ; *** ENGINEERING Parameters ***
  20715.   KindOf = INERT
  20716.   Behavior = ProjectileStreamUpdate ModuleTag_02
  20717.     ;nothing
  20718.   End
  20719.  
  20720. End
  20721.  
  20722. ;------------------------------------------------------------------------------
  20723. Object DragonTankFlameProjectileUpgraded
  20724.  
  20725. ; Explanation - Particles can't do damage, so this is a fast shooting low 
  20726. ; damage invisible missile launcher with a flame trail for exhaust
  20727.  
  20728.   ; *** ART Parameters ***
  20729.   Draw = W3DModelDraw ModuleTag_01
  20730.     OkToChangeModelColor = Yes
  20731.     ConditionState = NONE
  20732.       Model = NULL 
  20733.     End
  20734.   End
  20735.   ; Must have a draw module to be allowed to draw detonation FX
  20736.  
  20737.   ; ***DESIGN parameters ***
  20738.   EditorSorting     = SYSTEM
  20739.   VisionRange       = 0.0  
  20740.   ArmorSet
  20741.     Conditions      = None
  20742.     Armor           = ProjectileArmor
  20743.     DamageFX        = None
  20744.   End
  20745.  
  20746.   ; *** ENGINEERING Parameters ***
  20747.   KindOf            = PROJECTILE
  20748.   Body              = ActiveBody ModuleTag_02
  20749.     MaxHealth       = 100.0
  20750.     InitialHealth   = 100.0
  20751.   End
  20752.  
  20753.   Behavior = DestroyDie ModuleTag_03
  20754.     ;nothing
  20755.   End
  20756.     
  20757.   Behavior = PhysicsBehavior ModuleTag_04
  20758.     Mass = 1
  20759.     AllowCollideForce = No  ; flames collide, but never apply forces when they do so
  20760.   End
  20761.   Behavior = MissileAIUpdate ModuleTag_05
  20762.     TryToFollowTarget = No 
  20763.     FuelLifetime = 350
  20764.     DetonateOnNoFuel = Yes
  20765.     InitialVelocity = 120                ; in dist/sec
  20766.     IgnitionDelay = 0
  20767.     DistanceToTravelBeforeTurning = 2
  20768.     GarrisonHitKillRequiredKindOf = INFANTRY
  20769.     GarrisonHitKillForbiddenKindOf = NONE
  20770.     GarrisonHitKillCount = 2
  20771.     GarrisonHitKillFX = FX_DragonFlameGarrisonBuildingHit
  20772.     DistanceToTargetForLock = 0  ; If it gets within 100 of the target, it kills the target.
  20773.  
  20774.   End
  20775.   Locomotor = SET_NORMAL DragonTankFlameLocomotor
  20776.  
  20777.   Behavior = BoneFXUpdate ModuleTag_06
  20778.     PristineParticleSystem1  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail01Upgraded ; Covers gap at beginning of line
  20779.     PristineParticleSystem2  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail02Upgraded
  20780.     PristineParticleSystem3  = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail03Upgraded
  20781.     PristineParticleSystem4 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail04Upgraded
  20782.     PristineParticleSystem5 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerTrail06Upgraded
  20783.  
  20784.     PristineParticleSystem6 = bone:NULL OnlyOnce:Yes  0  0 PSys:FlameThrowerSmoke01
  20785.   End
  20786.  
  20787.   Behavior = BoneFXDamage ModuleTag_07
  20788.     ;nothing
  20789.   End
  20790.  
  20791.   Geometry = Sphere
  20792.   GeometryIsSmall = Yes
  20793.   GeometryMajorRadius = 2.0
  20794.  
  20795. End
  20796.  
  20797. ;------------------------------------------------------------------------------
  20798. Object FlamethrowerProjectileStreamUpgraded
  20799.  
  20800.   ; *** ART Parameters ***
  20801.   Draw = W3DProjectileStreamDraw ModuleTag_01
  20802.     Texture = EXfthrowerStreamUpgraded.tga
  20803.     Width = 1.5
  20804.     TileFactor = 3.0 ; put the texture on the line segment this many times
  20805.     ScrollRate = 2.0; scroll the texture offset this fast
  20806.     MaxSegments = 4 ; only play the first X if there are a ton of them. 0 means play all
  20807.   End
  20808.  
  20809.   ; *** ENGINEERING Parameters ***
  20810.   KindOf = INERT
  20811.   Behavior = ProjectileStreamUpdate ModuleTag_02
  20812.     ;nothing
  20813.   End
  20814.  
  20815. End
  20816.  
  20817. ;------------------------------------------------------------------------------
  20818. Object PointDefenseLaserBeam
  20819.   ; *** ART Parameters ***
  20820.   Draw = W3DLaserDraw ModuleTag_01
  20821.     Texture = EXLaser.tga
  20822.     NumBeams = 3                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
  20823.  
  20824.     InnerBeamWidth = 0.4            ;The total width of beam
  20825.     InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
  20826.  
  20827.     OuterBeamWidth = 1.2            ;The total width of beam
  20828.     OuterColor = R:255 G:0 B:0  A:150 ;The outside color of the laser (cool)
  20829.     
  20830.     ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
  20831.     ;FadeLifetime = 0                ;Laser will fade and delete.
  20832.  
  20833.     ;@todo -- add shot ability functionality (instead of instant point A to B)
  20834.   End
  20835.  
  20836.   KindOf = IMMOBILE
  20837.   ClientUpdate = LaserUpdate ModuleTag_02
  20838.     MuzzleParticleSystem = PaladinPointDefenseLaserFlare
  20839.     ParentFireBoneName   = Laser
  20840.     ParentFireBoneOnTurret = Yes
  20841.   End
  20842.  
  20843.   ;Used as a weapon, this is essentially a fast pulse laser. Adjusting
  20844.   ;the lifetime values will determine how long it renders. The damage
  20845.   ;is applied immediately, so lifetime doesn't matter.
  20846.   Behavior = LifetimeUpdate ModuleTag_03
  20847.     MinLifetime = 95   ; min lifetime in msec
  20848.     MaxLifetime = 95   ; max lifetime in msec
  20849.   End
  20850. End
  20851.  
  20852.  
  20853. ;------------------------------------------------------------------------------
  20854. Object LaserBeam
  20855.   ; *** ART Parameters ***
  20856.   Draw = W3DLaserDraw ModuleTag_01
  20857.     Texture = EXLaser.tga
  20858.     NumBeams = 3                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
  20859.  
  20860.     InnerBeamWidth = 0.4            ;The total width of beam
  20861.     InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
  20862.  
  20863.     OuterBeamWidth = 1.2            ;The total width of beam
  20864.     OuterColor = R:255 G:0 B:0  A:150 ;The outside color of the laser (cool)
  20865.     
  20866.     ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
  20867.     ;FadeLifetime = 0                ;Laser will fade and delete.
  20868.  
  20869.     ;@todo -- add shot ability functionality (instead of instant point A to B)
  20870.   End
  20871.  
  20872.   KindOf = IMMOBILE
  20873.   ClientUpdate = LaserUpdate ModuleTag_02
  20874.     MuzzleParticleSystem = GenericLaserFlare
  20875.     ParentFireBoneName   = Muzzle01
  20876.     TargetParticleSystem = GenericLaserFlare
  20877.   End
  20878. End
  20879.  
  20880. ;------------------------------------------------------------------------------
  20881. Object ParticleUplinkCannon_MediumConnectorLaser
  20882.   ; *** ART Parameters ***
  20883.   Draw = W3DLaserDraw ModuleTag_01
  20884.     Texture = EXLaser.tga
  20885.     NumBeams = 4                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
  20886.  
  20887.     InnerBeamWidth = 0.4            ;The total width of beam
  20888.     InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
  20889.  
  20890.     OuterBeamWidth = 1.2            ;The total width of beam
  20891.     OuterColor = R:0 G:0 B:255  A:150 ;The outside color of the laser (cool)
  20892.     
  20893.     ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
  20894.     ;FadeLifetime = 0                ;Laser will fade and delete.
  20895.  
  20896.     ;@todo -- add shot ability functionality (instead of instant point A to B)
  20897.   End
  20898.  
  20899.   KindOf = IMMOBILE
  20900.  
  20901.   ClientUpdate = LaserUpdate ModuleTag_02
  20902.     ;MuzzleParticleSystem = None
  20903.     ;TargetParticleSystem = None
  20904.   End
  20905. End
  20906.  
  20907. ;------------------------------------------------------------------------------
  20908. Object ParticleUplinkCannon_IntenseConnectorLaser
  20909.   ; *** ART Parameters ***
  20910.   Draw = W3DLaserDraw ModuleTag_01
  20911.     Texture = EXLaser.tga
  20912.     NumBeams = 5                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
  20913.  
  20914.     InnerBeamWidth = 0.6            ;The total width of beam
  20915.     InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
  20916.  
  20917.     OuterBeamWidth = 2.0            ;The total width of beam
  20918.     OuterColor = R:0 G:0 B:255  A:150 ;The outside color of the laser (cool)
  20919.     
  20920.     ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
  20921.     ;FadeLifetime = 0                ;Laser will fade and delete.
  20922.  
  20923.     ;@todo -- add shot ability functionality (instead of instant point A to B)
  20924.   End
  20925.  
  20926.   KindOf = IMMOBILE
  20927.  
  20928.   ClientUpdate = LaserUpdate ModuleTag_02
  20929.     ;MuzzleParticleSystem = None
  20930.     ;TargetParticleSystem = None
  20931.   End
  20932. End
  20933.  
  20934. ;------------------------------------------------------------------------------
  20935. Object ParticleUplinkCannon_OrbitalLaser
  20936.   ; *** ART Parameters ***
  20937.   Draw = W3DLaserDraw ModuleTag_01
  20938.     Texture = EXNoise02.tga
  20939.     NumBeams = 12                    ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data.
  20940.  
  20941.     Tile = Yes                        ;The height of the texture will determine how many times to tile the texture to fit without scaling.
  20942.     ScrollRate = -1.75                ;Scrolls the texture offset this fast -- towards(-) away(+)
  20943.     TilingScalar = 0.15               ;Stretches tiling if value > 1.0, otherwise shrinks it (1.0 is natural)
  20944.  
  20945.     InnerBeamWidth = 0.6            ;The total width of beam
  20946.     InnerColor = R:255 G:255 B:255 A:250  ;The inside color of the laser (hot)
  20947.  
  20948.     OuterBeamWidth = 26.0            ;The total width of beam
  20949.     OuterColor = R:0 G:0 B:255  A:150 ;The outside color of the laser (cool)
  20950.     
  20951.     ;MaxIntensityLifetime = 2000     ;Laser stays at max intensity for specified time in ms.
  20952.     ;FadeLifetime = 0                ;Laser will fade and delete.
  20953.  
  20954.     ;@todo -- add shot ability functionality (instead of instant point A to B)
  20955.   End
  20956.  
  20957.   ; *** DESIGN Parameters ***
  20958.   VisionRange = 100
  20959.   ShroudClearingRange = 120
  20960.  
  20961.   ; *** ENGINEERING Parameters ***
  20962.   KindOf = IMMOBILE
  20963.  
  20964.   ClientUpdate = LaserUpdate ModuleTag_02
  20965.     ;MuzzleParticleSystem = None
  20966.     ;TargetParticleSystem = None
  20967.   End
  20968. End
  20969.  
  20970.  
  20971.  
  20972. ;------------------------------------------------------------------------------
  20973. Object BinaryDataStream
  20974.   ; *** ART Parameters ***
  20975.   Draw = W3DLaserDraw ModuleTag_01
  20976.     Texture = EXBinaryStream.tga
  20977.     NumBeams = 1                      ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data. Current max: 10
  20978.     InnerBeamWidth = 4                ;The total width of beam
  20979.     InnerColor = R:0 G:255 B:0 A:180  ;The inside color of the laser (hot)
  20980.     Tile = Yes                        ;The height of the texture will determine how many times to tile the texture to fit without scaling.
  20981.     ScrollRate = -0.25                 ;Scrolls the texture offset this fast -- towards(-) away(+)
  20982.     Segments = 20                     ;Number of segments -- more segments give smoother curve (but more joints) Current max: 20
  20983.     ArcHeight = 30.0                  ;The height of the arc
  20984.     SegmentOverlapRatio = 0.0000      ;This value overlaps(+) or separates(-) the segments by ratio
  20985.     TilingScalar = 0.25                ;Stretches tiling if value > 1.0, otherwise shrinks it (1.0 is natural)
  20986.  End
  20987.  
  20988.   KindOf = IMMOBILE
  20989.   ClientUpdate = LaserUpdate ModuleTag_02
  20990.     ;nothing
  20991.   End
  20992. End
  20993.  
  20994. ;------------------------------------------------------------------------------
  20995. Object ChinaVehicleTroopCrawler
  20996.  
  20997.   ; *** ART Parameters ***
  20998.   SelectPortrait         = SNTransport_L
  20999.   ButtonImage            = SNTransport
  21000.   
  21001.   ;UpgradeCameo1 = NONE
  21002.   ;UpgradeCameo2 = NONE
  21003.   ;UpgradeCameo3 = NONE
  21004.   ;UpgradeCameo4 = NONE
  21005.   ;UpgradeCameo5 = NONE
  21006.   
  21007.   Draw = W3DTruckDraw ModuleTag_01
  21008.     OkToChangeModelColor = Yes
  21009.     ConditionState = NONE
  21010.       Model = NVTCrawler
  21011.       ;note, the IRSonar particle system is added in StealthDetectorUpdate.cpp, not here
  21012.     End
  21013.     ConditionState       = REALLYDAMAGED RUBBLE ; THIS IS VERY IMPORTANT... DO NOT REMOVE 'RUBBLE' UNDER PENALTY OF DEATH MLorenzen
  21014.                                                 ; @todo find out why a non-animating model like this has such trouble matching
  21015.                                                 ; reallydamaged against moving against rubble, etc.
  21016.       Model              = NVTCrawler_D
  21017.     End
  21018.  
  21019.     TrackMarks = EXTireTrack.tga
  21020.  
  21021.     Dust = RocketBuggyDust
  21022.     DirtSpray = RocketBuggyDirtSpray
  21023.     ; PowerslideSpray = RocketBuggyDirtPowerSlide doesn't powerslide
  21024.  
  21025.     ; These parameters are only used if the model has a separate suspension, 
  21026.     ; and the locomotor has HasSuspension = Yes.
  21027.     LeftFrontTireBone     = Wheel01
  21028.     RightFrontTireBone    = Wheel08
  21029.     LeftRearTireBone      = Wheel03
  21030.     RightRearTireBone     = Wheel05
  21031.     MidLeftFrontTireBone  = Wheel02
  21032.     MidRightFrontTireBone = Wheel07
  21033.     MidLeftRearTireBone   = Wheel04
  21034.     MidRightRearTireBone  = Wheel06
  21035.  
  21036.     TireRotationMultiplier      = 0.2   ; this * speed = rotation.
  21037.     PowerslideRotationAddition  = 0   ; This vehicle doesn't powerslide.
  21038.  
  21039.   End
  21040.  
  21041.  
  21042.   ; ***DESIGN parameters ***
  21043.   DisplayName      = OBJECT:TroopCrawler
  21044.   Side = China
  21045.   EditorSorting   = VEHICLE
  21046.   TransportSlotCount = 8                 ;Just enough to fit into a Chinook.
  21047.   WeaponSet
  21048.     Conditions = None 
  21049.     Weapon = PRIMARY TroopCrawlerAssault
  21050.   End
  21051.   ArmorSet
  21052.     Conditions      = None
  21053.     Armor           = TankArmor
  21054.     DamageFX        = TankDamageFX
  21055.   End
  21056.   BuildCost       = 1400
  21057.   BuildTime       = 15.0          ;in seconds    
  21058.   VisionRange     = 175           ;Needs to see farther and match it's weapon range -- else troop crawlers will get slaughtered against tanks!
  21059.   ShroudClearingRange = 400
  21060.   Prerequisites
  21061.     Object = ChinaWarFactory
  21062.   End
  21063.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  21064.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  21065.   CommandSet = ChinaTroopCrawlerCommandSet
  21066.  
  21067.   ; *** AUDIO Parameters ***
  21068.   VoiceSelect = TroopCrawlerVoiceSelect
  21069.   VoiceMove = TroopCrawlerVoiceMove
  21070.   VoiceGuard = TroopCrawlerVoiceMove
  21071.   VoiceAttack = TroopCrawlerVoiceAttack
  21072.   SoundMoveStart = TroopCrawlerMoveStart
  21073.   SoundMoveStartDamaged = TroopCrawlerMoveStart
  21074.   SoundEnter = HumveeEnter
  21075.   SoundExit = HumveeExit
  21076.   UnitSpecificSounds
  21077.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  21078.     VoiceCreate     = TroopCrawlerVoiceCreate
  21079.     TurretMoveStart = NoSound
  21080.     TurretMoveLoop = TurretMoveLoop
  21081.     TruckLandingSound = NoSound ;RocketBuggyLand
  21082.     TruckPowerslideSound = NoSound ;RocketBuggyPowerslide
  21083.     VoiceCrush = TroopCrawlerVoiceCrush
  21084.     VoiceUnload   = TroopCrawlerVoiceUnload
  21085.     VoiceEnter = TroopCrawlerVoiceMove
  21086.   End
  21087.  
  21088.  
  21089.   ; *** ENGINEERING Parameters ***
  21090.   RadarPriority = UNIT
  21091.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS TRANSPORT VEHICLE SCORE
  21092.   
  21093.   Body = ActiveBody ModuleTag_02
  21094.     MaxHealth       = 240.0
  21095.     InitialHealth   = 240.0
  21096.   End
  21097.   Behavior = StealthDetectorUpdate ModuleTag_03
  21098.     DetectionRate             = 900   ; how often to rescan for stealthed things in my sight (msec)
  21099.     ;DetectionRange           = ??? ;Dustin, enable this for independant balancing!
  21100.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  21101.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  21102.     PingSound                 = IRPing
  21103.     LoudPingSound             = IRPingLoud
  21104.     IRParticleSysName         = IRDetectSonar
  21105.     IRBrightParticleSysName   = IRDetectSonarBright
  21106.     IRGridParticleSysName     = IRDetectGrid
  21107.     IRBeaconParticleSysName   = IRLenzflare
  21108.     IRParticleSysBone         = IRFX
  21109.   End
  21110.  
  21111. ;OBSOLETE
  21112. ;  Behavior = AIUpdateInterface ModuleTag_04
  21113. ;    Turret
  21114. ;      ControlledWeaponSlots = PRIMARY
  21115. ;    End
  21116. ;  End
  21117.   Behavior = AssaultTransportAIUpdate ModuleTag_NewAI
  21118.     MembersGetHealedAtLifeRatio = 0.5
  21119.   End
  21120.  
  21121.   Locomotor = SET_NORMAL TroopCrawlerLocomotor
  21122.   Behavior = PhysicsBehavior ModuleTag_05
  21123.     Mass = 50.0
  21124.   End
  21125.   Behavior = TransportContain ModuleTag_06
  21126.     Slots                 = 8
  21127.     InitialPayload        = ChinaInfantryRedguard 8
  21128.     ScatterNearbyOnExit   = No
  21129.     HealthRegen%PerSec    = 10
  21130.     DamagePercentToUnits  = 10%
  21131.     AllowInsideKindOf     = INFANTRY
  21132.     ExitDelay         = 250
  21133.     NumberOfExitPaths = 3 ; Defaults to 1.  Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn
  21134.     GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
  21135.   End
  21136.  
  21137.   Behavior = SlowDeathBehavior ModuleTag_07
  21138.     DeathTypes = ALL -CRUSHED -SPLATTED
  21139.     DestructionDelay = 1
  21140.     FX  = FINAL    FX_SupplyTruckExplosionOneFinal
  21141.     OCL = FINAL    OCL_FinalTroopCrawlerDebris
  21142.   End
  21143.  
  21144.   Behavior                 = TransitionDamageFX ModuleTag_08
  21145.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  21146.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
  21147.   End
  21148.  
  21149.   Behavior = DestroyDie ModuleTag_09
  21150.     DeathTypes = NONE +CRUSHED +SPLATTED
  21151.   End
  21152.  
  21153.   Behavior = FXListDie ModuleTag_10
  21154.     DeathTypes = NONE +CRUSHED +SPLATTED
  21155.     DeathFX = FX_CarCrush
  21156.   End
  21157.  
  21158.   ; A crushing defeat
  21159.   Behavior = FXListDie ModuleTag_11
  21160.     DeathTypes = NONE +CRUSHED +SPLATTED
  21161.     DeathFX = FX_CarCrush
  21162.   End
  21163.  
  21164.   Behavior = CreateCrateDie ModuleTag_12
  21165.     CrateData = SalvageCrateData
  21166.     ;CrateData = EliteTankCrateData
  21167.     ;CrateData = HeroicTankCrateData
  21168.   End
  21169.  
  21170.   Behavior = FlammableUpdate ModuleTag_21
  21171.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  21172.     AflameDamageAmount = 3       ; taking this much damage...
  21173.     AflameDamageDelay = 500       ; this often.
  21174.   End
  21175.  
  21176.   Geometry = BOX
  21177.   GeometryMajorRadius = 22.0
  21178.   GeometryMinorRadius = 9.0
  21179.   GeometryHeight = 13.0     
  21180.   GeometryIsSmall = No
  21181.   Shadow = SHADOW_VOLUME
  21182.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
  21183.  
  21184. End
  21185.  
  21186. ;------------------------------------------------------------------------------
  21187. Object ChinaVehicleTroopCrawlerDeadHull
  21188.  
  21189.   ; *** ART Parameters ***
  21190.   Draw = W3DModelDraw ModuleTag_01
  21191.     OkToChangeModelColor = Yes
  21192.  
  21193.     ConditionState = NONE
  21194.       Model = NVTCrawler_D1
  21195.     End
  21196.   End
  21197.  
  21198.   ; ***DESIGN parameters ***
  21199.   Side = China
  21200.   EditorSorting   = SYSTEM
  21201.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  21202.  
  21203.   ; *** AUDIO Parameters ***
  21204.   ; *** ENGINEERING Parameters ***
  21205.   RadarPriority = UNIT
  21206.   KindOf = CAN_CAST_REFLECTIONS IMMOBILE NO_COLLIDE HULK
  21207.  
  21208.   Body = ActiveBody ModuleTag_02
  21209.     MaxHealth       = 1.0
  21210.     InitialHealth   = 1.0
  21211.   End
  21212.  
  21213.   Behavior = PhysicsBehavior ModuleTag_Hulk03
  21214.     Mass = 100.0
  21215.     AllowBouncing = Yes
  21216.     KillWhenRestingOnGround = Yes
  21217.   End
  21218.   Behavior = LifetimeUpdate ModuleTag_Hulk04
  21219.     MinLifetime = 1500   ; min lifetime in msec
  21220.     MaxLifetime = 1600   ; max lifetime in msec
  21221.   End
  21222.  
  21223.   Behavior = SlowDeathBehavior ModuleTag_Hulk05
  21224.     SinkDelay         = 1500
  21225.     SinkRate          = 2     ; in Dist/Sec
  21226.     DestructionDelay  = 8000
  21227.   End
  21228.  
  21229.  
  21230.   Geometry = BOX
  21231.   GeometryMajorRadius = 9.0
  21232.   GeometryMinorRadius = 6.0
  21233.   GeometryHeight = 7.5     
  21234.   GeometryIsSmall = Yes    
  21235.  
  21236. End
  21237.  
  21238. ;------------------------------------------------------------------------------
  21239. Object ChinaVehicleTroopCrawlerEmpty
  21240.  
  21241.   ; *** ART Parameters ***
  21242.   SelectPortrait         = SNTransport_L
  21243.   ButtonImage            = SNTransport
  21244.   Draw = W3DTankDraw ModuleTag_01
  21245.     OkToChangeModelColor = Yes
  21246.     TrackMarks = EXTireTrack.tga
  21247.     ConditionState = NONE
  21248.       Model = NVTCrawler
  21249.     End
  21250.     ConditionState       = REALLYDAMAGED
  21251.       Model              = NVTCrawler_D
  21252.     End
  21253.     ConditionState       = RUBBLE
  21254.       Model              = NVTCrawler_D
  21255.     End
  21256.   End
  21257.  
  21258.   ; ***DESIGN parameters ***
  21259.   DisplayName      = OBJECT:TroopCrawler
  21260.   Side = China
  21261.   EditorSorting   = VEHICLE
  21262.   TransportSlotCount = 8                 ;how many "slots" we take in a transport (0 == not transportable)
  21263.   WeaponSet
  21264.     Conditions = None 
  21265.     Weapon = PRIMARY TroopCrawlerAssault
  21266.   End
  21267.   ArmorSet
  21268.     Conditions      = None
  21269.     Armor           = TankArmor
  21270.     DamageFX        = TankDamageFX
  21271.   End
  21272.   BuildCost       = 700
  21273.   BuildTime       = 1.0          ;in seconds    
  21274.   VisionRange     = 150
  21275.   ShroudClearingRange = 150
  21276.   Prerequisites
  21277.     Object = ChinaWarFactory
  21278.   End
  21279.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  21280.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  21281.   CommandSet = ChinaTroopCrawlerCommandSet
  21282.  
  21283.   ; *** AUDIO Parameters ***
  21284.   VoiceSelect = TroopCrawlerVoiceSelect
  21285.   VoiceMove = TroopCrawlerVoiceMove
  21286.   VoiceGuard = TroopCrawlerVoiceMove
  21287.   VoiceAttack = TroopCrawlerVoiceAttack
  21288.   SoundMoveStart = TroopCrawlerMoveStart
  21289.   SoundMoveStartDamaged = TroopCrawlerMoveStart
  21290.  
  21291.   UnitSpecificSounds
  21292.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  21293.     VoiceCreate     = TroopCrawlerVoiceCreate
  21294.     TurretMoveStart = NoSound
  21295.     TurretMoveLoop  = TurretMoveLoop
  21296.     VoiceUnload     = TroopCrawlerVoiceUnload
  21297.     VoiceEnter = TroopCrawlerVoiceMove
  21298.   End
  21299.  
  21300.  
  21301.   ; *** ENGINEERING Parameters ***
  21302.   RadarPriority = UNIT
  21303.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS TRANSPORT VEHICLE SCORE
  21304.   
  21305.   Body = ActiveBody ModuleTag_02
  21306.     MaxHealth       = 200.0
  21307.     InitialHealth   = 200.0
  21308.   End
  21309.   Behavior = AIUpdateInterface ModuleTag_03
  21310.     Turret
  21311.       ControlledWeaponSlots = PRIMARY
  21312.     End
  21313.   End
  21314.   Locomotor = SET_NORMAL TroopCrawlerLocomotor
  21315.   Behavior = PhysicsBehavior ModuleTag_04
  21316.     Mass = 50.0
  21317.   End
  21318.  
  21319.  
  21320.   Behavior = SlowDeathBehavior  ModuleTag_05
  21321.     DeathTypes = ALL -CRUSHED -SPLATTED
  21322.     ProbabilityModifier = 5
  21323.     ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
  21324.     DestructionDelay = 0
  21325.     DestructionDelayVariance = 200
  21326.     FX = FINAL FX_BuggyNewDeathExplosion
  21327.     OCL = FINAL OCL_FinalTroopCrawlerDebris
  21328.   End
  21329.     
  21330.   Behavior = TransportContain ModuleTag_06
  21331.     Slots = 8
  21332.     HealthRegen%PerSec = 10
  21333.     DamagePercentToUnits = 10%
  21334.     AllowInsideKindOf  = INFANTRY
  21335.   End
  21336.  
  21337.  
  21338.   ; A crushing defeat
  21339.   Behavior = FXListDie ModuleTag_07
  21340.     DeathTypes = NONE +CRUSHED +SPLATTED
  21341.     DeathFX = FX_CarCrush
  21342.   End
  21343.   Behavior = CreateObjectDie ModuleTag_08
  21344.     DeathTypes = NONE +CRUSHED +SPLATTED
  21345.     CreationList = OCL_CrusaderTank_CrushEffect
  21346.   End
  21347.   Behavior = CreateCrateDie ModuleTag_09
  21348.     CrateData = SalvageCrateData
  21349.     ;CrateData = EliteTankCrateData
  21350.     ;CrateData = HeroicTankCrateData
  21351.   End
  21352.  
  21353.   Behavior = FlammableUpdate ModuleTag_21
  21354.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  21355.     AflameDamageAmount = 3       ; taking this much damage...
  21356.     AflameDamageDelay = 500       ; this often.
  21357.   End
  21358.  
  21359.   Geometry = BOX
  21360.   GeometryMajorRadius = 22.0
  21361.   GeometryMinorRadius = 9.0
  21362.   GeometryHeight = 13.0     
  21363.   GeometryIsSmall = No
  21364.   Shadow = SHADOW_VOLUME 
  21365.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length   
  21366.  
  21367. End
  21368.  
  21369.  
  21370. ;------------------------------------------------------------------------------
  21371. Object ChinaVehicleInfernoCannon
  21372.  
  21373.   ; *** ART Parameters ***
  21374.   SelectPortrait         = SNInferno_L
  21375.   ButtonImage            = SNInferno
  21376.   
  21377.   UpgradeCameo1 = Upgrade_ChinaBlackNapalm
  21378.   ;UpgradeCameo2 = NONE
  21379.   ;UpgradeCameo3 = NONE
  21380.   ;UpgradeCameo4 = NONE
  21381.   ;UpgradeCameo5 = NONE
  21382.   
  21383.   Draw                    = W3DTankDraw ModuleTag_01
  21384.     OkToChangeModelColor  = Yes
  21385.     ConditionState        = NONE
  21386.       Model               = NVInferno
  21387.       Turret              = Turret
  21388.       TurretPitch         = TurretEL
  21389.       WeaponFireFXBone    = PRIMARY Muzzle
  21390.       WeaponRecoilBone    = PRIMARY Barrel
  21391.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  21392.       WeaponLaunchBone = PRIMARY Muzzle
  21393.     End
  21394.     
  21395.     ConditionState        = RUBBLE REALLYDAMAGED
  21396.       Model               = NVInferno_D
  21397.       Turret              = Turret
  21398.       TurretPitch         = TurretEL
  21399.       WeaponFireFXBone    = PRIMARY Muzzle
  21400.       WeaponRecoilBone    = PRIMARY Barrel
  21401.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  21402.       WeaponLaunchBone = PRIMARY Muzzle
  21403.     End
  21404.     
  21405.     TrackMarks           = EXTnkTrack.tga
  21406.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  21407.   End
  21408.  
  21409.   ; ***DESIGN parameters ***
  21410.   DisplayName        = OBJECT:InfernoCannon
  21411.   Side               = China
  21412.   EditorSorting      = VEHICLE
  21413.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  21414.   WeaponSet
  21415.     Conditions       = None 
  21416.     Weapon           = PRIMARY InfernoCannonGun
  21417.   End
  21418.   WeaponSet
  21419.     Conditions       = PLAYER_UPGRADE 
  21420.     Weapon           = PRIMARY InfernoCannonGunUpgraded
  21421.   End
  21422.   ArmorSet
  21423.     Conditions      = None
  21424.     Armor           = TankArmor
  21425.     DamageFX        = TankDamageFX
  21426.   End
  21427.   BuildCost          = 900
  21428.   BuildTime          = 15.0          ;in seconds    
  21429.   VisionRange        = 180
  21430.   ShroudClearingRange = 300
  21431.   Prerequisites
  21432.     Object           = ChinaWarFactory
  21433.     Object           = ChinaPropagandaCenter
  21434.   End
  21435.  
  21436.   ExperienceValue = 50 50 100 150    ;Experience point value at each level
  21437.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  21438.   IsTrainable = Yes             ;Can gain experience
  21439.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  21440.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  21441.   CommandSet      = ChinaVehicleInfernoCannonCommandSet
  21442.  
  21443.   ; *** AUDIO Parameters ***
  21444.   VoiceSelect       = InfernoCannonVoiceSelect
  21445.   VoiceMove         = InfernoCannonVoiceMove
  21446.   VoiceGuard        = InfernoCannonVoiceMove
  21447.   VoiceAttack       = InfernoCannonVoiceAttack
  21448.   SoundMoveStart    = InfernoCannonMoveStart
  21449.   SoundMoveStartDamaged = InfernoCannonMoveStart
  21450.   UnitSpecificSounds
  21451.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  21452.     VoiceCreate     = InfernoCannonVoiceCreate
  21453.     TurretMoveStart = NoSound
  21454.     TurretMoveLoop  = NoSound
  21455.     VoiceCrush          = InfernoCannonVoiceCrush
  21456.     VoiceEnter         = InfernoCannonVoiceMove
  21457.   End
  21458.  
  21459.  
  21460.   ; *** ENGINEERING Parameters ***
  21461.   RadarPriority     = UNIT
  21462.   KindOf            = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
  21463.   
  21464.   Body              = ActiveBody ModuleTag_02
  21465.     MaxHealth       = 120.0
  21466.     InitialHealth   = 120.0
  21467.   End
  21468.  
  21469.   Behavior = VeterancyGainCreate ModuleTag_03
  21470.     StartingLevel = VETERAN
  21471.     ScienceRequired = SCIENCE_ArtilleryTraining
  21472.   End
  21473.  
  21474.   Behavior = AIUpdateInterface ModuleTag_04
  21475.     Turret
  21476.       TurretTurnRate = 100
  21477.       TurretPitchRate = 100
  21478.       AllowsPitch = Yes
  21479.       FirePitch = 45
  21480.       ControlledWeaponSlots = PRIMARY
  21481.     End
  21482.     AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
  21483.   End
  21484.   Locomotor = SET_NORMAL InfernoLocomotor
  21485.   Behavior = PhysicsBehavior ModuleTag_05
  21486.     Mass = 50.0
  21487.   End
  21488.  
  21489.   ; A crushing defeat
  21490.   Behavior               = FXListDie ModuleTag_06
  21491.     DeathTypes = NONE +CRUSHED +SPLATTED
  21492.     DeathFX         = FX_CarCrush
  21493.   End
  21494.   Behavior               = CreateObjectDie ModuleTag_07
  21495.     DeathTypes = NONE +CRUSHED +SPLATTED
  21496.     CreationList    = OCL_CrusaderTank_CrushEffect
  21497.   End
  21498.   Behavior = SlowDeathBehavior ModuleTag_08
  21499.     DeathTypes = ALL -CRUSHED -SPLATTED
  21500.     ProbabilityModifier = 50
  21501.     DestructionDelay = 2000
  21502.     DestructionDelayVariance = 300
  21503.     FX  = INITIAL  FX_CrusaderCatchFire  
  21504.     FX  = FINAL    FX_GenericTankDeathExplosion 
  21505.     OCL = FINAL    OCL_InfernoCannonDeathEffect
  21506.   End
  21507.  
  21508.   Behavior                 = TransitionDamageFX ModuleTag_09
  21509.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  21510.     ReallyDamagedFXList1 = Loc: X:-7 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  21511.   End
  21512.  
  21513.   Behavior         = CreateCrateDie ModuleTag_10
  21514.     CrateData = SalvageCrateData
  21515.     ;CrateData = EliteTankCrateData
  21516.     ;CrateData = HeroicTankCrateData
  21517.   End
  21518.  
  21519.   Behavior      = WeaponSetUpgrade ModuleTag_11
  21520.     TriggeredBy = Upgrade_ChinaBlackNapalm
  21521.   End
  21522.  
  21523.   Behavior = FlammableUpdate ModuleTag_21
  21524.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  21525.     AflameDamageAmount = 3       ; taking this much damage...
  21526.     AflameDamageDelay = 500       ; this often.
  21527.   End
  21528.  
  21529.   Behavior = DestroyDie ModuleTag_22
  21530.     DeathTypes = NONE +CRUSHED +SPLATTED
  21531.   End
  21532.  
  21533.   Geometry            = BOX
  21534.   GeometryMajorRadius = 15.0
  21535.   GeometryMinorRadius = 10.0
  21536.   GeometryHeight      = 15.0     
  21537.   GeometryIsSmall     = Yes
  21538.   Shadow              = SHADOW_VOLUME 
  21539.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length   
  21540.  
  21541. End
  21542.  
  21543. ;------------------------------------------------------------------------------
  21544. ;***************************** Cinematic-Only unit ****************************
  21545. Object CINE_ChinaVehicleInfernoCannon
  21546.  
  21547.   ; *** ART Parameters ***
  21548.   SelectPortrait         = SNInferno_L
  21549.   ButtonImage            = SNInferno
  21550.   
  21551.   UpgradeCameo1 = Upgrade_ChinaBlackNapalm
  21552.   ;UpgradeCameo2 = NONE
  21553.   ;UpgradeCameo3 = NONE
  21554.   ;UpgradeCameo4 = NONE
  21555.   ;UpgradeCameo5 = NONE
  21556.   
  21557.   Draw                    = W3DTankDraw ModuleTag_01
  21558.     OkToChangeModelColor  = Yes
  21559.     ConditionState        = NONE
  21560.       Model               = NVInferno
  21561.       Turret              = Turret
  21562.       TurretPitch         = TurretEL
  21563.       WeaponFireFXBone    = PRIMARY Muzzle
  21564.       WeaponRecoilBone    = PRIMARY Barrel
  21565.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  21566.       WeaponLaunchBone = PRIMARY Muzzle
  21567.     End
  21568.     
  21569.     ConditionState        = RUBBLE REALLYDAMAGED
  21570.       Model               = NVInferno_D
  21571.       Turret              = Turret
  21572.       TurretPitch         = TurretEL
  21573.       WeaponFireFXBone    = PRIMARY Muzzle
  21574.       WeaponRecoilBone    = PRIMARY Barrel
  21575.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  21576.       WeaponLaunchBone = PRIMARY Muzzle
  21577.     End
  21578.     
  21579.     TrackMarks           = EXTnkTrack.tga
  21580.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  21581.   End
  21582.  
  21583.   ; ***DESIGN parameters ***
  21584.   DisplayName        = OBJECT:InfernoCannon
  21585.   Side               = China
  21586.   EditorSorting      = VEHICLE
  21587.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  21588.   WeaponSet
  21589.     Conditions       = None 
  21590.     Weapon           = PRIMARY InfernoCannonGun
  21591.   End
  21592.   ArmorSet
  21593.     Conditions      = None
  21594.     Armor           = TankArmor
  21595.     DamageFX        = TankDamageFX
  21596.   End
  21597.   BuildCost          = 900
  21598.   BuildTime          = 15.0          ;in seconds    
  21599.   VisionRange        = 300
  21600.   ShroudClearingRange = 300
  21601.   Prerequisites
  21602.     Object           = ChinaWarFactory
  21603.     Object           = ChinaPropagandaCenter
  21604.   End
  21605.  
  21606.   ExperienceValue = 50 50 100 150    ;Experience point value at each level
  21607.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  21608.   IsTrainable = Yes             ;Can gain experience
  21609.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  21610.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  21611.   CommandSet      = ChinaVehicleInfernoCannonCommandSet
  21612.  
  21613.   ; *** AUDIO Parameters ***
  21614.   VoiceSelect       = InfernoCannonVoiceSelect
  21615.   VoiceMove         = InfernoCannonVoiceMove
  21616.   VoiceGuard        = InfernoCannonVoiceMove
  21617.   VoiceAttack       = InfernoCannonVoiceAttack
  21618.   SoundMoveStart    = InfernoCannonMoveStart
  21619.   SoundMoveStartDamaged = InfernoCannonMoveStart
  21620.   UnitSpecificSounds
  21621.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  21622.     VoiceCreate     = InfernoCannonVoiceCreate
  21623.     TurretMoveStart = NoSound
  21624.     TurretMoveLoop  = NoSound
  21625.     VoiceCrush          = InfernoCannonVoiceCrush
  21626.     VoiceEnter         = InfernoCannonVoiceMove
  21627.   End
  21628.  
  21629.  
  21630.   ; *** ENGINEERING Parameters ***
  21631.   RadarPriority     = UNIT
  21632.   KindOf            = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
  21633.   
  21634.   Body              = ActiveBody ModuleTag_02
  21635.     MaxHealth       = 120.0
  21636.     InitialHealth   = 120.0
  21637.   End
  21638.  
  21639.   Behavior = VeterancyGainCreate ModuleTag_03
  21640.     StartingLevel = VETERAN
  21641.     ScienceRequired = SCIENCE_ArtilleryTraining
  21642.   End
  21643.  
  21644.   Behavior = AIUpdateInterface ModuleTag_04
  21645.     Turret
  21646.       TurretTurnRate = 100
  21647.       TurretPitchRate = 100
  21648.       AllowsPitch = Yes
  21649.       FirePitch = 45
  21650.       ControlledWeaponSlots = PRIMARY
  21651.     End
  21652.     AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
  21653.   End
  21654.   Locomotor = SET_NORMAL CINE_InfernoLocomotor
  21655.   Behavior = PhysicsBehavior ModuleTag_05
  21656.     Mass = 50.0
  21657.   End
  21658.  
  21659.   ; A crushing defeat
  21660.   Behavior               = FXListDie ModuleTag_06
  21661.     DeathTypes = NONE +CRUSHED +SPLATTED
  21662.     DeathFX         = FX_CarCrush
  21663.   End
  21664.   Behavior               = CreateObjectDie ModuleTag_07
  21665.     DeathTypes = NONE +CRUSHED +SPLATTED
  21666.     CreationList    = OCL_CrusaderTank_CrushEffect
  21667.   End
  21668.   Behavior = SlowDeathBehavior ModuleTag_08
  21669.     DeathTypes = ALL -CRUSHED -SPLATTED
  21670.     ProbabilityModifier = 50
  21671.     DestructionDelay = 2000
  21672.     DestructionDelayVariance = 300
  21673.     FX  = INITIAL  FX_CrusaderCatchFire  
  21674.     FX  = FINAL    FX_GenericTankDeathExplosion 
  21675.     OCL = FINAL    OCL_InfernoCannonDeathEffect
  21676.   End
  21677.  
  21678.   Behavior                 = TransitionDamageFX ModuleTag_09
  21679.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  21680.     ReallyDamagedFXList1 = Loc: X:-7 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  21681.   End
  21682.  
  21683.   Behavior         = CreateCrateDie ModuleTag_10
  21684.     CrateData = SalvageCrateData
  21685.     ;CrateData = EliteTankCrateData
  21686.     ;CrateData = HeroicTankCrateData
  21687.   End
  21688.  
  21689.   Behavior = DestroyDie ModuleTag_11
  21690.     DeathTypes = NONE +CRUSHED +SPLATTED
  21691.   End
  21692.  
  21693.   Behavior = FlammableUpdate ModuleTag_21
  21694.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  21695.     AflameDamageAmount = 3       ; taking this much damage...
  21696.     AflameDamageDelay = 500       ; this often.
  21697.   End
  21698.  
  21699.   Geometry            = BOX
  21700.   GeometryMajorRadius = 15.0
  21701.   GeometryMinorRadius = 10.0
  21702.   GeometryHeight      = 15.0     
  21703.   GeometryIsSmall     = Yes
  21704.   Shadow              = SHADOW_VOLUME    
  21705.  
  21706. End
  21707.  
  21708. ;------------------------------------------------------------------------------
  21709. ;Also called NukeCannon
  21710. Object ChinaVehicleNukeLauncher
  21711.  
  21712.   ; *** ART Parameters ***
  21713.   SelectPortrait         = SNNukeCannon_L
  21714.   ButtonImage            = SNNukeCannon
  21715.   
  21716.   ;UpgradeCameo1 = NONE
  21717.   ;UpgradeCameo2 = NONE
  21718.   ;UpgradeCameo3 = NONE
  21719.   ;UpgradeCameo4 = NONE
  21720.   ;UpgradeCameo5 = NONE
  21721.  
  21722.   Draw = W3DTankDraw ModuleTag_01
  21723.     
  21724.     InitialRecoilSpeed   = 120
  21725.     MaxRecoilDistance    = 8
  21726.     RecoilSettleSpeed    = 6
  21727.  
  21728.     OkToChangeModelColor = Yes
  21729.  
  21730.     ExtraPublicBone = Turret01
  21731.  
  21732.     DefaultConditionState
  21733.       Model                           = NVNukeCn
  21734.       WeaponLaunchBone                = PRIMARY Muzzle
  21735.       WeaponMuzzleFlash               = PRIMARY MuzzleFX
  21736.       WeaponFireFXBone                = PRIMARY Muzzle
  21737.       WeaponRecoilBone                = PRIMARY Barrel
  21738.       HideSubObject                   = TURRET01      ;Hide controlled turret
  21739.       ShowSubObject                   = TURRETFRONT TURRETBACK  ;Show pack/unpack animated turret
  21740.       Turret                          = Turret01
  21741.       TurretPitch                     = TurretEL
  21742.     End
  21743.       
  21744.     ConditionState                    = RUBBLE
  21745.       Model                           = NVNukeCn_D
  21746.       WeaponLaunchBone                = PRIMARY Muzzle
  21747.       WeaponMuzzleFlash               = PRIMARY MuzzleFX
  21748.       WeaponRecoilBone                = PRIMARY Barrel
  21749.       HideSubObject                   = TURRET01      ;Hide controlled turret
  21750.       ShowSubObject                   = TURRETFRONT TURRETBACK  ;Show pack/unpack animated turret
  21751.       Turret                          = Turret01
  21752.       TurretPitch                     = TurretEL
  21753.     End
  21754.  
  21755.     ;*** PACKED STATE -- ready to move ***
  21756.     ConditionState    = MOVING
  21757.       Animation       = NVNukeCn.NVNukeCn
  21758.       AnimationMode   = ONCE_BACKWARDS
  21759.       Flags           = START_FRAME_FIRST
  21760.     End
  21761.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
  21762.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  21763.     ;***
  21764.     ConditionState    = REALLYDAMAGED MOVING
  21765.       Model           = NVNukeCn_D
  21766.       Animation       = NVNukeCn_D.NVNukeCn_D
  21767.       AnimationMode   = ONCE_BACKWARDS
  21768.       Flags           = START_FRAME_FIRST
  21769.     End
  21770.     AliasConditionState = REALLYDAMAGED MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
  21771.      
  21772.  
  21773.     ;*** UNPACKING STATE  -- preparing to fire ***
  21774.     ConditionState    = UNPACKING
  21775.       Animation       = NVNukeCn.NVNukeCn
  21776.       AnimationMode   = ONCE
  21777.     End
  21778.     AliasConditionState = UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
  21779.     ;***
  21780.     ConditionState    = REALLYDAMAGED UNPACKING
  21781.       Model           = NVNukeCn_D
  21782.       Animation       = NVNukeCn_D.NVNukeCn_D
  21783.       AnimationMode   = ONCE
  21784.     End
  21785.     AliasConditionState = REALLYDAMAGED UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
  21786.  
  21787.     ;*** PACKING STATE -- preparing to move ***
  21788.     ConditionState    = PACKING
  21789.       Animation       = NVNukeCn.NVNukeCn
  21790.       AnimationMode   = ONCE_BACKWARDS
  21791.       Flags           = START_FRAME_LAST
  21792.     End
  21793.  
  21794.     AliasConditionState = PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
  21795.     ;***
  21796.     ConditionState    = REALLYDAMAGED PACKING
  21797.       Model           = NVNukeCn_D
  21798.       Animation       = NVNukeCn_D.NVNukeCn_D
  21799.       AnimationMode   = ONCE_BACKWARDS
  21800.       Flags           = START_FRAME_LAST
  21801.     End
  21802.     AliasConditionState = REALLYDAMAGED PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
  21803.  
  21804.     ;*** DEPLOYED STATE -- ready to fire ***
  21805.     ConditionState  = DEPLOYED 
  21806.       Animation       = NVNukeCn.NVNukeCn
  21807.       AnimationMode   = ONCE
  21808.       Flags           = START_FRAME_LAST
  21809.       TransitionKey   = TRANS_FIRING_A
  21810.       HideSubObject   = TURRETFRONT TURRETBACK   ;Hide pack/unpack animated turret
  21811.       ShowSubObject   = TURRET01      ;Show controlled turret
  21812.     End
  21813.     AliasConditionState = DEPLOYED FIRING_A
  21814.     AliasConditionState = DEPLOYED BETWEEN_FIRING_SHOTS_A
  21815.     AliasConditionState = DEPLOYED RELOADING_A
  21816.     AliasConditionState = DEPLOYED MOVING
  21817.  
  21818.     ConditionState  = DEPLOYED REALLYDAMAGED
  21819.       Model           = NVNukeCn_D
  21820.       Animation       = NVNukeCn_D.NVNukeCn_D
  21821.       AnimationMode   = ONCE
  21822.       Flags           = START_FRAME_LAST
  21823.       TransitionKey   = TRANS_FIRING_A
  21824.       HideSubObject   = TURRETFRONT TURRETBACK  ;Hide pack/unpack animated turret
  21825.       ShowSubObject   = TURRET01      ;Show controlled turret
  21826.     End
  21827.     AliasConditionState = DEPLOYED REALLYDAMAGED FIRING_A
  21828.     AliasConditionState = DEPLOYED REALLYDAMAGED BETWEEN_FIRING_SHOTS_A
  21829.     AliasConditionState = DEPLOYED REALLYDAMAGED RELOADING_A
  21830.     AliasConditionState = DEPLOYED REALLYDAMAGED MOVING
  21831.     
  21832.     TrackMarks              = EXTnkTrack.tga
  21833.     TreadAnimationRate      = 4.0  ; amount of tread texture to move per second
  21834.   End
  21835.  
  21836.   ; ***DESIGN parameters ***
  21837.   DisplayName      = OBJECT:NukeLauncher
  21838.   Side = China
  21839.   EditorSorting   = VEHICLE
  21840.   TransportSlotCount = 10                 ;how many "slots" we take in a transport (0 == not transportable)
  21841.   WeaponSet
  21842.     Conditions = None 
  21843.     Weapon = PRIMARY NukeCannonGun
  21844.     AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  21845.   End
  21846.   ArmorSet
  21847.     Conditions      = None
  21848.     Armor           = TankArmor
  21849.     DamageFX        = TankDamageFX
  21850.   End
  21851.   BuildCost       = 1600
  21852.   BuildTime       = 20.0          ;in seconds    
  21853.   VisionRange     = 180
  21854.   ShroudClearingRange = 350
  21855.   Prerequisites
  21856.     Object = ChinaWarFactory
  21857.     Object = ChinaPropagandaCenter
  21858.     Science = SCIENCE_NukeLauncher
  21859.   End
  21860.  
  21861.   ExperienceValue = 50 100 200 400    ;Experience point value at each level
  21862.   ExperienceRequired = 0 400 600 1000  ;Experience points needed to gain each level
  21863.   IsTrainable = Yes             ;Can gain experience
  21864.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  21865.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  21866.   CommandSet    = ChinaVehicleNukeCannonCommandSet
  21867.  
  21868.   ; *** AUDIO Parameters ***
  21869.   VoiceSelect           = NukeCannonVoiceSelect
  21870.   VoiceMove             = NukeCannonVoiceMove
  21871.   VoiceGuard            = NukeCannonVoiceMove
  21872.   VoiceAttack           = NukeCannonVoiceAttack
  21873.   SoundMoveStart        = NukeCannonMoveStart
  21874.   SoundMoveStartDamaged = NukeCannonMoveStart
  21875.   UnitSpecificSounds
  21876.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  21877.     VoiceCreate         = NukeCannonVoiceCreate
  21878.     TurretMoveStart     = NoSound
  21879.     TurretMoveLoop      = NukeCannonTurretMoveLoop
  21880.     VoiceEnter          = NukeCannonVoiceMove
  21881.     Deploy              = NukeCannonDeploy
  21882.     Undeploy            = NukeCannonUnDeploy
  21883.   End
  21884.  
  21885.  
  21886.   ; *** ENGINEERING Parameters ***
  21887.   RadarPriority = UNIT
  21888.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
  21889.   
  21890.   Body = ActiveBody ModuleTag_02
  21891.     MaxHealth       = 240.0
  21892.     InitialHealth   = 240.0
  21893.   End
  21894.  
  21895.   Behavior = VeterancyGainCreate ModuleTag_03
  21896.     StartingLevel = VETERAN
  21897.     ScienceRequired = SCIENCE_ArtilleryTraining
  21898.   End
  21899.  
  21900.   Behavior = DeployStyleAIUpdate ModuleTag_04
  21901.     Turret
  21902.       TurretTurnRate        = 80
  21903.       TurretPitchRate       = 80
  21904.       FirePitch             = 0            ; Instead of aiming pitchwise at the target, it will aim here
  21905.       AllowsPitch           = Yes
  21906.       RecenterTime          = 5000         ; how long to wait during idle before recentering
  21907.       ControlledWeaponSlots = PRIMARY
  21908.       NaturalTurretAngle    = 0
  21909.       InitiallyDisabled     = Yes
  21910.     End
  21911.     AutoAcquireEnemiesWhenIdle = No
  21912.     PackTime = 3333
  21913.     UnpackTime = 3333
  21914.     TurretsFunctionOnlyWhenDeployed = Yes
  21915.     TurretsMustCenterBeforePacking = Yes
  21916.   End
  21917.  
  21918.   Locomotor = SET_NORMAL ChinaNukeCannonLocomotor
  21919.   Behavior = PhysicsBehavior ModuleTag_05
  21920.     Mass = 50.0
  21921.   End
  21922.  
  21923.   Behavior = SlowDeathBehavior ModuleTag_06
  21924.     DeathTypes = ALL -CRUSHED -SPLATTED
  21925.     DestructionDelay  = 500
  21926.     DestructionDelayVariance  = 100
  21927.     FX  = INITIAL  FX_BattleMasterExplosionOneFinal
  21928.     OCL = INITIAL  OCL_RadiationFieldSmall
  21929.     OCL = MIDPOINT OCL_ChinaVehicleNukeCannonDie
  21930.     OCL = FINAL    OCL_RadiationFieldSmall
  21931.     FX  = FINAL    FX_ChinaVehicleNukeCannonDeathExplosion
  21932.   End
  21933.     
  21934.   ; A crushing defeat
  21935.   Behavior = FXListDie ModuleTag_07
  21936.     DeathTypes = NONE +CRUSHED +SPLATTED
  21937.     DeathFX = FX_CarCrush
  21938.   End
  21939.   Behavior = CreateObjectDie ModuleTag_08
  21940.     DeathTypes = NONE +CRUSHED +SPLATTED
  21941.     CreationList = OCL_CrusaderTank_CrushEffect
  21942.   End
  21943.   Behavior = CreateCrateDie ModuleTag_09
  21944.     CrateData = SalvageCrateData
  21945.     ;CrateData = EliteTankCrateData
  21946.     ;CrateData = HeroicTankCrateData
  21947.   End
  21948.  
  21949.   Behavior                 = TransitionDamageFX ModuleTag_10
  21950.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  21951.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
  21952.   End
  21953.  
  21954.   Behavior = DestroyDie ModuleTag_11
  21955.     DeathTypes = NONE +CRUSHED +SPLATTED
  21956.   End
  21957.  
  21958.   Behavior = FlammableUpdate ModuleTag_21
  21959.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  21960.     AflameDamageAmount = 3       ; taking this much damage...
  21961.     AflameDamageDelay = 500       ; this often.
  21962.   End
  21963.  
  21964.   Geometry = BOX
  21965.   GeometryMajorRadius = 32.0
  21966.   GeometryMinorRadius = 10.0
  21967.   GeometryHeight = 17.0     
  21968.   GeometryIsSmall = No
  21969.   Shadow = SHADOW_VOLUME
  21970.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
  21971.  
  21972. End
  21973.  
  21974. ;-----------------------------------------------------------------------------------------------------
  21975. ;******************************* Cinematic Onlt Unit *************************************************
  21976. Object CINE_ChinaVehicleNukeLauncher
  21977.  
  21978.   ; *** ART Parameters ***
  21979.   SelectPortrait         = SNNukeCannon_L
  21980.   ButtonImage            = SNNukeCannon
  21981.   
  21982.   ;UpgradeCameo1 = NONE
  21983.   ;UpgradeCameo2 = NONE
  21984.   ;UpgradeCameo3 = NONE
  21985.   ;UpgradeCameo4 = NONE
  21986.   ;UpgradeCameo5 = NONE
  21987.  
  21988.   Draw = W3DTankDraw ModuleTag_01
  21989.     
  21990.     InitialRecoilSpeed   = 120
  21991.     MaxRecoilDistance    = 8
  21992.     RecoilSettleSpeed    = 6
  21993.  
  21994.     OkToChangeModelColor = Yes
  21995.  
  21996.     ExtraPublicBone = Turret01
  21997.  
  21998.     DefaultConditionState
  21999.       Model                           = NVNukeCn
  22000.       WeaponLaunchBone                = PRIMARY Muzzle
  22001.       WeaponMuzzleFlash               = PRIMARY MuzzleFX
  22002.       WeaponFireFXBone                = PRIMARY Muzzle
  22003.       WeaponRecoilBone                = PRIMARY Barrel
  22004.       HideSubObject                   = TURRET01      ;Hide controlled turret
  22005.       ShowSubObject                   = TURRETFRONT TURRETBACK  ;Show pack/unpack animated turret
  22006.       Turret                          = Turret01
  22007.       TurretPitch                     = TurretEL
  22008.     End
  22009.       
  22010.     ConditionState                    = RUBBLE
  22011.       Model                           = NVNukeCn_D
  22012.       WeaponLaunchBone                = PRIMARY Muzzle
  22013.       WeaponMuzzleFlash               = PRIMARY MuzzleFX
  22014.       WeaponRecoilBone                = PRIMARY Barrel
  22015.       HideSubObject                   = TURRET01      ;Hide controlled turret
  22016.       ShowSubObject                   = TURRETFRONT TURRETBACK  ;Show pack/unpack animated turret
  22017.       Turret                          = Turret01
  22018.       TurretPitch                     = TurretEL
  22019.     End
  22020.  
  22021.     ;*** PACKED STATE -- ready to move ***
  22022.     ConditionState    = MOVING
  22023.       Animation       = NVNukeCn.NVNukeCn
  22024.       AnimationMode   = ONCE_BACKWARDS
  22025.       Flags           = START_FRAME_FIRST
  22026.     End
  22027.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
  22028.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  22029.     ;***
  22030.     ConditionState    = REALLYDAMAGED MOVING
  22031.       Model           = NVNukeCn_D
  22032.       Animation       = NVNukeCn_D.NVNukeCn_D
  22033.       AnimationMode   = ONCE_BACKWARDS
  22034.       Flags           = START_FRAME_FIRST
  22035.     End
  22036.     AliasConditionState = REALLYDAMAGED MOVING BETWEEN_FIRING_SHOTS_A ;Very long shot delay -- possibly moving
  22037.      
  22038.  
  22039.     ;*** UNPACKING STATE  -- preparing to fire ***
  22040.     ConditionState    = UNPACKING
  22041.       Animation       = NVNukeCn.NVNukeCn
  22042.       AnimationMode   = ONCE
  22043.     End
  22044.     AliasConditionState = UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
  22045.     ;***
  22046.     ConditionState    = REALLYDAMAGED UNPACKING
  22047.       Model           = NVNukeCn_D
  22048.       Animation       = NVNukeCn_D.NVNukeCn_D
  22049.       AnimationMode   = ONCE
  22050.     End
  22051.     AliasConditionState = REALLYDAMAGED UNPACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
  22052.  
  22053.     ;*** PACKING STATE -- preparing to move ***
  22054.     ConditionState    = PACKING
  22055.       Animation       = NVNukeCn.NVNukeCn
  22056.       AnimationMode   = ONCE_BACKWARDS
  22057.       Flags           = START_FRAME_LAST
  22058.     End
  22059.  
  22060.     AliasConditionState = PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
  22061.     ;***
  22062.     ConditionState    = REALLYDAMAGED PACKING
  22063.       Model           = NVNukeCn_D
  22064.       Animation       = NVNukeCn_D.NVNukeCn_D
  22065.       AnimationMode   = ONCE_BACKWARDS
  22066.       Flags           = START_FRAME_LAST
  22067.     End
  22068.     AliasConditionState = REALLYDAMAGED PACKING BETWEEN_FIRING_SHOTS_A ;Very long shot delay
  22069.  
  22070.     ;*** DEPLOYED STATE -- ready to fire ***
  22071.     ConditionState  = DEPLOYED 
  22072.       Animation       = NVNukeCn.NVNukeCn
  22073.       AnimationMode   = ONCE
  22074.       Flags           = START_FRAME_LAST
  22075.       TransitionKey   = TRANS_FIRING_A
  22076.       HideSubObject   = TURRETFRONT TURRETBACK   ;Hide pack/unpack animated turret
  22077.       ShowSubObject   = TURRET01      ;Show controlled turret
  22078.     End
  22079.     AliasConditionState = DEPLOYED FIRING_A
  22080.     AliasConditionState = DEPLOYED BETWEEN_FIRING_SHOTS_A
  22081.     AliasConditionState = DEPLOYED RELOADING_A
  22082.     AliasConditionState = DEPLOYED MOVING
  22083.  
  22084.     ConditionState  = DEPLOYED REALLYDAMAGED
  22085.       Model           = NVNukeCn_D
  22086.       Animation       = NVNukeCn_D.NVNukeCn_D
  22087.       AnimationMode   = ONCE
  22088.       Flags           = START_FRAME_LAST
  22089.       TransitionKey   = TRANS_FIRING_A
  22090.       HideSubObject   = TURRETFRONT TURRETBACK  ;Hide pack/unpack animated turret
  22091.       ShowSubObject   = TURRET01      ;Show controlled turret
  22092.     End
  22093.     AliasConditionState = DEPLOYED REALLYDAMAGED FIRING_A
  22094.     AliasConditionState = DEPLOYED REALLYDAMAGED BETWEEN_FIRING_SHOTS_A
  22095.     AliasConditionState = DEPLOYED REALLYDAMAGED RELOADING_A
  22096.     AliasConditionState = DEPLOYED REALLYDAMAGED MOVING
  22097.     
  22098.     TrackMarks              = EXTnkTrack.tga
  22099.     TreadAnimationRate      = 4.0  ; amount of tread texture to move per second
  22100.   End
  22101.  
  22102.   ; ***DESIGN parameters ***
  22103.   DisplayName      = OBJECT:NukeLauncher
  22104.   Side = China
  22105.   EditorSorting   = VEHICLE
  22106.   TransportSlotCount = 10                 ;how many "slots" we take in a transport (0 == not transportable)
  22107.   WeaponSet
  22108.     Conditions = None 
  22109.     Weapon = PRIMARY CINE_NukeCannonGun
  22110.     AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  22111.   End
  22112.   ArmorSet
  22113.     Conditions      = None
  22114.     Armor           = TankArmor
  22115.     DamageFX        = TankDamageFX
  22116.   End
  22117.   BuildCost       = 1600
  22118.   BuildTime       = 20.0          ;in seconds    
  22119.   VisionRange     = 180
  22120.   ShroudClearingRange = 350
  22121.   Prerequisites
  22122.     Object = ChinaWarFactory
  22123.     Object = ChinaPropagandaCenter
  22124.     Science = SCIENCE_NukeLauncher
  22125.   End
  22126.  
  22127.   ExperienceValue = 50 100 200 400    ;Experience point value at each level
  22128.   ExperienceRequired = 0 400 600 1000  ;Experience points needed to gain each level
  22129.   IsTrainable = Yes             ;Can gain experience
  22130.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  22131.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  22132.   CommandSet    = ChinaVehicleNukeCannonCommandSet
  22133.  
  22134.   ; *** AUDIO Parameters ***
  22135.   VoiceSelect           = NukeCannonVoiceSelect
  22136.   VoiceMove             = NukeCannonVoiceMove
  22137.   VoiceGuard            = NukeCannonVoiceMove
  22138.   VoiceAttack           = NukeCannonVoiceAttack
  22139.   SoundMoveStart        = NukeCannonMoveStart
  22140.   SoundMoveStartDamaged = NukeCannonMoveStart
  22141.   UnitSpecificSounds
  22142.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  22143.     VoiceCreate         = NukeCannonVoiceCreate
  22144.     TurretMoveStart     = NoSound
  22145.     TurretMoveLoop      = NukeCannonTurretMoveLoop
  22146.     VoiceEnter          = NukeCannonVoiceMove
  22147.     Deploy              = NukeCannonDeploy
  22148.     Undeploy            = NukeCannonUnDeploy
  22149.   End
  22150.  
  22151.  
  22152.   ; *** ENGINEERING Parameters ***
  22153.   RadarPriority = UNIT
  22154.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE
  22155.   
  22156.   Body = ActiveBody ModuleTag_02
  22157.     MaxHealth       = 240.0
  22158.     InitialHealth   = 240.0
  22159.   End
  22160.  
  22161.   Behavior = VeterancyGainCreate ModuleTag_03
  22162.     StartingLevel = VETERAN
  22163.     ScienceRequired = SCIENCE_ArtilleryTraining
  22164.   End
  22165.  
  22166.   Behavior = DeployStyleAIUpdate ModuleTag_04
  22167.     Turret
  22168.       TurretTurnRate        = 80
  22169.       TurretPitchRate       = 80
  22170.       FirePitch             = 0            ; Instead of aiming pitchwise at the target, it will aim here
  22171.       AllowsPitch           = Yes
  22172.       RecenterTime          = 5000         ; how long to wait during idle before recentering
  22173.       ControlledWeaponSlots = PRIMARY
  22174.       NaturalTurretAngle    = 0
  22175.       InitiallyDisabled     = Yes
  22176.     End
  22177.     AutoAcquireEnemiesWhenIdle = No
  22178.     PackTime = 3333
  22179.     UnpackTime = 3333
  22180.     TurretsFunctionOnlyWhenDeployed = Yes
  22181.     TurretsMustCenterBeforePacking = Yes
  22182.   End
  22183.  
  22184.   Locomotor = SET_NORMAL ChinaNukeCannonLocomotor
  22185.   Behavior = PhysicsBehavior ModuleTag_05
  22186.     Mass = 50.0
  22187.   End
  22188.  
  22189.   Behavior = SlowDeathBehavior ModuleTag_06
  22190.     DeathTypes = ALL -CRUSHED -SPLATTED
  22191.     DestructionDelay  = 500
  22192.     DestructionDelayVariance  = 100
  22193.     FX  = INITIAL  FX_BattleMasterExplosionOneFinal
  22194.     OCL = INITIAL  OCL_RadiationFieldSmall
  22195.     OCL = MIDPOINT OCL_ChinaVehicleNukeCannonDie
  22196.     OCL = FINAL    OCL_RadiationFieldSmall
  22197.     FX  = FINAL    FX_ChinaVehicleNukeCannonDeathExplosion
  22198.   End
  22199.     
  22200.   ; A crushing defeat
  22201.   Behavior = FXListDie ModuleTag_07
  22202.     DeathTypes = NONE +CRUSHED +SPLATTED
  22203.     DeathFX = FX_CarCrush
  22204.   End
  22205.   Behavior = CreateObjectDie ModuleTag_08
  22206.     DeathTypes = NONE +CRUSHED +SPLATTED
  22207.     CreationList = OCL_CrusaderTank_CrushEffect
  22208.   End
  22209.   Behavior = CreateCrateDie ModuleTag_09
  22210.     CrateData = SalvageCrateData
  22211.     ;CrateData = EliteTankCrateData
  22212.     ;CrateData = HeroicTankCrateData
  22213.   End
  22214.  
  22215.   Behavior                 = TransitionDamageFX ModuleTag_10
  22216.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  22217.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
  22218.   End
  22219.  
  22220.   Behavior = DestroyDie ModuleTag_11
  22221.     DeathTypes = NONE +CRUSHED +SPLATTED
  22222.   End
  22223.  
  22224.   Behavior = FlammableUpdate ModuleTag_21
  22225.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  22226.     AflameDamageAmount = 3       ; taking this much damage...
  22227.     AflameDamageDelay = 500       ; this often.
  22228.   End
  22229.  
  22230.   Geometry = BOX
  22231.   GeometryMajorRadius = 32.0
  22232.   GeometryMinorRadius = 10.0
  22233.   GeometryHeight = 17.0     
  22234.   GeometryIsSmall = No
  22235.   Shadow = SHADOW_VOLUME
  22236.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
  22237.  
  22238. End
  22239.  
  22240. ;------------------------------------------------------------------------------
  22241. Object ChinaTankGattling
  22242.  
  22243.   ; *** ART Parameters ***
  22244.   SelectPortrait         = SNGatlingTank_L
  22245.   ButtonImage            = SNGatlingTank
  22246.   
  22247.   ;UpgradeCameo1 = Upgrade_Nationalism
  22248.   UpgradeCameo1 = Upgrade_ChinaChainGuns
  22249.   ;UpgradeCameo3 = NONE
  22250.   ;UpgradeCameo4 = NONE
  22251.   ;UpgradeCameo5 = NONE
  22252.   
  22253.   Draw                      = W3DTankDraw ModuleTag_01
  22254.     OkToChangeModelColor    = Yes
  22255.     
  22256.     DefaultConditionState        
  22257.       Model               = NVGattTank
  22258.       Animation           = NVGattTank.NVGattTank
  22259.       AnimationMode       = MANUAL
  22260.       Turret              = TURRET01
  22261.       TurretPitch         = TURRETEL01
  22262.       WeaponMuzzleFlash   = PRIMARY   MuzzleFX
  22263.       WeaponFireFXBone    = PRIMARY   Muzzle
  22264.       WeaponMuzzleFlash   = SECONDARY MuzzleFX
  22265.       WeaponFireFXBone    = SECONDARY Muzzle
  22266.     End
  22267.  
  22268.     ConditionState        = REALLYDAMAGED RUBBLE         
  22269.       Model               = NVGattTank_D
  22270.     End
  22271.  
  22272.  
  22273.     ;-----pristine attacking----------------------
  22274.     ConditionState        = ATTACKING
  22275.       Model               = NVGattTank
  22276.       Animation           = NVGattTank.NVGattTank
  22277.       AnimationMode       = LOOP
  22278.       AnimationSpeedFactorRange = 0.5 0.5 ;set this state to animate  s l o w l y
  22279.     End
  22280.  
  22281.     ConditionState        = CONTINUOUS_FIRE_SLOW ATTACKING
  22282.       Model               = NVGattTank
  22283.       Animation           = NVGattTank.NVGattTank
  22284.       AnimationMode       = LOOP
  22285.       AnimationSpeedFactorRange = 0.8 0.8 ;set this state to animate  s l o w l y
  22286.     End
  22287.  
  22288.     ConditionState        = CONTINUOUS_FIRE_MEAN ATTACKING
  22289.       Model               = NVGattTank
  22290.       Animation           = NVGattTank.NVGattTank
  22291.       AnimationMode       = LOOP
  22292.       AnimationSpeedFactorRange = 1.5 1.5 ;set this state to animate  medium-fast
  22293.     End
  22294.  
  22295.     ConditionState        = CONTINUOUS_FIRE_FAST ATTACKING
  22296.       Model               = NVGattTank
  22297.       Animation           = NVGattTank.NVGattTank
  22298.       AnimationMode       = LOOP
  22299.       ParticleSysBone     = Muzzle01 GattlingMuzzleSmoke
  22300.       AnimationSpeedFactorRange = 3.0 3.0 ;set this state to animate  vryfst
  22301.     End
  22302.  
  22303.     ;-----damaged attacking----------------------
  22304.     ConditionState  REALLYDAMAGED ATTACKING         
  22305.       Model               = NVGattTank_D
  22306.       Animation           = NVGattTank_D.NVGattTank_D
  22307.       AnimationMode       = LOOP
  22308.       AnimationSpeedFactorRange = 0.5 0.5 ;set this state to animate  extemely sloowly
  22309.     End
  22310.     ConditionState        = CONTINUOUS_FIRE_SLOW REALLYDAMAGED ATTACKING
  22311.       Model               = NVGattTank_D
  22312.       Animation           = NVGattTank_D.NVGattTank_D
  22313.       AnimationMode       = LOOP
  22314.       AnimationSpeedFactorRange = 0.8 0.8 ;set this state to animate  s l o w l y
  22315.     End
  22316.  
  22317.     ConditionState        = CONTINUOUS_FIRE_MEAN REALLYDAMAGED ATTACKING
  22318.       Model               = NVGattTank_D
  22319.       Animation           = NVGattTank_D.NVGattTank_D
  22320.       AnimationMode       = LOOP
  22321.       AnimationSpeedFactorRange = 1.5 1.5 ;set this state to animate  medium-fast
  22322.     End
  22323.  
  22324.     ConditionState        = CONTINUOUS_FIRE_FAST REALLYDAMAGED ATTACKING
  22325.       Model               = NVGattTank_D
  22326.       Animation           = NVGattTank_D.NVGattTank_D
  22327.       AnimationMode       = LOOP
  22328.       ParticleSysBone     = Muzzle01 GattlingMuzzleSmoke
  22329.       AnimationSpeedFactorRange = 3.0 3.0 ;set this state to animate  vryfst
  22330.     End
  22331.  
  22332.  
  22333.  
  22334.  
  22335.     TrackMarks              = EXTnkTrack.tga
  22336.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  22337.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  22338.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  22339.   End
  22340.  
  22341.   ; ***DESIGN parameters ***
  22342.   DisplayName               = OBJECT:GattlingTank
  22343.   Side                      = China
  22344.   EditorSorting             = VEHICLE
  22345.   TransportSlotCount        = 3            ;how many "slots" we take in a transport (0 == not transportable)
  22346.  
  22347.   WeaponSet
  22348.     Conditions              = None 
  22349.     Weapon                  = PRIMARY   GattlingTankGun
  22350.     PreferredAgainst        = PRIMARY   AIRCRAFT
  22351.     Weapon                  = SECONDARY GattlingTankGunAir
  22352.   End
  22353.  
  22354.   ArmorSet
  22355.     Conditions    = None
  22356.     Armor         = AntiAirVehicle
  22357.     DamageFX      = TankDamageFX
  22358.   End
  22359.   BuildCost       = 800
  22360.   BuildTime       = 10.0          ;in seconds    
  22361.   VisionRange     = 150
  22362.   ShroudClearingRange = 360
  22363.   Prerequisites
  22364.     Object        = ChinaWarFactory
  22365.   End
  22366.  
  22367.   ExperienceValue = 50 50 100 150  ;Experience point value at each level
  22368.   ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
  22369.   IsTrainable = Yes             ;Can gain experience
  22370.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  22371.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  22372.   CommandSet      = ChinaVehicleGattlingTankCommandSet
  22373.  
  22374.   Behavior = AIUpdateInterface ModuleTag_20
  22375.     AutoAcquireEnemiesWhenIdle = Yes
  22376.     MoodAttackCheckRate        = 250
  22377.   End
  22378.  
  22379.   ; *** AUDIO Parameters ***
  22380.   VoiceSelect     = GattlingTankVoiceSelect
  22381.   VoiceMove       = GattlingTankVoiceMove
  22382.   VoiceGuard      = GattlingTankVoiceMove
  22383.   VoiceAttack     = GattlingTankVoiceAttack
  22384.   SoundMoveStart  = GattlingTankMoveStart
  22385.   SoundMoveStartDamaged = GattlingTankMoveStart
  22386.  
  22387.   UnitSpecificSounds
  22388.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  22389.     VoiceCreate     = GattlingTankVoiceCreate
  22390.     TurretMoveStart = NoSound
  22391.     TurretMoveLoop  = TurretMoveLoopLoud
  22392.     VoiceCrush      = GattlingTankVoiceCrush
  22393.     VoiceEnter      = GattlingTankVoiceMove
  22394.     VoiceRapidFire  = GattlingTankVoiceRapid
  22395.   End
  22396.  
  22397.   ; *** ENGINEERING Parameters ***
  22398.   RadarPriority     = UNIT
  22399.   KindOf            = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  22400.   
  22401.   Body              = ActiveBody ModuleTag_02
  22402.     MaxHealth       = 300.0
  22403.     InitialHealth   = 300.0
  22404.   End
  22405.   Behavior = AIUpdateInterface ModuleTag_03
  22406.     Turret
  22407.       ControlledWeaponSlots = PRIMARY SECONDARY
  22408.       TurretTurnRate      = 180   // turn rate, in degrees per sec
  22409.       TurretPitchRate     = 180
  22410.       AllowsPitch         = Yes
  22411.       FiresWhileTurning   = Yes
  22412.       NaturalTurretPitch  = 45 ; this keeps it aimed half way between land and sky
  22413.                                ; since you never know from whence cometh danger
  22414.     End
  22415.     AutoAcquireEnemiesWhenIdle = Yes
  22416.   End
  22417.   Locomotor       = SET_NORMAL GattlingTankLocomotor
  22418.   Behavior          = PhysicsBehavior ModuleTag_04
  22419.     Mass            = 40.0
  22420.   End
  22421.  
  22422. ;  Behavior               = DestroyDie 
  22423. ;    ;nothing
  22424. ;  End
  22425.     
  22426.   ; Just explode death
  22427.   Behavior = SlowDeathBehavior ModuleTag_05
  22428.     ProbabilityModifier = 19
  22429.     DestructionDelay = 200
  22430.     DestructionDelayVariance = 100
  22431.  
  22432.     SinkRate = 0.5     ; in Dist/Sec
  22433.  
  22434.     OCL = FINAL    OCL_ChinaTankGattlingDebris
  22435.     FX  = FINAL    FX_GattlingExplosionOneFinal
  22436.   End
  22437.  
  22438.   Behavior = CreateCrateDie ModuleTag_06
  22439.     CrateData = SalvageCrateData
  22440.     ;CrateData = EliteTankCrateData
  22441.     ;CrateData = HeroicTankCrateData
  22442.   End
  22443.  
  22444.   Behavior = TransitionDamageFX ModuleTag_07
  22445.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  22446.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  22447.   End
  22448.  
  22449.   Behavior = FlammableUpdate ModuleTag_21
  22450.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  22451.     AflameDamageAmount = 3       ; taking this much damage...
  22452.     AflameDamageDelay = 500       ; this often.
  22453.   End
  22454.  
  22455.   Behavior = WeaponBonusUpgrade ModuleTag_22
  22456.     TriggeredBy = Upgrade_ChinaChainGuns
  22457.   End
  22458.  
  22459.   Geometry            = BOX
  22460.   GeometryMajorRadius = 15.0
  22461.   GeometryMinorRadius = 10.0
  22462.  
  22463.   GeometryHeight      = 15.0     
  22464.   GeometryIsSmall     = Yes
  22465.   Shadow              = SHADOW_VOLUME
  22466.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
  22467.  
  22468. End
  22469.  
  22470. ;------------------------------------------------------------------------------
  22471. Object GLALightTank
  22472.  
  22473.   ; *** ART Parameters ***
  22474.   Draw                      = W3DTankDraw ModuleTag_01
  22475.     OkToChangeModelColor    = Yes
  22476.     
  22477.     DefaultConditionState          
  22478.       Model                 = UVLiteTank
  22479.       WeaponMuzzleFlash     = PRIMARY MuzzleFX
  22480.     End
  22481.  
  22482.     TrackMarks              = EXTnkTrack.tga
  22483.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  22484.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  22485.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  22486.   End
  22487.  
  22488.   ; ***DESIGN parameters ***
  22489.   DisplayName               = OBJECT:Scorpion
  22490.   Side                      = GLA
  22491.   EditorSorting             = VEHICLE
  22492.   TransportSlotCount        = 3            ;how many "slots" we take in a transport (0 == not transportable)
  22493.   WeaponSet
  22494.     Conditions              = None 
  22495.     Weapon                  = PRIMARY CrusaderTankGun
  22496.   End
  22497.   ArmorSet
  22498.     Conditions    = None
  22499.     Armor         = TruckArmor
  22500.     DamageFX      = TankDamageFX
  22501.   End
  22502.   BuildCost       = 900
  22503.   BuildTime       = 10.0          ;in seconds    
  22504.   VisionRange     = 200
  22505.   ShroudClearingRange = 200
  22506.   Prerequisites
  22507.     Object        = GLAArmsDealer
  22508.   End
  22509.  
  22510.   ExperienceValue = 50 100 150 400    ;Experience point value at each level
  22511.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  22512.   IsTrainable = Yes             ;Can gain experience
  22513.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  22514.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  22515.  
  22516.   ; *** AUDIO Parameters ***
  22517.  
  22518.   VoiceSelect     = ScorpionTankVoiceSelect
  22519.   VoiceMove       = ScorpionTankVoiceMove
  22520.   VoiceGuard      = ScorpionTankVoiceMove
  22521.   VoiceAttack     = ScorpionTankVoiceAttack
  22522.   SoundMoveStart  = ScorpionTankMoveStart
  22523.   SoundMoveStartDamaged = ScorpionTankMoveStart
  22524.  
  22525.   UnitSpecificSounds
  22526.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  22527.     VoiceCreate     = ScorpionTankVoiceCreate
  22528.     TurretMoveStart = NoSound
  22529.     TurretMoveLoop  = TurretMoveLoop
  22530.     VoiceCrush      = ScorpionTankVoiceCrush
  22531.     VoiceEnter      = ScorpionTankVoiceMove
  22532.   End
  22533.  
  22534.   ; *** ENGINEERING Parameters ***
  22535.   RadarPriority     = UNIT
  22536.   KindOf            = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
  22537.   
  22538.   Body              = ActiveBody ModuleTag_02
  22539.     MaxHealth       = 200.0
  22540.     InitialHealth   = 200.0
  22541.   End
  22542.   Behavior = AIUpdateInterface ModuleTag_03
  22543.     Turret
  22544.       ControlledWeaponSlots    = PRIMARY
  22545.     End
  22546.     AutoAcquireEnemiesWhenIdle = Yes
  22547.   End
  22548.   Locomotor       = SET_NORMAL BasicTankLocomotor
  22549.   Behavior          = PhysicsBehavior ModuleTag_04
  22550.     Mass            = 40.0
  22551.   End
  22552.  
  22553.   Behavior               = DestroyDie ModuleTag_05
  22554.     ;nothing
  22555.   End
  22556.     
  22557.   ; A crushing defeat
  22558.   Behavior             = FXListDie ModuleTag_06
  22559.     DeathTypes = NONE +CRUSHED +SPLATTED
  22560.     DeathFX       = FX_CarCrush
  22561.   End
  22562.   Behavior             = CreateObjectDie ModuleTag_07
  22563.     DeathTypes = NONE +CRUSHED +SPLATTED
  22564.     CreationList  = OCL_CrusaderTank_CrushEffect
  22565.   End
  22566.   Behavior             = CreateCrateDie ModuleTag_08
  22567.     CrateData     = SalvageCrateData
  22568.     ;CrateData     = EliteTankCrateData
  22569.     ;CrateData     = HeroicTankCrateData
  22570.   End
  22571.  
  22572.   Behavior = FlammableUpdate ModuleTag_21
  22573.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  22574.     AflameDamageAmount = 3       ; taking this much damage...
  22575.     AflameDamageDelay = 500       ; this often.
  22576.   End
  22577.  
  22578.  
  22579.   Geometry            = BOX
  22580.   GeometryMajorRadius = 15.0
  22581.   GeometryMinorRadius = 10.0
  22582.  
  22583.   GeometryHeight      = 15.0     
  22584.   GeometryIsSmall     = Yes
  22585.   Shadow              = SHADOW_VOLUME
  22586.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
  22587.  
  22588. End
  22589.  
  22590. ;------------------------------------------------------------------------------
  22591. ;China Supply Truck
  22592. Object ChinaVehicleSupplyTruck
  22593.  
  22594.   ; *** ART Parameters ***
  22595.   
  22596.   SelectPortrait         = SNSupplyTruck_L
  22597.   ButtonImage            = SNSupplyTruck
  22598.   
  22599.   ;UpgradeCameo1 = NONE
  22600.   ;UpgradeCameo2 = NONE
  22601.   ;UpgradeCameo3 = NONE
  22602.   ;UpgradeCameo4 = NONE
  22603.   ;UpgradeCameo5 = NONE
  22604.   
  22605.   Draw = W3DTruckDraw ModuleTag_01
  22606.     OkToChangeModelColor = Yes
  22607.     
  22608.     DefaultConditionState
  22609.       Model           = NVSSUPPLYTK
  22610.       HideSubObject   = Cargo01
  22611.     End
  22612.     
  22613.     ConditionState    = REALLYDAMAGED
  22614.       Model           = NVSSUPPLYTK_D
  22615.     End
  22616.     
  22617.     ConditionState    = RUBBLE
  22618.       Model           = NVSSUPPLYTK_D
  22619.     End
  22620.     
  22621.     ConditionState    = CARRYING
  22622.       ShowSubObject   = Cargo01
  22623.     End
  22624.     
  22625.     ConditionState    = REALLYDAMAGED CARRYING
  22626.       Model           = NVSSUPPLYTK_D
  22627.       ShowSubObject   = Cargo01
  22628.     End
  22629.     
  22630.     ConditionState    = RUBBLE CARRYING
  22631.       Model           = NVSSUPPLYTK_D
  22632.       ShowSubObject   = Cargo01
  22633.     End
  22634.     
  22635.     TrackMarks              = EXTireTrack.tga
  22636.  
  22637.     LeftFrontTireBone           = Tire01
  22638.     RightFrontTireBone          = Tire02
  22639.     MidLeftRearTireBone         = Tire03
  22640.     MidRightRearTireBone        = Tire04
  22641.     LeftRearTireBone            = Tire05
  22642.     RightRearTireBone           = Tire06
  22643.     TireRotationMultiplier      = 0.2   ; this * speed = rotation.
  22644.     PowerslideRotationAddition  = 2.5   ; This speed is added to the rotation speed when powersliding.
  22645.  
  22646.     Dust                    = RocketBuggyDust
  22647.     DirtSpray               = RocketBuggyDirtSpray
  22648.     PowerslideSpray         = RocketBuggyDirtPowerSlide
  22649.  
  22650.   End
  22651.  
  22652.   ; ***DESIGN parameters ***
  22653.   DisplayName         = OBJECT:SupplyTruck
  22654.   Side                = China
  22655.   EditorSorting       = VEHICLE
  22656.   TransportSlotCount  = 2                 ;how many "slots" we take in a transport (0 == not transportable)
  22657.   BuildCost           = 600
  22658.   BuildTime           = 10.0      ;in seconds
  22659.   VisionRange         = 150
  22660.   ShroudClearingRange = 300
  22661.   Prerequisites
  22662.     Object = ChinaSupplyCenter
  22663.   End
  22664.  
  22665.   ArmorSet
  22666.     Conditions      = None
  22667.     Armor           = TruckArmor
  22668.     DamageFX        = TankDamageFX
  22669.   End
  22670.   CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  22671.   CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  22672.   CommandSet              = ChinaSupplyTruckCommandSet
  22673.   ; *** AUDIO Parameters ***
  22674.   VoiceSelect             = SupplyTruckVoiceSelect
  22675.   VoiceMove               = SupplyTruckVoiceMove
  22676.   VoiceAttack             = SupplyTruckVoiceAttack
  22677.   SoundMoveStart          = SupplyTruckMoveStart
  22678.   SoundMoveStartDamaged = SupplyTruckMoveStart
  22679.   UnitSpecificSounds
  22680.     VoiceCreate           = SupplyTruckVoiceCreate
  22681.     TruckLandingSound     = NoSound
  22682.     TruckPowerslideSound  = NoSound
  22683.     VoiceSupply           = SupplyTruckVoiceSupply
  22684.     VoiceCrush            = SupplyTruckVoiceCrush
  22685.     VoiceEnter            = SupplyTruckVoiceMove
  22686.  
  22687.   End
  22688.  
  22689.   ; *** ENGINEERING Parameters ***
  22690.   RadarPriority = UNIT
  22691.   ;@todo lorenzen removed the CAN_ATTACK from the chinasupplytruck... ok?
  22692.   KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE HARVESTER SCORE
  22693.   
  22694.   Body = ActiveBody ModuleTag_02
  22695.     MaxHealth       = 300.0
  22696.     InitialHealth   = 300.0
  22697.   End
  22698.   Behavior = SupplyTruckAIUpdate ModuleTag_03
  22699.     MaxBoxes = 4
  22700.     SupplyCenterActionDelay = 400     ; ms for whole thing (one transaction)
  22701.     SupplyWarehouseActionDelay = 1000 ; ms per box (many small transactions)
  22702.     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)
  22703.     SuppliesDepletedVoice = SupplyTruckVoiceSuppliesDepleted
  22704.   End
  22705.   Locomotor = SET_NORMAL SupplyTruckLocomotor
  22706.   Behavior = PhysicsBehavior ModuleTag_04
  22707.     Mass = 5.0
  22708.   End
  22709.  
  22710.   ExperienceValue    = 50 50 50 50 ;Experience point value at each level
  22711.  
  22712.   Behavior = SlowDeathBehavior ModuleTag_05
  22713.     DeathTypes = ALL -CRUSHED -SPLATTED
  22714.     DestructionDelay = 200
  22715.     DestructionDelayVariance = 100
  22716.     FX  = FINAL    FX_SupplyTruckExplosionOneFinal
  22717.     OCL = FINAL    OCL_ChinaSupplyTruckDeathEffect
  22718.   End
  22719.     
  22720.   Behavior = FXListDie ModuleTag_06
  22721.     DeathTypes = NONE +CRUSHED +SPLATTED
  22722.     DeathFX = FX_CarCrush
  22723.   End
  22724.   
  22725.   Behavior = CreateObjectDie ModuleTag_07
  22726.     DeathTypes = NONE +CRUSHED +SPLATTED
  22727.     CreationList = OCL_ChinaSupplyTruck_CrushEffect
  22728.   End
  22729.  
  22730.   Behavior                       = TransitionDamageFX ModuleTag_08
  22731.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  22732.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_NukeCannonDamageTransition
  22733.   End
  22734.  
  22735.   Behavior = FlammableUpdate ModuleTag_10
  22736.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  22737.     AflameDamageAmount = 3       ; taking this much damage...
  22738.     AflameDamageDelay = 500       ; this often.
  22739.   End
  22740.  
  22741.   ; A crushing defeat
  22742.   Behavior = DestroyDie ModuleTag_11
  22743.     DeathTypes = NONE +CRUSHED +SPLATTED
  22744.   End
  22745.  
  22746.   Behavior        = CreateCrateDie ModuleTag_12
  22747.     CrateData     = SalvageCrateData
  22748.   End
  22749.  
  22750.   Geometry = BOX
  22751.   GeometryMajorRadius = 17.0
  22752.   GeometryMinorRadius = 7.0
  22753.   GeometryHeight = 14.0     
  22754.   GeometryIsSmall = No
  22755.   Shadow = SHADOW_VOLUME
  22756.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
  22757.  
  22758. End
  22759.  
  22760. ;------------------------------------------------------------------------------
  22761. ;USA Construction Dozer or USDozer
  22762. Object AmericaVehicleDozer
  22763.  
  22764.   ; *** ART Parameters ***
  22765.   SelectPortrait         = SACDozer_L
  22766.   ButtonImage            = SACDozer
  22767.   
  22768.   ;UpgradeCameo1 = NONE
  22769.   ;UpgradeCameo2 = NONE
  22770.   ;UpgradeCameo3 = NONE
  22771.   ;UpgradeCameo4 = NONE
  22772.   ;UpgradeCameo5 = NONE
  22773.   
  22774.   Draw = W3DTruckDraw ModuleTag_01
  22775.  
  22776.     OkToChangeModelColor = Yes
  22777.  
  22778.     DefaultConditionState
  22779.       Model             = AVCONSTDOZ_A
  22780.       ParticleSysBone   = EXHAUSTFX01 DozerSmokeLight
  22781.       WaitForStateToFinishIfPossible = TRANS_DIGGING
  22782.     End
  22783.  
  22784.     ConditionState = PREATTACK_A 
  22785.       Animation         = AVCONSTDOZ_A.AVCONSTDOZ_A
  22786.       AnimationMode     = ONCE
  22787.       ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
  22788.       ParticleSysBone   = DIRTFX01 DozerDirtFall ;gush of dirt
  22789.       TransitionKey     = TRANS_DIGGING
  22790.     End
  22791.  
  22792.     ConditionState = MOVING
  22793.       ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
  22794.       WaitForStateToFinishIfPossible = TRANS_DIGGING
  22795.     End
  22796.  
  22797.     ConditionState      = REALLYDAMAGED RUBBLE
  22798.       Model             = AVCONSTDOZ_AD
  22799.       ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
  22800.       WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
  22801.     End
  22802.  
  22803.     ConditionState = PREATTACK_A REALLYDAMAGED RUBBLE
  22804.       Model             = AVCONSTDOZ_AD
  22805.       Animation         = AVCONSTDOZ_AD.AVCONSTDOZ_AD
  22806.       AnimationMode     = ONCE
  22807.       ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
  22808.       TransitionKey     = TRANS_DIGGING_DAMAGED
  22809.     End
  22810.  
  22811.     ConditionState      = MOVING REALLYDAMAGED RUBBLE
  22812.       Model             = AVCONSTDOZ_AD
  22813.       ParticleSysBone   = EXHAUSTFX01 DozerSmokeHeavy
  22814.       WaitForStateToFinishIfPossible = TRANS_DIGGING_DAMAGED
  22815.     End
  22816.  
  22817.  
  22818.     TrackMarks            = EXTireTrack2.tga
  22819.     Dust                  = RocketBuggyDust
  22820.     DirtSpray             = RocketBuggyDirtSpray
  22821.  
  22822.     ; These parameters are only used if the model has a separate suspension, 
  22823.     ; and the locomotor has HasSuspension = Yes.
  22824.  
  22825.     LeftFrontTireBone     = TIRE01
  22826.     RightFrontTireBone    = TIRE02
  22827.     LeftRearTireBone      = TIRE03
  22828.     RightRearTireBone     = TIRE04
  22829.  
  22830.     TireRotationMultiplier      = 0.2   ; this * speed = rotation.
  22831.     PowerslideRotationAddition  = 0   ; This vehicle doesn't powerslide.
  22832.  
  22833.   End
  22834.  
  22835.  
  22836.  
  22837.   ; ***DESIGN parameters ***
  22838.   DisplayName         = OBJECT:Dozer
  22839.   Side                = America
  22840.   EditorSorting       = VEHICLE
  22841.   TransportSlotCount  = 5 ;how many "slots" we take in a transport (0 == not transportable)
  22842.   BuildCost           = 1000
  22843.   BuildTime           = 5.0 ; in seconds
  22844.   VisionRange         = 200
  22845.   ShroudClearingRange = 200
  22846.  
  22847.   WeaponSet
  22848.     Conditions = None 
  22849.     Weapon = PRIMARY None
  22850.   End
  22851.   WeaponSet
  22852.     Conditions = MINE_CLEARING_DETAIL 
  22853.     Weapon = PRIMARY DozerMineDisarmingWeapon
  22854.   End
  22855.  
  22856.   ArmorSet
  22857.     Conditions        = None
  22858.     Armor             = DozerArmor ;Special Explosion-Proof Armor
  22859.     DamageFX          = TankDamageFX
  22860.   End
  22861.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  22862.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  22863.   CommandSet          = AmericaDozerCommandSet
  22864.  
  22865.   ; *** AUDIO Parameters ***
  22866.   VoiceSelect         = DozerUSAVoiceSelect
  22867.   VoiceMove           = DozerUSAVoiceMove
  22868.   VoiceGuard          = DozerUSAVoiceMove
  22869.   VoiceTaskComplete   = DozerUSAVoiceBuildComplete
  22870.   SoundMoveStart      = DozerUSAMoveStart
  22871.   SoundMoveStartDamaged = DozerUSAMoveStart
  22872.   UnitSpecificSounds
  22873.     VoiceCreate           = DozerUSAVoiceCreate
  22874.     VoiceNoBuild          = DozerUSAVoiceBuildNot
  22875.     VoiceCrush            = DozerUSAVoiceCrush
  22876.     VoiceRepair           = DozerUSAVoiceRepair
  22877.     VoiceDisarm           = DozerUSAVoiceClearMine
  22878.     TruckLandingSound     = NoSound
  22879.     TruckPowerslideSound  = NoSound
  22880.     VoiceEnter            = DozerUSAVoiceMove
  22881.     VoiceBuildResponse    = DozerUSAVoiceBuild
  22882.   End
  22883.  
  22884.   ; *** ENGINEERING Parameters ***
  22885.   RadarPriority       = UNIT
  22886.   KindOf              = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER
  22887.  
  22888.   Body                = ActiveBody ModuleTag_02
  22889.     MaxHealth         = 250.0
  22890.     InitialHealth     = 250.0
  22891.   End
  22892.   Behavior = DozerAIUpdate ModuleTag_03
  22893.     RepairHealthPercentPerSecond = 2%    ; % of max health to repair each second
  22894.     BoredTime                    = 5000  ; in milliseconds
  22895.     BoredRange                   = 150   ; when bored, we look this far away to do something
  22896.     ; the only "enemies" that workers can acquire are mines, to be disarmed...
  22897.     AutoAcquireEnemiesWhenIdle   = Yes
  22898.   End
  22899.  
  22900.   Locomotor = SET_NORMAL AmericaVehicleDozerLocomotor
  22901.  
  22902.   Behavior            = PhysicsBehavior ModuleTag_04
  22903.     Mass              = 75.0
  22904.   End
  22905.  
  22906.   Behavior = StealthDetectorUpdate ModuleTag_05
  22907.     DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
  22908.     ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
  22909.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  22910.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  22911.     ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
  22912.   End
  22913.  
  22914.   Behavior                 = TransitionDamageFX ModuleTag_06
  22915.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  22916.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  22917.   End
  22918.  
  22919.   ; Catch fire, and explode death
  22920.   Behavior = SlowDeathBehavior ModuleTag_07
  22921.     DeathTypes = ALL -CRUSHED -SPLATTED
  22922.     ProbabilityModifier = 100
  22923.     DestructionDelay = 1500
  22924.     DestructionDelayVariance = 600
  22925.     FX  = INITIAL  FX_CrusaderCatchFire
  22926.     OCL = FINAL    OCL_AmericaDozerExplode  
  22927.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  22928.   End   
  22929.  
  22930.   Behavior = CreateCrateDie ModuleTag_CratesChange
  22931.     CrateData = SalvageCrateData
  22932.   End
  22933.   
  22934.   Behavior = FlammableUpdate ModuleTag_21
  22935.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  22936.     AflameDamageAmount = 3       ; taking this much damage...
  22937.     AflameDamageDelay = 500       ; this often.
  22938.   End
  22939.  
  22940.   ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_22
  22941.   End
  22942.  
  22943.   Behavior               = FXListDie ModuleTag_23
  22944.     DeathTypes = NONE +CRUSHED +SPLATTED
  22945.     DeathFX         = FX_CarCrush
  22946.   End
  22947.  
  22948.   Behavior = DestroyDie ModuleTag_24
  22949.     DeathTypes = NONE +CRUSHED +SPLATTED
  22950.   End
  22951.  
  22952.   Geometry            = BOX
  22953.   GeometryMajorRadius = 15.0
  22954.   GeometryMinorRadius = 10.0
  22955.   GeometryHeight      = 15.0     
  22956.   GeometryIsSmall     = Yes
  22957.   Shadow              = SHADOW_VOLUME
  22958.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
  22959.  
  22960. End
  22961.  
  22962. ;------------------------------------------------------------------------------
  22963. ; Note, this is really a Civ dozer that's used only for eye-candy purposes.
  22964. ; It doesn't have mine-disarming ability. It probably shouldn't even have Dozer
  22965. ; ability, but I have left that in for now. But don't use this for true Dozer purposes.
  22966. ;
  22967. Object GLAVehicleDozer
  22968.  
  22969.   ; *** ART Parameters ***
  22970.   SelectPortrait         = SNDozer_L
  22971.   ButtonImage            = SNDozer
  22972.   Draw = W3DModelDraw ModuleTag_01
  22973.     OkToChangeModelColor = Yes
  22974.     DefaultConditionState
  22975.       Model = AVCONSTDOZ
  22976.     End
  22977.   End
  22978.  
  22979.   ; ***DESIGN parameters ***
  22980.   DisplayName      = OBJECT:Dozer
  22981.   Side = GLA
  22982.   EditorSorting   = VEHICLE
  22983.   TransportSlotCount = 5                 ;how many "slots" we take in a transport (0 == not transportable)
  22984.   BuildCost       = 100
  22985.   BuildTime       = 5.0 ;in seconds
  22986.   VisionRange     = 150
  22987.   ShroudClearingRange = 300
  22988.  
  22989.   ArmorSet
  22990.     Conditions        = None
  22991.     Armor             = TankArmor
  22992.     DamageFX          = TankDamageFX
  22993.   End
  22994.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  22995.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  22996.   CommandSet      = GLADozerCommandSet
  22997.  
  22998.   ; *** AUDIO Parameters ***
  22999.   SoundMoveStart   = NoSound
  23000.  
  23001.   ; *** ENGINEERING Parameters ***
  23002.   RadarPriority = UNIT
  23003.   KindOf = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER
  23004.   
  23005.   Body = ActiveBody ModuleTag_02
  23006.     MaxHealth       = 1000.0
  23007.     InitialHealth   = 1000.0
  23008.   End
  23009.   Behavior = DozerAIUpdate ModuleTag_03
  23010.     RepairHealthPercentPerSecond = 2%    ; % of max health to repair each second
  23011.     BoredTime                    = 5000  ; in milliseconds
  23012.     BoredRange                   = 150   ; when bored, we look this far away to do something
  23013.   End
  23014.   Locomotor                    = SET_NORMAL BasicTankLocomotor
  23015.   Behavior = PhysicsBehavior ModuleTag_04
  23016.     Mass = 75.0
  23017.   End
  23018.  
  23019.   Behavior = DestroyDie ModuleTag_05
  23020.     ;nothing
  23021.   End
  23022.     
  23023.   Behavior = FlammableUpdate ModuleTag_21
  23024.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  23025.     AflameDamageAmount = 3       ; taking this much damage...
  23026.     AflameDamageDelay = 500       ; this often.
  23027.   End
  23028.  
  23029.   Geometry = BOX
  23030.   GeometryMajorRadius = 15.0
  23031.   GeometryMinorRadius = 10.0
  23032.   GeometryHeight = 15.0     
  23033.   GeometryIsSmall = Yes    
  23034.   Shadow = SHADOW_VOLUME
  23035.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  23036.  
  23037. End
  23038.  
  23039. ;------------------------------------------------------------------------------
  23040. ;China Construction Dozer
  23041. Object ChinaVehicleDozer
  23042.  
  23043.   ; *** ART Parameters ***
  23044.   SelectPortrait         = SNDozer_L
  23045.   ButtonImage            = SNDozer
  23046.   
  23047.   ;UpgradeCameo1 = NONE
  23048.   ;UpgradeCameo2 = NONE
  23049.   ;UpgradeCameo3 = NONE
  23050.   ;UpgradeCameo4 = NONE
  23051.   ;UpgradeCameo5 = NONE
  23052.  
  23053.   Draw                      = W3DTankDraw ModuleTag_01
  23054.  
  23055.     OkToChangeModelColor    = Yes
  23056.  
  23057.     DefaultConditionState
  23058.       Model                 = NVCONSTDOZ_A
  23059.       ParticleSysBone       = EXHAUST01 DozerSmokeLight
  23060.     End
  23061.     ConditionState          = MOVING
  23062.       ParticleSysBone       = EXHAUST01 DozerSmokeHeavy
  23063.     End
  23064.     ConditionState = FIRING_A MOVING PREATTACK_A 
  23065.       Model = NVCONSTDOZ_A
  23066.       Animation = NVCONSTDOZ_A.NVCONSTDOZ_A
  23067.       AnimationMode = ONCE
  23068.       ParticleSysBone = EXHAUST01 DozerSmokeHeavy
  23069.       ParticleSysBone = DIRTFX01 DozerDirtFall
  23070.     End
  23071.     AliasConditionState = ATTACKING FIRING_A MOVING
  23072.  
  23073.     ConditionState          = REALLYDAMAGED RUBBLE
  23074.       Model                 = NVCONSTDOZ_AD
  23075.     End
  23076.     ConditionState          = MOVING REALLYDAMAGED RUBBLE
  23077.       Model                 = NVCONSTDOZ_AD
  23078.       ParticleSysBone       = EXHAUST01 DozerSmokeHeavy
  23079.     End
  23080.     ConditionState = FIRING_A MOVING PREATTACK_A REALLYDAMAGED RUBBLE
  23081.       Model = NVCONSTDOZ_AD
  23082.       Animation = NVCONSTDOZ_AD.NVCONSTDOZ_AD
  23083.       AnimationMode = ONCE
  23084.       ParticleSysBone = EXHAUST01 DozerSmokeHeavy
  23085.       ParticleSysBone = DIRTFX01 DozerDirtFall
  23086.     End
  23087.     AliasConditionState = ATTACKING FIRING_A MOVING REALLYDAMAGED RUBBLE
  23088.     
  23089.     TrackMarks           = EXTnkTrack.tga
  23090.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  23091.   End
  23092.  
  23093.   ; ***DESIGN parameters ***
  23094.   DisplayName         = OBJECT:Dozer
  23095.   Side                = China
  23096.   EditorSorting       = VEHICLE
  23097.   TransportSlotCount  = 5                 ;how many "slots" we take in a transport (0 == not transportable)
  23098.   BuildCost           = 1000
  23099.   BuildTime           = 5.0 ;in seconds
  23100.   VisionRange         = 150
  23101.   ShroudClearingRange = 300
  23102.  
  23103.   WeaponSet
  23104.     Conditions = None 
  23105.     Weapon = PRIMARY None
  23106.   End
  23107.   WeaponSet
  23108.     Conditions = MINE_CLEARING_DETAIL 
  23109.     Weapon = PRIMARY DozerMineDisarmingWeapon
  23110.   End
  23111.  
  23112.   ArmorSet
  23113.     Conditions        = None
  23114.     Armor             = DozerArmor ;Special Explosion-Proof Armor
  23115.     DamageFX          = TankDamageFX
  23116.   End
  23117.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  23118.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  23119.   CommandSet          = ChinaDozerCommandSet
  23120.  
  23121.   ; *** AUDIO Parameters ***
  23122.   VoiceSelect         = DozerChinaVoiceSelect
  23123.   VoiceMove           = DozerChinaVoiceMove
  23124.   VoiceEnter          = DozerChinaVoiceMove
  23125.   VoiceTaskComplete   = DozerChinaVoiceBuildComplete
  23126.   SoundMoveStart      = DozerChinaMoveStart
  23127.   SoundMoveStartDamaged = DozerChinaMoveStart
  23128.  
  23129.   UnitSpecificSounds
  23130.     VoiceCreate       = DozerChinaVoiceCreate
  23131.     VoiceCrush        = DozerChinaVoiceCrush
  23132.     VoiceNoBuild      = DozerChinaVoiceBuildNot
  23133.     VoiceRepair       = DozerChinaVoiceRepair
  23134.     VoiceDisarm       = DozerChinaVoiceClearMine
  23135.     VoiceEnter        = DozerChinaVoiceMove
  23136.     VoiceBuildResponse = DozerChinaVoiceBuild
  23137.   End
  23138.  
  23139.  
  23140.  
  23141.   ; *** ENGINEERING Parameters ***
  23142.   RadarPriority       = UNIT
  23143.   KindOf              = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER 
  23144.   
  23145.   Body                = ActiveBody ModuleTag_02
  23146.     MaxHealth         = 250.0
  23147.     InitialHealth     = 250.0
  23148.   End
  23149.   Behavior = DozerAIUpdate ModuleTag_03
  23150.     RepairHealthPercentPerSecond = 2%    ; % of max health to repair each second
  23151.     BoredTime                    = 5000  ; in milliseconds
  23152.     BoredRange                   = 150   ; when bored, we look this far away to do something
  23153.     ; the only "enemies" that workers can acquire are mines, to be disarmed...
  23154.     AutoAcquireEnemiesWhenIdle   = Yes
  23155.   End
  23156.   Locomotor                    = SET_NORMAL ChinaVehicleDozerLocomotor
  23157.   Behavior            = PhysicsBehavior ModuleTag_04
  23158.     Mass              = 75.0
  23159.   End
  23160.  
  23161.   Behavior = StealthDetectorUpdate ModuleTag_05
  23162.     DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
  23163.     ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
  23164.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  23165.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  23166.     ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
  23167.   End
  23168.   
  23169.   Behavior                 = TransitionDamageFX ModuleTag_06
  23170.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  23171.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  23172.   End
  23173.   
  23174.   ; Catch fire, and explode death
  23175.   Behavior = SlowDeathBehavior ModuleTag_07
  23176.     DeathTypes = ALL -CRUSHED -SPLATTED
  23177.     ProbabilityModifier = 100
  23178.     DestructionDelay = 1500
  23179.     DestructionDelayVariance = 600
  23180.     FX  = INITIAL  FX_CrusaderCatchFire
  23181.     OCL = FINAL    OCL_ChinaDozerExplode  
  23182.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  23183.   End 
  23184.  
  23185.   Behavior = CreateCrateDie ModuleTag_09
  23186.     CrateData = SalvageCrateData
  23187.   End
  23188.     
  23189.   Behavior = FlammableUpdate ModuleTag_21
  23190.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  23191.     AflameDamageAmount = 3       ; taking this much damage...
  23192.     AflameDamageDelay = 500       ; this often.
  23193.   End
  23194.  
  23195.   Behavior               = FXListDie ModuleTag_22
  23196.     DeathTypes = NONE +CRUSHED +SPLATTED
  23197.     DeathFX         = FX_CarCrush
  23198.   End
  23199.  
  23200.   Behavior = DestroyDie ModuleTag_23
  23201.     DeathTypes = NONE +CRUSHED +SPLATTED
  23202.   End
  23203.  
  23204.   Geometry            = BOX
  23205.   GeometryMajorRadius = 17.0;new radius to align mine sweeping position
  23206.   ;GeometryMajorRadius = 21.0;old radius
  23207.   GeometryMinorRadius = 10.0
  23208.   GeometryHeight      = 15.0     
  23209.   GeometryIsSmall     = NO
  23210.   Shadow              = SHADOW_VOLUME
  23211.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
  23212.  
  23213. End
  23214.  
  23215. ;------------------------------------------------------------------------------
  23216. Object ScorpionMissile
  23217.  
  23218.   ; *** ART Parameters ***
  23219.   Draw = W3DModelDraw ModuleTag_01
  23220.     OkToChangeModelColor = Yes
  23221.     ConditionState = NONE
  23222.       Model = UVScorpion_m
  23223.     End
  23224.   End
  23225.  
  23226.   ; ***DESIGN parameters ***
  23227.   DisplayName      = OBJECT:Missile
  23228.   EditorSorting   = SYSTEM
  23229.   VisionRange = 0.0  
  23230.   ArmorSet
  23231.     Conditions      = None
  23232.     Armor           = ProjectileArmor
  23233.     DamageFX        = None
  23234.   End
  23235.  
  23236.   ; *** ENGINEERING Parameters ***
  23237.   KindOf = PROJECTILE SMALL_MISSILE
  23238.   Body = ActiveBody ModuleTag_02
  23239.     MaxHealth       = 100.0
  23240.     InitialHealth   = 100.0
  23241.   End
  23242.  
  23243. ; ---- begin Projectile death behaviors
  23244.   Behavior = InstantDeathBehavior DeathModuleTag_01
  23245.     DeathTypes = NONE +DETONATED
  23246.     ; we detonated normally.
  23247.     ; no FX, just quiet destroy ourselves
  23248.   End
  23249.   Behavior = InstantDeathBehavior DeathModuleTag_02
  23250.     DeathTypes = NONE +LASERED
  23251.     ; shot down by laser.
  23252.     FX         = FX_GenericMissileDisintegrate
  23253.     OCL        = OCL_GenericMissileDisintegrate
  23254.   End
  23255.   Behavior = InstantDeathBehavior DeathModuleTag_03
  23256.     DeathTypes = ALL -LASERED -DETONATED
  23257.     ; shot down by nonlaser.
  23258.     FX         = FX_GenericMissileDeath
  23259.   End
  23260. ; ---- end Projectile death behaviors
  23261.     
  23262.   Behavior = PhysicsBehavior ModuleTag_06
  23263.     Mass = 1
  23264.   End
  23265.   Behavior = MissileAIUpdate ModuleTag_07
  23266.     TryToFollowTarget = Yes 
  23267.     FuelLifetime = 4000
  23268.     InitialVelocity = 150                ; in dist/sec
  23269.     IgnitionDelay = 0
  23270.     DistanceToTravelBeforeTurning = 30
  23271.     IgnitionFX = FX_JetMissileIgnition
  23272.   End
  23273.   Locomotor = SET_NORMAL ScorpionMissileLocomotor
  23274.  
  23275.  
  23276.   Behavior = WeaponBonusUpgrade ModuleTag_08
  23277.     TriggeredBy = Upgrade_GLAAPRockets
  23278.   End
  23279.  
  23280.   Geometry = Sphere
  23281.   GeometryIsSmall = Yes
  23282.   GeometryMajorRadius = 1.0
  23283.   
  23284.  
  23285. End
  23286.  
  23287. ;------------------------------------------------------------------------------
  23288. Object RangerFlashBangGrenade
  23289.  
  23290.   ; *** ART Parameters ***
  23291.   Draw = W3DModelDraw ModuleTag_01
  23292.     OkToChangeModelColor = Yes
  23293.     ConditionState = NONE
  23294.       Model = NVMBuggy_m
  23295.     End
  23296.   End
  23297.  
  23298.   ; ***DESIGN parameters ***
  23299.   DisplayName      = OBJECT:FlashBangGrenade
  23300.   EditorSorting   = SYSTEM
  23301.   ArmorSet
  23302.     Armor = ProjectileArmor
  23303.   End
  23304.   VisionRange = 0.0  
  23305.  
  23306.   ; *** ENGINEERING Parameters ***
  23307.   KindOf = PROJECTILE
  23308.   Body = ActiveBody ModuleTag_02
  23309.     MaxHealth       = 100.0
  23310.     InitialHealth   = 100.0
  23311.   End
  23312.  
  23313.   Behavior = DestroyDie ModuleTag_03
  23314.     ;nothing
  23315.   End
  23316.     
  23317.   Behavior = PhysicsBehavior ModuleTag_04
  23318.     Mass = 1
  23319.   End
  23320.  
  23321.   Behavior = DumbProjectileBehavior ModuleTag_05
  23322.     ; To tweak a Bezier path, please see GS
  23323.     FirstHeight                     = 50  ; Height of Bezier control points above highest intervening terrain
  23324.     SecondHeight                    = 150
  23325.     FirstPercentIndent              = 30% ; Percentage of shot distance control points are placed
  23326.     SecondPercentIndent             = 70%
  23327.     GarrisonHitKillRequiredKindOf   = INFANTRY
  23328.     GarrisonHitKillForbiddenKindOf  = NONE
  23329.     GarrisonHitKillCount            = 10  ; ensure that a single grenade clears out all garrisoned buildings.
  23330.     GarrisonHitKillFX               = FX_FlashBangGarrisonBuildingHit
  23331.     FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  23332.   End
  23333.  
  23334.   Geometry = Sphere
  23335.   GeometryIsSmall = Yes
  23336.   GeometryMajorRadius = 1.0
  23337.  
  23338. End
  23339.  
  23340. ;------------------------------------------------------------------------------
  23341. Object ScorpionTankShell
  23342.  
  23343.   ; *** ART Parameters ***
  23344.   Draw = W3DModelDraw ModuleTag_01
  23345.     ConditionState = NONE
  23346.       Model = AVTankShel
  23347.     End
  23348.   End
  23349.  
  23350.   ; ***DESIGN parameters ***
  23351.   DisplayName       = OBJECT:TankShell
  23352.   EditorSorting     = SYSTEM
  23353.   ArmorSet
  23354.     Armor = ProjectileArmor
  23355.   End
  23356.   VisionRange = 0.0
  23357.  
  23358.   ; *** ENGINEERING Parameters ***
  23359.   KindOf = PROJECTILE
  23360.   Body = ActiveBody ModuleTag_02
  23361.     MaxHealth       = 100.0
  23362.     InitialHealth   = 100.0
  23363.   End
  23364.  
  23365.   Behavior = DestroyDie ModuleTag_03
  23366.     ;nothing
  23367.   End
  23368.  
  23369.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
  23370.     DeathWeapon   = ToxinShellWeapon
  23371.     StartsActive  = No                      ; turned on by upgrade
  23372.     TriggeredBy   = Upgrade_GLAToxinShells    
  23373.     ConflictsWith = Upgrade_GLAAnthraxBeta      
  23374.   End
  23375.  
  23376.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
  23377.     DeathWeapon   = ToxinShellWeaponUpgraded
  23378.     StartsActive  = No                      ; turned on by upgrade
  23379.     TriggeredBy   = Upgrade_GLAToxinShells Upgrade_GLAAnthraxBeta         
  23380.     RequiresAllTriggers = Yes ;TriggeredBy is an AND, not an OR like it normally is
  23381.   End
  23382.  
  23383.   Behavior = DumbProjectileBehavior ModuleTag_06
  23384.     DetonateCallsKill = Yes
  23385.     ; To tweak a Bezier path, please see GS
  23386.     FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
  23387.     SecondHeight = 10
  23388.     FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
  23389.     SecondPercentIndent = 90%
  23390.     FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  23391.   End
  23392.  
  23393.   Behavior = PhysicsBehavior ModuleTag_07
  23394.     Mass = 0.01 ; can't be zero, but we want it tiny so that it travels nearly straight
  23395.   End
  23396.  
  23397. ; The Toxin explosions don't want to double up on particles, so only play this effect if we don't have Toxin
  23398.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
  23399.     DeathWeapon   = ScoprionTankGunFXWeapon
  23400.     StartsActive  = Yes
  23401.     ConflictsWith = Upgrade_GLAToxinShells      
  23402.   End
  23403.  
  23404.   Geometry = Sphere
  23405.   GeometryIsSmall = Yes
  23406.   GeometryMajorRadius = 1.0
  23407.  
  23408. End
  23409.  
  23410. ;------------------------------------------------------------------------------
  23411. Object MarauderTankShell
  23412.  
  23413.   ; *** ART Parameters ***
  23414.   Draw = W3DModelDraw ModuleTag_01
  23415.     ConditionState = NONE
  23416.       Model = AVTankShel
  23417.     End
  23418.   End
  23419.  
  23420.   ; ***DESIGN parameters ***
  23421.   DisplayName       = OBJECT:TankShell
  23422.   EditorSorting     = SYSTEM
  23423.   ArmorSet
  23424.     Armor = ProjectileArmor
  23425.   End
  23426.   VisionRange = 0.0
  23427.  
  23428.   ; *** ENGINEERING Parameters ***
  23429.   KindOf = PROJECTILE
  23430.   Body = ActiveBody ModuleTag_02
  23431.     MaxHealth       = 100.0
  23432.     InitialHealth   = 100.0
  23433.   End
  23434.  
  23435.   Behavior = DestroyDie ModuleTag_03
  23436.     ;nothing
  23437.   End
  23438.  
  23439.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
  23440.     DeathWeapon   = ToxinShellWeapon
  23441.     StartsActive  = No                      ; turned on by upgrade
  23442.     TriggeredBy   = Upgrade_GLAToxinShells          
  23443.     ConflictsWith = Upgrade_GLAAnthraxBeta      
  23444.   End
  23445.  
  23446.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
  23447.     DeathWeapon   = ToxinShellWeaponUpgraded
  23448.     StartsActive  = No                      ; turned on by upgrade
  23449.     TriggeredBy   = Upgrade_GLAToxinShells Upgrade_GLAAnthraxBeta         
  23450.     RequiresAllTriggers = Yes ;TriggeredBy is an AND, not an OR like it normally is
  23451.   End
  23452.  
  23453.   Behavior = DumbProjectileBehavior ModuleTag_06
  23454.     DetonateCallsKill = Yes
  23455.     ; To tweak a Bezier path, please see GS
  23456.     FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
  23457.     SecondHeight = 10
  23458.     FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
  23459.     SecondPercentIndent = 90%
  23460.     FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  23461.   End
  23462.  
  23463.  Behavior = PhysicsBehavior ModuleTag_07
  23464.     Mass = 0.01 ; can't be zero, but we want it tiny so that it travels nearly straight
  23465.   End
  23466.  
  23467.   Geometry = Sphere
  23468.   GeometryIsSmall = Yes
  23469.   GeometryMajorRadius = 1.0
  23470.  
  23471. End
  23472.  
  23473. ;------------------------------------------------------------------------------
  23474. Object GenericTankShell
  23475.  
  23476.   ; *** ART Parameters ***
  23477.   Draw = W3DModelDraw ModuleTag_01
  23478.     ConditionState = NONE
  23479.       Model = AVTankShel
  23480.     End
  23481.   End
  23482.  
  23483.   ; ***DESIGN parameters ***
  23484.   DisplayName       = OBJECT:TankShell
  23485.   EditorSorting     = SYSTEM
  23486.   ArmorSet
  23487.     Armor = ProjectileArmor
  23488.   End
  23489.   VisionRange = 0.0  
  23490.  
  23491.   ; *** ENGINEERING Parameters ***
  23492.   KindOf = PROJECTILE
  23493.   Body = ActiveBody ModuleTag_02
  23494.     MaxHealth       = 100.0
  23495.     InitialHealth   = 100.0
  23496.   End
  23497.  
  23498.   Behavior = DestroyDie ModuleTag_03
  23499.     ;nothing
  23500.   End
  23501.     
  23502.   Behavior = DumbProjectileBehavior ModuleTag_04
  23503.     ; To tweak a Bezier path, please see GS
  23504.     FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
  23505.     SecondHeight = 10
  23506.     FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
  23507.     SecondPercentIndent = 90%
  23508.     FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  23509.   End
  23510.  
  23511.   Behavior = PhysicsBehavior ModuleTag_05
  23512.     Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
  23513.   End
  23514.  
  23515.   Geometry = Sphere
  23516.   GeometryIsSmall = Yes
  23517.   GeometryMajorRadius = 1.0
  23518.  
  23519. End
  23520.  
  23521. ;------------------------------------------------------------------------------
  23522. Object BattleMasterTankShell
  23523.  
  23524.   ; *** ART Parameters ***
  23525.   Draw = W3DModelDraw ModuleTag_01
  23526.     ConditionState = NONE
  23527.       Model = AVTankShel
  23528.     End
  23529.   End
  23530.  
  23531.   ; ***DESIGN parameters ***
  23532.   DisplayName       = OBJECT:TankShell
  23533.   EditorSorting     = SYSTEM
  23534.   ArmorSet
  23535.     Armor = ProjectileArmor
  23536.   End
  23537.   VisionRange = 0.0  
  23538.  
  23539.   ; *** ENGINEERING Parameters ***
  23540.   KindOf = PROJECTILE
  23541.   Body = ActiveBody ModuleTag_02
  23542.     MaxHealth       = 100.0
  23543.     InitialHealth   = 100.0
  23544.   End
  23545.  
  23546.   Behavior = DestroyDie ModuleTag_03
  23547.     ;nothing
  23548.   End
  23549.     
  23550.   Behavior = DumbProjectileBehavior ModuleTag_04
  23551.     ; To tweak a Bezier path, please see GS
  23552.     FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
  23553.     SecondHeight = 10
  23554.     FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
  23555.     SecondPercentIndent = 90%
  23556.     FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  23557.   End
  23558.  
  23559.   Behavior = PhysicsBehavior ModuleTag_05
  23560.     Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
  23561.   End
  23562.  
  23563.   Behavior = WeaponBonusUpgrade ModuleTag_06 
  23564.     TriggeredBy = Upgrade_ChinaUraniumShells
  23565.   End
  23566.  
  23567.   Geometry = Sphere
  23568.   GeometryIsSmall = Yes
  23569.   GeometryMajorRadius = 1.0
  23570.  
  23571. End
  23572.  
  23573. ;------------------------------------------------------------------------------
  23574. Object OverlordTankShell
  23575.  
  23576.   ; *** ART Parameters ***
  23577.   Draw = W3DModelDraw ModuleTag_01
  23578.     ConditionState = NONE
  23579.       Model = AVTankShel
  23580.     End
  23581.   End
  23582.  
  23583.   ; ***DESIGN parameters ***
  23584.   DisplayName       = OBJECT:TankShell
  23585.   EditorSorting     = SYSTEM
  23586.   ArmorSet
  23587.     Armor = ProjectileArmor
  23588.   End
  23589.   VisionRange = 0.0  
  23590.  
  23591.   ; *** ENGINEERING Parameters ***
  23592.   KindOf = PROJECTILE
  23593.   Body = ActiveBody ModuleTag_02
  23594.     MaxHealth       = 100.0
  23595.     InitialHealth   = 100.0
  23596.   End
  23597.  
  23598.   Behavior = DestroyDie ModuleTag_03
  23599.     ;nothing
  23600.   End
  23601.     
  23602.   Behavior = DumbProjectileBehavior ModuleTag_04
  23603.     ; To tweak a Bezier path, please see GS
  23604.     FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
  23605.     SecondHeight = 10
  23606.     FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
  23607.     SecondPercentIndent = 90%
  23608.     FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  23609.   End
  23610.  
  23611.   Behavior = PhysicsBehavior ModuleTag_05
  23612.     Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
  23613.   End
  23614.  
  23615.   Behavior = WeaponBonusUpgrade ModuleTag_06 
  23616.     TriggeredBy = Upgrade_ChinaUraniumShells
  23617.   End
  23618.  
  23619.   Geometry = Sphere
  23620.   GeometryIsSmall = Yes
  23621.   GeometryMajorRadius = 1.0
  23622.  
  23623. End
  23624.  
  23625.  
  23626.  
  23627.  
  23628. ;------------------------------------------------------------------------------
  23629. Object NukeCannonShell
  23630.  
  23631.   ; *** ART Parameters ***
  23632.   Draw = W3DModelDraw ModuleTag_01
  23633.     ConditionState = NONE
  23634.       Model = AVTankShel
  23635.     End
  23636.   End
  23637.  
  23638.   ; ***DESIGN parameters ***
  23639.   DisplayName       = OBJECT:TankShell
  23640.   EditorSorting     = SYSTEM
  23641.   ArmorSet
  23642.     Armor = ProjectileArmor
  23643.   End
  23644.   VisionRange = 0.0  
  23645.  
  23646.  
  23647.   ; *** AUDIO Parameters ***
  23648.   SoundAmbient = NukeCannonIncomingWhistle
  23649.  
  23650.   ; *** ENGINEERING Parameters ***
  23651.   KindOf = PROJECTILE
  23652.   Body = ActiveBody ModuleTag_02
  23653.     MaxHealth       = 100.0
  23654.     InitialHealth   = 100.0
  23655.   End
  23656.  
  23657.   Behavior = DestroyDie ModuleTag_03
  23658.     ;nothing
  23659.   End
  23660.     
  23661.   Behavior = DumbProjectileBehavior ModuleTag_04
  23662.     ; To tweak a Bezier path, please see GS
  23663.     FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
  23664.     SecondHeight = 150
  23665.     FirstPercentIndent = 30% ; Percentage of shot distance control points are placed
  23666.     SecondPercentIndent = 70%
  23667.     FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  23668.   End
  23669.  
  23670.   Behavior = PhysicsBehavior ModuleTag_05
  23671.     Mass = 0.01   ; we can't have a zero mass, but we want it pretty tiny...
  23672.   End
  23673.  
  23674.   Geometry = Sphere
  23675.   GeometryIsSmall = Yes
  23676.   GeometryMajorRadius = 1.0
  23677.  
  23678. End
  23679.  
  23680. ;------------------------------------------------------------------------------
  23681. Object InfernoTankShell
  23682.  
  23683.   ; *** ART Parameters ***
  23684.   Draw = W3DModelDraw ModuleTag_01
  23685.     ConditionState        = NONE
  23686.       Model               = AVTankShel
  23687.       ParticleSysBone     = None InfernoTrail
  23688.     End
  23689.   End
  23690.  
  23691.   ; *** AUDIO Parameters ***
  23692.   SoundAmbient = InfernoCannonIncomingWhistle
  23693.  
  23694.   ; ***DESIGN parameters ***
  23695.   DisplayName       = OBJECT:TankShell
  23696.   EditorSorting     = SYSTEM
  23697.   ArmorSet
  23698.     Armor = ProjectileArmor
  23699.   End
  23700.   VisionRange = 0.0  
  23701.  
  23702.   ; *** ENGINEERING Parameters ***
  23703.   KindOf = PROJECTILE
  23704.   Body = ActiveBody ModuleTag_02
  23705.     MaxHealth       = 100.0
  23706.     InitialHealth   = 100.0
  23707.   End
  23708.  
  23709.   Behavior = DestroyDie ModuleTag_03
  23710.     ;nothing
  23711.   End
  23712.     
  23713.   Behavior = DumbProjectileBehavior ModuleTag_09
  23714.     DetonateCallsKill = Yes
  23715.     ; To tweak a Bezier path, please see GS
  23716.     FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
  23717.     SecondHeight = 150
  23718.     FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
  23719.     SecondPercentIndent = 90%
  23720.     FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  23721.   End
  23722.  
  23723.   Behavior = PhysicsBehavior ModuleTag_05
  23724.     Mass = 10
  23725.   End
  23726.  
  23727.   Behavior = HeightDieUpdate ModuleTag_06
  23728.     TargetHeight = 1.0
  23729.     TargetHeightIncludesStructures = Yes
  23730.     OnlyWhenMovingDown = Yes
  23731.     InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
  23732.   End
  23733.  
  23734.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_07
  23735.     DeathWeapon   = SmallFireFieldCreationWeapon
  23736.     StartsActive  = Yes
  23737.   End
  23738.  
  23739.   Geometry = Sphere
  23740.   GeometryIsSmall = Yes
  23741.   GeometryMajorRadius = 1.0
  23742.  
  23743. End
  23744.  
  23745.  
  23746. ;------------------------------------------------------------------------------
  23747. Object InfernoTankShellUpgraded
  23748.  
  23749.   ; *** ART Parameters ***
  23750.   Draw = W3DModelDraw ModuleTag_01
  23751.     ConditionState        = NONE
  23752.       Model               = AVTankShel
  23753.       ParticleSysBone     = None InfernoTrailUpgraded
  23754.     End
  23755.   End
  23756.  
  23757.   ; *** AUDIO Parameters ***
  23758.   SoundAmbient = InfernoCannonIncomingWhistle
  23759.  
  23760.   ; ***DESIGN parameters ***
  23761.   DisplayName       = OBJECT:TankShell
  23762.   EditorSorting     = SYSTEM
  23763.   ArmorSet
  23764.     Armor = ProjectileArmor
  23765.   End
  23766.   VisionRange = 0.0  
  23767.  
  23768.   ; *** ENGINEERING Parameters ***
  23769.   KindOf = PROJECTILE
  23770.   Body = ActiveBody ModuleTag_02
  23771.     MaxHealth       = 100.0
  23772.     InitialHealth   = 100.0
  23773.   End
  23774.  
  23775.   Behavior = DestroyDie ModuleTag_03
  23776.     ;nothing
  23777.   End
  23778.     
  23779.   Behavior = DumbProjectileBehavior ModuleTag_09
  23780.     DetonateCallsKill = Yes
  23781.     ; To tweak a Bezier path, please see GS
  23782.     FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
  23783.     SecondHeight = 150
  23784.     FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
  23785.     SecondPercentIndent = 90%
  23786.     FlightPathAdjustDistPerSecond   = 0 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  23787.   End
  23788.  
  23789.   Behavior = PhysicsBehavior ModuleTag_05
  23790.     Mass = 10
  23791.   End
  23792.  
  23793.   Behavior = HeightDieUpdate ModuleTag_06
  23794.     TargetHeight = 1.0
  23795.     TargetHeightIncludesStructures = Yes
  23796.     OnlyWhenMovingDown = Yes
  23797.     InitialDelay                    = 1000 ; Can't explode in the first second so we don't explode on the pad
  23798.   End
  23799.  
  23800.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
  23801.     DeathWeapon   = SmallFireFieldUpgradedCreationWeapon
  23802.     StartsActive  = Yes
  23803.   End
  23804.  
  23805.  
  23806.   Geometry = Sphere
  23807.   GeometryIsSmall = Yes
  23808.   GeometryMajorRadius = 1.0
  23809.  
  23810. End
  23811.  
  23812. ;------------------------------------------------------------------------------
  23813. Object DeadTankHulk
  23814.  
  23815.   ; *** ART Parameters ***
  23816.   Draw = W3DModelDraw ModuleTag_01
  23817.     DefaultConditionState
  23818.       Model = GXMammoth_CH
  23819.     End
  23820.   End
  23821.  
  23822.   ; ***DESIGN parameters ***
  23823.   EditorSorting   = DEBRIS
  23824.  
  23825.   ; *** ENGINEERING Parameters ***
  23826.   KindOf =  NO_COLLIDE HULK
  23827.  
  23828.   Behavior = PhysicsBehavior ModuleTag_03
  23829.     Mass = 100.0
  23830.     AllowBouncing = Yes
  23831.     KillWhenRestingOnGround = Yes
  23832.   End
  23833.   Behavior = LifetimeUpdate ModuleTag_04
  23834.     MinLifetime = 1500   ; min lifetime in msec
  23835.     MaxLifetime = 1600   ; max lifetime in msec
  23836.   End
  23837.  
  23838.   Behavior = SlowDeathBehavior ModuleTag_05
  23839.     SinkDelay         = 1500
  23840.     SinkRate          = 2     ; in Dist/Sec
  23841.     DestructionDelay  = 8000
  23842.   End
  23843.  
  23844. End
  23845.  
  23846. ;------------------------------------------------------------------------------
  23847. Object InfernoCannonHulk
  23848.  
  23849.   ; *** ART Parameters ***
  23850.   Draw = W3DModelDraw ModuleTag_01
  23851.     DefaultConditionState
  23852.       Model = NVInferno_D1
  23853.     End
  23854.   End
  23855.  
  23856.   ; ***DESIGN parameters ***
  23857.   EditorSorting   = DEBRIS
  23858.  
  23859.   ; *** ENGINEERING Parameters ***
  23860.   KindOf =  NO_COLLIDE HULK
  23861.  
  23862.   Behavior = PhysicsBehavior ModuleTag_03
  23863.     Mass = 100.0
  23864.     AllowBouncing = Yes
  23865.     KillWhenRestingOnGround = Yes
  23866.   End
  23867.   Behavior = LifetimeUpdate ModuleTag_04
  23868.     MinLifetime = 1500   ; min lifetime in msec
  23869.     MaxLifetime = 1600   ; max lifetime in msec
  23870.   End
  23871.  
  23872.   Behavior = SlowDeathBehavior ModuleTag_05
  23873.     SinkDelay         = 1500
  23874.     SinkRate          = 2     ; in Dist/Sec
  23875.     DestructionDelay  = 8000
  23876.   End
  23877.  
  23878. End
  23879.  
  23880. ;------------------------------------------------------------------------------
  23881. Object DeadChinaSupplyTruckHulk
  23882.  
  23883.   ; *** ART Parameters ***
  23884.   Draw = W3DModelDraw ModuleTag_01
  23885.     DefaultConditionState
  23886.       Model = NVSSupplyTK_D1
  23887.     End
  23888.   End
  23889.  
  23890.   ; ***DESIGN parameters ***
  23891.   EditorSorting   = DEBRIS
  23892.  
  23893.   ; *** ENGINEERING Parameters ***
  23894.   KindOf =  NO_COLLIDE HULK
  23895.  
  23896.   Behavior = PhysicsBehavior ModuleTag_03
  23897.     Mass = 100.0
  23898.     AllowBouncing = Yes
  23899.     KillWhenRestingOnGround = Yes
  23900.   End
  23901.   Behavior = LifetimeUpdate ModuleTag_04
  23902.     MinLifetime = 1500   ; min lifetime in msec
  23903.     MaxLifetime = 1600   ; max lifetime in msec
  23904.   End
  23905.  
  23906.   Behavior = SlowDeathBehavior ModuleTag_05
  23907.     SinkDelay         = 1500
  23908.     SinkRate          = 2     ; in Dist/Sec
  23909.     DestructionDelay  = 8000
  23910.   End
  23911.  
  23912. End
  23913.  
  23914. ;------------------------------------------------------------------------------
  23915. Object DeadChinaGattlingTankHulk
  23916.  
  23917.   ; *** ART Parameters ***
  23918.   Draw = W3DModelDraw ModuleTag_01
  23919.     DefaultConditionState
  23920.       Model = NVGattTank_D1
  23921.     End
  23922.   End
  23923.  
  23924.   ; ***DESIGN parameters ***
  23925.   EditorSorting   = DEBRIS
  23926.  
  23927.   ; *** ENGINEERING Parameters ***
  23928.   KindOf =  NO_COLLIDE HULK
  23929.  
  23930.   Behavior = PhysicsBehavior ModuleTag_03
  23931.     Mass = 100.0
  23932.     AllowBouncing = Yes
  23933.     KillWhenRestingOnGround = Yes
  23934.   End
  23935.   Behavior = LifetimeUpdate ModuleTag_04
  23936.     MinLifetime = 1500   ; min lifetime in msec
  23937.     MaxLifetime = 1600   ; max lifetime in msec
  23938.   End
  23939.  
  23940.   Behavior = SlowDeathBehavior ModuleTag_05
  23941.     SinkDelay                 = 1500
  23942.     SinkDelayVariance         = 1500
  23943.     SinkRate                  = 2     ; in Dist/Sec
  23944.     DestructionDelay          = 12000
  23945.     DestructionDelayVariance  = 4000
  23946.   End
  23947.  
  23948. End
  23949.  
  23950. ;------------------------------------------------------------------------------
  23951. Object AmericaVehicleAmbulanceDeadHull
  23952.  
  23953.   ; *** ART Parameters ***
  23954.   Draw = W3DModelDraw ModuleTag_01
  23955.     ConditionState = NONE
  23956.       Model = AVAmbulance_D1
  23957.     End
  23958.   End
  23959.  
  23960.   ; ***DESIGN parameters ***
  23961.   EditorSorting   = DEBRIS
  23962.  
  23963.   ; *** ENGINEERING Parameters ***
  23964.   KindOf =  NO_COLLIDE HULK
  23965.  
  23966.   Behavior = PhysicsBehavior ModuleTag_03
  23967.     Mass = 100.0
  23968.     AllowBouncing = Yes
  23969.     KillWhenRestingOnGround = Yes
  23970.   End
  23971.   Behavior = LifetimeUpdate ModuleTag_04
  23972.     MinLifetime = 1500   ; min lifetime in msec
  23973.     MaxLifetime = 1600   ; max lifetime in msec
  23974.   End
  23975.  
  23976.   Behavior = SlowDeathBehavior ModuleTag_05
  23977.     SinkDelay                 = 1500
  23978.     SinkDelayVariance         = 1500
  23979.     SinkRate                  = 2     ; in Dist/Sec
  23980.     DestructionDelay          = 12000
  23981.     DestructionDelayVariance  = 4000
  23982.   End
  23983.   
  23984.  
  23985. End
  23986.  
  23987. ;------------------------------------------------------------------------------
  23988. Object DeadSCUDLauncherHulk
  23989.  
  23990.   ; *** ART Parameters ***
  23991.   Draw = W3DModelDraw ModuleTag_01
  23992.     DefaultConditionState
  23993.       Model = UVScudLchr_d1
  23994.     End
  23995.   End
  23996.  
  23997.   ; ***DESIGN parameters ***
  23998.   EditorSorting   = DEBRIS
  23999.  
  24000.   ; *** ENGINEERING Parameters ***
  24001.   KindOf =  NO_COLLIDE HULK
  24002.  
  24003.   Behavior = PhysicsBehavior ModuleTag_03
  24004.     Mass = 100.0
  24005.     AllowBouncing = Yes
  24006.     KillWhenRestingOnGround = Yes
  24007.   End
  24008.   Behavior = LifetimeUpdate ModuleTag_04
  24009.     MinLifetime = 1500   ; min lifetime in msec
  24010.     MaxLifetime = 1600   ; max lifetime in msec
  24011.   End
  24012.  
  24013.   Behavior = SlowDeathBehavior ModuleTag_05
  24014.     SinkDelay         = 1500
  24015.     SinkRate          = 2     ; in Dist/Sec
  24016.     DestructionDelay  = 8000
  24017.   End
  24018.  
  24019. End
  24020.  
  24021. ;------------------------------------------------------------------------------
  24022. Object DeadToxinTractorHulk
  24023.  
  24024.   ; *** ART Parameters ***
  24025.   Draw = W3DModelDraw ModuleTag_01
  24026.     DefaultConditionState
  24027.       Model = UVToxinTrk_d1
  24028.     End
  24029.   End
  24030.  
  24031.   ; ***DESIGN parameters ***
  24032.   EditorSorting   = DEBRIS
  24033.  
  24034.   ; *** ENGINEERING Parameters ***
  24035.   KindOf =  NO_COLLIDE HULK
  24036.  
  24037.   Behavior = PhysicsBehavior ModuleTag_03
  24038.     Mass = 100.0
  24039.     AllowBouncing = Yes
  24040.     KillWhenRestingOnGround = Yes
  24041.   End
  24042.   Behavior = LifetimeUpdate ModuleTag_04
  24043.     MinLifetime = 1500   ; min lifetime in msec
  24044.     MaxLifetime = 1600   ; max lifetime in msec
  24045.   End
  24046.  
  24047.   Behavior = SlowDeathBehavior ModuleTag_05
  24048.     SinkDelay         = 1500
  24049.     SinkRate          = 2    ; in Dist/Sec
  24050.     DestructionDelay  = 16000
  24051.   End
  24052.  
  24053. End
  24054.  
  24055. ;------------------------------------------------------------------------------
  24056. Object DeadQuadCannonHulk
  24057.  
  24058.   ; *** ART Parameters ***
  24059.   Draw = W3DModelDraw ModuleTag_01
  24060.     DefaultConditionState
  24061.       Model = UVQuadCann_d1
  24062.     End
  24063.   End
  24064.  
  24065.   ; ***DESIGN parameters ***
  24066.   EditorSorting   = DEBRIS
  24067.  
  24068.   ; *** ENGINEERING Parameters ***
  24069.   KindOf =  NO_COLLIDE HULK
  24070.  
  24071.   Behavior = PhysicsBehavior ModuleTag_03
  24072.     Mass = 100.0
  24073.     AllowBouncing = Yes
  24074.     KillWhenRestingOnGround = Yes
  24075.   End
  24076.   Behavior = LifetimeUpdate ModuleTag_04
  24077.     MinLifetime = 1500   ; min lifetime in msec
  24078.     MaxLifetime = 1600   ; max lifetime in msec
  24079.   End
  24080.  
  24081.   Behavior = SlowDeathBehavior ModuleTag_05
  24082.     SinkDelay         = 1500
  24083.     SinkRate          = 2    ; in Dist/Sec
  24084.     DestructionDelay  = 16000
  24085.   End
  24086.  
  24087. End
  24088.  
  24089. ;------------------------------------------------------------------------------
  24090. Object DeadBombTruckHulk
  24091.  
  24092.   ; *** ART Parameters ***
  24093.   Draw = W3DModelDraw ModuleTag_01
  24094.     DefaultConditionState
  24095.       Model = UVBmbTruk_d1
  24096.     End
  24097.   End
  24098.  
  24099.   ; ***DESIGN parameters ***
  24100.   EditorSorting   = DEBRIS
  24101.  
  24102.   ; *** ENGINEERING Parameters ***
  24103.   KindOf =  NO_COLLIDE HULK
  24104.  
  24105.   Behavior = PhysicsBehavior ModuleTag_03
  24106.     Mass = 100.0
  24107.     AllowBouncing = Yes
  24108.     KillWhenRestingOnGround = Yes
  24109.   End
  24110.   Behavior = LifetimeUpdate ModuleTag_04
  24111.     MinLifetime = 1500   ; min lifetime in msec
  24112.     MaxLifetime = 1600   ; max lifetime in msec
  24113.   End
  24114.  
  24115.   Behavior = SlowDeathBehavior ModuleTag_05
  24116.     SinkDelay         = 1500
  24117.     SinkRate          = 2    ; in Dist/Sec
  24118.     DestructionDelay  = 16000
  24119.   End
  24120.  
  24121. End
  24122.  
  24123. ;------------------------------------------------------------------------------
  24124. Object DeadTechnicalVanHulk
  24125.  
  24126.   ; *** ART Parameters ***
  24127.   Draw = W3DModelDraw ModuleTag_01
  24128.     DefaultConditionState
  24129.       Model = UVTECHVAN_d1
  24130.     End
  24131.   End
  24132.  
  24133.   ; ***DESIGN parameters ***
  24134.   EditorSorting   = DEBRIS
  24135.  
  24136.   ; *** ENGINEERING Parameters ***
  24137.   KindOf =  NO_COLLIDE HULK
  24138.  
  24139.   Behavior = PhysicsBehavior ModuleTag_03
  24140.     Mass = 100.0
  24141.     AllowBouncing = Yes
  24142.     KillWhenRestingOnGround = Yes
  24143.   End
  24144.   Behavior = LifetimeUpdate ModuleTag_04
  24145.     MinLifetime = 1500   ; min lifetime in msec
  24146.     MaxLifetime = 1600   ; max lifetime in msec
  24147.   End
  24148.  
  24149.   Behavior = SlowDeathBehavior ModuleTag_05
  24150.     SinkDelay         = 1500
  24151.     SinkRate          = 2    ; in Dist/Sec
  24152.     DestructionDelay  = 16000
  24153.   End
  24154.  
  24155. End
  24156.  
  24157. ;------------------------------------------------------------------------------
  24158. Object DeadTechnicalJeepHulk
  24159.  
  24160.   ; *** ART Parameters ***
  24161.   Draw = W3DModelDraw ModuleTag_01
  24162.     DefaultConditionState
  24163.       Model = UVTECHJEEP_d1
  24164.     End
  24165.   End
  24166.  
  24167.   ; ***DESIGN parameters ***
  24168.   EditorSorting   = DEBRIS
  24169.  
  24170.   ; *** ENGINEERING Parameters ***
  24171.   KindOf =  NO_COLLIDE HULK
  24172.  
  24173.   Behavior = PhysicsBehavior ModuleTag_03
  24174.     Mass = 100.0
  24175.     AllowBouncing = Yes
  24176.     KillWhenRestingOnGround = Yes
  24177.   End
  24178.   Behavior = LifetimeUpdate ModuleTag_04
  24179.     MinLifetime = 1500   ; min lifetime in msec
  24180.     MaxLifetime = 1600   ; max lifetime in msec
  24181.   End
  24182.  
  24183.   Behavior = SlowDeathBehavior ModuleTag_05
  24184.     SinkDelay         = 1500
  24185.     SinkRate          = 2    ; in Dist/Sec
  24186.     DestructionDelay  = 16000
  24187.   End
  24188.  
  24189. End
  24190.  
  24191. ;------------------------------------------------------------------------------
  24192. Object DeadTechnicalTruckHulk
  24193.  
  24194.   ; *** ART Parameters ***
  24195.   Draw = W3DModelDraw ModuleTag_01
  24196.     DefaultConditionState
  24197.       Model = UVTECHTRCK_d1
  24198.     End
  24199.   End
  24200.  
  24201.   ; ***DESIGN parameters ***
  24202.   EditorSorting   = DEBRIS
  24203.  
  24204.   ; *** ENGINEERING Parameters ***
  24205.   KindOf =  NO_COLLIDE HULK
  24206.  
  24207.   Behavior = PhysicsBehavior ModuleTag_03
  24208.     Mass = 100.0
  24209.     AllowBouncing = Yes
  24210.     KillWhenRestingOnGround = Yes
  24211.   End
  24212.   Behavior = LifetimeUpdate ModuleTag_04
  24213.     MinLifetime = 1500   ; min lifetime in msec
  24214.     MaxLifetime = 1600   ; max lifetime in msec
  24215.   End
  24216.  
  24217.   Behavior = SlowDeathBehavior ModuleTag_05
  24218.     SinkDelay         = 1500
  24219.     SinkRate          = 2    ; in Dist/Sec
  24220.     DestructionDelay  = 16000
  24221.   End
  24222.  
  24223. End
  24224.  
  24225. ;------------------------------------------------------------------------------
  24226. Object DeadRocketBuggyHulk
  24227.  
  24228.   ; *** ART Parameters ***
  24229.   Draw = W3DModelDraw ModuleTag_01
  24230.     DefaultConditionState
  24231.       Model = UVRockBug_D1
  24232.     End
  24233.   End
  24234.  
  24235.   ; ***DESIGN parameters ***
  24236.   EditorSorting   = DEBRIS
  24237.  
  24238.   ; *** ENGINEERING Parameters ***
  24239.   KindOf =  NO_COLLIDE HULK
  24240.  
  24241.   Behavior = PhysicsBehavior ModuleTag_03
  24242.     Mass = 100.0
  24243.     AllowBouncing = Yes
  24244.     KillWhenRestingOnGround = Yes
  24245.   End
  24246.   Behavior = LifetimeUpdate ModuleTag_04
  24247.     MinLifetime = 1500   ; min lifetime in msec
  24248.     MaxLifetime = 1600   ; max lifetime in msec
  24249.   End
  24250.  
  24251.   Behavior = SlowDeathBehavior ModuleTag_05
  24252.     SinkDelay         = 1500
  24253.     SinkRate          = 2    ; in Dist/Sec
  24254.     DestructionDelay  = 16000
  24255.   End
  24256.  
  24257. End
  24258.  
  24259. ;------------------------------------------------------------------------------
  24260. ; POW Trucks are cut. sorry. (srj)
  24261. ;Object DeadGLAPOWTruckHulk
  24262. ;  ; *** ART Parameters ***
  24263. ;  Draw = W3DModelDraw ModuleTag_01
  24264. ;    DefaultConditionState
  24265. ;      Model = UVPOWTruck_d1
  24266. ;    End
  24267. ;  End
  24268. ;  ; ***DESIGN parameters ***
  24269. ;  EditorSorting   = DEBRIS
  24270. ;  ; *** ENGINEERING Parameters ***
  24271. ;  KindOf =  NO_COLLIDE HULK
  24272. ;  Behavior = PhysicsBehavior ModuleTag_03
  24273. ;    Mass = 100.0
  24274. ;    AllowBouncing = Yes
  24275. ;    KillWhenRestingOnGround = Yes
  24276. ;  End
  24277. ;  Behavior = LifetimeUpdate ModuleTag_04
  24278. ;    MinLifetime = 1500   ; min lifetime in msec
  24279. ;    MaxLifetime = 1600   ; max lifetime in msec
  24280. ;  End
  24281. ;  Behavior = SlowDeathBehavior ModuleTag_05
  24282. ;    SinkDelay         = 1500
  24283. ;    SinkRate          = 2    ; in Dist/Sec
  24284. ;    DestructionDelay  = 16000
  24285. ;  End
  24286. ;End
  24287.  
  24288. ;---------------------------------------------------------------------------
  24289. ; POW Trucks are cut. sorry. (srj)
  24290. ;Object DeadChinaPOWTruckHulk
  24291. ;  ; *** ART Parameters ***
  24292. ;  Draw = W3DModelDraw ModuleTag_01
  24293. ;    ConditionState = NONE
  24294. ;      Model = NVPOWTrck_d1
  24295. ;    End
  24296. ;  End
  24297. ;
  24298. ;  ; ***DESIGN parameters ***
  24299. ;  EditorSorting   = DEBRIS
  24300. ;  ; *** ENGINEERING Parameters ***
  24301. ;  KindOf =  NO_COLLIDE HULK
  24302. ;  Behavior = PhysicsBehavior ModuleTag_03
  24303. ;    Mass = 100.0
  24304. ;    AllowBouncing = Yes
  24305. ;    KillWhenRestingOnGround = Yes
  24306. ;  End
  24307. ;  Behavior = LifetimeUpdate ModuleTag_04
  24308. ;    MinLifetime = 1500   ; min lifetime in msec
  24309. ;    MaxLifetime = 1600   ; max lifetime in msec
  24310. ;  End
  24311. ;  Behavior = SlowDeathBehavior ModuleTag_05
  24312. ;    SinkDelay         = 1500
  24313. ;    SinkRate          = 2    ; in Dist/Sec
  24314. ;    DestructionDelay  = 16000
  24315. ;  End
  24316. ;End
  24317.  
  24318. ;---------------------------------------------------------------------------
  24319. Object DeadCrusaderHulk
  24320.  
  24321.   ; *** ART Parameters ***
  24322.   Draw = W3DModelDraw ModuleTag_01
  24323.     ConditionState = NONE
  24324.       Model = AVLeopard_D1
  24325.     End
  24326.   End
  24327.  
  24328.   ; ***DESIGN parameters ***
  24329.   EditorSorting   = DEBRIS
  24330.  
  24331.   ; *** ENGINEERING Parameters ***
  24332.   KindOf =  NO_COLLIDE HULK
  24333.  
  24334.   Behavior = PhysicsBehavior ModuleTag_03
  24335.     Mass = 100.0
  24336.     AllowBouncing = Yes
  24337.     KillWhenRestingOnGround = Yes
  24338.   End
  24339.   Behavior = LifetimeUpdate ModuleTag_04
  24340.     MinLifetime = 1500   ; min lifetime in msec
  24341.     MaxLifetime = 1600   ; max lifetime in msec
  24342.   End
  24343.  
  24344.   Behavior = SlowDeathBehavior ModuleTag_05
  24345.     SinkDelay         = 1500
  24346.     SinkRate          = 2     ; in Dist/Sec
  24347.     DestructionDelay  = 8000
  24348.   End
  24349. End
  24350.  
  24351. ;------------------------------------------------------------------------------
  24352. Object DeadPaladinHulk
  24353.  
  24354.   ; *** ART Parameters ***
  24355.   Draw = W3DModelDraw ModuleTag_01
  24356.     ConditionState = NONE
  24357.       Model = AVPaladin_D1
  24358.     End
  24359.   End
  24360.  
  24361.   ; ***DESIGN parameters ***
  24362.   EditorSorting   = DEBRIS
  24363.  
  24364.   ; *** ENGINEERING Parameters ***
  24365.   KindOf =  NO_COLLIDE HULK
  24366.  
  24367.   Behavior = PhysicsBehavior ModuleTag_03
  24368.     Mass = 100.0
  24369.     AllowBouncing = Yes
  24370.     KillWhenRestingOnGround = Yes
  24371.   End
  24372.   Behavior = LifetimeUpdate ModuleTag_04
  24373.     MinLifetime = 1500   ; min lifetime in msec
  24374.     MaxLifetime = 1600   ; max lifetime in msec
  24375.   End
  24376.  
  24377.   Behavior = SlowDeathBehavior ModuleTag_05
  24378.     SinkDelay         = 1500
  24379.     SinkRate          = 2     ; in Dist/Sec
  24380.     DestructionDelay  = 8000
  24381.   End
  24382. End
  24383.  
  24384. ;------------------------------------------------------------------------------
  24385. Object DeadMarauderHulk
  24386.  
  24387.   ; *** ART Parameters ***
  24388.   Draw = W3DModelDraw ModuleTag_01
  24389.     ConditionState = NONE
  24390.       Model = UVMarauder_D1
  24391.     End
  24392.   End
  24393.  
  24394.   ; ***DESIGN parameters ***
  24395.   EditorSorting   = DEBRIS
  24396.  
  24397.   ; *** ENGINEERING Parameters ***
  24398.   KindOf =  NO_COLLIDE HULK
  24399.  
  24400.   Behavior = PhysicsBehavior ModuleTag_03
  24401.     Mass = 100.0
  24402.     AllowBouncing = Yes
  24403.     KillWhenRestingOnGround = Yes
  24404.   End
  24405.   Behavior = LifetimeUpdate ModuleTag_04
  24406.     MinLifetime = 1500   ; min lifetime in msec
  24407.     MaxLifetime = 1600   ; max lifetime in msec
  24408.   End
  24409.  
  24410.   Behavior = SlowDeathBehavior ModuleTag_05
  24411.     SinkDelay         = 1500
  24412.     SinkRate          = 2     ; in Dist/Sec
  24413.     DestructionDelay  = 12000
  24414.   End
  24415. End
  24416.  
  24417. ;------------------------------------------------------------------------------
  24418. Object DeadScorpionHulk
  24419.  
  24420.   ; *** ART Parameters ***
  24421.   Draw = W3DModelDraw ModuleTag_01
  24422.     ConditionState = NONE
  24423.       Model = UVLiteTank_D1
  24424.     End
  24425.   End
  24426.  
  24427.   ; ***DESIGN parameters ***
  24428.   EditorSorting   = DEBRIS
  24429.  
  24430.   ; *** ENGINEERING Parameters ***
  24431.   KindOf =  NO_COLLIDE HULK
  24432.  
  24433.   Behavior = PhysicsBehavior ModuleTag_03
  24434.     Mass = 100.0
  24435.     AllowBouncing = Yes
  24436.     KillWhenRestingOnGround = Yes
  24437.   End
  24438.   Behavior = LifetimeUpdate ModuleTag_04
  24439.     MinLifetime = 1500   ; min lifetime in msec
  24440.     MaxLifetime = 1600   ; max lifetime in msec
  24441.   End
  24442.  
  24443.   Behavior = SlowDeathBehavior ModuleTag_05
  24444.     SinkDelay         = 1500
  24445.     SinkRate          = 2     ; in Dist/Sec
  24446.     DestructionDelay  = 12000
  24447.   End
  24448. End
  24449.  
  24450. ;------------------------------------------------------------------------------
  24451. ; POW Trucks are cut. sorry. (srj)
  24452. ;Object DeadAmericanPOWTruckHulk
  24453. ;  ; *** ART Parameters ***
  24454. ;  Draw = W3DModelDraw ModuleTag_01
  24455. ;    ConditionState = NONE
  24456. ;      Model = AVPOWTruck_D1
  24457. ;    End
  24458. ;  End
  24459. ;  ; ***DESIGN parameters ***
  24460. ;  EditorSorting   = DEBRIS
  24461. ;  ; *** ENGINEERING Parameters ***
  24462. ;  KindOf =  NO_COLLIDE HULK
  24463. ;  Behavior = PhysicsBehavior ModuleTag_03
  24464. ;    Mass = 100.0
  24465. ;    AllowBouncing = Yes
  24466. ;    KillWhenRestingOnGround = Yes
  24467. ;  End
  24468. ;  Behavior = LifetimeUpdate ModuleTag_04
  24469. ;    MinLifetime = 1500   ; min lifetime in msec
  24470. ;    MaxLifetime = 1600   ; max lifetime in msec
  24471. ;  End
  24472. ;  Behavior = SlowDeathBehavior ModuleTag_05
  24473. ;    SinkDelay         = 1500
  24474. ;    SinkRate          = 2     ; in Dist/Sec
  24475. ;    DestructionDelay  = 12000
  24476. ;  End
  24477. ;End
  24478.  
  24479. ;------------------------------------------------------------------------------
  24480. Object DestroyedMilitiaTank
  24481.  
  24482.   ; *** ART Parameters ***
  24483.   Draw = W3DModelDraw ModuleTag_01
  24484.     ConditionState = NONE
  24485.       Model = CVTank_D1
  24486.     End
  24487.   End
  24488.  
  24489.   ; ***DESIGN parameters ***
  24490.   EditorSorting   = DEBRIS
  24491.  
  24492.   ; *** ENGINEERING Parameters ***
  24493.   KindOf = NONE HULK
  24494.  
  24495.   Behavior = PhysicsBehavior ModuleTag_03
  24496.     Mass = 100.0
  24497.     AllowBouncing = Yes
  24498.     KillWhenRestingOnGround = Yes
  24499.   End
  24500.   Behavior = LifetimeUpdate ModuleTag_04
  24501.     MinLifetime = 10000   ; min lifetime in msec
  24502.     MaxLifetime = 15000   ; max lifetime in msec
  24503.   End
  24504.  
  24505.   Behavior = SlowDeathBehavior ModuleTag_05
  24506.     SinkDelay = 4000
  24507.     SinkRate = 2     ; in Dist/Sec
  24508.     DestructionDelay = 8000
  24509.   End
  24510. End
  24511.  
  24512. ;------------------------------------------------------------------------------
  24513. Object DeadRadarVanHulk
  24514.  
  24515.   ; *** ART Parameters ***
  24516.   Draw = W3DModelDraw ModuleTag_01
  24517.     ConditionState = NONE
  24518.       Model = UVRadarVan_D1
  24519.     End
  24520.   End
  24521.  
  24522.   ; ***DESIGN parameters ***
  24523.   EditorSorting   = DEBRIS
  24524.  
  24525.   ; *** ENGINEERING Parameters ***
  24526.   KindOf =  NO_COLLIDE HULK
  24527.  
  24528.   Behavior = PhysicsBehavior ModuleTag_03
  24529.     Mass = 100.0
  24530.     AllowBouncing = Yes
  24531.     KillWhenRestingOnGround = Yes
  24532.   End
  24533.   Behavior = LifetimeUpdate ModuleTag_04
  24534.     MinLifetime = 1500   ; min lifetime in msec
  24535.     MaxLifetime = 1600   ; max lifetime in msec
  24536.   End
  24537.  
  24538.   Behavior = SlowDeathBehavior ModuleTag_05
  24539.     SinkDelay         = 1500
  24540.     SinkRate          = 2     ; in Dist/Sec
  24541.     DestructionDelay  = 16000
  24542.   End
  24543.  
  24544. End
  24545.  
  24546. ;------------------------------------------------------------------------------
  24547. Object ChinaDeadDozerHulk
  24548.  
  24549.   ; *** ART Parameters ***
  24550.   Draw                = W3DModelDraw ModuleTag_01
  24551.     ConditionState    = NONE
  24552.       Model           = nvconstdoz_D1
  24553.     End
  24554.   End
  24555.  
  24556.   ; ***DESIGN parameters ***
  24557.   EditorSorting       = DEBRIS
  24558.  
  24559.   ; *** ENGINEERING Parameters ***
  24560.   KindOf              =  NO_COLLIDE HULK
  24561.  
  24562.   Behavior                  = PhysicsBehavior ModuleTag_03
  24563.     Mass                    = 100.0
  24564.     AllowBouncing           = Yes
  24565.     KillWhenRestingOnGround = Yes
  24566.   End
  24567.   Behavior = LifetimeUpdate ModuleTag_04
  24568.     MinLifetime = 1500   ; min lifetime in msec
  24569.     MaxLifetime = 1600   ; max lifetime in msec
  24570.   End
  24571.  
  24572.   Behavior = SlowDeathBehavior ModuleTag_05
  24573.     SinkDelay        = 1500
  24574.     SinkRate            = 2     ; in Dist/Sec
  24575.     DestructionDelay = 8000
  24576.   End
  24577.  
  24578. End
  24579.  
  24580. ;------------------------------------------------------------------------------
  24581. Object AmericaDeadDozerHulk
  24582.  
  24583.   ; *** ART Parameters ***
  24584.   Draw                = W3DModelDraw ModuleTag_01
  24585.     ConditionState    = NONE
  24586.       Model           = avconstdoz_D1
  24587.     End
  24588.   End
  24589.  
  24590.   ; ***DESIGN parameters ***
  24591.   EditorSorting       = DEBRIS
  24592.  
  24593.   ; *** ENGINEERING Parameters ***
  24594.   KindOf              =  NO_COLLIDE HULK
  24595.  
  24596.   Behavior                  = PhysicsBehavior ModuleTag_03
  24597.     Mass                    = 100.0
  24598.     AllowBouncing           = Yes
  24599.     KillWhenRestingOnGround = Yes
  24600.   End
  24601.   Behavior = LifetimeUpdate ModuleTag_04
  24602.     MinLifetime = 1500   ; min lifetime in msec
  24603.     MaxLifetime = 1600   ; max lifetime in msec
  24604.   End
  24605.  
  24606.   Behavior = SlowDeathBehavior ModuleTag_05
  24607.     SinkDelay        = 1500
  24608.     SinkRate            = 2     ; in Dist/Sec
  24609.     DestructionDelay = 8000
  24610.   End
  24611.  
  24612. End
  24613.  
  24614. ;------------------------------------------------------------------------------
  24615. Object AmericaScoutDroneHulk
  24616.   ; *** ART Parameters ***
  24617.   Draw                = W3DModelDraw ModuleTag_01
  24618.     ConditionState    = NONE
  24619.       Model           = AVScoutDr_D1
  24620.     End
  24621.   End
  24622.  
  24623.   ; ***DESIGN parameters ***
  24624.   EditorSorting       = DEBRIS
  24625.  
  24626.   ; *** ENGINEERING Parameters ***
  24627.   KindOf              =  NO_COLLIDE HULK
  24628.  
  24629.   Behavior                  = PhysicsBehavior ModuleTag_03
  24630.     Mass                    = 10.0
  24631.     AllowBouncing           = Yes
  24632.     KillWhenRestingOnGround = Yes
  24633.   End
  24634.   Behavior = LifetimeUpdate ModuleTag_04
  24635.     MinLifetime = 1500   ; min lifetime in msec
  24636.     MaxLifetime = 1600   ; max lifetime in msec
  24637.   End
  24638.  
  24639.   Behavior = SlowDeathBehavior ModuleTag_05
  24640.     SinkDelay        = 1500
  24641.     SinkRate            = 2     ; in Dist/Sec
  24642.     DestructionDelay = 8000
  24643.   End
  24644. End
  24645.  
  24646. ;------------------------------------------------------------------------------
  24647. Object AmericaBattleDroneHulk
  24648.   ; *** ART Parameters ***
  24649.   Draw                = W3DModelDraw ModuleTag_01
  24650.     ConditionState    = NONE
  24651.       Model           = AVBattleDr_D1
  24652.     End
  24653.   End
  24654.  
  24655.   ; ***DESIGN parameters ***
  24656.   EditorSorting       = DEBRIS
  24657.  
  24658.   ; *** ENGINEERING Parameters ***
  24659.   KindOf              =  NO_COLLIDE HULK
  24660.  
  24661.   Behavior                  = PhysicsBehavior ModuleTag_03
  24662.     Mass                    = 10.0
  24663.     AllowBouncing           = Yes
  24664.     KillWhenRestingOnGround = Yes
  24665.   End
  24666.   Behavior = LifetimeUpdate ModuleTag_04
  24667.     MinLifetime = 1500   ; min lifetime in msec
  24668.     MaxLifetime = 1600   ; max lifetime in msec
  24669.   End
  24670.  
  24671.   Behavior = SlowDeathBehavior ModuleTag_05
  24672.     SinkDelay        = 1500
  24673.     SinkRate            = 2     ; in Dist/Sec
  24674.     DestructionDelay = 8000
  24675.   End
  24676. End
  24677.  
  24678. ;------------------------------------------------------------------------------
  24679. Object AmericaJetA10Thunderbolt
  24680.  
  24681.   ; *** ART Parameters ***
  24682.   SelectPortrait         = SAWarthog_L
  24683.   ButtonImage            = SAWarthog
  24684.  
  24685.   Draw = W3DModelDraw ModuleTag_01
  24686.  
  24687.     OkToChangeModelColor = Yes
  24688.  
  24689.     ExtraPublicBone = WeaponA01
  24690.     ExtraPublicBone = WeaponA02
  24691.     ExtraPublicBone = WeaponA03
  24692.     ExtraPublicBone = WeaponA04
  24693.     ExtraPublicBone = WeaponA05
  24694.     ExtraPublicBone = WeaponA06
  24695.  
  24696.     DefaultConditionState
  24697.       Model             = AVWarthog
  24698.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  24699.       WeaponFireFXBone  = PRIMARY Muzzle01
  24700.       ParticleSysBone = Engine01 JetBlackTrailThin
  24701.       ParticleSysBone = Engine02 JetBlackTrailThin
  24702.       ParticleSysBone = Wingtip01 JetContrailThin
  24703.       ParticleSysBone = Wingtip02 JetContrailThin
  24704.     End
  24705.  
  24706.     ConditionState      = REALLYDAMAGED
  24707.       Model             = AVWarthog_D
  24708.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  24709.       WeaponFireFXBone  = PRIMARY Muzzle01
  24710.     End
  24711.     AliasConditionState  = RUBBLE
  24712.  
  24713.   End
  24714.  
  24715.   ; ***DESIGN parameters ***
  24716.   DisplayName         = OBJECT:A10Thunderbolt
  24717.   EditorSorting       = VEHICLE
  24718.   Side                = America
  24719.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  24720.   VisionRange         = 300.0 
  24721.   ShroudClearingRange = 300
  24722.   Prerequisites
  24723.     Object = AmericaAirfield
  24724.   End
  24725.   WeaponSet
  24726.     Conditions = None 
  24727.     Weapon = PRIMARY A10ThunderboltVulcan
  24728.   End
  24729.   ArmorSet
  24730.     Conditions      = None
  24731.     Armor           = AirplaneArmor
  24732.     DamageFX        = None
  24733.   End
  24734.  
  24735.   ExperienceValue = 50 100 150 400    ;Experience point value at each level
  24736.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  24737.   IsTrainable = Yes             ;Can gain experience
  24738.  
  24739.   ; *** AUDIO Parameters ***
  24740.   SoundAmbient = A10ThunderboltAmbientLoop
  24741.   SoundAmbientRubble    = NoSound
  24742.   UnitSpecificSounds
  24743.     SoundEject = PilotSoundEject
  24744.     VoiceEject = PilotVoiceEject
  24745.     StartDive  = A10ThunderboltDive
  24746.   End
  24747.  
  24748.   ; *** ENGINEERING Parameters ***
  24749.   RadarPriority = UNIT
  24750.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE AIRCRAFT SCORE IGNORED_IN_GUI
  24751.   Body = ActiveBody ModuleTag_02
  24752.     MaxHealth       = 600.0
  24753.     InitialHealth   = 600.0
  24754.   End
  24755.  
  24756.   ExperienceValue     = 40 40 40 40  ; Experience point value at each level
  24757.  
  24758.   Behavior                          = JetSlowDeathBehavior ModuleTag_03
  24759.     DestructionDelay                = 99999999  ; destruction will happen when we
  24760.     RollRate                        = 0.0
  24761.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  24762.     PitchRate                       = 0.0
  24763.     FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  24764.     FXInitialDeath                  = FX_JetDeathInitial
  24765.     OCLInitialDeath                 = None
  24766.     DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
  24767.     FXSecondary                     = FX_JetDeathSecondary
  24768.     OCLSecondary                    = None
  24769.     FXHitGround                     = FX_JetDeathHitGround
  24770.     OCLHitGround                    = OCL_A10DeathHitGround
  24771.     DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
  24772.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  24773.     OCLFinalBlowUp                  = OCL_A10DeathFinalBlowUp
  24774.   End
  24775.  
  24776.   Behavior = PhysicsBehavior ModuleTag_05
  24777.     Mass = 500.0
  24778.   End
  24779.  
  24780.   ;SCRIPTED SUPPORT: These special power is triggered directly 
  24781.   ;from the transport without creating a transport. This is done 
  24782.   ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
  24783.   ;which also prevents creating the payload transport.
  24784.   Behavior    = OCLSpecialPower ModuleTag_06
  24785.     SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike ;@@KRIS@@
  24786.     UpgradeOCL           = SCIENCE_A10ThunderboltMissileStrike3 SUPERWEAPON_A10ThunderboltMissileStrike3
  24787.     UpgradeOCL           = SCIENCE_A10ThunderboltMissileStrike2 SUPERWEAPON_A10ThunderboltMissileStrike2
  24788.     OCL                  = SUPERWEAPON_A10ThunderboltMissileStrike1
  24789.     CreateLocation       = USE_OWNER_OBJECT
  24790.   End
  24791.  
  24792.   Behavior = DeliverPayloadAIUpdate ModuleTag_07
  24793.   End
  24794.   Locomotor = SET_NORMAL A10ThunderboltLocomotor
  24795.  
  24796.   Behavior = FlammableUpdate ModuleTag_21
  24797.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  24798.     AflameDamageAmount = 3       ; taking this much damage...
  24799.     AflameDamageDelay = 500       ; this often.
  24800.   End
  24801.  
  24802.   ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_22
  24803.   End
  24804.  
  24805.   Geometry = Cylinder
  24806.   GeometryIsSmall = Yes
  24807.   GeometryMajorRadius = 10.0
  24808.   GeometryMinorRadius = 10.0
  24809.   GeometryHeight = 10.0
  24810.   Shadow = SHADOW_VOLUME
  24811.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  24812.  
  24813. End
  24814.  
  24815. ;------------------------------------------------------------------------------
  24816. Object AmericaVehicleChinook
  24817.  
  24818.   ; *** ART Parameters ***
  24819.   SelectPortrait         = SAChinook_L
  24820.   ButtonImage            = SAChinook
  24821.   
  24822.   ;UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
  24823.   ;UpgradeCameo2 = NONE
  24824.   ;UpgradeCameo3 = NONE
  24825.   ;UpgradeCameo4 = NONE
  24826.   ;UpgradeCameo5 = NONE
  24827.  
  24828.   Draw = W3DModelDraw                         ModuleTag_01 ; Helicopter 
  24829.  
  24830.     ExtraPublicBone = RopeStart
  24831.     ExtraPublicBone = RopeEnd
  24832.  
  24833.     DefaultConditionState
  24834.       Model = AVChinook
  24835.       Animation = AVChinook.AVChinook
  24836.       AnimationMode = LOOP
  24837.     End
  24838.  
  24839.     ConditionState = REALLYDAMAGED
  24840.       Model = AVChinook_d
  24841.       Animation = AVChinook_d.AVChinook_d
  24842.       AnimationMode = LOOP
  24843.     End
  24844.  
  24845.     ConditionState = RUBBLE
  24846.       Model = AVChinook_d
  24847.       Animation = AVChinook_d.AVChinook_d
  24848.       AnimationMode = LOOP
  24849.     End
  24850.  
  24851.     ConditionState = RUBBLE SPECIAL_DAMAGED
  24852.       Model = AVChinook_d
  24853.       HideSubObject = Props01
  24854.       HideSubObject = Props02
  24855.     End
  24856.  
  24857.     OkToChangeModelColor = Yes
  24858.   End
  24859.  
  24860.   Draw = W3DModelDraw                         ModuleTag_02 ; Cargo net 
  24861.     ConditionState = NONE
  24862.       Model = None  ; Nothing here
  24863.       TransitionKey = TRANS_Empty
  24864.       WaitForStateToFinishIfPossible = TRANS_Unloading
  24865.     End
  24866.  
  24867.     ConditionState = DYING 
  24868.       Model = None  ; Nothing here
  24869.     End
  24870.     AliasConditionState = RUBBLE
  24871.     AliasConditionState = CARRYING RUBBLE
  24872.     AliasConditionState = DOCKING RUBBLE
  24873.     AliasConditionState = DOCKING CARRYING RUBBLE
  24874.  
  24875.      ConditionState = CARRYING
  24876.       Model = AVChinook_A ;Carrying a full wobbly net of stuff
  24877.       Animation = AVChinook_A.AVChinook_A
  24878.       AnimationMode = LOOP
  24879.       TransitionKey = TRANS_Full
  24880.       WaitForStateToFinishIfPossible = TRANS_PickingUp
  24881.     End
  24882.  
  24883.     ConditionState = DOCKING
  24884.       Model = AVChinook_A1MSH ;Lowering an empty net, pulling up with stuff
  24885.       Animation = AVChinook_A1SK.AVChinook_A1
  24886.       AnimationMode = ONCE_BACKWARDS
  24887.       Flags = START_FRAME_LAST
  24888.       AnimationSpeedFactorRange = .75 .75
  24889.       TransitionKey = TRANS_PickingUp
  24890.       WaitForStateToFinishIfPossible = TRANS_Unloading  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
  24891.     End
  24892.  
  24893.     ConditionState = DOCKING CARRYING
  24894.       Model = AVChinook_A1MSH ; Lowering a full net, letting stuff fall out, and pulling up an empty net
  24895.       Animation = AVChinook_A1SK.AVChinook_A1
  24896.       AnimationMode = ONCE
  24897.       AnimationSpeedFactorRange = 2.75 2.75
  24898.       TransitionKey = TRANS_Unloading
  24899.       WaitForStateToFinishIfPossible = TRANS_PickingUp  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
  24900.     End
  24901.   End
  24902.  
  24903.   ; ***DESIGN parameters ***
  24904.   DisplayName         = OBJECT:Chinook
  24905.   EditorSorting       = VEHICLE
  24906.   Side                = America
  24907.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  24908.   VisionRange         = 300.0 
  24909.   ShroudClearingRange = 600
  24910.   BuildCost           = 1200
  24911.   BuildTime           = 10.0          ;in seconds  
  24912.   Prerequisites
  24913.     Object = AmericaSupplyCenter
  24914.   End
  24915.   ExperienceValue     = 50 50 50 50 ;Experience point value at each level
  24916.   IsTrainable         = No  
  24917.   CommandSet          = AmericaVehicleChinookCommandSet
  24918.   ArmorSet
  24919.     Conditions      = None
  24920.     Armor           = ChinookArmor
  24921.     DamageFX        = None
  24922.   End
  24923.  
  24924.   ; *** AUDIO Parameters ***
  24925.   VoiceSelect     = ChinookVoiceSelect
  24926.   VoiceMove       = ChinookVoiceMove
  24927.   VoiceAttack     = ChinookVoiceAttack
  24928.   SoundAmbient    = ChinookAmbientLoop
  24929.   SoundAmbientRubble    = NoSound
  24930.   SoundDie        = ChinookVoiceFalling
  24931.   SoundEnter      = HumveeEnter
  24932.   SoundExit       = HumveeExit
  24933.   UnitSpecificSounds
  24934.     VoiceCreate         = ChinookVoiceCreate
  24935.     VoiceSupply         = ChinookVoiceSupply
  24936.     VoiceUnload         = ChinookVoiceUnload
  24937.     VoiceCombatDrop     = ChinookVoiceCombatDrop
  24938.     VoiceClearBuilding  = RangerVoiceClearBuilding ;Special combat drop that clears buildings!
  24939.     VoiceGarrison       = ChinookVoiceMove
  24940.   End
  24941.  
  24942.   ; *** ENGINEERING Parameters ***
  24943.   RadarPriority   = UNIT
  24944.   ; note that, although Chinooks aren't produced at helipads, we want to set this KINDOF so that they can land at
  24945.   ; (well, "near" actually) an Airfield to get healed...
  24946.   ; also note that we should NOT set CAN_ATTACK for chinooks. they can't attack. so there.
  24947.   KindOf          = PRELOAD CAN_CAST_REFLECTIONS SELECTABLE VEHICLE TRANSPORT AIRCRAFT HARVESTER SCORE PRODUCED_AT_HELIPAD
  24948.  
  24949.   Body = ActiveBody ModuleTag_03
  24950.     MaxHealth       = 300.0
  24951.     InitialHealth   = 300.0
  24952.   End
  24953.  
  24954.   Behavior = FXListDie ModuleTag_05
  24955.     DeathFX = FX_HelicopterStartDeath
  24956.   End
  24957.  
  24958.   Behavior                       = TransitionDamageFX ModuleTag_06
  24959.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
  24960.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
  24961.   End
  24962.  
  24963.   Behavior = ChinookAIUpdate ModuleTag_07
  24964.     MaxBoxes                = 8
  24965.     SupplyCenterActionDelay = 3000     ; ms for whole thing (one transaction)
  24966.     SupplyWarehouseActionDelay = 1250  ; 875 ; ms per box (many small transactions)
  24967.     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)
  24968.     SuppliesDepletedVoice = ChinookVoiceSuppliesDepleted
  24969.     NumRopes                = 4
  24970.     ; these define how long we can wait, once a guy is on-rope, before throwing another
  24971.     ; guy onto that same rope. (Hint: you don't want to use zero.) Omit entirely
  24972.     ; and we'll wait for each guy to clear before spawning another.
  24973.     PerRopeDelayMin         = 900
  24974.     PerRopeDelayMax         = 1500
  24975.     RopeWidth               = 0.5
  24976.     RopeColor               = R:0 G:0 B:0
  24977.     RopeWobbleLen           = 10
  24978.     RopeWobbleAmplitude     = 0.25
  24979.     RopeWobbleRate          = 180
  24980.     RopeFinalHeight         = 10    ; stop this far above ground
  24981.     RappelSpeed             = 30
  24982.     MinDropHeight           = 40      ; if dropping into a tall bldg, go at least this far above it
  24983.  
  24984.   End
  24985.   Locomotor = SET_NORMAL    ChinookLocomotor
  24986.   Locomotor = SET_TAXIING   BasicHelicopterTaxiLocomotor
  24987.  
  24988.   Behavior = TransportContain ModuleTag_08
  24989.     Slots                 = 8
  24990.     DamagePercentToUnits  = 100%
  24991.     AllowInsideKindOf     = INFANTRY VEHICLE
  24992.     ForbidInsideKindOf    = AIRCRAFT HUGE_VEHICLE
  24993.     ExitDelay             = 100
  24994.     NumberOfExitPaths     = 1
  24995.   End
  24996.   Behavior = PhysicsBehavior ModuleTag_09
  24997.     Mass = 50.0
  24998.   End
  24999.   Behavior = HelicopterSlowDeathBehavior ModuleTag_10
  25000.     DestructionDelay                = 99999999        ; the destruction delay
  25001.     SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
  25002.     SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
  25003.     SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
  25004.     MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
  25005.     SoundDeathLoop                  = ComancheDamagedLoop
  25006.     MinSelfSpin                     = 100                     ; in degrees per second
  25007.     MaxSelfSpin                     = 300                     ; in degrees per second
  25008.     SelfSpinUpdateDelay             = 100                     ; in milliseconds
  25009.     SelfSpinUpdateAmount            = 10                      ; in degrees   
  25010.     FallHowFast                     = 12.0%                   ; fraction of gravity, lower = take longer to fall
  25011.     MinBladeFlyOffDelay             = 1500                    ; in milliseconds
  25012.     MaxBladeFlyOffDelay             = 1500                    ; in milliseconds
  25013.     AttachParticle                  = SootySmokeTrail
  25014.     AttachParticleBone              = Propeller02
  25015.     BladeObjectName                 = ComancheBlades
  25016.     BladeBoneName                   = Propeller01    
  25017.     FXBlade                         = FX_HelicopterBladeExplosion
  25018.     OCLBlade                        = OCL_HelicopterBladeExplosion
  25019.     FXHitGround                     = FX_HelicopterHitGround
  25020.     OCLHitGround                    = OCL_HelicopterHitGround
  25021.     FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
  25022.     OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
  25023.     DelayFromGroundToFinalDeath     = 30
  25024.     FinalRubbleObject               = ChinookRubbleHull
  25025.   End
  25026.  
  25027.   Behavior = FlammableUpdate ModuleTag_21
  25028.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  25029.     AflameDamageAmount = 3       ; taking this much damage...
  25030.     AflameDamageDelay = 500       ; this often.
  25031.   End
  25032.  
  25033.   Geometry              = BOX
  25034.   GeometryMajorRadius   = 20.0
  25035.   GeometryMinorRadius   = 6.0
  25036.   GeometryHeight        = 12.0     
  25037.   GeometryIsSmall       = No
  25038.   Shadow                = SHADOW_VOLUME    
  25039.   ShadowSizeX           = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  25040.  
  25041. End
  25042.  
  25043. ;------------------------------------------------------------------------------
  25044. Object AmericaTankPaladin
  25045.  
  25046.   ; *** ART Parameters ***
  25047.   SelectPortrait         = SAPaladin_L
  25048.   ButtonImage            = SAPaladin
  25049.   
  25050.   UpgradeCameo1 = Upgrade_AmericaBattleDrone
  25051.   UpgradeCameo2 = Upgrade_AmericaScoutDrone
  25052.   UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
  25053.   UpgradeCameo4 = Upgrade_AmericaCompositeArmor
  25054.   ;UpgradeCameo5 = NONE
  25055.  
  25056.   Draw = W3DTankDraw ModuleTag_01
  25057.     
  25058.     ExtraPublicBone = Laser 
  25059.  
  25060.     ConditionState        = NONE
  25061.       Model               = AVPaladin
  25062.       Turret              = Turret01
  25063.       WeaponFireFXBone    = PRIMARY TurretMS
  25064.       WeaponRecoilBone    = PRIMARY Barrel
  25065.       WeaponMuzzleFlash   = PRIMARY TurretFX
  25066.       WeaponLaunchBone = PRIMARY TurretMS
  25067.     End
  25068.     
  25069.     ConditionState        = REALLYDAMAGED
  25070.       Model               = AVPaladin_D
  25071.       Turret              = Turret01
  25072.       WeaponFireFXBone    = PRIMARY TurretMS
  25073.       WeaponRecoilBone    = PRIMARY Barrel
  25074.       WeaponMuzzleFlash   = PRIMARY TurretFX
  25075.       WeaponLaunchBone = PRIMARY TurretMS
  25076.     End
  25077.     
  25078.     ConditionState        = RUBBLE
  25079.       Model               = AVPaladin_D
  25080.       Turret              = Turret01
  25081.       WeaponFireFXBone    = PRIMARY TurretMS
  25082.       WeaponRecoilBone    = PRIMARY Barrel
  25083.       WeaponMuzzleFlash   = PRIMARY TurretFX
  25084.       WeaponLaunchBone = PRIMARY TurretMS
  25085.     End
  25086.     
  25087.     TrackMarks           = EXTnkTrack.tga
  25088.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  25089.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  25090.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  25091.     OkToChangeModelColor = Yes
  25092.   End
  25093.  
  25094.   ; ***DESIGN parameters ***
  25095.   DisplayName      = OBJECT:Paladin
  25096.   Side = America
  25097.   EditorSorting   = VEHICLE
  25098.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  25099.   WeaponSet
  25100.     Conditions = None 
  25101.     Weapon = PRIMARY PaladinTankGun
  25102.   End
  25103.   ArmorSet
  25104.     Conditions      = None
  25105.     Armor           = TankArmor
  25106.     DamageFX        = TankDamageFX
  25107.   End
  25108.   ;ArmorSet
  25109.   ;  Conditions      = PLAYER_UPGRADE
  25110.   ;  Armor           = UpgradedTankArmor
  25111.   ;  DamageFX        = TankDamageFX
  25112.   ;End
  25113.   BuildCost       = 1100
  25114.   BuildTime       = 12.0          ;in seconds    
  25115.   VisionRange     = 150
  25116.   ShroudClearingRange = 300
  25117.   Prerequisites
  25118.     Object = AmericaWarFactory
  25119.     Science = SCIENCE_PaladinTank
  25120.   End
  25121.  
  25122.   ExperienceValue        = 100 100 200 400 ;Experience point value at each level
  25123.   ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level
  25124.  
  25125.   IsTrainable     = Yes  ;Can gain experience
  25126.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  25127.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  25128.   CommandSet      = AmericaTankPaladinCommandSet
  25129.     
  25130.   ; *** AUDIO Parameters ***
  25131.   VoiceSelect = PaladinTankVoiceSelect
  25132.   VoiceMove = PaladinTankVoiceMove
  25133.   VoiceGuard = PaladinTankVoiceMove
  25134.   VoiceAttack = PaladinTankVoiceAttack
  25135.   SoundMoveStart = PaladinTankMoveStart
  25136.   SoundMoveStartDamaged = PaladinTankMoveStart
  25137.  
  25138.   UnitSpecificSounds
  25139.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  25140.     VoiceCreate     = PaladinTankVoiceCreate
  25141.     TurretMoveLoop = TurretMoveLoop
  25142.     SoundEject = PilotSoundEject
  25143.     VoiceEject = PilotVoiceEject
  25144.     VoiceCrush = PaladinTankVoiceCrush
  25145.     VoiceEnter = PaladinTankVoiceMove
  25146.   End
  25147.  
  25148.   ; *** ENGINEERING Parameters ***
  25149.   RadarPriority = UNIT
  25150.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  25151.   
  25152.   Body = ActiveBody ModuleTag_02
  25153.     MaxHealth       = 500.0
  25154.     InitialHealth   = 500.0
  25155.   End
  25156.  
  25157.   Behavior = AIUpdateInterface ModuleTag_03
  25158.     Turret
  25159.       TurretTurnRate = 180 ;60   // turn rate, in degrees per sec
  25160.       ControlledWeaponSlots = PRIMARY
  25161.     End
  25162.     ;AltTurret
  25163.     ;  TurretTurnRate = 9000;
  25164.     ;  ControlledWeaponSlots = SECONDARY
  25165.     ;End
  25166.     AutoAcquireEnemiesWhenIdle = Yes
  25167.   End
  25168.   Locomotor = SET_NORMAL CrusaderLocomotor
  25169.   Behavior = PhysicsBehavior ModuleTag_04
  25170.     Mass = 50.0
  25171.   End
  25172.   
  25173.   ; Turret fly off death
  25174.   Behavior = SlowDeathBehavior ModuleTag_05
  25175.     DeathTypes = ALL -CRUSHED -SPLATTED
  25176.     ProbabilityModifier = 50
  25177. ;    ModifierBonusPerOverkillPercent = 30%  ; negative means less likely to pick this in the face of much damage, positive means more likely
  25178.     DestructionDelay = 500
  25179.     DestructionDelayVariance = 100
  25180.     FX  = INITIAL  FX_GenericTankDeathEffect
  25181.     FX  = FINAL    FX_GenericTankDeathExplosion
  25182.     OCL = FINAL    OCL_PaladinTankDeathEffect
  25183.   End
  25184.   
  25185.   ; Catch fire, and explode death
  25186.   Behavior = SlowDeathBehavior ModuleTag_06
  25187.     DeathTypes = ALL -CRUSHED -SPLATTED
  25188.     ProbabilityModifier = 50
  25189.     DestructionDelay = 2000
  25190.     DestructionDelayVariance = 300
  25191.     FX  = INITIAL  FX_CrusaderCatchFire
  25192.     OCL = FINAL    OCL_PaladinTankDeathEffect
  25193.     FX  = FINAL    FX_GenericTankDeathExplosion 
  25194.   End
  25195.  
  25196.   Behavior = PointDefenseLaserUpdate ModuleTag_07
  25197.     WeaponTemplate        = PaladinPointDefenseLaser
  25198.     PrimaryTargetTypes    = BALLISTIC_MISSILE SMALL_MISSILE
  25199.     SecondaryTargetTypes  = INFANTRY
  25200.     ScanRate              = 500
  25201.     ScanRange             = 120.0
  25202.     PredictTargetVelocityFactor = 3.0
  25203.   End
  25204.  
  25205.   Behavior = ObjectCreationUpgrade ModuleTag_08
  25206.     UpgradeObject = OCL_AmericanBattleDrone
  25207.     TriggeredBy   = Upgrade_AmericaBattleDrone
  25208.     ConflictsWith = Upgrade_AmericaScoutDrone
  25209.   End
  25210.   Behavior = ObjectCreationUpgrade ModuleTag_09
  25211.     UpgradeObject = OCL_AmericanScoutDrone
  25212.     TriggeredBy   = Upgrade_AmericaScoutDrone
  25213.     ConflictsWith = Upgrade_AmericaBattleDrone
  25214.   End
  25215.   Behavior = ProductionUpdate ModuleTag_10
  25216.     MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  25217.   End
  25218.  
  25219.   Behavior = ExperienceScalarUpgrade ModuleTag_11
  25220.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  25221.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  25222.   End
  25223.  
  25224.   Behavior = TransitionDamageFX ModuleTag_12
  25225.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  25226.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  25227.   End
  25228.  
  25229.   Behavior = FXListDie ModuleTag_13
  25230.     DeathTypes = NONE +CRUSHED +SPLATTED
  25231.     DeathFX = FX_CarCrush
  25232.   End
  25233.   Behavior = CreateObjectDie ModuleTag_14
  25234.     DeathTypes = NONE +CRUSHED +SPLATTED
  25235.     CreationList = OCL_CrusaderTank_CrushEffect
  25236.   End
  25237.   Behavior = DestroyDie ModuleTag_15
  25238.     DeathTypes = NONE +CRUSHED +SPLATTED
  25239.   End
  25240.   Behavior = CreateCrateDie ModuleTag_16
  25241.     CrateData = SalvageCrateData
  25242.     ;CrateData = EliteTankCrateData
  25243.     ;CrateData = HeroicTankCrateData
  25244.   End
  25245.   Behavior = EjectPilotDie ModuleTag_17
  25246.     DeathTypes = ALL -CRUSHED -SPLATTED
  25247.     ExemptStatus = HIJACKED
  25248.     GroundCreationList = OCL_EjectPilotOnGround
  25249.     AirCreationList = OCL_EjectPilotViaParachute
  25250.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  25251.   End
  25252.  
  25253.   Behavior = MaxHealthUpgrade ModuleTag_18
  25254.     TriggeredBy   = Upgrade_AmericaCompositeArmor
  25255.     AddMaxHealth  = 100.0
  25256.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  25257.   End
  25258.  
  25259.   Behavior = FlammableUpdate ModuleTag_21
  25260.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  25261.     AflameDamageAmount = 3       ; taking this much damage...
  25262.     AflameDamageDelay = 500       ; this often.
  25263.   End
  25264.  
  25265.   Geometry = BOX
  25266.   GeometryMajorRadius = 15.0
  25267.   GeometryMinorRadius = 10.0
  25268.   GeometryHeight = 10.0     
  25269.   GeometryIsSmall = Yes    
  25270.   Shadow = SHADOW_VOLUME
  25271.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  25272.  
  25273. End
  25274.  
  25275. ;------------------------------------------------------------------------------
  25276. ;
  25277. ; Jason Bender sez:
  25278. ; This unit is used in GLA04. It is part of a secondary objective. The player gets a medal for capturing him.
  25279. ; This unit is never human-controllable!
  25280. ;
  25281. Object ChinaAmbassador
  25282.  
  25283.     ; *** ART Parameters ***
  25284.   Draw = W3DModelDraw ModuleTag_01
  25285.     OkToChangeModelColor = Yes
  25286.  
  25287.     DefaultConditionState
  25288.       Model = NIAMBSDR_SKN
  25289.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  25290.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  25291.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  25292.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  25293.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  25294.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  25295.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  25296.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDA
  25297.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDB
  25298.       AnimationMode = ONCE
  25299.       TransitionKey = TRANS_Stand
  25300.     End
  25301.         
  25302.     ConditionState = MOVING
  25303.       Animation = NIAMBSDR_SKL.NIAMBSDR_RNA ;***was using WKA but it doesn't exist so I changed it to kill the assert -- Kris 
  25304.       AnimationMode = LOOP
  25305.       Flags = RANDOMSTART
  25306.     End
  25307.  
  25308.     ConditionState = MOVING PANICKING
  25309.       Animation = NIAMBSDR_SKL.NIAMBSDR_RNA 
  25310.       AnimationMode = LOOP
  25311.       Flags = RANDOMSTART
  25312.     End
  25313.  
  25314.     ConditionState = DYING
  25315.       Animation = NIAMBSDR_SKL.NIAMBSDR_DTA
  25316.       Animation = NIAMBSDR_SKL.NIAMBSDR_DTB
  25317.       AnimationMode = ONCE
  25318.       TransitionKey = TRANS_Dying
  25319.     End
  25320.  
  25321.     ;TransitionState = TRANS_Dying TRANS_Flailing
  25322.     ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD1
  25323.     ;  AnimationMode = ONCE
  25324.     ;End
  25325.  
  25326.     ;ConditionState = DYING EXPLODED_FLAILING
  25327.     ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD2
  25328.     ;  AnimationMode = LOOP
  25329.     ;  TransitionKey = TRANS_Flailing
  25330.     ;End
  25331.  
  25332.     ;ConditionState = DYING EXPLODED_BOUNCING
  25333.     ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD3
  25334.     ;  AnimationMode = ONCE
  25335.     ;  TransitionKey = None
  25336.     ;End
  25337.   End
  25338.  
  25339.   ; ***DESIGN parameters ***
  25340.   Buildable           = No
  25341.   DisplayName         = OBJECT:Ambassador
  25342.   Side                = China
  25343.   EditorSorting       = INFANTRY
  25344.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  25345.   WeaponSet
  25346.     ; no weapons
  25347.   End
  25348.   ArmorSet
  25349.     Conditions      = None
  25350.     Armor           = HumanArmor
  25351.     DamageFX        = InfantryDamageFX
  25352.   End
  25353.   VisionRange = 150
  25354.   ShroudClearingRange = 150
  25355.  
  25356.   ExperienceValue = 50 100 150 400    ;Experience point value at each level
  25357.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  25358.   IsTrainable = Yes             ;Can gain experience
  25359.  
  25360.   ; *** AUDIO Parameters ***
  25361.   SoundDie = RedGuardVoiceDie
  25362.  
  25363.   ; *** ENGINEERING Parameters ***
  25364.   RadarPriority = UNIT
  25365.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
  25366.  
  25367.   Body = ActiveBody ModuleTag_02
  25368.     MaxHealth       = 50.0
  25369.     InitialHealth   = 50.0
  25370.   End
  25371.  
  25372.   Behavior = AIUpdateInterface ModuleTag_03
  25373.     AutoAcquireEnemiesWhenIdle = Yes
  25374.   End
  25375.   Locomotor = SET_NORMAL BasicHumanLocomotor
  25376.   Behavior = PhysicsBehavior ModuleTag_04
  25377.     Mass = 5.0
  25378.   End
  25379.   Behavior = SlowDeathBehavior ModuleTag_05
  25380.     SinkDelay = 3000
  25381.     SinkRate = 0.5     ; in Dist/Sec
  25382.     DestructionDelay = 8000
  25383.   End
  25384.  
  25385.   Behavior = SquishCollide ModuleTag_06
  25386.     ;nothing
  25387.   End
  25388.  
  25389.   Behavior = FXListDie ModuleTag_07
  25390.     DeathTypes = ALL -CRUSHED -SPLATTED
  25391.     DeathFX = FX_GIDie
  25392.   End
  25393.   Behavior = FXListDie ModuleTag_08
  25394.     DeathTypes = NONE +CRUSHED +SPLATTED
  25395.     DeathFX = FX_GIDieCrushed
  25396.   End
  25397.  
  25398.   Behavior = PoisonedBehavior ModuleTag_09
  25399.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  25400.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  25401.   End
  25402.  
  25403.   Geometry = CYLINDER
  25404.   GeometryMajorRadius = 10.0
  25405.   GeometryMinorRadius = 10.0
  25406.   GeometryHeight = 12.0
  25407.   GeometryIsSmall = Yes
  25408.   Shadow = SHADOW_DECAL
  25409.   ShadowSizeX = 14
  25410.   ShadowSizeY = 14
  25411.   ShadowTexture = ShadowI
  25412.   BuildCompletion = APPEARS_AT_RALLY_POINT
  25413.  
  25414. End
  25415.  
  25416. ;------------------------------------------------------------------------------
  25417. Object AmericaInfantryBiohazardTech
  25418.  
  25419.   ; This unit is by default NOT buildable. In GLA06 this is buildable from the
  25420.   ; barracks of the enemy AI. (The map.ini file is overridden there make it 
  25421.   ; buildable = Yes (jkmcd)
  25422.   Buildable = No
  25423.  
  25424.     ; *** ART Parameters ***
  25425.   Draw = W3DModelDraw ModuleTag_01
  25426.     OkToChangeModelColor = Yes
  25427.  
  25428.     ;NORMAL STANDING
  25429.     DefaultConditionState
  25430.       Model = AITECH_SKN
  25431.       IdleAnimation = AITECH_SKL.AITECH_STA 0 21
  25432.       ;Regular spice animations
  25433.       IdleAnimation = AITECH_SKL.AITECH_IDA
  25434.       IdleAnimation = AITECH_SKL.AITECH_IDB
  25435.       AnimationMode = ONCE
  25436.       WeaponLaunchBone = PRIMARY BIOGUNFX
  25437.       TransitionKey = TRANS_Stand
  25438.     End
  25439.  
  25440.     ; NORMAL ATTACK
  25441.     ConditionState = FIRING_A
  25442.       Animation = AITECH_SKL.AITECH_STA
  25443.       AnimationMode = LOOP
  25444.       TransitionKey = TRANS_FiringA
  25445.     End
  25446.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  25447.     AliasConditionState = RELOADING_A
  25448.     AliasConditionState = FIRING_A REALLYDAMAGED
  25449.     AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  25450.     AliasConditionState = RELOADING_A REALLYDAMAGED
  25451.  
  25452.  
  25453.     ConditionState = MOVING FIRING_A 
  25454.       Animation = AITECH_SKL.AITECH_WKB 15
  25455.       AnimationMode = LOOP
  25456.       Flags = RANDOMSTART
  25457.       TransitionKey = None
  25458.       ParticleSysBone     = None InfantryDustTrails
  25459.     End
  25460.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  25461.     AliasConditionState = MOVING RELOADING_A
  25462.  
  25463.     ConditionState = MOVING
  25464.       Animation = AITECH_SKL.AITECH_WKA 15
  25465.       AnimationMode = LOOP
  25466.       Flags = RANDOMSTART
  25467.       TransitionKey = None
  25468.       ParticleSysBone     = None InfantryDustTrails
  25469.     End
  25470.  
  25471.     ConditionState = DYING
  25472.       Animation = AITECH_SKL.AITECH_DTA
  25473.       Animation = AITECH_SKL.AITECH_DTB
  25474.       AnimationMode = ONCE
  25475.       TransitionKey = TRANS_Dying
  25476.     End
  25477.  
  25478.     TransitionState = TRANS_Dying TRANS_Flailing
  25479.       Animation = AITECH_SKL.AITECH_ADTD1
  25480.       AnimationMode = ONCE
  25481.     End
  25482.  
  25483.     ConditionState = DYING EXPLODED_FLAILING
  25484.       Animation = AITECH_SKL.AITECH_ADTD2
  25485.       AnimationMode = LOOP
  25486.       TransitionKey = TRANS_Flailing
  25487.     End
  25488.  
  25489.     ConditionState = DYING EXPLODED_BOUNCING
  25490.       Animation = AITECH_SKL.AITECH_ADTD3
  25491.       AnimationMode = ONCE
  25492.       TransitionKey = None
  25493.     End
  25494.  
  25495.     ConditionState = SPECIAL_CHEERING
  25496.       Animation = AITECH_SKL.AITECH_CHA
  25497.       AnimationMode = LOOP
  25498.     End
  25499.  
  25500.     ;PARACHUTING ANIMATIONS
  25501.     ConditionState = FREEFALL
  25502.       Animation = AITECH_SKL.AITECH_PFL
  25503.       AnimationMode = LOOP
  25504.       TransitionKey = TRANS_Falling
  25505.     End
  25506.     AliasConditionState = FREEFALL REALLYDAMAGED
  25507.     AliasConditionState = FREEFALL DYING
  25508.     ConditionState = PARACHUTING
  25509.       Animation = AITECH_SKL.AITECH_PHG
  25510.       AnimationMode = LOOP
  25511.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  25512.       TransitionKey = TRANS_Chute
  25513.     End
  25514.     AliasConditionState = PARACHUTING REALLYDAMAGED
  25515.     AliasConditionState = PARACHUTING DYING
  25516.     TransitionState = TRANS_Falling TRANS_Chute
  25517.       Animation = AITECH_SKL.AITECH_POP
  25518.       AnimationMode = ONCE
  25519.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  25520.     End
  25521.     TransitionState = TRANS_Chute TRANS_Stand
  25522.       Animation = AITECH_SKL.AITECH_PDN
  25523.       AnimationMode = ONCE
  25524.     End
  25525.  
  25526.   End
  25527.  
  25528.   ; ***DESIGN parameters ***
  25529.   DisplayName         = OBJECT:BioHazardTech
  25530.   Side                = America
  25531.   EditorSorting       = INFANTRY
  25532.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  25533.   
  25534.   WeaponSet 
  25535.     ;*** Fully automated and driven by the CleanupHazardUpdate ***
  25536.     Conditions        = None 
  25537.     Weapon            = PRIMARY BioHazardTechCleanHazardWeapon 
  25538.     AutoChooseSources = PRIMARY NONE
  25539.   End
  25540.   ArmorSet
  25541.     Conditions      = None
  25542.     Armor           = HazMatHumanArmor
  25543.     DamageFX        = InfantryDamageFX
  25544.   End
  25545.  
  25546.   VisionRange = 100
  25547.   ShroudClearingRange = 400
  25548.   Prerequisites
  25549.     Object = AmericaBarracks
  25550.   End
  25551.   BuildCost = 200
  25552.   BuildTime = 5.0          ;in seconds  
  25553.   
  25554.   ExperienceValue = 50 100 150 400    ;Experience point value at each level
  25555.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  25556.   IsTrainable = Yes             ;Can gain experience
  25557.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  25558.   CommandSet          = AmericaInfantryHazMatCommandSet
  25559.  
  25560.   ; *** AUDIO Parameters ***
  25561.   VoiceSelect   = NoSound
  25562.   VoiceMove     = NoSound
  25563.   VoiceAttack   = NoSound
  25564.   SoundDie      = RebelVoiceDie
  25565.   UnitSpecificFX
  25566.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  25567.   End
  25568.  
  25569.   ; *** ENGINEERING Parameters ***
  25570.   RadarPriority = UNIT
  25571.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
  25572.  
  25573.   Body = ActiveBody ModuleTag_02
  25574.  
  25575.     MaxHealth       = 100.0
  25576.     InitialHealth   = 100.0
  25577.   End
  25578.  
  25579.   Behavior = CleanupHazardUpdate ModuleTag_03
  25580.     WeaponSlot            = PRIMARY
  25581.     ScanRate              = 1000
  25582.     ScanRange             = 100.0
  25583.   End
  25584.  
  25585.   ;Can be ordered to clean up a larger area with the ability to move around at an extended range.
  25586.   Behavior = CleanupAreaPower ModuleTag_04
  25587.     SpecialPowerTemplate          = SpecialAbilityAmbulanceCleanupArea
  25588.     MaxMoveDistanceFromLocation   = 300.0 ;allows the unit to move around while cleaning up
  25589.   End
  25590.  
  25591.   Behavior = AIUpdateInterface ModuleTag_05
  25592.     AutoAcquireEnemiesWhenIdle = No
  25593.   End
  25594.   Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
  25595.     ScanRate = 1000 ; once a second.
  25596.     ScanRange = 300 ;
  25597.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  25598.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  25599.   End
  25600.  
  25601.   Locomotor = SET_NORMAL HazMatHumanLocomotor
  25602.  
  25603.   Behavior = ExperienceScalarUpgrade ModuleTag_07
  25604.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  25605.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  25606.   End
  25607.  
  25608.   Behavior = PhysicsBehavior ModuleTag_08
  25609.     Mass = 5.0
  25610.   End
  25611.   Behavior = ProductionUpdate ModuleTag_09
  25612.     ; nothing
  25613.   End
  25614.  
  25615.   Behavior = SquishCollide ModuleTag_10
  25616.     ;nothing
  25617.   End
  25618.  
  25619. ; --- begin Death modules ---
  25620.   Behavior = SlowDeathBehavior ModuleTag_Death01
  25621.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  25622.     SinkDelay           = 3000
  25623.     SinkRate            = 0.5     ; in Dist/Sec
  25624.     DestructionDelay    = 8000
  25625.     FX                  = INITIAL FX_GIDie
  25626.   End
  25627.   Behavior = SlowDeathBehavior ModuleTag_Death02
  25628.     DeathTypes          = NONE +CRUSHED +SPLATTED
  25629.     SinkDelay           = 3000
  25630.     SinkRate            = 0.5     ; in Dist/Sec
  25631.     DestructionDelay    = 8000
  25632.     FX                  = INITIAL FX_GIDieCrushed
  25633.   End
  25634.   Behavior = SlowDeathBehavior ModuleTag_Death03
  25635.     DeathTypes          = NONE +EXPLODED
  25636.     SinkDelay           = 3000
  25637.     SinkRate            = 0.5     ; in Dist/Sec
  25638.     DestructionDelay    = 8000
  25639.     FX                  = INITIAL FX_GIDie
  25640.     FlingForce          = 8
  25641.     FlingForceVariance  = 3
  25642.     FlingPitch          = 60
  25643.     FlingPitchVariance  = 10
  25644.   End
  25645.   Behavior = SlowDeathBehavior ModuleTag_Death04
  25646.     DeathTypes          = NONE +BURNED
  25647.     DestructionDelay    = 0
  25648.     FX                  = INITIAL FX_GIDie
  25649.     OCL                 = INITIAL OCL_FlamingInfantry
  25650.   End
  25651.   Behavior = SlowDeathBehavior ModuleTag_Death05
  25652.     DeathTypes          = NONE +POISONED
  25653.     DestructionDelay    = 0
  25654.     FX                  = INITIAL FX_GIDie
  25655.     OCL                 = INITIAL OCL_ToxicInfantry
  25656.   End
  25657. ; --- end Death modules ---
  25658.  
  25659.   Geometry = CYLINDER
  25660.   GeometryMajorRadius = 10.0
  25661.   GeometryMinorRadius = 10.0
  25662.   GeometryHeight = 13.0
  25663.  
  25664.   GeometryIsSmall = Yes
  25665.   Shadow = SHADOW_DECAL
  25666.   ShadowSizeX = 14;
  25667.   ShadowSizeY = 14;
  25668.   ShadowTexture = ShadowI;
  25669.   BuildCompletion = APPEARS_AT_RALLY_POINT
  25670. End
  25671.  
  25672. ;------------------------------------------------------------------------------
  25673. Object CINE_AmericaInfantryBiohazardTech
  25674.  
  25675.   ; This unit is by default NOT buildable. In GLA06 this is buildable from the
  25676.   ; barracks of the enemy AI. (The map.ini file is overridden there make it 
  25677.   ; buildable = Yes (jkmcd)
  25678.   Buildable = No
  25679.  
  25680.     ; *** ART Parameters ***
  25681.   Draw = W3DModelDraw ModuleTag_01
  25682.     OkToChangeModelColor = Yes
  25683.  
  25684.     ;NORMAL STANDING
  25685.     DefaultConditionState
  25686.       Model = AITECH_SKN
  25687.       IdleAnimation = AITECH_SKL.AITECH_STA 0 21
  25688.       ;Regular spice animations
  25689.       IdleAnimation = AITECH_SKL.AITECH_IDA
  25690.       IdleAnimation = AITECH_SKL.AITECH_IDB
  25691.       AnimationMode = ONCE
  25692.       WeaponLaunchBone = PRIMARY BIOGUNFX
  25693.       TransitionKey = TRANS_Stand
  25694.     End
  25695.  
  25696.     ; NORMAL ATTACK
  25697.     ConditionState = FIRING_A
  25698.       Animation = AITECH_SKL.AITECH_ATA
  25699.       AnimationMode = LOOP
  25700.       TransitionKey = TRANS_FiringA
  25701.     End
  25702.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  25703.     AliasConditionState = RELOADING_A
  25704.     AliasConditionState = FIRING_A REALLYDAMAGED
  25705.     AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  25706.     AliasConditionState = RELOADING_A REALLYDAMAGED
  25707.  
  25708.  
  25709.     ConditionState = MOVING FIRING_A 
  25710.       Animation = AITECH_SKL.AITECH_WKB 15
  25711.       AnimationMode = LOOP
  25712.       Flags = RANDOMSTART
  25713.       TransitionKey = None
  25714.       ParticleSysBone     = None InfantryDustTrails
  25715.     End
  25716.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  25717.     AliasConditionState = MOVING RELOADING_A
  25718.  
  25719.     ConditionState = MOVING
  25720.       Animation = AITECH_SKL.AITECH_WKA 15
  25721.       AnimationMode = LOOP
  25722.       Flags = RANDOMSTART
  25723.       TransitionKey = None
  25724.       ParticleSysBone     = None InfantryDustTrails
  25725.     End
  25726.  
  25727.     ConditionState = DYING
  25728.       Animation = AITECH_SKL.AITECH_DTA
  25729.       Animation = AITECH_SKL.AITECH_DTB
  25730.       AnimationMode = ONCE
  25731.       TransitionKey = TRANS_Dying
  25732.     End
  25733.  
  25734.     TransitionState = TRANS_Dying TRANS_Flailing
  25735.       Animation = AITECH_SKL.AITECH_ADTD1
  25736.       AnimationMode = ONCE
  25737.     End
  25738.  
  25739.     ConditionState = DYING EXPLODED_FLAILING
  25740.       Animation = AITECH_SKL.AITECH_ADTD2
  25741.       AnimationMode = LOOP
  25742.       TransitionKey = TRANS_Flailing
  25743.     End
  25744.  
  25745.     ConditionState = DYING EXPLODED_BOUNCING
  25746.       Animation = AITECH_SKL.AITECH_ADTD3
  25747.       AnimationMode = ONCE
  25748.       TransitionKey = None
  25749.     End
  25750.  
  25751.     ConditionState = SPECIAL_CHEERING
  25752.       Animation = AITECH_SKL.AITECH_CHA
  25753.       AnimationMode = LOOP
  25754.     End
  25755.  
  25756.     ;PARACHUTING ANIMATIONS
  25757.     ConditionState = FREEFALL
  25758.       Animation = AITECH_SKL.AITECH_PFL
  25759.       AnimationMode = LOOP
  25760.       TransitionKey = TRANS_Falling
  25761.     End
  25762.     AliasConditionState = FREEFALL REALLYDAMAGED
  25763.     AliasConditionState = FREEFALL DYING
  25764.     ConditionState = PARACHUTING
  25765.       Animation = AITECH_SKL.AITECH_PHG
  25766.       AnimationMode = LOOP
  25767.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  25768.       TransitionKey = TRANS_Chute
  25769.     End
  25770.     AliasConditionState = PARACHUTING REALLYDAMAGED
  25771.     AliasConditionState = PARACHUTING DYING
  25772.     TransitionState = TRANS_Falling TRANS_Chute
  25773.       Animation = AITECH_SKL.AITECH_POP
  25774.       AnimationMode = ONCE
  25775.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  25776.     End
  25777.     TransitionState = TRANS_Chute TRANS_Stand
  25778.       Animation = AITECH_SKL.AITECH_PDN
  25779.       AnimationMode = ONCE
  25780.     End
  25781.  
  25782.   End
  25783.  
  25784.   ; ***DESIGN parameters ***
  25785.   DisplayName         = OBJECT:BioHazardTech
  25786.   Side                = America
  25787.   EditorSorting       = INFANTRY
  25788.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  25789.   
  25790.   WeaponSet 
  25791.     ;*** Fully automated and driven by the CleanupHazardUpdate ***
  25792.     Conditions        = None 
  25793.     Weapon            = PRIMARY BioHazardTechCleanHazardWeapon 
  25794.     AutoChooseSources = PRIMARY NONE
  25795.   End
  25796.   ArmorSet
  25797.     Conditions      = None
  25798.     Armor           = HazMatHumanArmor
  25799.     DamageFX        = InfantryDamageFX
  25800.   End
  25801.  
  25802.   VisionRange = 100
  25803.   ShroudClearingRange = 400
  25804.   Prerequisites
  25805.     Object = AmericaBarracks
  25806.   End
  25807.   BuildCost = 200
  25808.   BuildTime = 5.0          ;in seconds  
  25809.   
  25810.   ExperienceValue = 50 100 150 400    ;Experience point value at each level
  25811.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  25812.   IsTrainable = Yes             ;Can gain experience
  25813.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  25814.   CommandSet          = AmericaInfantryHazMatCommandSet
  25815.  
  25816.   ; *** AUDIO Parameters ***
  25817.   VoiceSelect   = NoSound
  25818.   VoiceMove     = NoSound
  25819.   VoiceAttack   = NoSound
  25820.   SoundDie      = RebelVoiceDie
  25821.   UnitSpecificFX
  25822.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  25823.   End
  25824.  
  25825.   ; *** ENGINEERING Parameters ***
  25826.   RadarPriority = UNIT
  25827.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
  25828.  
  25829.   Body = ActiveBody ModuleTag_02
  25830.  
  25831.     MaxHealth       = 100.0
  25832.     InitialHealth   = 100.0
  25833.   End
  25834.  
  25835.   Behavior = CleanupHazardUpdate ModuleTag_03
  25836.     WeaponSlot            = PRIMARY
  25837.     ScanRate              = 1000
  25838.     ScanRange             = 100.0
  25839.   End
  25840.  
  25841.   ;Can be ordered to clean up a larger area with the ability to move around at an extended range.
  25842.   Behavior = CleanupAreaPower ModuleTag_04
  25843.     SpecialPowerTemplate          = SpecialAbilityAmbulanceCleanupArea
  25844.     MaxMoveDistanceFromLocation   = 300.0 ;allows the unit to move around while cleaning up
  25845.   End
  25846.  
  25847.   Behavior = AIUpdateInterface ModuleTag_05
  25848.     AutoAcquireEnemiesWhenIdle = No
  25849.   End
  25850.   Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
  25851.     ScanRate = 1000 ; once a second.
  25852.     ScanRange = 300 ;
  25853.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  25854.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  25855.   End
  25856.  
  25857.   Locomotor = SET_NORMAL CINE_HazMatHumanLocomotor
  25858.  
  25859.   Behavior = ExperienceScalarUpgrade ModuleTag_07
  25860.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  25861.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  25862.   End
  25863.  
  25864.   Behavior = PhysicsBehavior ModuleTag_08
  25865.     Mass = 5.0
  25866.   End
  25867.   Behavior = ProductionUpdate ModuleTag_09
  25868.     ; nothing
  25869.   End
  25870.  
  25871.   Behavior = SquishCollide ModuleTag_10
  25872.     ;nothing
  25873.   End
  25874.  
  25875. ; --- begin Death modules ---
  25876.   Behavior = SlowDeathBehavior ModuleTag_Death01
  25877.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  25878.     SinkDelay           = 3000
  25879.     SinkRate            = 0.5     ; in Dist/Sec
  25880.     DestructionDelay    = 8000
  25881.     FX                  = INITIAL FX_GIDie
  25882.   End
  25883.   Behavior = SlowDeathBehavior ModuleTag_Death02
  25884.     DeathTypes          = NONE +CRUSHED +SPLATTED
  25885.     SinkDelay           = 3000
  25886.     SinkRate            = 0.5     ; in Dist/Sec
  25887.     DestructionDelay    = 8000
  25888.     FX                  = INITIAL FX_GIDieCrushed
  25889.   End
  25890.   Behavior = SlowDeathBehavior ModuleTag_Death03
  25891.     DeathTypes          = NONE +EXPLODED
  25892.     SinkDelay           = 3000
  25893.     SinkRate            = 0.5     ; in Dist/Sec
  25894.     DestructionDelay    = 8000
  25895.     FX                  = INITIAL FX_GIDie
  25896.     FlingForce          = 8
  25897.     FlingForceVariance  = 3
  25898.     FlingPitch          = 60
  25899.     FlingPitchVariance  = 10
  25900.   End
  25901.   Behavior = SlowDeathBehavior ModuleTag_Death04
  25902.     DeathTypes          = NONE +BURNED
  25903.     DestructionDelay    = 0
  25904.     FX                  = INITIAL FX_GIDie
  25905.     OCL                 = INITIAL OCL_FlamingInfantry
  25906.   End
  25907.   Behavior = SlowDeathBehavior ModuleTag_Death05
  25908.     DeathTypes          = NONE +POISONED
  25909.     DestructionDelay    = 0
  25910.     FX                  = INITIAL FX_GIDie
  25911.     OCL                 = INITIAL OCL_ToxicInfantry
  25912.   End
  25913. ; --- end Death modules ---
  25914.  
  25915.   Geometry = CYLINDER
  25916.   GeometryMajorRadius = 10.0
  25917.   GeometryMinorRadius = 10.0
  25918.   GeometryHeight = 13.0
  25919.  
  25920.   GeometryIsSmall = Yes
  25921.   Shadow = SHADOW_DECAL
  25922.   ShadowSizeX = 14;
  25923.   ShadowSizeY = 14;
  25924.   ShadowTexture = ShadowI;
  25925.   BuildCompletion = APPEARS_AT_RALLY_POINT
  25926. End
  25927.  
  25928. ;------------------------------------------------------------------------------
  25929. ;
  25930. ;
  25931. ; Jason Bender sez:
  25932. ; This unit is used in a mission for "color".
  25933. ; This unit is never human-controllable!
  25934. ;
  25935. Object ChinaInfantryOfficer
  25936.  
  25937.     ; *** ART Parameters ***
  25938.   Draw = W3DModelDraw ModuleTag_01
  25939.     OkToChangeModelColor = Yes
  25940.  
  25941.     ;NORMAL STANDING
  25942.     DefaultConditionState
  25943.       Model = NIOFCR_SKN
  25944.       IdleAnimation = NIOFCR_SKL.NIOFCR_STA 0 21
  25945.       ;Regular spice animations
  25946.       IdleAnimation = NIOFCR_SKL.NIOFCR_IDA
  25947.       IdleAnimation = NIOFCR_SKL.NIOFCR_IDB
  25948.       AnimationMode = ONCE
  25949.       WeaponFireFXBone = PRIMARY Muzzle
  25950.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  25951.       TransitionKey = TRANS_STAND
  25952.     End
  25953.  
  25954.     ConditionState    = MOVING
  25955.       Animation       = NIOFCR_SKL.NIOFCR_RNA
  25956.       AnimationMode   = LOOP
  25957.       ParticleSysBone     = None InfantryDustTrails
  25958.     End
  25959.  
  25960.     ; NORMAL ATTACK
  25961.     ;--------------------------------------------------------
  25962.     ; Drawing gun
  25963.     ConditionState  = PREATTACK_A
  25964.       Animation     = NIOFCR_SKL.NIOFCR_ATAST
  25965.       AnimationMode = ONCE
  25966.     End
  25967.     AliasConditionState = PREATTACK_A MOVING
  25968.     AliasConditionState = PREATTACK_A FIRING_A
  25969.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  25970.  
  25971.     ; Firing gun
  25972.     ConditionState  = FIRING_A
  25973.       Animation     = NIOFCR_SKL.NIOFCR_ATALP
  25974.       AnimationMode = LOOP
  25975.       TransitionKey = TRANS_FIRING_A
  25976.     End
  25977.     ConditionState  = BETWEEN_FIRING_SHOTS_A
  25978.       Animation     = NIOFCR_SKL.NIOFCR_ATALP
  25979.       AnimationMode = LOOP
  25980.       TransitionKey = TRANS_FIRING_A
  25981.     End
  25982.     AliasConditionState = RELOADING_A
  25983.     AliasConditionState = MOVING FIRING_A
  25984.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  25985.     AliasConditionState = MOVING RELOADING_A
  25986.  
  25987.     ; This transition allows him to put his gun away when he's finished attacking.
  25988.     TransitionState = TRANS_FIRING_A TRANS_STAND
  25989.       Animation     = NIOFCR_SKL.NIOFCR_ATAED
  25990.       AnimationMode = ONCE
  25991.     End
  25992.     ;--------------------------------------------------------
  25993.  
  25994.     ConditionState  = DYING
  25995.       Animation     = NIOFCR_SKL.NIOFCR_DTA
  25996.       Animation     = NIOFCR_SKL.NIOFCR_DTB
  25997.       AnimationMode = ONCE
  25998.       TransitionKey = TRANS_Dying
  25999.     End
  26000.  
  26001.     TransitionState = TRANS_Dying TRANS_Flailing
  26002.       Animation = NIOFCR_SKL.NIOFCR_ADTE1
  26003.       AnimationMode = ONCE
  26004.     End
  26005.  
  26006.     ConditionState = DYING EXPLODED_FLAILING
  26007.       Animation = NIOFCR_SKL.NIOFCR_ADTE2
  26008.       AnimationMode = LOOP
  26009.       TransitionKey = TRANS_Flailing
  26010.     End
  26011.  
  26012.     ConditionState = DYING EXPLODED_BOUNCING
  26013.       Animation = NIOFCR_SKL.NIOFCR_ADTE3
  26014.       AnimationMode = ONCE
  26015.       TransitionKey = None
  26016.     End
  26017.  
  26018.     ConditionState  = SPECIAL_CHEERING
  26019.       Animation     = NIOFCR_SKL.NIOFCR_CHA
  26020.       AnimationMode = LOOP
  26021.     End
  26022.  
  26023.     ;PARACHUTING ANIMATIONS
  26024.  
  26025.     ;@TODO - MISSING ANIMATION FILE
  26026.     ;ConditionState   = FREEFALL
  26027.     ;  Animation      = NIOFCR_SKL.NIOFCR_PFL
  26028.     ;  AnimationMode  = LOOP
  26029.     ;  TransitionKey  = TRANS_Falling
  26030.     ;End
  26031.     ;AliasConditionState = FREEFALL REALLYDAMAGED
  26032.     ;AliasConditionState = FREEFALL DYING
  26033.     ConditionState  = PARACHUTING
  26034.       Animation     = NIOFCR_SKL.NIOFCR_PHG
  26035.       AnimationMode = LOOP
  26036.       Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  26037.       TransitionKey = TRANS_Chute
  26038.     End
  26039.     AliasConditionState = PARACHUTING REALLYDAMAGED
  26040.     AliasConditionState = PARACHUTING DYING
  26041.     TransitionState = TRANS_Falling TRANS_Chute
  26042.       Animation     = NIOFCR_SKL.NIOFCR_POP
  26043.       AnimationMode = ONCE
  26044.       Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  26045.     End
  26046.     TransitionState = TRANS_Chute TRANS_STAND
  26047.       Animation     = NIOFCR_SKL.NIOFCR_PTD
  26048.       AnimationMode = ONCE
  26049.     End
  26050.  
  26051.   End
  26052.  
  26053.   ; ***DESIGN parameters ***
  26054.   DisplayName      = OBJECT:Officer
  26055.   Side = China
  26056.   EditorSorting = INFANTRY
  26057.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  26058.   WeaponSet
  26059.     Conditions = None 
  26060.     Weapon = PRIMARY ChinaOfficerMachineGun
  26061.   End
  26062.   ArmorSet
  26063.     Conditions      = None
  26064.     Armor           = HumanArmor
  26065.     DamageFX        = InfantryDamageFX
  26066.   End
  26067.   VisionRange = 150
  26068.   ShroudClearingRange = 150
  26069.   Prerequisites
  26070.     Object = ChinaBarracks
  26071.   End
  26072.  
  26073.   BuildCost     = 400
  26074.   BuildTime     = 10.0          ;in seconds      
  26075.  
  26076.   ; *** AUDIO Parameters ***
  26077.   VoiceSelect = RedGuardVoiceSelect
  26078.   VoiceGroupSelect = BattleCrySound
  26079.   VoiceMove = RedGuardVoiceMove
  26080.   VoiceAttack = RedGuardVoiceAttack
  26081.   SoundDie = RedGuardVoiceDie
  26082.   SoundDieFire = DieByFireChina
  26083.   SoundDieToxin = DieByToxinChina
  26084.  
  26085.   ; *** ENGINEERING Parameters ***
  26086.   RadarPriority = UNIT
  26087.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY 
  26088.   Body = ActiveBody ModuleTag_02
  26089.     MaxHealth       = 100.0
  26090.     InitialHealth   = 100.0
  26091.   End
  26092.  
  26093.   Behavior = AIUpdateInterface ModuleTag_03
  26094.     AutoAcquireEnemiesWhenIdle = Yes
  26095.   End
  26096.   Locomotor = SET_NORMAL BasicHumanLocomotor
  26097.   Behavior = PhysicsBehavior ModuleTag_04
  26098.     Mass = 5.0
  26099.   End
  26100.  
  26101.   Behavior = SquishCollide ModuleTag_06
  26102.     ;nothing
  26103.   End
  26104.  
  26105.  
  26106. ; --- begin Death modules ---
  26107.   Behavior = SlowDeathBehavior ModuleTag_Death01
  26108.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  26109.     SinkDelay           = 3000
  26110.     SinkRate            = 0.5     ; in Dist/Sec
  26111.     DestructionDelay    = 8000
  26112.     FX                  = INITIAL FX_GIDie
  26113.   End
  26114.   Behavior = SlowDeathBehavior ModuleTag_Death02
  26115.     DeathTypes          = NONE +CRUSHED +SPLATTED
  26116.     SinkDelay           = 3000
  26117.     SinkRate            = 0.5     ; in Dist/Sec
  26118.     DestructionDelay    = 8000
  26119.     FX                  = INITIAL FX_GIDieCrushed
  26120.   End
  26121.   Behavior = SlowDeathBehavior ModuleTag_Death03
  26122.     DeathTypes          = NONE +EXPLODED
  26123.     SinkDelay           = 3000
  26124.     SinkRate            = 0.5     ; in Dist/Sec
  26125.     DestructionDelay    = 8000
  26126.     FX                  = INITIAL FX_GIDie
  26127.     FlingForce          = 8
  26128.     FlingForceVariance  = 3
  26129.     FlingPitch          = 60
  26130.     FlingPitchVariance  = 10
  26131.   End
  26132.   Behavior = SlowDeathBehavior ModuleTag_Death04
  26133.     DeathTypes          = NONE +BURNED
  26134.     DestructionDelay    = 0
  26135.     FX                  = INITIAL FX_GIDie
  26136.     OCL                 = INITIAL OCL_FlamingInfantry
  26137.   End
  26138.   Behavior = SlowDeathBehavior ModuleTag_Death05
  26139.     DeathTypes          = NONE +POISONED
  26140.     DestructionDelay    = 0
  26141.     FX                  = INITIAL FX_GIDie
  26142.     OCL                 = INITIAL OCL_ 
  26143.   End
  26144. ; --- end Death modules ---
  26145.  
  26146.   Behavior = PoisonedBehavior ModuleTag_09
  26147.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  26148.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  26149.   End
  26150.  
  26151.   Geometry = CYLINDER
  26152.   GeometryMajorRadius = 10.0
  26153.   GeometryMinorRadius = 10.0
  26154.   GeometryHeight = 12.0
  26155.   GeometryIsSmall = Yes
  26156.   Shadow = SHADOW_DECAL
  26157.   ShadowSizeX = 14;
  26158.   ShadowSizeY = 14;
  26159.   ShadowTexture = ShadowI;
  26160.   BuildCompletion = APPEARS_AT_RALLY_POINT
  26161.  
  26162. End
  26163.  
  26164. ;------------------------------------------------------------------------------
  26165. ;
  26166. ; ??? This unit is used in a mission for "color".
  26167. ; This unit is never human-controllable!
  26168. ;
  26169. Object AmericaInfantryOfficer
  26170.     ; *** ART Parameters ***
  26171.   Draw = W3DModelDraw ModuleTag_01
  26172.     OkToChangeModelColor = Yes
  26173.  
  26174.     ;NORMAL STANDING
  26175.     DefaultConditionState
  26176.       Model = AIOFCR_SKN
  26177.       IdleAnimation = AIOFCR_SKL.AIOFCR_STA 0 21
  26178.       ;Regular spice animations
  26179.       IdleAnimation = AIOFCR_SKL.AIOFCR_IDA
  26180.       IdleAnimation = AIOFCR_SKL.AIOFCR_IDB
  26181.       AnimationMode = ONCE
  26182.       WeaponFireFXBone = PRIMARY Muzzle
  26183.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  26184.       TransitionKey = TRANS_STAND
  26185.     End
  26186.  
  26187.     ConditionState    = MOVING
  26188.       Animation       = AIOFCR_SKL.AIOFCR_RNA
  26189.       AnimationMode   = LOOP
  26190.       ParticleSysBone     = None InfantryDustTrails
  26191.     End
  26192.  
  26193.     ; NORMAL ATTACK
  26194.     ;--------------------------------------------------------
  26195.     ; Drawing gun
  26196.     ConditionState  = PREATTACK_A
  26197.       Animation     = AIOFCR_SKL.AIOFCR_ATAST
  26198.       AnimationMode = ONCE
  26199.     End
  26200.     AliasConditionState = PREATTACK_A MOVING
  26201.     AliasConditionState = PREATTACK_A FIRING_A
  26202.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  26203.  
  26204.     ; Firing gun
  26205.     ConditionState  = FIRING_A
  26206.       Animation     = AIOFCR_SKL.AIOFCR_ATALP
  26207.       AnimationMode = LOOP
  26208.       TransitionKey = TRANS_FIRING_A
  26209.     End
  26210.     ConditionState  = BETWEEN_FIRING_SHOTS_A
  26211.       Animation     = AIOFCR_SKL.AIOFCR_ATALP
  26212.       AnimationMode = LOOP
  26213.       TransitionKey = TRANS_FIRING_A
  26214.     End
  26215.     AliasConditionState = RELOADING_A
  26216.     AliasConditionState = MOVING FIRING_A
  26217.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  26218.     AliasConditionState = MOVING RELOADING_A
  26219.  
  26220.     ; This transition allows him to put his gun away when he's finished attacking.
  26221.     TransitionState = TRANS_FIRING_A TRANS_STAND
  26222.       Animation     = AIOFCR_SKL.AIOFCR_ATAED
  26223.       AnimationMode = ONCE
  26224.     End
  26225.     ;--------------------------------------------------------
  26226.  
  26227.     ConditionState  = DYING
  26228.       Animation     = AIOFCR_SKL.AIOFCR_DTA
  26229.       Animation     = AIOFCR_SKL.AIOFCR_DTB
  26230.       AnimationMode = ONCE
  26231.       TransitionKey = TRANS_Dying
  26232.     End
  26233.  
  26234.     TransitionState = TRANS_Dying TRANS_Flailing
  26235.       Animation = AIOFCR_SKL.AIOFCR_ADTE1
  26236.       AnimationMode = ONCE
  26237.     End
  26238.  
  26239.     ConditionState = DYING EXPLODED_FLAILING
  26240.       Animation = AIOFCR_SKL.AIOFCR_ADTE2
  26241.       AnimationMode = LOOP
  26242.       TransitionKey = TRANS_Flailing
  26243.     End
  26244.  
  26245.     ConditionState = DYING EXPLODED_BOUNCING
  26246.       Animation = AIOFCR_SKL.AIOFCR_ADTE3
  26247.       AnimationMode = ONCE
  26248.       TransitionKey = None
  26249.     End
  26250.  
  26251.     ConditionState  = SPECIAL_CHEERING
  26252.       Animation     = AIOFCR_SKL.AIOFCR_CHA
  26253.       AnimationMode = LOOP
  26254.     End
  26255.  
  26256.     ;PARACHUTING ANIMATIONS
  26257.  
  26258.     ;@TODO - MISSING ANIMATION FILE
  26259.     ;ConditionState   = FREEFALL
  26260.     ;  Animation      = AIOFCR_SKL.AIOFCR_PFL
  26261.     ;  AnimationMode  = LOOP
  26262.     ;  TransitionKey  = TRANS_Falling
  26263.     ;End
  26264.     ;AliasConditionState = FREEFALL REALLYDAMAGED
  26265.     ;AliasConditionState = FREEFALL DYING
  26266.     ConditionState  = PARACHUTING
  26267.       Animation     = AIOFCR_SKL.AIOFCR_PHG
  26268.       AnimationMode = LOOP
  26269.       Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  26270.       TransitionKey = TRANS_Chute
  26271.  
  26272.     End
  26273.     AliasConditionState = PARACHUTING REALLYDAMAGED
  26274.     AliasConditionState = PARACHUTING DYING
  26275.     TransitionState = TRANS_Falling TRANS_Chute
  26276.       Animation     = AIOFCR_SKL.AIOFCR_POP
  26277.       AnimationMode = ONCE
  26278.       Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  26279.     End
  26280.     TransitionState = TRANS_Chute TRANS_Stand
  26281.       Animation     = AIOFCR_SKL.AIOFCR_PTD
  26282.       AnimationMode = ONCE
  26283.     End
  26284.  
  26285.   End
  26286.  
  26287.   ; ***DESIGN parameters ***
  26288.   DisplayName      = OBJECT:Officer
  26289.   Side = America
  26290.   EditorSorting = INFANTRY
  26291.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  26292.   WeaponSet
  26293.     Conditions = None 
  26294.     Weapon = PRIMARY AmericaOfficerMachineGun
  26295.   End
  26296.   ArmorSet
  26297.     Conditions      = None
  26298.     Armor           = HumanArmor
  26299.     DamageFX        = InfantryDamageFX
  26300.   End
  26301.   VisionRange = 150
  26302.   ShroudClearingRange = 150
  26303.  
  26304.   BuildCost     = 400
  26305.   BuildTime     = 10.0          ;in seconds      
  26306.  
  26307.   ; *** AUDIO Parameters ***
  26308.   VoiceSelect = RangerVoiceSelect
  26309.   VoiceGroupSelect = BattleCrySound
  26310.   VoiceMove = RangerVoiceMove
  26311.   VoiceAttack = RangerVoiceAttack
  26312.   SoundDie = RangerVoiceDie
  26313.   SoundDieFire = DieByFireUSA
  26314.   SoundDieToxin = DieByToxinChina
  26315.  
  26316.   ; *** ENGINEERING Parameters ***
  26317.   RadarPriority = UNIT
  26318.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
  26319.  
  26320.   Body = ActiveBody ModuleTag_02
  26321.     MaxHealth       = 100.0
  26322.     InitialHealth   = 100.0
  26323.   End
  26324.  
  26325.   Behavior = AIUpdateInterface ModuleTag_03
  26326.     AutoAcquireEnemiesWhenIdle = Yes
  26327.   End
  26328.   Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
  26329.     ScanRate = 1000 ; once a second.
  26330.     ScanRange = 300 ;
  26331.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  26332.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  26333.   End
  26334.  
  26335.   Locomotor = SET_NORMAL BasicHumanLocomotor
  26336.   Behavior = PhysicsBehavior ModuleTag_05
  26337.     Mass = 5.0
  26338.   End
  26339.  
  26340.   Behavior = SquishCollide ModuleTag_07
  26341.     ;nothing
  26342.   End
  26343.  
  26344. ; --- begin Death modules ---
  26345.   Behavior = SlowDeathBehavior ModuleTag_Death01
  26346.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  26347.     SinkDelay           = 3000
  26348.     SinkRate            = 0.5     ; in Dist/Sec
  26349.     DestructionDelay    = 8000
  26350.     FX                  = INITIAL FX_GIDie
  26351.   End
  26352.   Behavior = SlowDeathBehavior ModuleTag_Death02
  26353.     DeathTypes          = NONE +CRUSHED +SPLATTED
  26354.     SinkDelay           = 3000
  26355.     SinkRate            = 0.5     ; in Dist/Sec
  26356.     DestructionDelay    = 8000
  26357.     FX                  = INITIAL FX_GIDieCrushed
  26358.   End
  26359.   Behavior = SlowDeathBehavior ModuleTag_Death03
  26360.     DeathTypes          = NONE +EXPLODED
  26361.     SinkDelay           = 3000
  26362.     SinkRate            = 0.5     ; in Dist/Sec
  26363.     DestructionDelay    = 8000
  26364.     FX                  = INITIAL FX_GIDie
  26365.     FlingForce          = 8
  26366.     FlingForceVariance  = 3
  26367.     FlingPitch          = 60
  26368.     FlingPitchVariance  = 10
  26369.   End
  26370.   Behavior = SlowDeathBehavior ModuleTag_Death04
  26371.     DeathTypes          = NONE +BURNED
  26372.     DestructionDelay    = 0
  26373.     FX                  = INITIAL FX_GIDie
  26374.     OCL                 = INITIAL OCL_FlamingInfantry
  26375.   End
  26376.   Behavior = SlowDeathBehavior ModuleTag_Death05
  26377.     DeathTypes          = NONE +POISONED
  26378.     DestructionDelay    = 0
  26379.     FX                  = INITIAL FX_GIDie
  26380.     OCL                 = INITIAL OCL_ToxicInfantry
  26381.   End
  26382. ; --- end Death modules ---
  26383.  
  26384.   Behavior = PoisonedBehavior ModuleTag_10
  26385.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  26386.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  26387.   End
  26388.  
  26389.   Geometry = CYLINDER
  26390.   GeometryMajorRadius = 10.0
  26391.   GeometryMinorRadius = 10.0
  26392.   GeometryHeight = 12.0
  26393.   GeometryIsSmall = Yes
  26394.   Shadow = SHADOW_DECAL
  26395.   ShadowSizeX = 14;
  26396.   ShadowSizeY = 14;
  26397.   ShadowTexture = ShadowI;
  26398.   BuildCompletion = APPEARS_AT_RALLY_POINT
  26399.  
  26400. End
  26401.  
  26402.  
  26403. ;------------------------------------------------------------------------------
  26404. Object AmericaInfantrySecretService
  26405.  
  26406.     ; *** ART Parameters ***
  26407.   Draw = W3DModelDraw ModuleTag_01
  26408.     OkToChangeModelColor = Yes
  26409.  
  26410.     DefaultConditionState
  26411.       Model = AISSRV_SKN
  26412.       IdleAnimation = AISSRV_SKL.AISSRV_STA
  26413.       AnimationMode = ONCE
  26414.       TransitionKey = TRANS_Stand
  26415.     End
  26416.   End
  26417.  
  26418.   ; ***DESIGN parameters ***
  26419.   DisplayName      = OBJECT:BioHazardTech
  26420.   Side = America
  26421.   EditorSorting = INFANTRY
  26422.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  26423.   WeaponSet
  26424.     Conditions = None 
  26425.     Weapon = PRIMARY None
  26426.   End
  26427.   ArmorSet
  26428.     Conditions      = None
  26429.     Armor           = HumanArmor
  26430.     DamageFX        = InfantryDamageFX
  26431.   End
  26432.   VisionRange = 150
  26433.   ShroudClearingRange = 150
  26434.   Prerequisites
  26435.     Object = AmericaBarracks
  26436.   End
  26437.   BuildCost = 100
  26438.   BuildTime = 1.0          ;in seconds    
  26439.  
  26440.   ; *** AUDIO Parameters ***
  26441.   VoiceSelect = RangerVoiceSelect
  26442.   VoiceMove = RangerVoiceMove
  26443.   VoiceAttack = RangerVoiceAttack
  26444.   SoundDie = RangerVoiceDie
  26445.   SoundDieFire = DieByFireUSA
  26446.   SoundDieToxin = DieByToxinUSA
  26447.  
  26448.   ; *** ENGINEERING Parameters ***
  26449.   RadarPriority = UNIT
  26450.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
  26451.  
  26452.   Body = ActiveBody ModuleTag_02
  26453.     MaxHealth       = 50.0
  26454.     InitialHealth   = 50.0
  26455.   End
  26456.  
  26457.   Behavior = AIUpdateInterface ModuleTag_03
  26458.     AutoAcquireEnemiesWhenIdle = Yes
  26459.   End
  26460.   Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
  26461.     ScanRate = 1000 ; once a second.
  26462.     ScanRange = 300 ;
  26463.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  26464.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  26465.   End
  26466.  
  26467.   Locomotor = SET_NORMAL BasicHumanLocomotor
  26468.   Behavior = PhysicsBehavior ModuleTag_05
  26469.     Mass = 5.0
  26470.   End
  26471.   Behavior = SlowDeathBehavior ModuleTag_06
  26472.     SinkDelay = 3000
  26473.     SinkRate = 0.5     ; in Dist/Sec
  26474.     DestructionDelay = 8000
  26475.   End
  26476.  
  26477.   Behavior = ExperienceScalarUpgrade ModuleTag_07
  26478.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  26479.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  26480.   End
  26481.  
  26482.   Behavior = SquishCollide ModuleTag_08
  26483.     ;nothing
  26484.   End
  26485.  
  26486.  
  26487.   Behavior = FXListDie ModuleTag_09
  26488.     DeathTypes = ALL -CRUSHED -SPLATTED
  26489.     DeathFX = FX_GIDie
  26490.   End
  26491.   Behavior = FXListDie ModuleTag_10
  26492.     DeathTypes = NONE +CRUSHED +SPLATTED
  26493.     DeathFX = FX_GIDieCrushed
  26494.   End
  26495.  
  26496.   Behavior = PoisonedBehavior ModuleTag_11
  26497.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  26498.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  26499.   End
  26500.  
  26501.   Geometry = CYLINDER
  26502.   GeometryMajorRadius = 10.0
  26503.   GeometryMinorRadius = 10.0
  26504.   GeometryHeight = 12.0
  26505.   GeometryIsSmall = Yes
  26506.   Shadow = SHADOW_DECAL
  26507.   ShadowSizeX = 14;
  26508.   ShadowSizeY = 14;
  26509.   ShadowTexture = ShadowI;
  26510.   BuildCompletion = APPEARS_AT_RALLY_POINT
  26511.  
  26512. End
  26513.  
  26514. ;------------------------------------------------------------------------------
  26515. ;
  26516. ; ??? This unit is used in a mission for "color".
  26517. ; This unit is never human-controllable!
  26518. ; @todo srj -- is this used for ANYTHING?
  26519. ;
  26520. Object ChinaInfantryAgent
  26521.  
  26522.     ; *** ART Parameters ***
  26523.   Draw = W3DModelDraw ModuleTag_01
  26524.     OkToChangeModelColor = Yes
  26525.  
  26526.     ;NORMAL STANDING
  26527.     DefaultConditionState
  26528.       Model = AIRngr_SKN
  26529.       IdleAnimation = AIRngr_SKL.AIRngr_STA 0 21
  26530.       ;Regular spice animations
  26531.       IdleAnimation = AIRngr_SKL.AIRngr_IDA
  26532.       IdleAnimation = AIRngr_SKL.AIRngr_IDB
  26533.       AnimationMode = ONCE
  26534.       WeaponFireFXBone = PRIMARY Muzzle
  26535.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  26536.       TransitionKey = TRANS_Stand
  26537.     End
  26538.  
  26539.     ; NORMAL ATTACK (Cutting fence via wirecutters)
  26540.     ConditionState = PREATTACK_A 
  26541.       Animation = AIRngr_SKL.AIRngr_ATA
  26542.       AnimationMode = ONCE
  26543.       TransitionKey = TRANS_FiringA
  26544.     End
  26545.     AliasConditionState = FIRING_A
  26546.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  26547.     AliasConditionState = RELOADING_A
  26548.     AliasConditionState = MOVING FIRING_A
  26549.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  26550.     AliasConditionState = MOVING RELOADING_A
  26551.     AliasConditionState = FIRING_A REALLYDAMAGED
  26552.     AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  26553.     AliasConditionState = RELOADING_A REALLYDAMAGED
  26554.  
  26555.     ; SECONDARY ATTACK (Flash-bang grenades)
  26556.     ConditionState = FIRING_B 
  26557.       Animation = AIRngr_SKL.AIRngr_ATB 
  26558.       AnimationMode = ONCE
  26559.       WeaponFireFXBone = SECONDARY Muzzle
  26560.       WeaponLaunchBone = SECONDARY Muzzle
  26561.       TransitionKey = TRANS_FiringB
  26562.     End
  26563.  
  26564.     AliasConditionState = BETWEEN_FIRING_SHOTS_B
  26565.     AliasConditionState = RELOADING_B
  26566.  
  26567.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  26568.     AliasConditionState = MOVING FIRING_B
  26569.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
  26570.     AliasConditionState = MOVING RELOADING_B
  26571.  
  26572.     ConditionState = MOVING
  26573.       Animation = AIRngr_SKL.AIRngr_RNA 15
  26574.       AnimationMode = LOOP
  26575.       Flags = RANDOMSTART
  26576.       TransitionKey = None
  26577.       ParticleSysBone     = None InfantryDustTrails
  26578.     End
  26579.  
  26580.     ConditionState = MOVING REALLYDAMAGED
  26581.       ;
  26582.       ; there is a new, optional number following the animation...
  26583.       ; it represents the distance that a single loop the animation would
  26584.       ; cover. (ie, maybe it has the solder taking three strides, for a 
  26585.       ; distance of 30 or so)
  26586.       ;
  26587.       ; how to tweak the number:
  26588.       ;   -- "skidding"?          reduce the number
  26589.       ;   -- "running in place"?  increase the number
  26590.       ;
  26591.       ; note that playing animations at abormal speeds may look odd in some cases.
  26592.       ; (e.g., a "limping" animation played too fast looks really odd.)
  26593.       ;
  26594.       Animation = AIRngr_SKL.AIRngr_RNB 30
  26595.       AnimationMode = LOOP
  26596.       Flags = RANDOMSTART
  26597.       TransitionKey = None
  26598.       ParticleSysBone     = None InfantryDustTrails
  26599.     End
  26600.  
  26601.     ConditionState = DYING
  26602.       Animation = AIRngr_SKL.AIRngr_DTA
  26603.       Animation = AIRngr_SKL.AIRngr_DTB
  26604.       AnimationMode = ONCE
  26605.       TransitionKey = None
  26606.     End
  26607.  
  26608.     ConditionState = SPECIAL_CHEERING
  26609.       Animation = AIRngr_SKL.AIRngr_CHA
  26610.       AnimationMode = LOOP
  26611.     End
  26612.  
  26613.     ;PARACHUTING ANIMATIONS
  26614.     ConditionState = FREEFALL
  26615.       Animation = AIRngr_SKL.AIRngr_PFL
  26616.       AnimationMode = LOOP
  26617.       TransitionKey = TRANS_Falling
  26618.     End
  26619.     AliasConditionState = FREEFALL REALLYDAMAGED
  26620.     AliasConditionState = FREEFALL DYING
  26621.     ConditionState = PARACHUTING
  26622.       Animation = AIRngr_SKL.AIRngr_PHG
  26623.       AnimationMode = LOOP
  26624.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  26625.       TransitionKey = TRANS_Chute
  26626.     End
  26627.     AliasConditionState = PARACHUTING REALLYDAMAGED
  26628.     AliasConditionState = PARACHUTING DYING
  26629.     TransitionState = TRANS_Falling TRANS_Chute
  26630.       Animation = AIRngr_SKL.AIRngr_POP
  26631.       AnimationMode = ONCE
  26632.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  26633.     End
  26634.     TransitionState = TRANS_Chute TRANS_Stand
  26635.       Animation = AIRngr_SKL.AIRngr_PTD
  26636.       AnimationMode = ONCE
  26637.     End
  26638.  
  26639.     ; RAPPELLING ANIMATIONS
  26640.     ConditionState = RAPPELLING
  26641.       Animation = AIRngr_SKL.AIRngr_RPL1 ;30
  26642.       AnimationMode = LOOP
  26643.       Flags = RANDOMSTART
  26644.       TransitionKey = TRANS_Rappelling
  26645.     End
  26646.     AliasConditionState = MOVING RAPPELLING
  26647.  
  26648.     TransitionState = TRANS_Rappelling TRANS_Stand
  26649.       Animation = AIRngr_SKL.AIRngr_RPL2
  26650.       AnimationMode = ONCE
  26651.     End
  26652.  
  26653.   End
  26654.  
  26655.   ; ***DESIGN parameters ***
  26656.   DisplayName      = OBJECT:Agent
  26657.   Side = China
  26658.   EditorSorting = INFANTRY
  26659.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  26660.   WeaponSet
  26661.     Conditions = None 
  26662.     Weapon = PRIMARY RedguardMachineGun
  26663.   End
  26664. ; sorry, no stun bullets, cut for this version (srj)
  26665. ;  WeaponSet
  26666. ;    Conditions = PLAYER_UPGRADE
  26667. ;    Weapon = PRIMARY RedguardStunBulletsMachineGun
  26668. ;  End
  26669.   ArmorSet
  26670.     Conditions      = None
  26671.     Armor           = HumanArmor
  26672.     DamageFX        = InfantryDamageFX
  26673.   End
  26674.   VisionRange = 150
  26675.   ShroudClearingRange = 150
  26676.   Prerequisites
  26677.     Object = ChinaBarracks
  26678.     Object = ChinaPropagandaCenter
  26679.   End
  26680.  
  26681.   BuildCost     = 600
  26682.   BuildTime     = 20.0          ;in seconds      
  26683.  
  26684.   ExperienceValue = 50 100 150 400    ;Experience point value at each level
  26685.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  26686.   IsTrainable = Yes             ;Can gain experience
  26687.  
  26688.   ; *** AUDIO Parameters ***
  26689.   VoiceSelect = RedGuardVoiceSelect
  26690.   VoiceGroupSelect = BattleCrySound
  26691.   VoiceMove = RedGuardVoiceMove
  26692.   VoiceAttack = RedGuardVoiceAttack
  26693.   SoundDie = RedGuardVoiceDie
  26694.   SoundDieFire = DieByFireChina
  26695.   SoundDieToxin = DieByToxinChina
  26696.  
  26697.   ; *** ENGINEERING Parameters ***
  26698.   RadarPriority = UNIT
  26699.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
  26700.  
  26701.   Body = ActiveBody ModuleTag_02
  26702.     MaxHealth       = 100.0
  26703.     InitialHealth   = 100.0
  26704.   End
  26705.  
  26706.   Behavior = VeterancyGainCreate ModuleTag_03
  26707.     StartingLevel = VETERAN
  26708.   End
  26709.  
  26710.   Behavior = StealthUpdate ModuleTag_04
  26711.     StealthDelay                = 2000 ; msec
  26712.     StealthForbiddenConditions  = ATTACKING
  26713.     FriendlyOpacityMin          = 50.0%
  26714.     InnateStealth               = Yes
  26715.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  26716.   End
  26717.  
  26718.   Behavior = AIUpdateInterface ModuleTag_05
  26719.     AutoAcquireEnemiesWhenIdle = Yes
  26720.   End
  26721.   Locomotor = SET_NORMAL BasicHumanLocomotor
  26722.   Behavior = PhysicsBehavior ModuleTag_06
  26723.     Mass = 5.0
  26724.   End
  26725.   Behavior = SlowDeathBehavior ModuleTag_07
  26726.     SinkDelay = 3000
  26727.     SinkRate = 0.5     ; in Dist/Sec
  26728.     DestructionDelay = 8000
  26729.   End
  26730.  
  26731.  
  26732.   Behavior = SquishCollide ModuleTag_08
  26733.     ;nothing
  26734.   End
  26735.  
  26736.  
  26737.   Behavior = FXListDie ModuleTag_09
  26738.     DeathTypes = ALL -CRUSHED -SPLATTED
  26739.     DeathFX = FX_GIDie
  26740.   End
  26741.   Behavior = FXListDie ModuleTag_10
  26742.     DeathTypes = NONE +CRUSHED +SPLATTED
  26743.     DeathFX = FX_GIDieCrushed
  26744.   End
  26745.  
  26746.   Behavior = PoisonedBehavior ModuleTag_11
  26747.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  26748.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  26749.   End
  26750.  
  26751.   Geometry = CYLINDER
  26752.   GeometryMajorRadius = 10.0
  26753.   GeometryMinorRadius = 10.0
  26754.   GeometryHeight = 12.0
  26755.   GeometryIsSmall = Yes
  26756.   Shadow = SHADOW_DECAL
  26757.   ShadowSizeX = 14;
  26758.   ShadowSizeY = 14;
  26759.   ShadowTexture = ShadowI;
  26760.   BuildCompletion = APPEARS_AT_RALLY_POINT
  26761.  
  26762. End
  26763.  
  26764. ;------------------------------------------------------------------------------
  26765. ;The Marauder Tank, for the Warlord General.  
  26766. Object GLATankMarauder
  26767.  
  26768.   ; *** ART Parameters ***
  26769.   SelectPortrait         = SUMarauder_L
  26770.   ButtonImage            = SUMarauder
  26771.   
  26772.   UpgradeCameo1 = Upgrade_GLAToxinShells
  26773.   UpgradeCameo2 = Upgrade_GLAJunkRepair
  26774.   ;UpgradeCameo3 = NONE
  26775.   ;UpgradeCameo4 = NONE
  26776.   ;UpgradeCameo5 = NONE
  26777.   
  26778.   Draw = W3DTankDraw ModuleTag_01
  26779.     OkToChangeModelColor = Yes
  26780.  
  26781. ; no crate upgrade
  26782.     ConditionState = NONE
  26783.       Model = UVMarauder
  26784.       Turret = Turret
  26785.       ShowSubObject = Turret
  26786.       HideSubObject = TurretUp01 TurretUp02 BarrelFX01 ; Since we are showing one of three turrets, we need to then hide the subobject muzzleflash
  26787.       WeaponFireFXBone = PRIMARY BarrelMS
  26788.       WeaponRecoilBone = PRIMARY Barrel
  26789.       WeaponMuzzleFlash = PRIMARY BarrelFX
  26790.       WeaponLaunchBone = PRIMARY BarrelMS
  26791.     End
  26792.  
  26793.     ConditionState = REALLYDAMAGED
  26794.       Model = UVMarauder_d
  26795.       Turret = Turret
  26796.       ShowSubObject = Turret
  26797.       HideSubObject = TurretUp01 TurretUp02 BarrelFX01
  26798.       WeaponFireFXBone = PRIMARY BarrelMS
  26799.       WeaponRecoilBone = PRIMARY Barrel
  26800.       WeaponMuzzleFlash = PRIMARY BarrelFX
  26801.       WeaponLaunchBone = PRIMARY BarrelMS
  26802.     End
  26803.  
  26804.     ConditionState = RUBBLE
  26805.       Model = UVMarauder_d
  26806.       Turret = Turret
  26807.       ShowSubObject = Turret
  26808.       HideSubObject = TurretUp01 TurretUp02 BarrelFX01
  26809.       WeaponFireFXBone = PRIMARY BarrelMS
  26810.       WeaponRecoilBone = PRIMARY Barrel
  26811.       WeaponMuzzleFlash = PRIMARY BarrelFX
  26812.       WeaponLaunchBone = PRIMARY BarrelMS
  26813.     End
  26814.  
  26815. ; crate upgrade 1
  26816.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE
  26817.       Model = UVMarauder
  26818.       Turret = TurretUp01
  26819.       ShowSubObject = TurretUp01
  26820.       HideSubObject = Turret TurretUp02 BarrelUp01FX01
  26821.       WeaponFireFXBone = PRIMARY BarrelUp01MS
  26822.       WeaponRecoilBone = PRIMARY BarrelUp01
  26823.       WeaponMuzzleFlash = PRIMARY BarrelUp01FX
  26824.       WeaponLaunchBone = PRIMARY BarrelUp01MS
  26825.     End
  26826.  
  26827.     ConditionState = REALLYDAMAGED WEAPONSET_CRATEUPGRADE_ONE
  26828.       Model = UVMarauder_d
  26829.       Turret = TurretUp01
  26830.       ShowSubObject = TurretUp01
  26831.       HideSubObject = Turret TurretUp02 BarrelUp01FX01
  26832.       WeaponFireFXBone = PRIMARY BarrelUp01MS
  26833.       WeaponRecoilBone = PRIMARY BarrelUp01
  26834.       WeaponMuzzleFlash = PRIMARY BarrelUp01FX
  26835.       WeaponLaunchBone = PRIMARY BarrelUp01MS
  26836.     End
  26837.  
  26838.     ConditionState = RUBBLE WEAPONSET_CRATEUPGRADE_ONE
  26839.       Model = UVMarauder_d
  26840.       Turret = TurretUp01
  26841.       ShowSubObject = TurretUp01
  26842.       HideSubObject = Turret TurretUp02 BarrelUp01FX01
  26843.       WeaponFireFXBone = PRIMARY BarrelUp01MS
  26844.       WeaponRecoilBone = PRIMARY BarrelUp01
  26845.       WeaponMuzzleFlash = PRIMARY BarrelUp01FX
  26846.       WeaponLaunchBone = PRIMARY BarrelUp01MS
  26847.     End
  26848.  
  26849. ; crate upgrade 2
  26850.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO
  26851.       Model = UVMarauder
  26852.       Turret = TurretUp02
  26853.       ShowSubObject = TurretUp02
  26854.       HideSubObject = Turret TurretUp01 BarrelUp02FX01 BarrelUp02FX02
  26855.       WeaponFireFXBone = PRIMARY BarrelUp02MS
  26856.       WeaponRecoilBone = PRIMARY BarrelUp02
  26857.       WeaponMuzzleFlash = PRIMARY BarrelUp02FX
  26858.       WeaponLaunchBone = PRIMARY BarrelUp02MS
  26859.     End
  26860.  
  26861.     ConditionState = REALLYDAMAGED WEAPONSET_CRATEUPGRADE_TWO
  26862.       Model = UVMarauder_d
  26863.       Turret = TurretUp02
  26864.       ShowSubObject = TurretUp02
  26865.       HideSubObject = Turret TurretUp01 BarrelUp02FX01 BarrelUp02FX02
  26866.       WeaponFireFXBone = PRIMARY BarrelUp02MS
  26867.       WeaponRecoilBone = PRIMARY BarrelUp02
  26868.       WeaponMuzzleFlash = PRIMARY BarrelUp02FX
  26869.       WeaponLaunchBone = PRIMARY BarrelUp02MS
  26870.     End
  26871.  
  26872.     ConditionState = RUBBLE WEAPONSET_CRATEUPGRADE_TWO
  26873.       Model = UVMarauder_d
  26874.       Turret = TurretUp02
  26875.       ShowSubObject = TurretUp02
  26876.       HideSubObject = Turret TurretUp01 BarrelUp02FX01 BarrelUp02FX02
  26877.       WeaponFireFXBone = PRIMARY BarrelUp02MS
  26878.       WeaponRecoilBone = PRIMARY BarrelUp02
  26879.       WeaponMuzzleFlash = PRIMARY BarrelUp02FX
  26880.       WeaponLaunchBone = PRIMARY BarrelUp02MS
  26881.     End
  26882.  
  26883.     TrackMarks = EXTnkTrack.tga
  26884.     TreadAnimationRate = 2.0;  amount of tread texture to move per second
  26885.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  26886.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  26887.  
  26888.   End
  26889.  
  26890.   ; ***DESIGN parameters ***
  26891.   DisplayName           = OBJECT:Marauder
  26892.   Side                  = GLA
  26893.   EditorSorting         = VEHICLE
  26894.   TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  26895.   WeaponSet
  26896.     Conditions = None 
  26897.     Weapon = PRIMARY MarauderTankGun
  26898.   End
  26899.   WeaponSet
  26900.     Conditions = CRATEUPGRADE_ONE
  26901.     Weapon = PRIMARY MarauderTankGunUpgradeOne
  26902.  
  26903.   End
  26904.   WeaponSet
  26905.     Conditions = CRATEUPGRADE_TWO 
  26906.     Weapon = PRIMARY MarauderTankGunUpgradeTwo
  26907.   End
  26908.   ArmorSet
  26909.     Conditions      = None
  26910.     Armor           = TankArmor
  26911.     DamageFX        = TankDamageFX
  26912.   End
  26913.   BuildCost       = 800
  26914.   BuildTime       = 10.0          ;in seconds    
  26915.   VisionRange     = 125
  26916.   ShroudClearingRange = 300
  26917.   Prerequisites
  26918.     Object = GLAArmsDealer
  26919.     Science = SCIENCE_MarauderTank
  26920.   End
  26921.  
  26922.   ExperienceValue = 100 100 200 300    ;Experience point value at each level
  26923.   ExperienceRequired = 0 200 300 600  ;Experience points needed to gain each level
  26924.   IsTrainable = Yes             ;Can gain experience
  26925.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  26926.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  26927.   CommandSet           = GLATankMarauderCommandSet
  26928.  
  26929.   ; *** AUDIO Parameters ***
  26930.   VoiceSelect = MarauderTankVoiceSelect
  26931.   VoiceMove = MarauderTankVoiceMove
  26932.   VoiceGuard = MarauderTankVoiceMove
  26933.   VoiceAttack = MarauderTankVoiceAttack
  26934.   SoundMoveStart = MarauderTankMoveStart
  26935.   SoundMoveStartDamaged = MarauderTankMoveStart
  26936.  
  26937.   UnitSpecificSounds
  26938.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  26939.     VoiceCreate     = MarauderTankVoiceCreate
  26940.     ;TurretMoveStart = NoSound
  26941.     TurretMoveLoop = TurretMoveLoop
  26942.     VoiceSalvage = MarauderTankVoiceSalvage      
  26943.     VoiceCrush = MarauderTankVoiceCrush
  26944.     VoiceEnter = MarauderTankVoiceMove
  26945.   End
  26946.  
  26947.   ; *** ENGINEERING Parameters ***
  26948.   RadarPriority = UNIT
  26949.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE
  26950.  
  26951.   Body = ActiveBody ModuleTag_02
  26952.     MaxHealth       = 490.0
  26953.     InitialHealth   = 490.0
  26954.   End
  26955.  
  26956.   Behavior = AIUpdateInterface ModuleTag_03
  26957.     AutoAcquireEnemiesWhenIdle = Yes
  26958.   End
  26959.   Locomotor = SET_NORMAL MarauderLocomotor
  26960.   Behavior = PhysicsBehavior ModuleTag_04
  26961.     Mass = 50.0
  26962.   End
  26963.   Behavior = AutoHealBehavior ModuleTag_05
  26964.     HealingAmount = 2
  26965.     HealingDelay = 1000 ; msec
  26966.     TriggeredBy = Upgrade_GLAJunkRepair
  26967.   End
  26968.  
  26969.   ; Catch fire, and explode death
  26970.   Behavior = SlowDeathBehavior ModuleTag_06
  26971.     DeathTypes = ALL -CRUSHED -SPLATTED
  26972.     ProbabilityModifier = 50
  26973.     DestructionDelay = 1000
  26974.     DestructionDelayVariance = 300
  26975.     FX  = INITIAL  FX_CrusaderCatchFire
  26976.     OCL = FINAL    OCL_MaruaderTankDeathEffect  
  26977.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  26978.   End
  26979.  
  26980.  
  26981.   Behavior = CreateCrateDie ModuleTag_07
  26982.     CrateData = SalvageCrateData
  26983.     ;CrateData = EliteTankCrateData
  26984.     ;CrateData = HeroicTankCrateData
  26985.   End
  26986.   
  26987.   Behavior                 = TransitionDamageFX ModuleTag_08
  26988.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  26989.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  26990.   End
  26991.   
  26992.   ; A crushing defeat
  26993.   Behavior = FXListDie ModuleTag_09
  26994.     DeathTypes = NONE +CRUSHED +SPLATTED
  26995.     DeathFX = FX_CarCrush
  26996.   End
  26997.  
  26998.   Behavior = FlammableUpdate ModuleTag_21
  26999.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  27000.     AflameDamageAmount = 3       ; taking this much damage...
  27001.     AflameDamageDelay = 500       ; this often.
  27002.   End
  27003.  
  27004.   Geometry = BOX
  27005.   GeometryMajorRadius = 17.0
  27006.   GeometryMinorRadius = 10.0
  27007.   GeometryHeight = 9.5     
  27008.   GeometryIsSmall = Yes 
  27009.   Shadow = SHADOW_VOLUME   
  27010.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  27011.  
  27012. End
  27013.  
  27014. ;------------------------------------------------------------------------------
  27015. Object ChinaInfantryHacker
  27016.  
  27017.   ; *** ART Parameters ***
  27018.   SelectPortrait         = SNHacker2_L
  27019.   ButtonImage            = SNHacker2
  27020.   
  27021.   ;UpgradeCameo1 = NONE
  27022.   ;UpgradeCameo2 = NONE
  27023.   ;UpgradeCameo3 = NONE
  27024.   ;UpgradeCameo4 = NONE
  27025.   ;UpgradeCameo5 = NONE
  27026.  
  27027.   Draw = W3DModelDraw ModuleTag_01
  27028.     OkToChangeModelColor = Yes
  27029.  
  27030.     ;NORMAL STANDING
  27031.     DefaultConditionState
  27032.       Model = NIHCKR_SKN
  27033.       IdleAnimation = NIHCKR_SKL.NIHCKR_STA 0 25
  27034.       ;Regular spice animations
  27035.       IdleAnimation = NIHCKR_SKL.NIHCKR_IDA
  27036.       IdleAnimation = NIHCKR_SKL.NIHCKR_IDB
  27037.       AnimationMode = ONCE
  27038.       WeaponFireFXBone = PRIMARY Bone_SatCom
  27039.       TransitionKey = TRANS_Stand
  27040.     End
  27041.     AliasConditionState = REALLYDAMAGED
  27042.  
  27043.     ConditionState = MOVING
  27044.       Animation = NIHCKR_SKL.NIHCKR_RNA 14
  27045.       AnimationMode = LOOP
  27046.       Flags = RANDOMSTART
  27047.       TransitionKey = None
  27048.       ParticleSysBone   = None InfantryDustTrails
  27049.     End
  27050.     AliasConditionState = MOVING UNPACKING
  27051.     AliasConditionState = MOVING UNPACKING REALLYDAMAGED
  27052.  
  27053.     ConditionState = UNPACKING
  27054.       Animation = NIHCKR_SKL.NIHCKR_ATB1
  27055.       AnimationMode = ONCE
  27056.     End
  27057.     AliasConditionState = UNPACKING FIRING_A
  27058.     AliasConditionState = UNPACKING REALLYDAMAGED
  27059.     AliasConditionState = UNPACKING FIRING_A REALLYDAMAGED
  27060.  
  27061.     ;HACKING ATTACK
  27062.     ConditionState = FIRING_A
  27063.       Animation = NIHCKR_SKL.NIHCKR_ATB2
  27064.       AnimationMode = LOOP
  27065.       TransitionKey = TRANS_FiringA
  27066.     End
  27067.     AliasConditionState = FIRING_A REALLYDAMAGED
  27068.  
  27069.     ConditionState = PACKING
  27070.       Animation = NIHCKR_SKL.NIHCKR_ATB3
  27071.       AnimationMode = ONCE
  27072.     End
  27073.     AliasConditionState = PACKING FIRING_A
  27074.     AliasConditionState = PACKING REALLYDAMAGED
  27075.     AliasConditionState = PACKING FIRING_A REALLYDAMAGED
  27076.  
  27077.  
  27078.  
  27079.     TransitionState = TRANS_FiringA TRANS_Stand ; I was stopped by a stop command, so I get no proper PACKING state
  27080.       Animation = NIHCKR_SKL.NIHCKR_ATB3
  27081.       AnimationMode = ONCE
  27082.     End
  27083.  
  27084.  
  27085.     ConditionState = FREEFALL
  27086.       Animation = NIHCKR_SKL.NIHCKR_PFL
  27087.       AnimationMode = LOOP
  27088.       TransitionKey = TRANS_Falling
  27089.     End
  27090.     AliasConditionState = FREEFALL REALLYDAMAGED
  27091.     AliasConditionState = FREEFALL DYING
  27092.  
  27093.     ConditionState = PARACHUTING
  27094.       Animation = NIHCKR_SKL.NIHCKR_PHG
  27095.       AnimationMode = LOOP
  27096.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  27097.       TransitionKey = TRANS_Chute
  27098.     End
  27099.     AliasConditionState = PARACHUTING REALLYDAMAGED
  27100.     AliasConditionState = PARACHUTING DYING
  27101.  
  27102.  
  27103.     ConditionState = DYING
  27104.       Animation = NIHCKR_SKL.NIHCKR_DTA
  27105.       Animation = NIHCKR_SKL.NIHCKR_DTB
  27106.       AnimationMode = ONCE
  27107.       TransitionKey = TRANS_Dying
  27108.     End
  27109.  
  27110.     TransitionState = TRANS_Dying TRANS_Flailing
  27111.       Animation = NIHCKR_SKL.NIHCKR_ADTG1
  27112.       AnimationMode = ONCE
  27113.     End
  27114.  
  27115.     ConditionState = DYING EXPLODED_FLAILING
  27116.       Animation = NIHCKR_SKL.NIHCKR_ADTG2
  27117.       AnimationMode = LOOP
  27118.       TransitionKey = TRANS_Flailing
  27119.     End
  27120.  
  27121.     ConditionState = DYING EXPLODED_BOUNCING
  27122.       Animation = NIHCKR_SKL.NIHCKR_ADTG3
  27123.       AnimationMode = ONCE
  27124.       TransitionKey = None
  27125.     End
  27126.  
  27127.     ConditionState = SPECIAL_CHEERING
  27128.       Animation = NIHCKR_SKL.NIHCKR_CHA
  27129.       AnimationMode = LOOP
  27130.     End
  27131.  
  27132.     TransitionState = TRANS_Falling TRANS_Chute
  27133.       Animation = NIHCKR_SKL.NIHCKR_POP
  27134.       AnimationMode = ONCE
  27135.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  27136.     End
  27137.  
  27138.     TransitionState = TRANS_Chute TRANS_Stand
  27139.       Animation = NIHCKR_SKL.NIHCKR_PTD
  27140.       AnimationMode = ONCE
  27141.     End
  27142.  
  27143.   End
  27144.  
  27145.   ; ***DESIGN parameters ***
  27146.   DisplayName      = OBJECT:Hacker
  27147.   Side = China
  27148.   EditorSorting = INFANTRY
  27149.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  27150.  
  27151.   ArmorSet
  27152.     Conditions      = None
  27153.     Armor           = HumanArmor
  27154.     DamageFX        = InfantryDamageFX
  27155.   End
  27156.   VisionRange = 150
  27157.   ShroudClearingRange = 300
  27158.   Prerequisites
  27159.     Object = ChinaBarracks
  27160.     Object = ChinaPropagandaCenter
  27161.   End
  27162.   BuildCost = 625
  27163.   BuildTime = 20.0          ;in seconds    
  27164.   ExperienceValue = 50 100 150 400    ;Experience point value at each level
  27165.   ExperienceRequired = 0 100 300 500  ;Experience points needed to gain each level
  27166.   IsTrainable = Yes             ;Can gain experience
  27167.  
  27168.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  27169.   CommandSet      = ChinaInfantryHackerCommandSet
  27170.  
  27171.   ; *** AUDIO Parameters ***
  27172.   VoiceSelect = HackerVoiceSelect
  27173.   VoiceMove = HackerVoiceMove
  27174.   VoiceAttack = HackerVoiceAttack
  27175.   SoundDie = HackerVoiceDie
  27176.   SoundDieFire = DieByFireChina
  27177.   SoundDieToxin = DieByToxinChina
  27178.   VoiceGuard = HackerVoiceMove
  27179.   VoiceFear = HackerVoiceFear
  27180.   VoiceTaskComplete = HackerVoiceHackComplete
  27181.   UnitSpecificSounds
  27182.     VoiceGarrison = HackerVoiceGarrison
  27183.     VoiceCreate     = HackerVoiceCreate
  27184.     UnitPack        = HackerPack
  27185.     UnitUnpack      = HackerUnpack
  27186.     UnitCashPing    = HackerCashPing
  27187.     VoiceEnter = HackerVoiceMove
  27188.     VoiceEnterHostile = HackerVoiceMove
  27189.     VoiceGetHealed      = HackerVoiceMove
  27190.     VoiceHackInternet   = HackerVoiceModeInternet
  27191.   End
  27192.  
  27193.   ; *** ENGINEERING Parameters ***
  27194.   RadarPriority = UNIT
  27195.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE IGNORES_SELECT_ALL
  27196.  
  27197.   Body = ActiveBody ModuleTag_02
  27198.     MaxHealth       = 100.0
  27199.     InitialHealth   = 100.0
  27200.   End
  27201.  
  27202.   Behavior = HackInternetAIUpdate ModuleTag_03
  27203.     UnpackTime          = 7300 ;animation time is 7300 (changing this will scale anim speed)
  27204.     PackTime            = 5133 ;animation time is 5133 (changing this will scale anim speed)
  27205.     CashUpdateDelay     = 2000
  27206.     RegularCashAmount   = 5
  27207.     VeteranCashAmount   = 6
  27208.     EliteCashAmount     = 8
  27209.     HeroicCashAmount    = 10
  27210.     XpPerCashUpdate     = 1
  27211.     PackUnpackVariationFactor = 0.5 ;Adds + or - 20% to pack and unpack time randomly.
  27212.   End
  27213.   Locomotor = SET_NORMAL BasicHumanLocomotor
  27214.  
  27215.   Behavior = SpecialAbility ModuleTag_04
  27216.     SpecialPowerTemplate = SpecialAbilityHackerDisableBuilding
  27217.     UpdateModuleStartsAttack = Yes
  27218.     InitiateSound         = HackerVoiceHack
  27219.   End
  27220.  
  27221.   Behavior = SpecialAbilityUpdate ModuleTag_05
  27222.     SpecialPowerTemplate = SpecialAbilityHackerDisableBuilding
  27223.     StartAbilityRange = 150.0
  27224.     UnpackTime      = 7300 ;animation time is 7300 (changing this will scale anim speed)
  27225.     PackTime        = 5133 ;animation time is 5133 (changing this will scale anim speed)
  27226.     PreparationTime = 3000
  27227.  
  27228.     ;PersistentPrepTime = 500 ; old setting
  27229.     PersistentPrepTime = 333 ; NOTE! This drives how often the disable effect gets triggered
  27230.                              ; This is also how often a new particle system effect is spawned
  27231.     EffectDuration = 2000
  27232.     SpecialObject = BinaryDataStream
  27233.     DisableFXParticleSystem = DisabledEffectBinaryShower0
  27234.     PackSound       = HackerPack
  27235.     UnpackSound     = HackerUnpack
  27236.     PrepSoundLoop   = HackerPrepLoop
  27237.     AwardXPForTriggering  = 0    ;Careful, this is persistant so it's a DoT xp gain!
  27238.     ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  27239.   End
  27240.  
  27241.  
  27242.   Behavior = PhysicsBehavior ModuleTag_06
  27243.     Mass = 5.0
  27244.   End
  27245.  
  27246.   Behavior = SquishCollide ModuleTag_08
  27247.     ;nothing
  27248.   End
  27249.  
  27250.  
  27251. ; --- begin Death modules ---
  27252.   Behavior = SlowDeathBehavior ModuleTag_Death01
  27253.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  27254.     SinkDelay           = 3000
  27255.     SinkRate            = 0.5     ; in Dist/Sec
  27256.     DestructionDelay    = 8000
  27257.     FX                  = INITIAL FX_GIDie
  27258.   End
  27259.   Behavior = SlowDeathBehavior ModuleTag_Death02
  27260.     DeathTypes          = NONE +CRUSHED +SPLATTED
  27261.     SinkDelay           = 3000
  27262.     SinkRate            = 0.5     ; in Dist/Sec
  27263.     DestructionDelay    = 8000
  27264.     FX                  = INITIAL FX_GIDieCrushed
  27265.   End
  27266.   Behavior = SlowDeathBehavior ModuleTag_Death03
  27267.     DeathTypes          = NONE +EXPLODED
  27268.     SinkDelay           = 3000
  27269.     SinkRate            = 0.5     ; in Dist/Sec
  27270.     DestructionDelay    = 8000
  27271.     FX                  = INITIAL FX_GIDie
  27272.     FlingForce          = 8
  27273.     FlingForceVariance  = 3
  27274.     FlingPitch          = 60
  27275.     FlingPitchVariance  = 10
  27276.   End
  27277.   Behavior = SlowDeathBehavior ModuleTag_Death04
  27278.     DeathTypes          = NONE +BURNED
  27279.     DestructionDelay    = 0
  27280.     FX                  = INITIAL FX_GIDie
  27281.     OCL                 = INITIAL OCL_FlamingInfantry
  27282.   End
  27283.   Behavior = SlowDeathBehavior ModuleTag_Death05
  27284.     DeathTypes          = NONE +POISONED
  27285.     DestructionDelay    = 0
  27286.     FX                  = INITIAL FX_GIDie
  27287.     OCL                 = INITIAL OCL_ToxicInfantry
  27288.   End
  27289.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  27290.     DeathTypes          = NONE +POISONED_BETA
  27291.     DestructionDelay    = 0
  27292.     FX                  = INITIAL FX_GIDie
  27293.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  27294.   End
  27295. ; --- end Death modules ---
  27296.  
  27297.   Behavior = PoisonedBehavior ModuleTag_11
  27298.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  27299.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  27300.   End
  27301.  
  27302.   Geometry = CYLINDER
  27303.   GeometryMajorRadius = 10.0
  27304.   GeometryMinorRadius = 10.0
  27305.   GeometryHeight = 12.0
  27306.   GeometryIsSmall = Yes
  27307.   Shadow = SHADOW_DECAL
  27308.   ShadowSizeX = 14;
  27309.   ShadowSizeY = 14;
  27310.   ShadowTexture = ShadowI;
  27311.   BuildCompletion = APPEARS_AT_RALLY_POINT
  27312.  
  27313. End
  27314.  
  27315. ;------------------------------------------------------------------------------
  27316. ;GLA Radar Van
  27317. Object GLAVehicleRadarVan
  27318.  
  27319.   ; *** ART Parameters ***
  27320.   SelectPortrait         = SURadarVan_L
  27321.   ButtonImage            = SURadarVan
  27322.   
  27323.   UpgradeCameo1 = Upgrade_GLARadarVanScan
  27324.   UpgradeCameo2 = Upgrade_GLAJunkRepair
  27325.   ;UpgradeCameo3 = NONE
  27326.   ;UpgradeCameo4 = NONE
  27327.   ;UpgradeCameo5 = NONE
  27328.   
  27329.   Draw = W3DTruckDraw ModuleTag_01
  27330.     OkToChangeModelColor = Yes
  27331.  
  27332.     DefaultConditionState
  27333.       Model = UVRadarVan
  27334.       Animation = UVRadarVan.UVRadarVan
  27335.       AnimationMode = LOOP
  27336.     End
  27337.     
  27338.     ConditionState = REALLYDAMAGED
  27339.       Model = UVRadarVan_D
  27340.       Animation = UVRadarVan_D.UVRadarVan_D
  27341.       AnimationMode = LOOP
  27342.     End
  27343.     
  27344.     ConditionState = RUBBLE
  27345.       Model = UVRadarVan_D
  27346.       Animation = UVRadarVan_D.UVRadarVan_D
  27347.       AnimationMode = LOOP
  27348.     End
  27349.     
  27350.     TrackMarks = EXTireTrack.tga
  27351.     
  27352.     ; These parameters are only used if the model has a separate suspension, 
  27353.     ; and the locomotor has HasSuspension = Yes.
  27354.     LeftFrontTireBone = Tire01
  27355.     RightFrontTireBone = Tire02
  27356.     LeftRearTireBone = Tire03
  27357.     RightRearTireBone = Tire04
  27358.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  27359.     PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
  27360.   End
  27361.  
  27362.   ; ***DESIGN parameters ***
  27363.   DisplayName      = OBJECT:RadarVan
  27364.   Side = GLA
  27365.   EditorSorting   = VEHICLE
  27366.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  27367.   ArmorSet
  27368.     Conditions      = None
  27369.     Armor           = TruckArmor
  27370.     DamageFX        = TankDamageFX
  27371.   End
  27372.   BuildCost       = 500
  27373.   BuildTime       = 10.0          ;in seconds    
  27374.   VisionRange     = 200
  27375.   ShroudClearingRange = 500
  27376.   Prerequisites
  27377.     Object = GLAArmsDealer
  27378.   End
  27379.   IsTrainable = No
  27380.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  27381.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  27382.   CommandSet      = GLAVehicleRadarVanCommandSet
  27383.  
  27384.   ; *** AUDIO Parameters ***
  27385.   VoiceSelect = RadarVanVoiceSelect
  27386.   VoiceMove = RadarVanVoiceMove
  27387.   VoiceAttack = RadarVanVoiceMove
  27388.   SoundMoveStart = RadarVanMoveStart
  27389.   SoundMoveStartDamaged = RadarVanMoveStart
  27390.  
  27391.   UnitSpecificSounds
  27392.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  27393.     VoiceCreate     = RadarVanVoiceCreate
  27394.     TurretMoveStart = NoSound
  27395.     TurretMoveLoop = TurretMoveLoop  
  27396.   ; Required for the W3DTruckDraw module
  27397.     TruckLandingSound = NoSound ;RocketBuggyLand
  27398.     TruckPowerslideSound = NoSound ;RocketBuggyPowerslide
  27399.     VoiceCrush      = RadarVanVoiceCrush
  27400.     VoiceEnter = RadarVanVoiceMove
  27401.   End
  27402.  
  27403.   ; *** ENGINEERING Parameters ***
  27404.   RadarPriority = UNIT
  27405.   KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE IGNORES_SELECT_ALL
  27406.  
  27407.   Body = ActiveBody ModuleTag_02
  27408.     MaxHealth       = 200
  27409.     InitialHealth   = 200
  27410.   End
  27411.  
  27412.   ExperienceValue     = 20 20 20 20  ; Experience point value at each level
  27413.  
  27414.   Behavior = GrantUpgradeCreate ModuleTag_03
  27415.     UpgradeToGrant     = Upgrade_GLARadar
  27416.   End
  27417.   Behavior        = RadarUpgrade ModuleTag_05
  27418.     TriggeredBy   = Upgrade_GLARadar
  27419.     DisableProof  = Yes ; Won't be disabled by power low
  27420.   End
  27421.  
  27422.   Behavior           = OCLSpecialPower ModuleTag_06
  27423.     SpecialPowerTemplate = SpecialPowerRadarVanScan
  27424.     OCL                  = SUPERWEAPON_RadarVanScan
  27425.     CreateLocation       = CREATE_AT_LOCATION
  27426.     StartsPaused         = Yes ; Unpaused by upgrade module
  27427.   End
  27428.  
  27429.   Behavior = UnpauseSpecialPowerUpgrade ModuleTag_07
  27430.     SpecialPowerTemplate = SpecialPowerRadarVanScan
  27431.     TriggeredBy = Upgrade_GLARadarVanScan
  27432.   End
  27433.  
  27434.   Behavior = AutoHealBehavior ModuleTag_08
  27435.     HealingAmount = 2
  27436.     HealingDelay = 1000 ; msec
  27437.     TriggeredBy = Upgrade_GLAJunkRepair
  27438.   End
  27439.  
  27440.   Behavior = AIUpdateInterface ModuleTag_09
  27441.     Turret
  27442.       TurretTurnRate = 100
  27443.       ControlledWeaponSlots = PRIMARY
  27444.     End
  27445.   End
  27446.   Locomotor = SET_NORMAL RadarVanLocomotor
  27447.  
  27448.   Behavior = PhysicsBehavior ModuleTag_10
  27449.     Mass = 50.0
  27450.   End
  27451.  
  27452. ; The default explosion
  27453.   Behavior = SlowDeathBehavior  ModuleTag_11
  27454.     DeathTypes = ALL -CRUSHED -SPLATTED
  27455.     ProbabilityModifier = 5
  27456.     ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
  27457.     DestructionDelay = 0
  27458.     DestructionDelayVariance = 200
  27459.     FX = FINAL FX_BuggyNewDeathExplosion
  27460.     OCL = FINAL OCL_RadarVanDeathEffect
  27461.   End
  27462.  
  27463.  
  27464.   Behavior = FlammableUpdate ModuleTag_13
  27465.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  27466.     AflameDamageAmount = 3       ; taking this much damage...
  27467.     AflameDamageDelay = 500       ; this often.
  27468.   End
  27469.  
  27470.   Behavior = DestroyDie ModuleTag_14
  27471.     DeathTypes = NONE +CRUSHED +SPLATTED
  27472.   End
  27473.   Behavior = CreateCrateDie ModuleTag_15
  27474.     CrateData = SalvageCrateData
  27475.     ;CrateData = EliteTankCrateData
  27476.     ;CrateData = HeroicTankCrateData
  27477.   End
  27478.  
  27479.   Behavior = StealthDetectorUpdate ModuleTag_16
  27480.     DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
  27481.     ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
  27482.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  27483.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  27484.   End
  27485.  
  27486.   ; A crushing defeat
  27487.   Behavior = FXListDie ModuleTag_17
  27488.     DeathTypes = NONE +CRUSHED +SPLATTED
  27489.     DeathFX = FX_CarCrush
  27490.   End
  27491.   Behavior = CreateObjectDie ModuleTag_18
  27492.     DeathTypes = NONE +CRUSHED +SPLATTED
  27493.     CreationList = OCL_CrusaderTank_CrushEffect
  27494.   End
  27495.  
  27496.   Behavior                 = TransitionDamageFX ModuleTag_19
  27497.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  27498.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_CrusaderDamageTransition
  27499.   End
  27500.   
  27501.   Geometry = BOX
  27502.   GeometryMajorRadius = 16.0
  27503.   GeometryMinorRadius = 6.0
  27504.   GeometryHeight = 12.5     
  27505.   GeometryIsSmall = Yes    
  27506.   Shadow = SHADOW_VOLUME
  27507.   ShadowSizeX = 45  ;minimum elevation angle above horizon. Used to limit shadow length
  27508.  
  27509. End
  27510.  
  27511.  
  27512. ;------------------------------------------------------------------------------
  27513. Object AmericaVehicleBattleShip
  27514.  
  27515.   ; *** ART Parameters ***
  27516.   Draw                   = W3DTankDraw ModuleTag_01
  27517.     OkToChangeModelColor = Yes
  27518.     InitialRecoilSpeed   = 120
  27519.     MaxRecoilDistance    = 8
  27520.     RecoilSettleSpeed    = 6
  27521.     ConditionState       = NONE
  27522.       Model              = AVBattleSh
  27523.       Animation          = AVBattleSh.AVBattleSh
  27524.       AnimationMode      = LOOP
  27525.       Turret             = Turret01
  27526.       TurretPitch        = TurretEL01
  27527.       TurretArtAngle     = 180  ; this turret has art pointed 180 degrees backward
  27528.       AltTurret          = Turret02
  27529.       AltTurretPitch     = TurretEL02
  27530.       WeaponFireFXBone   = PRIMARY Tur1Muzzle
  27531.       WeaponRecoilBone   = PRIMARY Tur1Barrel
  27532.       WeaponFireFXBone   = SECONDARY Tur2Muzzle
  27533.       WeaponRecoilBone   = SECONDARY Tur2Barrel
  27534. ;      ParticleSysBone   = TreadFX01 WaveSpray01
  27535. ;      ParticleSysBone   = TreadFX02 WaveSpray01
  27536. ;      ParticleSysBone   = TreadFX03 WaveSpray01
  27537. ;      ParticleSysBone   = TreadFX04 WaveSpray01
  27538. ;      ParticleSysBone   = TreadFX05 WaveSpray01
  27539. ;      ParticleSysBone   = TreadFX06 WaveSpray01
  27540. ;      ParticleSysBone   = TreadFX07 WaveSpray01
  27541. ;      ParticleSysBone   = TreadFX08 WaveSpray01
  27542. ;      ParticleSysBone   = TreadFX09 WaveSpray01
  27543. ;      ParticleSysBone   = TreadFX10 WaveSpray01
  27544. ;      ParticleSysBone   = TreadFX11 WaveSpray01
  27545. ;      ParticleSysBone   = TreadFX12 WaveSpray01
  27546.     End
  27547.   End
  27548.  
  27549.   ; ***DESIGN parameters ***
  27550.   DisplayName            = OBJECT:Battleship
  27551.   Side                   = America
  27552.   EditorSorting          = VEHICLE
  27553.   TransportSlotCount     = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  27554.   WeaponSet
  27555.     Conditions           = None 
  27556.     Weapon               = PRIMARY BattleshipBogusGun
  27557.     Weapon               = SECONDARY BattleshipBogusGun
  27558.   End
  27559.   ArmorSet
  27560.     Conditions           = None
  27561.     Armor                = InvulnerableArmor
  27562.   End
  27563.   VisionRange            = 300
  27564.   ShroudClearingRange = 300
  27565.  
  27566.   ; *** AUDIO Parameters ***
  27567.   SoundAmbient           = BattleshipAmbientLoop
  27568.  
  27569.   UnitSpecificSounds
  27570.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  27571.     TurretMoveLoop       = TurretMoveLoop
  27572.   End
  27573.  
  27574.   ; *** ENGINEERING Parameters ***
  27575.   RadarPriority          = UNIT
  27576.   KindOf                 = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE SELECTABLE
  27577.  
  27578.   Body = ActiveBody ModuleTag_02
  27579.     MaxHealth            = 99999.0
  27580.     InitialHealth        = 99999.0
  27581.   End
  27582.   Behavior = AIUpdateInterface ModuleTag_03
  27583.     Turret
  27584.       TurretTurnRate     = 80
  27585.       TurretPitchRate    = 80
  27586.       FirePitch          = 12            ; Instead of aiming pitchwise at the target, it will aim here
  27587.       AllowsPitch        = Yes
  27588.       RecenterTime       = 5000       ; how long to wait during idle before recentering
  27589.       ControlledWeaponSlots = PRIMARY
  27590.       NaturalTurretAngle = 180  ; this turret points backwards normally
  27591.     End
  27592.     AltTurret
  27593.       TurretTurnRate     = 80
  27594.       TurretPitchRate    = 80
  27595.       FirePitch          = 15          ; Instead of aiming pitchwise at the target, it will aim here
  27596.       AllowsPitch        = Yes
  27597.       RecenterTime       = 5000     ; how long to wait during idle before recentering
  27598.       ControlledWeaponSlots = SECONDARY
  27599.     End
  27600.   End
  27601.   Locomotor = SET_NORMAL None
  27602.  
  27603.   Behavior               = PhysicsBehavior ModuleTag_04
  27604.     Mass                 = 5000.0
  27605.   End
  27606.  
  27607.   Geometry               = BOX
  27608.   GeometryMajorRadius    = 200.0
  27609.   GeometryMinorRadius    = 20.0
  27610.   GeometryHeight         = 40     
  27611.   GeometryIsSmall        = No 
  27612.   Shadow                 = SHADOW_VOLUME   
  27613.  
  27614. End
  27615.  
  27616. ;------------------------------------------------------------------------------
  27617. ; an invisible object that exists solely for the Battleship to target.
  27618. Object AmericaBattleshipBogusTarget
  27619.  
  27620.   ; *** ART Parameters ***
  27621.   Draw = W3DModelDraw ModuleTag_01
  27622.     DefaultConditionState
  27623.       Model = None
  27624.     End    
  27625.   End
  27626.  
  27627.   ; ***DESIGN parameters ***
  27628.   EditorSorting   = STRUCTURE
  27629.   Side            = America
  27630.   ArmorSet
  27631.     Conditions      = None
  27632.     Armor           = InvulnerableArmor
  27633.     DamageFX        = None
  27634.   End
  27635.  
  27636.   ; *** ENGINEERING Parameters ***  
  27637.   RadarPriority       = NOT_ON_RADAR
  27638.   KindOf              = IMMOBILE
  27639.  
  27640.   Body                = ImmortalBody ModuleTag_02
  27641.     MaxHealth         = 99999.0
  27642.     InitialHealth     = 99999.0
  27643.   End
  27644.  
  27645.   Behavior = FireWeaponWhenDamagedBehavior ModuleTag_03
  27646.     StartsActive = Yes
  27647.     ReactionWeaponPristine = BattleshipTargetDamagedWeapon
  27648.     ReactionWeaponDamaged = BattleshipTargetDamagedWeapon
  27649.     ReactionWeaponReallyDamaged = BattleshipTargetDamagedWeapon
  27650.     DamageTypes = ALL
  27651. ;
  27652. ; want this object to "explode" (ie, fire BattleshipTargetDamagedWeapon)
  27653. ; when targeted by the gun? change DamageAmount to zero. (normally the gun
  27654. ; does a nonzero but tiny damage, due to the InvulnerableArmor we wear, so
  27655. ; this weapon isn't fired... to trigger it, you must do damage under Script
  27656. ; control, which ignores our armor.)
  27657. ;
  27658.     DamageAmount = 1  ; if damage is >= this value, fire the weapon
  27659.   End
  27660.  
  27661.   Geometry            = SPHERE
  27662.   GeometryMajorRadius = 10.0
  27663.   GeometryIsSmall     = Yes
  27664.  
  27665. End
  27666.  
  27667.  
  27668. ;------------------------------------------------------------------------------
  27669. ; **data here is a copy and paste of AmericaVehicleBattleDrone**
  27670. Object AmericaVehicleRepairDrone
  27671.  
  27672.   ; *** ART Parameters ***
  27673.   Draw = W3DTankDraw ModuleTag_01
  27674.     ConditionState = NONE
  27675.       Model = AVRepairDr
  27676.     End
  27677.     TrackMarks = EXTireTrack.tga
  27678.     OkToChangeModelColor = Yes
  27679.   End
  27680.  
  27681.   ; ***DESIGN parameters ***
  27682.   DisplayName      = OBJECT:RepairDrone
  27683.   Side = America
  27684.   EditorSorting   = VEHICLE
  27685.  
  27686.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  27687.   WeaponSet
  27688.     Conditions = None 
  27689.     Weapon = PRIMARY CrusaderTankGun
  27690.   End
  27691.   ArmorSet
  27692.     Conditions      = None
  27693.     Armor           = TankArmor
  27694.     DamageFX        = TankDamageFX
  27695.   End
  27696.   BuildCost       = 700
  27697.   BuildTime       = 5.0          ;in seconds    
  27698.   VisionRange     = 150
  27699.   ShroudClearingRange = 150
  27700.   Prerequisites
  27701.     Object = AmericaWarFactory
  27702.   End
  27703.   ExperienceValue    = 50 100 150 400 ;Experience point value at each level
  27704.   ExperienceRequired = 0 150 450 900 ;Experience points needed to gain each level
  27705.   IsTrainable     = Yes  ;Can gain experience
  27706.   
  27707.   ; *** AUDIO Parameters ***
  27708.   VoiceSelect = NoSound
  27709.   VoiceMove = NoSound
  27710.   VoiceAttack = NoSound
  27711.   SoundMoveStart = NoSound
  27712.  
  27713.   UnitSpecificSounds
  27714.   ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  27715.     TurretMoveStart = NoSound
  27716.     TurretMoveLoop = NoSound
  27717.   End
  27718.  
  27719.  
  27720.   ; *** ENGINEERING Parameters ***
  27721.   RadarPriority = UNIT
  27722.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE DRONE
  27723.   
  27724.   Body = ActiveBody ModuleTag_02
  27725.     MaxHealth       = 100.0
  27726.     InitialHealth   = 100.0
  27727.   End
  27728.  
  27729.   Behavior = AIUpdateInterface ModuleTag_03
  27730.     Turret
  27731.       TurretTurnRate = 60   // turn rate, in degrees per sec
  27732.       ControlledWeaponSlots = PRIMARY
  27733.     End
  27734.     AutoAcquireEnemiesWhenIdle = Yes
  27735.   End
  27736.   Locomotor = SET_NORMAL BasicTankLocomotor
  27737.  
  27738.   Behavior = PhysicsBehavior ModuleTag_04
  27739.     Mass = 50.0
  27740.   End
  27741.   Behavior = SlowDeathBehavior ModuleTag_05
  27742.     DestructionDelay = 500
  27743.     FX = FINAL FX_GenericTankDeathExplosion
  27744.   End
  27745.  
  27746.   Behavior = MaxHealthUpgrade ModuleTag_06
  27747.     TriggeredBy   = Upgrade_AmericaDroneArmor
  27748.     AddMaxHealth  = 50.0
  27749.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  27750.   End
  27751.  
  27752.   Behavior = FXListDie ModuleTag_07
  27753.     DeathFX = FX_GenericTankDeathEffect
  27754.   End
  27755.   Behavior = CreateObjectDie ModuleTag_08
  27756.     CreationList = OCL_GenericTankDeathEffect
  27757.   End
  27758.   Behavior = CreateCrateDie ModuleTag_09
  27759.     CrateData = SalvageCrateData
  27760.    ;CrateData = EliteTankCrateData
  27761.    ;CrateData = HeroicTankCrateData
  27762.   End
  27763.  
  27764.   Behavior = FlammableUpdate ModuleTag_21
  27765.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  27766.     AflameDamageAmount = 3       ; taking this much damage...
  27767.     AflameDamageDelay = 500       ; this often.
  27768.   End
  27769.  
  27770.   Geometry = BOX
  27771.   GeometryMajorRadius = 11.0
  27772.   GeometryMinorRadius = 7.0
  27773.   GeometryHeight = 10.0     
  27774.   GeometryIsSmall = Yes 
  27775.   Shadow = SHADOW_VOLUME
  27776.  
  27777. End
  27778.  
  27779. ;------------------------------------------------------------------------------
  27780. Object AmericaJetCargoPlane
  27781.  
  27782.   ; *** ART Parameters ***
  27783.   Draw = W3DModelDraw ModuleTag_01
  27784.     DefaultConditionState
  27785.       Model            = AVCargoPln
  27786.       Animation       = AVCargoPln.AVCargoPln
  27787.       AnimationMode   = LOOP
  27788.       ParticleSysBone = Propeller01 JetBlackTrailThin
  27789.       ParticleSysBone = Propeller02 JetBlackTrailThin
  27790.       ParticleSysBone = Propeller03 JetBlackTrailThin
  27791.       ParticleSysBone = Propeller04 JetBlackTrailThin
  27792.       ParticleSysBone = WingTip01 JetContrailThin
  27793.       ParticleSysBone = WingTip02 JetContrailThin
  27794.     End
  27795.  
  27796.     ConditionState = DAMAGED
  27797.       Model           = AVCargoPln_D
  27798.       Animation       = AVCargoPln_D.AVCargoPln_D
  27799.       AnimationMode   = MANUAL
  27800.       Flags           = START_FRAME_FIRST
  27801.       ParticleSysBone = Smoke01 JetFireLarge
  27802.       ParticleSysBone = Smoke02 JetFireLarge
  27803.       ParticleSysBone = Propeller03 JetBlackTrailThin
  27804.       ParticleSysBone = Propeller04 JetBlackTrailThin
  27805.       ParticleSysBone = Smoke01 JetSmokeLarge
  27806.       ParticleSysBone = Smoke02 JetSmokeLarge
  27807.     End
  27808.  
  27809.     ConditionState = REALLYDAMAGED
  27810.       Model           = AVCargoPln_D
  27811.       Animation       = AVCargoPln_D.AVCargoPln_D
  27812.       AnimationMode   = MANUAL
  27813.       Flags           = START_FRAME_FIRST
  27814.       ParticleSysBone = Smoke01 JetFireLarge
  27815.       ParticleSysBone = Smoke02 JetFireLarge
  27816.       ParticleSysBone = Smoke03 JetFireLarge
  27817.       ParticleSysBone = Smoke05 JetFireLarge
  27818.       ParticleSysBone = Propeller03 JetBlackTrailThin
  27819.       ParticleSysBone = Propeller04 JetBlackTrailThin
  27820.       ParticleSysBone = Smoke01 JetSmokeLarge
  27821.       ParticleSysBone = Smoke02 JetSmokeLarge
  27822.       ParticleSysBone = Smoke03 JetSmokeLarge
  27823.       ParticleSysBone = Smoke05 JetSmokeLarge
  27824.     End
  27825.  
  27826.     ConditionState = RUBBLE
  27827.       Model           = AVCargoPln_D1
  27828.       Animation       = AVCargoPln_D.AVCargoPln_D
  27829.       AnimationMode   = MANUAL
  27830.       Flags           = START_FRAME_FIRST
  27831.       ParticleSysBone = Smoke01 JetFireLarge
  27832.       ParticleSysBone = Smoke06 JetFireLarge
  27833.       ParticleSysBone = Smoke03 JetFireLarge
  27834.       ParticleSysBone = Smoke05 JetFireLarge
  27835.       ParticleSysBone = Smoke01 JetSmokeLarge
  27836.       ParticleSysBone = Smoke06 JetSmokeLarge
  27837.       ParticleSysBone = Smoke03 JetSmokeLarge
  27838.       ParticleSysBone = Smoke05 JetSmokeLarge
  27839.     End
  27840.     
  27841.     OkToChangeModelColor = Yes
  27842.   End
  27843.  
  27844.   Draw = W3DModelDraw ModuleTag_02
  27845.     DefaultConditionState
  27846.       Model           = AVCargoPln_A2
  27847.       Animation       = AVCargoPln_A2.AVCargoPln_A2
  27848.       AnimationMode   = MANUAL
  27849.       Flags           = START_FRAME_FIRST
  27850.     End
  27851.     ConditionState = DOOR_1_OPENING
  27852.       Model           = AVCargoPln_A2
  27853.       Animation       = AVCargoPln_A2.AVCargoPln_A2
  27854.       AnimationMode   = ONCE
  27855.       Flags           = START_FRAME_FIRST
  27856.     End
  27857.     ConditionState = DOOR_1_CLOSING
  27858.       Model           = AVCargoPln_A2
  27859.       Animation       = AVCargoPln_A2.AVCargoPln_A2
  27860.       AnimationMode   = ONCE_BACKWARDS
  27861.       Flags           = START_FRAME_LAST
  27862.     End
  27863.   End
  27864.   
  27865.   ; ***DESIGN parameters ***
  27866.   DisplayName         = OBJECT:CargoPlane
  27867.   EditorSorting       = VEHICLE
  27868.   Side                = America
  27869.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  27870.   VisionRange         = 0.0 
  27871.   ArmorSet
  27872.     Conditions      = None
  27873.     Armor           = AirplaneArmor
  27874.     DamageFX        = TankDamageFX
  27875.   End
  27876.   CommandSet        = Command_ScriptedTransportDrops
  27877.  
  27878.   ; *** AUDIO Parameters ***
  27879.   SoundAmbient = C130AmbientLoop
  27880.   SoundAmbientRubble    = NoSound
  27881.  
  27882.   ; *** ENGINEERING Parameters ***
  27883.   RadarPriority = UNIT
  27884.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT FORCEATTACKABLE IGNORED_IN_GUI
  27885.   Body = ActiveBody ModuleTag_03
  27886.     MaxHealth       = 1000.0
  27887.     InitialHealth   = 1000.0
  27888.   End
  27889.  
  27890.   ExperienceValue     = 40 40 40 40  ; Experience point value at each level
  27891.  
  27892.   Behavior = PhysicsBehavior ModuleTag_04
  27893.     Mass = 500.0
  27894.   End
  27895.  
  27896.   ;SCRIPTED SUPPORT: These special powers are triggered directly 
  27897.   ;from the transport without creating a transport. This is done 
  27898.   ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
  27899.   ;which also prevents creating the payload transport.
  27900.   Behavior    = OCLSpecialPower ModuleTag_05
  27901.     SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@
  27902.     OCL                  = SUPERWEAPON_DaisyCutter
  27903.     CreateLocation       = USE_OWNER_OBJECT
  27904.   End
  27905.   Behavior    = OCLSpecialPower ModuleTag_06
  27906.     SpecialPowerTemplate = SuperweaponParadropAmerica
  27907.     UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
  27908.     UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
  27909.     OCL                  = SUPERWEAPON_Paradrop1
  27910.     CreateLocation       = USE_OWNER_OBJECT
  27911.   End 
  27912.   Behavior    = OCLSpecialPower ModuleTag_07
  27913.     SpecialPowerTemplate = SuperweaponCarpetBomb
  27914.     OCL                  = SUPERWEAPON_CarpetBomb
  27915.     CreateLocation       = USE_OWNER_OBJECT
  27916.   End 
  27917.   Behavior    = OCLSpecialPower ModuleTag_08
  27918.     SpecialPowerTemplate = SuperweaponCrateDrop
  27919.     OCL                  = SUPERWEAPON_CrateDrop
  27920.     CreateLocation       = USE_OWNER_OBJECT
  27921.   End 
  27922.  
  27923.   Behavior = DeliverPayloadAIUpdate ModuleTag_09
  27924.     DoorDelay         = 500
  27925.     MaxAttempts       = 4
  27926.     DropOffset        = X:0 Y:0 Z:-10
  27927.     DropDelay         = 300 ; time in between each item dropped (if more than one)
  27928.     PutInContainer    = AmericaParachute
  27929.     DeliveryDistance  = 150
  27930.   End
  27931.   Locomotor = SET_NORMAL B52Locomotor
  27932.  
  27933.   Behavior = TransportContain ModuleTag_10
  27934.     Slots = 100                     ; hey, it's a BIG transport
  27935.     ScatterNearbyOnExit = No
  27936.     OrientLikeContainerOnExit = Yes
  27937.     KeepContainerVelocityOnExit = Yes
  27938.     ExitPitchRate = 30
  27939.     ExitBone = WeaponA01
  27940.     AllowInsideKindOf  = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE 
  27941.     ;gs I added parachutable as a catch all to prevent making new kindofs (like CRATE)
  27942.     DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
  27943.     NumberOfExitPaths = 0
  27944.     DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
  27945.   End
  27946.     
  27947.   Behavior                          = JetSlowDeathBehavior ModuleTag_11
  27948.     DestructionDelay                = 2000 
  27949.     RollRate                        = 0.0
  27950.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  27951.     PitchRate                       = 0
  27952.     FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  27953.     FXInitialDeath                  = FX_JetBigDeathInitial
  27954.     OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
  27955.     DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
  27956.     OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
  27957.     FXSecondary                     = FX_BigPlaneDeath
  27958. ;   FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  27959. ;   OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
  27960. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  27961.   End
  27962.  
  27963.   ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_12
  27964.   End
  27965.  
  27966.   Behavior = TransitionDamageFX ModuleTag_17
  27967.     DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  27968.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  27969.   End
  27970.  
  27971.  
  27972.   Geometry = Box
  27973.   GeometryIsSmall = No
  27974.   GeometryMajorRadius = 40.0
  27975.   GeometryMinorRadius = 10.0
  27976.   GeometryHeight = 10.0
  27977.   Shadow = SHADOW_VOLUME
  27978.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  27979. End
  27980.  
  27981. ;----------------------------------------------------------
  27982. Object AmericaJetCargoHulk
  27983.   ; *** ART Parameters ***
  27984.   Draw                = W3DModelDraw ModuleTag_01
  27985.     ConditionState    = NONE
  27986.       Model           = AVCargoPln_D1
  27987.     End
  27988.   End
  27989.  
  27990.   ; ***DESIGN parameters ***
  27991.   EditorSorting       = DEBRIS
  27992.  
  27993.   ; *** ENGINEERING Parameters ***
  27994.   KindOf              =  NO_COLLIDE HULK
  27995.  
  27996.   Behavior                  = PhysicsBehavior ModuleTag_03
  27997.     Mass                    = 1.0
  27998.     AllowBouncing           = Yes
  27999.     KillWhenRestingOnGround = No
  28000.   End
  28001.   Behavior = LifetimeUpdate ModuleTag_04
  28002.     MinLifetime = 500   ; min lifetime in msec
  28003.     MaxLifetime = 1500   ; max lifetime in msec
  28004.   End
  28005.  
  28006.   Behavior = InstantDeathBehavior ModuleTag_05
  28007.     DeathTypes = ALL
  28008. ;    FX         = FX_BigPlaneDeath
  28009. ;   OCL        = OCL_AmericaJetCargoHulkDeath
  28010.   End
  28011.  
  28012. End
  28013.  
  28014. ;------------------------------------------------------------------------------
  28015. Object GLAJetCargoPlane
  28016.  
  28017.   ; *** ART Parameters ***
  28018.   Draw = W3DModelDraw ModuleTag_01
  28019.     DefaultConditionState
  28020.       Model           = UVCargoPln
  28021.       Animation       = UVCargoPln.UVCargoPln
  28022.       AnimationMode   = LOOP
  28023.       ParticleSysBone = Engine01 JetBlackTrail
  28024.       ParticleSysBone = Engine02 JetBlackTrail
  28025.       ParticleSysBone = Engine03 JetBlackTrail
  28026.       ParticleSysBone = Engine04 JetBlackTrail      
  28027.     End
  28028.     ConditionState = DAMAGED
  28029.       Model           = UVCargoPln_D
  28030.       Animation       = UVCargoPln_D.UVCargoPln_D
  28031.       AnimationMode   = MANUAL
  28032.       Flags           = START_FRAME_FIRST
  28033.       ParticleSysBone = Smoke01 JetFireLarge
  28034.       ParticleSysBone = Smoke02 JetFireLarge
  28035.       ParticleSysBone = Propeller03 JetBlackTrailThin
  28036.       ParticleSysBone = Propeller04 JetBlackTrailThin
  28037.       ParticleSysBone = Smoke01 JetSmokeLarge
  28038.       ParticleSysBone = Smoke02 JetSmokeLarge
  28039.       ParticleSysBone = Smoke03 JetSmokeLarge
  28040.     End
  28041.     ConditionState = REALLYDAMAGED
  28042.       Model           = UVCargoPln_D
  28043.       Animation       = UVCargoPln_D.UVCargoPln_D
  28044.       AnimationMode   = MANUAL
  28045.       Flags           = START_FRAME_FIRST
  28046.       ParticleSysBone = Smoke01 JetFireLarge
  28047.       ParticleSysBone = Smoke02 JetFireLarge
  28048.       ParticleSysBone = Propeller03 JetBlackTrailThin
  28049.       ParticleSysBone = Propeller04 JetBlackTrailThin
  28050.       ParticleSysBone = Smoke01 JetSmokeLarge
  28051.       ParticleSysBone = Smoke02 JetSmokeLarge
  28052.       ParticleSysBone = Smoke03 JetSmokeLarge
  28053.     End
  28054.     ConditionState = RUBBLE
  28055.       Model           = UVCargoPln_D1
  28056.       ParticleSysBone = Smoke01 JetFireLarge
  28057.       ParticleSysBone = Smoke02 JetFireLarge
  28058.       ParticleSysBone = Smoke03 JetFireLarge
  28059.       ParticleSysBone = Smoke04 JetFireLarge
  28060.       ParticleSysBone = Smoke01 JetSmokeLarge
  28061.       ParticleSysBone = Smoke02 JetSmokeLarge
  28062.       ParticleSysBone = Smoke03 JetSmokeLarge
  28063.       ParticleSysBone = Smoke04 JetSmokeLarge
  28064.     End
  28065.     
  28066.     OkToChangeModelColor = Yes
  28067.   End
  28068.  
  28069.   Draw = W3DModelDraw ModuleTag_02
  28070.     DefaultConditionState
  28071.       Model           = UVCargoPln_A2
  28072.       Animation       = UVCargoPln_A2.UVCargoPln_A2
  28073.       AnimationMode   = MANUAL
  28074.       Flags           = START_FRAME_FIRST
  28075.     End
  28076.     ConditionState = DOOR_1_OPENING
  28077.       Model           = UVCargoPln_A2
  28078.       Animation       = UVCargoPln_A2.UVCargoPln_A2
  28079.       AnimationMode   = ONCE
  28080.       Flags           = START_FRAME_FIRST
  28081.     End
  28082.     ConditionState = DOOR_1_CLOSING
  28083.       Model           = UVCargoPln_A2
  28084.       Animation       = UVCargoPln_A2.UVCargoPln_A2
  28085.       AnimationMode   = ONCE_BACKWARDS
  28086.       Flags           = START_FRAME_LAST
  28087.     End
  28088.   End
  28089.   
  28090.   ; ***DESIGN parameters ***
  28091.   DisplayName         = OBJECT:CargoPlane
  28092.   EditorSorting       = VEHICLE
  28093.   Side                = GLA
  28094.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  28095.   VisionRange         = 0.0 
  28096.   ArmorSet
  28097.     Conditions      = None
  28098.     Armor           = AirplaneArmor
  28099.     DamageFX        = None
  28100.   End
  28101.   CommandSet          = Command_ScriptedTransportDrops
  28102.  
  28103.   ; *** AUDIO Parameters ***
  28104.   SoundAmbient = C130AmbientLoop
  28105.   SoundAmbientRubble    = NoSound
  28106.  
  28107.   ; *** ENGINEERING Parameters ***
  28108.   RadarPriority = UNIT
  28109.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT FORCEATTACKABLE IGNORED_IN_GUI
  28110.   Body = ActiveBody ModuleTag_03
  28111.     MaxHealth       = 1000.0
  28112.     InitialHealth   = 1000.0
  28113.   End
  28114.  
  28115.   ExperienceValue     = 40 40 40 40  ; Experience point value at each level
  28116.  
  28117.   Behavior = PhysicsBehavior ModuleTag_04
  28118.     Mass = 500.0
  28119.   End
  28120.  
  28121.   Behavior = DeliverPayloadAIUpdate ModuleTag_05
  28122.     DoorDelay = 500
  28123.     MaxAttempts = 4
  28124.     DropOffset = X:0 Y:0 Z:-10
  28125.     DropDelay = 300 ;500 ; time in between each item dropped (if more than one)
  28126.     PutInContainer = AmericaParachute
  28127.     DeliveryDistance = 150
  28128.   End
  28129.   Locomotor = SET_NORMAL B52Locomotor
  28130.  
  28131.   Behavior = TransportContain ModuleTag_06
  28132.     Slots = 100                     ; hey, it's a BIG transport
  28133.     ScatterNearbyOnExit = No
  28134.     OrientLikeContainerOnExit = Yes
  28135.     KeepContainerVelocityOnExit = Yes
  28136.     ExitPitchRate = 30
  28137.     ExitBone = WeaponA01
  28138.     AllowInsideKindOf  = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE FORCEATTACKABLE
  28139.     DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
  28140.     NumberOfExitPaths = 0
  28141.     DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
  28142.   End
  28143.  
  28144.   ;SCRIPTED SUPPORT: These special powers are triggered directly 
  28145.   ;from the transport without creating a transport. This is done 
  28146.   ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
  28147.   ;which also prevents creating the payload transport.
  28148.   Behavior    = OCLSpecialPower ModuleTag_07
  28149.     SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@
  28150.     OCL                  = SUPERWEAPON_DaisyCutter
  28151.     CreateLocation       = USE_OWNER_OBJECT
  28152.   End
  28153.   Behavior    = OCLSpecialPower ModuleTag_08
  28154.     SpecialPowerTemplate = SuperweaponParadropAmerica
  28155.     UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
  28156.     UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
  28157.     OCL                  = SUPERWEAPON_Paradrop1
  28158.     CreateLocation       = USE_OWNER_OBJECT
  28159.   End 
  28160.   Behavior    = OCLSpecialPower ModuleTag_09
  28161.     SpecialPowerTemplate = SuperweaponCarpetBomb
  28162.     OCL                  = SUPERWEAPON_CarpetBomb
  28163.     CreateLocation       = USE_OWNER_OBJECT
  28164.   End 
  28165.  
  28166.   Behavior                          = JetSlowDeathBehavior ModuleTag_10
  28167.     DestructionDelay                = 2000 
  28168.     RollRate                        = 0.0
  28169.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  28170.     PitchRate                       = 0
  28171.     FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  28172.     FXInitialDeath                  = FX_JetBigDeathInitial
  28173.     OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
  28174.     DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
  28175.     OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
  28176.     FXSecondary                     = FX_BigPlaneDeath
  28177.   End
  28178.  
  28179.   ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_11
  28180.   End
  28181.  
  28182.   Behavior = TransitionDamageFX ModuleTag_12
  28183.     DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  28184.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  28185.   End
  28186.  
  28187.   Geometry = Box
  28188.   GeometryIsSmall = No
  28189.   GeometryMajorRadius = 40.0
  28190.   GeometryMinorRadius = 10.0
  28191.   GeometryHeight = 10.0
  28192.   Shadow = SHADOW_VOLUME
  28193.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  28194.  
  28195. End
  28196.  
  28197. ;------------------------------------------------------------------------------
  28198. Object ChinaJetCargoPlane
  28199.  
  28200.   ; *** ART Parameters ***
  28201.   Draw = W3DModelDraw ModuleTag_01
  28202.     DefaultConditionState
  28203.       Model           = NVCargoPln
  28204.       Animation       = NVCargoPln.NVCargoPln
  28205.       AnimationMode   = LOOP
  28206.       ParticleSysBone = Propeller01 JetBlackTrailThin
  28207.       ParticleSysBone = Propeller02 JetBlackTrailThin
  28208.       ParticleSysBone = Propeller03 JetBlackTrailThin
  28209.       ParticleSysBone = Propeller04 JetBlackTrailThin
  28210.       ParticleSysBone = WingTip01 JetContrailThin
  28211.       ParticleSysBone = WingTip02 JetContrailThin
  28212.     End
  28213.     ConditionState = DAMAGED
  28214.       Model           = NVCargoPln_D
  28215.       Animation       = NVCargoPln_D.NVCargoPln_D
  28216.       AnimationMode   = MANUAL
  28217.       Flags           = START_FRAME_FIRST
  28218.       ParticleSysBone = Smoke01 JetFireLarge
  28219.       ParticleSysBone = Smoke03 JetFireLarge
  28220.       ParticleSysBone = Propeller01 JetBlackTrailThin
  28221.       ParticleSysBone = Propeller02 JetBlackTrailThin
  28222.       ParticleSysBone = Propeller03 JetBlackTrailThin
  28223.       ParticleSysBone = Propeller04 JetBlackTrailThin
  28224.       ParticleSysBone = Smoke01 JetSmokeLarge
  28225.       ParticleSysBone = Smoke03 JetSmokeLarge
  28226.       ParticleSysBone = WingTip01 JetContrailThin
  28227.       ParticleSysBone = WingTip02 JetContrailThin
  28228.     End
  28229.     ConditionState = REALLYDAMAGED
  28230.       Model           = NVCargoPln_D
  28231.       Animation       = NVCargoPln_D.NVCargoPln_D
  28232.       AnimationMode   = MANUAL
  28233.       Flags           = START_FRAME_FIRST
  28234.       ParticleSysBone = Smoke01 JetFireLarge
  28235.       ParticleSysBone = Smoke03 JetFireLarge
  28236.       ParticleSysBone = Smoke04 JetFireLarge
  28237.       ParticleSysBone = Propeller03 JetBlackTrailThin
  28238.       ParticleSysBone = Propeller04 JetBlackTrailThin
  28239.       ParticleSysBone = Smoke01 JetSmokeLarge
  28240.       ParticleSysBone = Smoke03 JetSmokeLarge
  28241.       ParticleSysBone = Smoke04 JetSmokeLarge
  28242.       ParticleSysBone = WingTip01 JetContrailThin
  28243.       ParticleSysBone = WingTip02 JetContrailThin
  28244.     End
  28245.     ConditionState = RUBBLE
  28246.       Model           = NVCargoPln_D1
  28247.       ParticleSysBone = Smoke01 JetFireLarge
  28248.       ParticleSysBone = Smoke06 JetFireLarge
  28249.       ParticleSysBone = Smoke03 JetFireLarge
  28250.       ParticleSysBone = Smoke04 JetFireLarge
  28251.       ParticleSysBone = Smoke01 JetSmokeLarge
  28252.       ParticleSysBone = Smoke06 JetSmokeLarge
  28253.       ParticleSysBone = Smoke03 JetSmokeLarge
  28254.       ParticleSysBone = Smoke04 JetSmokeLarge
  28255.     End
  28256.     
  28257.     OkToChangeModelColor = Yes
  28258.   End
  28259.  
  28260.   Draw = W3DModelDraw ModuleTag_02
  28261.     DefaultConditionState
  28262.       Model           = NVCargoPln_A2
  28263.       Animation       = NVCargoPln_A2.NVCargoPln_A2
  28264.       AnimationMode   = MANUAL
  28265.       Flags           = START_FRAME_FIRST
  28266.     End
  28267.     ConditionState = DOOR_1_OPENING
  28268.       Model           = NVCargoPln_A2
  28269.       Animation       = NVCargoPln_A2.NVCargoPln_A2
  28270.       AnimationMode   = ONCE
  28271.       Flags           = START_FRAME_FIRST
  28272.     End
  28273.     ConditionState = DOOR_1_CLOSING
  28274.       Model           = NVCargoPln_A2
  28275.       Animation       = NVCargoPln_A2.NVCargoPln_A2
  28276.       AnimationMode   = ONCE_BACKWARDS
  28277.       Flags           = START_FRAME_LAST
  28278.     End
  28279.   End
  28280.  
  28281.   
  28282.   ; ***DESIGN parameters ***
  28283.   DisplayName         = OBJECT:CargoPlane
  28284.   EditorSorting       = VEHICLE
  28285.   Side                = China
  28286.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  28287.   VisionRange         = 0.0 
  28288.   ArmorSet
  28289.     Conditions      = None
  28290.     Armor           = AirplaneArmor
  28291.     DamageFX        = None
  28292.   End
  28293.   CommandSet        = Command_ScriptedTransportDrops
  28294.  
  28295.   ; *** AUDIO Parameters ***
  28296.   SoundAmbient = C130AmbientLoop
  28297.   SoundAmbientRubble    = NoSound
  28298.  
  28299.   ; *** ENGINEERING Parameters ***
  28300.   RadarPriority = UNIT
  28301.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT FORCEATTACKABLE IGNORED_IN_GUI
  28302.   Body = ActiveBody ModuleTag_03
  28303.     MaxHealth       = 1000.0
  28304.     InitialHealth   = 1000.0
  28305.   End
  28306.  
  28307.   ExperienceValue     = 40 40 40 40  ; Experience point value at each level
  28308.  
  28309.   Behavior = PhysicsBehavior ModuleTag_04
  28310.     Mass = 500.0
  28311.   End
  28312.  
  28313.   Behavior = DeliverPayloadAIUpdate ModuleTag_05
  28314.     DoorDelay = 500
  28315.     MaxAttempts = 4
  28316.     DropOffset = X:0 Y:0 Z:-10
  28317.     DropDelay = 300 ;500 ; time in between each item dropped (if more than one)
  28318.     PutInContainer = AmericaParachute
  28319.     DeliveryDistance = 150
  28320.   End
  28321.   Locomotor = SET_NORMAL B52Locomotor
  28322.  
  28323.   Behavior = TransportContain ModuleTag_06
  28324.     Slots = 100                     ; hey, it's a BIG transport
  28325.     ScatterNearbyOnExit = No
  28326.     OrientLikeContainerOnExit = Yes
  28327.     KeepContainerVelocityOnExit = Yes
  28328.     ExitPitchRate = 30
  28329.     ExitBone = WeaponA01
  28330.     AllowInsideKindOf  = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE
  28331.     DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
  28332.     NumberOfExitPaths = 0
  28333.     DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
  28334.   End
  28335.  
  28336.   ;SCRIPTED SUPPORT: These special powers are triggered directly 
  28337.   ;from the transport without creating a transport. This is done 
  28338.   ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
  28339.   ;which also prevents creating the payload transport.
  28340.   Behavior    = OCLSpecialPower ModuleTag_07
  28341.     SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@
  28342.     OCL                  = SUPERWEAPON_DaisyCutter
  28343.     CreateLocation       = USE_OWNER_OBJECT
  28344.   End
  28345.   Behavior    = OCLSpecialPower ModuleTag_08
  28346.     SpecialPowerTemplate = SuperweaponParadropAmerica
  28347.     UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
  28348.     UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
  28349.     OCL                  = SUPERWEAPON_Paradrop1
  28350.     CreateLocation       = USE_OWNER_OBJECT
  28351.   End 
  28352.   Behavior    = OCLSpecialPower ModuleTag_09
  28353.     SpecialPowerTemplate = SuperweaponCarpetBomb
  28354.     OCL                  = SUPERWEAPON_CarpetBomb
  28355.     CreateLocation       = USE_OWNER_OBJECT
  28356.   End 
  28357.   Behavior    = OCLSpecialPower ModuleTag_10
  28358.     SpecialPowerTemplate = SuperweaponClusterMines
  28359.     OCL                  = SUPERWEAPON_ClusterMines
  28360.     CreateLocation       = USE_OWNER_OBJECT
  28361.   End 
  28362.   Behavior    = OCLSpecialPower ModuleTag_11
  28363.     SpecialPowerTemplate = SuperweaponEMPPulse
  28364.     OCL                  = SUPERWEAPON_EMPPulse
  28365.     CreateLocation       = USE_OWNER_OBJECT
  28366.   End 
  28367.     
  28368.   Behavior                          = JetSlowDeathBehavior ModuleTag_12
  28369.     DestructionDelay                = 2000 
  28370.     RollRate                        = 0.0
  28371.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  28372.     PitchRate                       = 0
  28373.     FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  28374.     FXInitialDeath                  = FX_JetBigDeathInitial
  28375.     OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
  28376.     DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
  28377.     OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
  28378.     FXSecondary                     = FX_BigPlaneDeath
  28379.   End
  28380.  
  28381.   ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_13
  28382.   End
  28383.  
  28384.   Behavior = TransitionDamageFX ModuleTag_14
  28385.     DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  28386.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  28387.   End
  28388.  
  28389.   Geometry = Box
  28390.   GeometryIsSmall = No
  28391.   GeometryMajorRadius = 40.0
  28392.   GeometryMinorRadius = 10.0
  28393.   GeometryHeight = 10.0
  28394.   Shadow = SHADOW_VOLUME
  28395.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  28396.  
  28397. End
  28398.  
  28399. ;------------------------------------------------------------------------------
  28400. ; NOTE NOTE NOTE NOTE
  28401. ; NOTE NOTE NOTE NOTE
  28402. ; NOTE NOTE NOTE NOTE
  28403. ; NOTE NOTE NOTE NOTE
  28404. ;
  28405. ; Although POW Trucks are cut, this one remains, for cinematic purposes only.
  28406. ; (It is used in USA03.) It can't do anything interesting, other than move
  28407. ; and get blown up.
  28408. ; (srj)
  28409. ;
  28410. ;
  28411.  
  28412. Object AmericaVehiclePOWTruck
  28413.   ; *** ART Parameters ***
  28414.   SelectPortrait         = SAPowTruck
  28415.   ButtonImage            = SAPowTruck
  28416.   ;UpgradeCameo1 = NONE
  28417.   ;UpgradeCameo2 = NONE
  28418.   ;UpgradeCameo3 = NONE
  28419.   ;UpgradeCameo4 = NONE
  28420.   ;UpgradeCameo5 = NONE
  28421.   Draw                   = W3DTruckDraw ModuleTag_01
  28422.     OkToChangeModelColor = Yes
  28423.     ConditionState       = NONE
  28424.       Model              = AVPOWTRUCK
  28425.     End
  28426.     ConditionState       = REALLYDAMAGED
  28427.       Model              = AVPOWTRUCK_D
  28428.     End
  28429.     ConditionState       = RUBBLE
  28430.       Model              = AVPOWTruck_D
  28431.     End
  28432.     TrackMarks           = EXTireTrack.tga
  28433.     Dust                 = RocketBuggyDust
  28434.     DirtSpray            = RocketBuggyDirtSpray
  28435.     PowerslideSpray      = RocketBuggyDirtPowerSlide
  28436.     ; These parameters are only used if the model has a separate suspension, 
  28437.     ; and the locomotor has HasSuspension = Yes.
  28438.     LeftFrontTireBone          = Tire01
  28439.     RightFrontTireBone         = Tire02
  28440.     MidLeftRearTireBone        = Tire03
  28441.     MidRightRearTireBone       = Tire05
  28442.     LeftRearTireBone           = Tire04
  28443.     RightRearTireBone          = Tire06
  28444.     TireRotationMultiplier     = 0.2   ; this * speed = rotation.
  28445.     PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
  28446.   End
  28447.   ; ***DESIGN parameters ***
  28448.   DisplayName          = OBJECT:POWTruck
  28449.   Side                 = America
  28450.   EditorSorting        = VEHICLE
  28451.   TransportSlotCount   = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  28452.   ArmorSet
  28453.     Conditions         = None
  28454.     Armor              = TruckArmor
  28455.     DamageFX           = TankDamageFX
  28456.   End
  28457.   ; nope, sorry, can't build it. (srj)
  28458.   Buildable = No
  28459.   ;BuildCost            = 500
  28460.   ;BuildTime            = 10.0          ;in seconds    
  28461.   VisionRange          = 200
  28462.   ShroudClearingRange  = 300
  28463.   ExperienceValue      = 50 50 50 50    ;Experience point value at each level
  28464.   ExperienceRequired   = 0 150 450 900  ;Experience points needed to gain each level
  28465.   IsTrainable          = Yes             ;Can gain experience
  28466.   CrusherLevel         = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  28467.   CrushableLevel       = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  28468.   
  28469.   ; nope, sorry, can't control it. (srj)
  28470.   ;CommandSet           = VehiclePOWTruckCommandSet
  28471.  
  28472.   ; *** AUDIO Parameters ***
  28473.   VoiceSelect = POWTruckUSAVoiceSelect
  28474.   VoiceMove = POWTruckUSAVoiceMove
  28475.   VoiceGuard = POWTruckUSAVoiceMove
  28476.   SoundEnter = POWTruckEnter
  28477.   SoundExit = POWTruckExit
  28478.   UnitSpecificSounds
  28479.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  28480.     VoiceCreate          = POWTruckUSAVoiceCreate
  28481.     TurretMoveLoop       = TurretMoveLoop
  28482.     SoundMoveStart       = POWTruckUSAMoveStart
  28483.     SoundMoveStartDamaged = POWTruckUSAMoveStart
  28484.     SoundEject           = PilotSoundEject
  28485.     VoiceEject           = PilotVoiceEject
  28486.     VoiceCrush           = POWTruckUSAVoiceCrush
  28487.     ; Required for the W3DTruckDraw module
  28488.     TruckLandingSound    = RocketBuggyLand
  28489.     TruckPowerslideSound = POWTruckUSAMoveStart
  28490.     VoiceEnter           = POWTruckUSAVoiceMove
  28491.   End
  28492.   ; *** ENGINEERING Parameters ***
  28493.   RadarPriority          = UNIT
  28494.   KindOf                 = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE TRANSPORT SCORE
  28495.   Body                   = ActiveBody ModuleTag_02
  28496.     MaxHealth            = 500.0
  28497.     InitialHealth        = 500.0
  28498.   End
  28499.   ; nope, sorry, can't do interesting things like this. (srj)
  28500.   ;Behavior               = POWTruckBehavior ModuleTag_03
  28501.   ;  ContainMax           = 10
  28502.   ;  EnterSound           = EnterPOWTruck
  28503.   ;  ExitSound            = ExitPOWTruck
  28504.   ;End
  28505.   ; nope, sorry, can't do interesting things like this. (srj)
  28506.   ;Behavior = POWTruckAIUpdate ModuleTag_04
  28507.   ;  BoredTime            = 10000  ; in milliseconds
  28508.   ;  AtPrisonDistance     = 160.0 ; This close to a prison is close enough to be doing nothing at
  28509.   ;End
  28510.   ; but we must have an AIUpdate in order for our Locomotor to work.
  28511.   Behavior = AIUpdateInterface ModuleTag_04
  28512.     ; no data
  28513.   End
  28514.   Locomotor              = SET_NORMAL POWTruckLocomotor
  28515.   Behavior               = PhysicsBehavior ModuleTag_05
  28516.     Mass                 = 50.0
  28517.   End
  28518.   Behavior               = SlowDeathBehavior ModuleTag_06
  28519.     DeathTypes           = ALL -CRUSHED -SPLATTED
  28520.     ProbabilityModifier  = 25
  28521.     DestructionDelay     = 1
  28522.     FX                   = FINAL    FX_BattleMasterExplosionOneFinal
  28523.     OCL                  = FINAL    OCL_AmericanPOWTruckDeathEffect
  28524.   End
  28525.   Behavior               = FXListDie ModuleTag_07
  28526.     DeathTypes           = NONE +CRUSHED +SPLATTED
  28527.     DeathFX              = FX_CarCrush
  28528.   End
  28529.   Behavior = TransitionDamageFX ModuleTag_09
  28530.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  28531.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  28532.   End
  28533.   Behavior = ExperienceScalarUpgrade ModuleTag_10
  28534.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  28535.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  28536.   End
  28537.   Behavior = FlammableUpdate ModuleTag_21
  28538.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  28539.     AflameDamageAmount = 3       ; taking this much damage...
  28540.     AflameDamageDelay = 500       ; this often.
  28541.   End
  28542.   Geometry               = BOX
  28543.   GeometryMajorRadius    = 15.0
  28544.   GeometryMinorRadius    = 7.0
  28545.   GeometryHeight         = 13.5     
  28546.   GeometryIsSmall        = Yes 
  28547.   Shadow                 = SHADOW_VOLUME   
  28548. End
  28549.  
  28550. ;------------------------------------------------------------------------------
  28551. ; POW Trucks are cut. sorry. (srj)
  28552. ;Object ChinaVehiclePOWTruck
  28553. ;  ; *** ART Parameters ***
  28554. ;  SelectPortrait         = SNPowTruck
  28555. ;  ;UpgradeCameo1 = NONE
  28556. ;  ;UpgradeCameo2 = NONE
  28557. ;  ;UpgradeCameo3 = NONE
  28558. ;  ;UpgradeCameo4 = NONE
  28559. ;  ;UpgradeCameo5 = NONE
  28560. ;  Draw                   = W3DTruckDraw ModuleTag_01
  28561. ;    OkToChangeModelColor = Yes
  28562. ;    ConditionState       = NONE
  28563. ;      Model              = NVPOWTRCK
  28564. ;    End
  28565. ;    ConditionState       = REALLYDAMAGED
  28566. ;      Model              = NVPOWTRCK_D
  28567. ;    End   
  28568. ;    ConditionState       = RUBBLE
  28569. ;      Model              = NVPOWTRCK_D
  28570. ;    End
  28571. ;    TrackMarks           = EXTireTrack.tga
  28572. ;    Dust                 = RocketBuggyDust
  28573. ;    DirtSpray            = RocketBuggyDirtSpray
  28574. ;    PowerslideSpray      = RocketBuggyDirtPowerSlide
  28575. ;    ; These parameters are only used if the model has a separate suspension, 
  28576. ;    ; and the locomotor has HasSuspension = Yes.
  28577. ;    LeftFrontTireBone          = Tire01
  28578. ;    RightFrontTireBone         = Tire04
  28579. ;    MidLeftRearTireBone        = Tire02
  28580. ;    MidRightRearTireBone       = Tire05
  28581. ;    LeftRearTireBone           = Tire03
  28582. ;    RightRearTireBone          = Tire06
  28583. ;    TireRotationMultiplier     = 0.2   ; this * speed = rotation.
  28584. ;    PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
  28585. ;  End
  28586. ;  ; ***DESIGN parameters ***
  28587. ;  DisplayName          = OBJECT:POWTruck
  28588. ;  Side                 = China
  28589. ;  EditorSorting        = VEHICLE
  28590. ;  TransportSlotCount   = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  28591. ;  ArmorSet
  28592. ;    Conditions         = None
  28593. ;    Armor              = TruckArmor
  28594. ;    DamageFX           = TankDamageFX
  28595. ;  End
  28596. ;  BuildCost            = 500
  28597. ;  BuildTime            = 10.0          ;in seconds    
  28598. ;  VisionRange          = 200
  28599. ;  ShroudClearingRange = 300
  28600. ;  ExperienceValue      = 50 50 50 50    ;Experience point value at each level
  28601. ;  ExperienceRequired   = 0 150 450 900  ;Experience points needed to gain each level
  28602. ;  IsTrainable          = Yes             ;Can gain experience
  28603. ;  CrusherLevel         = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  28604. ;  CrushableLevel       = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  28605. ;  CommandSet           = VehiclePOWTruckCommandSet    
  28606. ;  ; *** AUDIO Parameters ***
  28607. ;  VoiceSelect = POWTruckChinaVoiceSelect
  28608. ;  VoiceMove = POWTruckChinaVoiceMove
  28609. ;  VoiceGuard = POWTruckChinaVoiceMove
  28610. ;  UnitSpecificSounds
  28611. ;    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  28612. ;    ;TurretMoveStart     = NoSound
  28613. ;    VoiceCreate          = POWTruckChinaVoiceCreate
  28614. ;    TurretMoveLoop       = TurretMoveLoop
  28615. ;    SoundMoveStart       = POWTruckUSAMoveStart
  28616. ;    SoundMoveStartDamaged = POWTruckUSAMoveStart
  28617. ;    SoundEject           = PilotSoundEject
  28618. ;    VoiceEject           = PilotVoiceEject
  28619. ;    ; Required for the W3DTruckDraw module
  28620. ;    TruckLandingSound    = RocketBuggyLand
  28621. ;    TruckPowerslideSound = POWTruckUSAMoveStart
  28622. ;    VoiceCrush           = POWTruckChinaVoiceCrush
  28623. ;    VoicePickup          = POWTruckChinaVoicePickup
  28624. ;    VoiceEnter = POWTruckChinaVoiceMove
  28625. ;  End
  28626. ;  ; *** ENGINEERING Parameters ***
  28627. ;  RadarPriority          = UNIT
  28628. ;  KindOf                 = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE TRANSPORT POW_TRUCK SCORE 
  28629. ;  Body                   = ActiveBody ModuleTag_02
  28630. ;    MaxHealth            = 500.0
  28631. ;    InitialHealth        = 500.0
  28632. ;  End
  28633. ;  Behavior               = POWTruckBehavior ModuleTag_03
  28634. ;    ContainMax           = 10
  28635. ;    EnterSound           = EnterPOWTruck
  28636. ;    ExitSound            = ExitPOWTruck
  28637. ;  End
  28638. ;  Behavior = POWTruckAIUpdate ModuleTag_04
  28639. ;    BoredTime            = 10000  ; in milliseconds
  28640. ;    AtPrisonDistance     = 160.0 ; This close to a prison is close enough to be doing nothing at
  28641. ;  End
  28642. ;  Locomotor              = SET_NORMAL POWTruckLocomotor
  28643. ;  Behavior               = PhysicsBehavior ModuleTag_05
  28644. ;    Mass                 = 50.0
  28645. ;  End
  28646. ;  Behavior               = SlowDeathBehavior ModuleTag_06
  28647. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  28648. ;    ProbabilityModifier  = 25
  28649. ;    DestructionDelay     = 1
  28650. ;    FX                   = FINAL    FX_BattleMasterExplosionOneFinal
  28651. ;    OCL                  = FINAL    OCL_ChinaPOWTruckDeathEffect
  28652. ;  End
  28653. ;  Behavior                    = FXListDie ModuleTag_07
  28654. ;    DeathTypes = NONE +CRUSHED +SPLATTED
  28655. ;    DeathFX              = FX_CarCrush
  28656. ;  End
  28657. ;  Behavior                 = TransitionDamageFX ModuleTag_09
  28658. ;    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  28659. ;    ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  28660. ;  End
  28661. ;  Behavior = FlammableUpdate ModuleTag_21
  28662. ;    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  28663. ;    AflameDamageAmount = 3       ; taking this much damage...
  28664. ;    AflameDamageDelay = 500       ; this often.
  28665. ;  End
  28666. ;  Geometry               = BOX
  28667. ;  GeometryMajorRadius    = 15.0
  28668. ;  GeometryMinorRadius    = 7.0
  28669. ;  GeometryHeight         = 13.5     
  28670. ;  GeometryIsSmall        = Yes 
  28671. ;  Shadow                 = SHADOW_VOLUME   
  28672. ;End
  28673.  
  28674. ;------------------------------------------------------------------------------
  28675. ; POW Trucks are cut. sorry. (srj)
  28676. ;Object GLAVehiclePOWTruck
  28677. ;  ; *** ART Parameters ***
  28678. ;  SelectPortrait         = SUPowTruck
  28679. ;  ;UpgradeCameo1 = NONE
  28680. ;  ;UpgradeCameo2 = NONE
  28681. ;  ;UpgradeCameo3 = NONE
  28682. ;  ;UpgradeCameo4 = NONE
  28683. ;  ;UpgradeCameo5 = NONE
  28684. ;  Draw                   = W3DTruckDraw ModuleTag_01
  28685. ;    OkToChangeModelColor = Yes
  28686. ;    ConditionState       = NONE
  28687. ;      Model              = UVPOWTRUCK
  28688. ;    End
  28689. ;    ConditionState       = REALLYDAMAGED
  28690. ;      Model              = UVPOWTRUCK_D
  28691. ;    End
  28692. ;    TrackMarks           = EXTireTrack.tga
  28693. ;    Dust                 = RocketBuggyDust
  28694. ;    DirtSpray            = RocketBuggyDirtSpray
  28695. ;    PowerslideSpray      = RocketBuggyDirtPowerSlide
  28696. ;    ; These parameters are only used if the model has a separate suspension, 
  28697. ;    ; and the locomotor has HasSuspension = Yes.
  28698. ;    LeftFrontTireBone          = Tire01
  28699. ;    RightFrontTireBone         = Tire02
  28700. ;    MidLeftRearTireBone        = Tire03
  28701. ;    MidRightRearTireBone       = Tire04
  28702. ;    LeftRearTireBone           = Tire05
  28703. ;    RightRearTireBone          = Tire06
  28704. ;    TireRotationMultiplier     = 0.2   ; this * speed = rotation.
  28705. ;    PowerslideRotationAddition = 2.5   ; This speed is added to the rotation speed when powersliding.
  28706. ;  End
  28707. ;  ; ***DESIGN parameters ***
  28708. ;  DisplayName          = OBJECT:POWTruck
  28709. ;  Side                 = GLA
  28710. ;  EditorSorting        = VEHICLE
  28711. ;  TransportSlotCount   = 3 ;how many "slots" we take in a transport (0 == not transportable)
  28712. ;  ArmorSet
  28713. ;    Conditions         = None
  28714. ;    Armor              = TruckArmor
  28715. ;    DamageFX           = TankDamageFX
  28716. ;  End
  28717. ;  BuildCost            = 500
  28718. ;  BuildTime            = 10.0          ;in seconds    
  28719. ;  VisionRange          = 200
  28720. ;  ShroudClearingRange  = 300
  28721. ;  ExperienceValue      = 50 50 50 50    ;Experience point value at each level
  28722. ;  ExperienceRequired   = 0 150 450 900  ;Experience points needed to gain each level
  28723. ;  IsTrainable          = Yes             ;Can gain experience
  28724. ;  CrusherLevel         = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  28725. ;  CrushableLevel       = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  28726. ;  CommandSet           = VehiclePOWTruckCommandSet
  28727. ;  ; *** AUDIO Parameters ***
  28728. ;  VoiceSelect = POWTruckGLAVoiceSelect
  28729. ;  VoiceMove = POWTruckGLAVoiceMove
  28730. ;  VoiceGuard = POWTruckGLAVoiceMove
  28731. ;  UnitSpecificSounds
  28732. ;    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  28733. ;    ;TurretMoveStart     = RocketBuggyLand
  28734. ;    VoiceCreate          = POWTruckGLAVoiceCreate
  28735. ;    SoundMoveStart       = POWTruckUSAMoveStart
  28736. ;    SoundMoveStartDamaged = POWTruckUSAMoveStart
  28737. ;    TurretMoveLoop       = TurretMoveLoop
  28738. ;    SoundEject           = PilotSoundEject
  28739. ;    VoiceEject           = PilotVoiceEject
  28740. ;    ; Required for the W3DTruckDraw module
  28741. ;    TruckLandingSound    = NoSound
  28742. ;    TruckPowerslideSound = POWTruckUSAMoveStart
  28743. ;    VoiceCrush           = POWTruckGLAVoiceCrush
  28744. ;    VoicePickup          = POWTruckGLAVoicePickup
  28745. ;    VoiceEnter           = POWTruckGLAVoiceMove
  28746. ;  End
  28747. ;  ; *** ENGINEERING Parameters ***
  28748. ;  RadarPriority          = UNIT
  28749. ;  KindOf                 = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER TRANSPORT POW_TRUCK SCORE
  28750. ;  Body                   = ActiveBody ModuleTag_02
  28751. ;    MaxHealth            = 500.0
  28752. ;    InitialHealth        = 500.0
  28753. ;  End
  28754. ;  Behavior               = POWTruckBehavior ModuleTag_03
  28755. ;    ContainMax           = 10
  28756. ;    EnterSound           = EnterPOWTruck
  28757. ;    ExitSound            = ExitPOWTruck
  28758. ;  End
  28759. ;;  Behavior = POWTruckAIUpdate ModuleTag_04
  28760. ;;    BoredTime            = 10000  ; in milliseconds
  28761. ;;    AtPrisonDistance     = 160.0  ; This close to a prison is close enough to be doing nothing at
  28762. ;;  End
  28763. ;  Locomotor              = SET_NORMAL POWTruckLocomotor
  28764. ;  Behavior               = PhysicsBehavior ModuleTag_05
  28765. ;    Mass                 = 50.0
  28766. ;  End
  28767. ;  Behavior               = SlowDeathBehavior ModuleTag_06
  28768. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  28769. ;    ProbabilityModifier  = 25
  28770. ;    DestructionDelay  = 1
  28771. ;    FX                   = FINAL    FX_BattleMasterExplosionOneFinal
  28772. ;    OCL                  = FINAL    OCL_GLAPOWTruckDeathEffect
  28773. ;  End
  28774. ;  Behavior                    = FXListDie ModuleTag_07
  28775. ;    DeathTypes = NONE +CRUSHED +SPLATTED
  28776. ;    DeathFX              = FX_CarCrush
  28777. ;  End
  28778. ;  Behavior                 = TransitionDamageFX ModuleTag_08
  28779. ;    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  28780. ;    ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  28781. ;  End
  28782. ;  Behavior = FlammableUpdate ModuleTag_21
  28783. ;    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  28784. ;    AflameDamageAmount = 3       ; taking this much damage...
  28785. ;    AflameDamageDelay = 500       ; this often.
  28786. ;  End
  28787. ;  Geometry               = BOX
  28788. ;  GeometryMajorRadius    = 15.0
  28789. ;  GeometryMinorRadius    = 7.0
  28790. ;  GeometryHeight         = 13.5     
  28791. ;  GeometryIsSmall        = Yes 
  28792. ;  Shadow                 = SHADOW_VOLUME   
  28793. ;End
  28794.  
  28795. ;------------------------------------------------------------------------------
  28796. Object GLAAngryMobRockProjectileObject
  28797.  
  28798.   ; *** ART Parameters ***
  28799.  
  28800.   Draw = W3DModelDraw ModuleTag_01
  28801.     ConditionState = NONE
  28802.       Model = Mob_Rock
  28803.     End
  28804.   End
  28805.  
  28806.   ; ***DESIGN parameters ***
  28807.   DisplayName       = OBJECT:GLARock
  28808.   EditorSorting     = SYSTEM
  28809.   ArmorSet
  28810.     Armor = ProjectileArmor
  28811.   End
  28812.   VisionRange = 0.0
  28813.  
  28814.   ; *** ENGINEERING Parameters ***
  28815.   KindOf = PROJECTILE
  28816.   Body = ActiveBody ModuleTag_02
  28817.     MaxHealth       = 100.0
  28818.     InitialHealth   = 100.0
  28819.   End
  28820.  
  28821.   Behavior = DestroyDie ModuleTag_03
  28822.     ;nothing
  28823.   End
  28824.  
  28825.   Behavior = DumbProjectileBehavior ModuleTag_04
  28826.     TumbleRandomly = Yes    ; not implemented, alas
  28827.     DetonateCallsKill = Yes
  28828.     ; To tweak a Bezier path, please see GS
  28829.     FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
  28830.     SecondHeight = 10
  28831.     FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
  28832.     SecondPercentIndent = 90%
  28833.     FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  28834.   End
  28835.  
  28836.  Behavior = PhysicsBehavior ModuleTag_05;lorenzen sez, please keep this, it allows tumbling
  28837.     Mass = 0.1 ; about the weight of a rock
  28838.   End
  28839.  
  28840.   Geometry = Sphere
  28841.   GeometryIsSmall = Yes
  28842.   GeometryMajorRadius = 1.0
  28843.  
  28844. End
  28845.  
  28846.  
  28847. ;------------------------------------------------------------------------------
  28848. Object GLAAngryMobMolotovCocktailProjectileObject
  28849.  
  28850.   ; *** ART Parameters ***
  28851.   Draw = W3DModelDraw ModuleTag_01
  28852.     ConditionState = NONE
  28853.       Model = Mob_Botl
  28854.       ParticleSysBone = BONE_FX MolotovBurningRag
  28855.     End
  28856.   End
  28857.  
  28858.   ; ***DESIGN parameters ***
  28859.   DisplayName       = OBJECT:GLARock
  28860.   EditorSorting     = SYSTEM
  28861.   ArmorSet
  28862.     Armor = ProjectileArmor
  28863.   End
  28864.   VisionRange = 0.0
  28865.  
  28866.   ; *** ENGINEERING Parameters ***
  28867.   KindOf = PROJECTILE
  28868.   Body = ActiveBody ModuleTag_02
  28869.     MaxHealth       = 100.0
  28870.     InitialHealth   = 100.0
  28871.   End
  28872.  
  28873.  
  28874.   Behavior = DumbProjectileBehavior ModuleTag_03
  28875.     TumbleRandomly = Yes ; not implemented, alas
  28876.     DetonateCallsKill = Yes
  28877.     ; To tweak a Bezier path, please see GS
  28878.     FirstHeight = 30  //TALL ARC LOOK GOOD
  28879.     SecondHeight = 30 //TALL ARC LOOK GOOD
  28880.     FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
  28881.     SecondPercentIndent = 90%
  28882.     FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  28883.   End
  28884.  
  28885.   Behavior = PhysicsBehavior ModuleTag_04;lorenzen sez, please keep this, it allows tumbling
  28886.     Mass = 0.1 ; about the weight of a rock
  28887.   End
  28888.  
  28889. ;  Behavior = FireWeaponWhenDeadBehavior
  28890. ;    DeathWeapon   = GLAAngryMobMolotovCocktailPersistentFlameWeapon
  28891. ;    StartsActive  = Yes 
  28892. ;  End
  28893.  
  28894.   Behavior = DestroyDie ModuleTag_05
  28895.     ;nothing
  28896.   End
  28897.  
  28898.  
  28899.   Geometry = Sphere
  28900.   GeometryIsSmall = Yes
  28901.   GeometryMajorRadius = 1.0
  28902.  
  28903. End
  28904.  
  28905. ;------------------------------------------------------------------------------
  28906. Object ChinaArtilleryCannon
  28907.  
  28908.   ; *** ART Parameters ***
  28909. ;  Draw = W3DModelDraw
  28910. ;    DefaultConditionState
  28911. ;      Model             = AVBomber_B
  28912. ;    End
  28913. ;  End
  28914.  
  28915.   ; ***DESIGN parameters ***
  28916.   ;DisplayName        = OBJECT:A10Thunderbolt
  28917.   EditorSorting       = VEHICLE
  28918.   Side                = China
  28919.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  28920.   VisionRange         = 99999.0 
  28921.   ShroudClearingRange = 0
  28922.   ArmorSet
  28923.     Conditions      = None
  28924.     Armor           = AirplaneArmor
  28925.     DamageFX        = None
  28926.   End
  28927.  
  28928.  
  28929.   ; *** AUDIO Parameters ***
  28930.   ; In the Activation of the superweapon, where it plays only once instead of once per missile.
  28931. ;  SoundMoveStart = FireArtilleryCannonSound
  28932.  
  28933.  
  28934.   ; *** ENGINEERING Parameters ***
  28935.   RadarPriority = UNIT
  28936.   KindOf = PRELOAD CAN_ATTACK VEHICLE AIRCRAFT UNATTACKABLE IGNORED_IN_GUI
  28937.   Body = ActiveBody ModuleTag_01
  28938.     MaxHealth       = 200.0
  28939.     InitialHealth   = 200.0
  28940.   End
  28941.  
  28942.   Behavior = DestroyDie ModuleTag_02
  28943.     ;nothing
  28944.   End
  28945.  
  28946.   Behavior = PhysicsBehavior ModuleTag_03
  28947.     Mass = 0.001 ; about the weight of grain of salt
  28948.   End
  28949.  
  28950.   Behavior = DeliverPayloadAIUpdate ModuleTag_05
  28951.   End
  28952.  
  28953.   Locomotor = SET_NORMAL ChinaArtilleryBarrageCannonLocomotor
  28954.  
  28955.   Geometry = Cylinder
  28956.   GeometryIsSmall = Yes
  28957.   GeometryMajorRadius = 1.0
  28958.   GeometryMinorRadius = 1.0
  28959.   GeometryHeight = 1.0
  28960.   Shadow = SHADOW_DECAL
  28961.   ShadowSizeX = 1;
  28962.   ShadowSizeY = 1;
  28963.   ShadowTexture = ShadowI;
  28964.  
  28965. End
  28966.  
  28967. ;------------------------------------------------------------------------------
  28968.  
  28969.  
  28970.  
  28971. ;------------------------------------------------------------------------------
  28972. Object ChinaArtilleryBarrageShell
  28973.  
  28974.   ; *** ART Parameters ***
  28975.   Draw = W3DModelDraw ModuleTag_01
  28976.     OkToChangeModelColor = Yes
  28977.     ConditionState = NONE
  28978.       Model = AVTankShel
  28979.       ParticleSysBone = NONE ArtilleryBarrageTrail
  28980.       ParticleSysBone = NONE ArtilleryBarrageTrailRing
  28981.     End
  28982.   End
  28983.  
  28984.   ; ***DESIGN parameters ***
  28985.   DisplayName      = OBJECT:Missile
  28986.   Side = China
  28987.   EditorSorting   = SYSTEM
  28988.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  28989.   VisionRange = 0.0  
  28990.   ArmorSet
  28991.     Conditions      = None
  28992.     Armor           = ProjectileArmor
  28993.     DamageFX        = None
  28994.   End
  28995.  
  28996.  
  28997.   ; *** AUDIO Parameters ***
  28998.   SoundAmbient = ArtilleryBarrageIncomingWhistle
  28999.  
  29000.  
  29001.   ; *** ENGINEERING Parameters ***
  29002.   KindOf            = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE ;SMALL_MISSILE
  29003.   Body = ActiveBody ModuleTag_02
  29004.     MaxHealth       = 100.0
  29005.     InitialHealth   = 100.0
  29006.   End
  29007.  
  29008. ; ---- begin Projectile death behaviors
  29009.   Behavior = InstantDeathBehavior DeathModuleTag_01
  29010.     DeathTypes = NONE +DETONATED
  29011.     ; we detonated normally.  No effect, since it is in weapon.  Don't want to double.
  29012.     ; FX        = FX_ArtilleryBarrage
  29013.   End
  29014.   Behavior = InstantDeathBehavior DeathModuleTag_02
  29015.     DeathTypes = NONE +LASERED
  29016.     ; shot down by laser.
  29017.     FX         = FX_GenericMissileDisintegrate
  29018.     OCL        = OCL_GenericMissileDisintegrate
  29019.   End
  29020.   Behavior = InstantDeathBehavior DeathModuleTag_03
  29021.     DeathTypes = ALL -LASERED -DETONATED
  29022.     ; shot down by nonlaser.
  29023.     FX         = FX_GenericMissileDeath
  29024.   End
  29025. ; ---- end Projectile death behaviors
  29026.  
  29027. ; Besides being the wrong weapon, the weapon is fired from the DeliverPayload listing in OCL.ini
  29028. ;  Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
  29029. ;    DeathWeapon   = A10ThunderboltMissileWeapon
  29030. ;    StartsActive  = Yes
  29031. ;  End
  29032.  
  29033.   Behavior = PhysicsBehavior ModuleTag_08
  29034.     Mass = 1
  29035.   End
  29036.   Behavior = MissileAIUpdate ModuleTag_09
  29037.     TryToFollowTarget = Yes 
  29038.     FuelLifetime = 10000
  29039.     InitialVelocity = 30                ; in dist/sec
  29040.     IgnitionDelay = 0
  29041.   End
  29042.   ; It's a missile, it needs to hit so it can +DETONATED
  29043. ;  Behavior = HeightDieUpdate ModuleTag_10
  29044. ;    TargetHeight = 1.0
  29045. ;    TargetHeightIncludesStructures = No
  29046. ;  End
  29047.   Locomotor = SET_NORMAL A10ThunderboltMissileLocomotor
  29048.  
  29049.   Geometry = Sphere
  29050.   GeometryIsSmall = Yes
  29051.   GeometryMajorRadius = 1.0
  29052.  
  29053.   Behavior = SpecialPowerCompletionDie ModuleTag_11
  29054.     SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike
  29055.   End
  29056.  
  29057.  
  29058. End
  29059.  
  29060. ;------------------------------------------------------------------------------
  29061. ; *********************** Cinematic-only unit *********************************
  29062. Object CINE_ChinaVehicleTroopCrawlerEmpty
  29063.  
  29064.   ; *** ART Parameters ***
  29065.   Draw = W3DTankDraw ModuleTag_01
  29066.     OkToChangeModelColor = Yes
  29067.     TrackMarks = EXTireTrack.tga
  29068.     ConditionState = NONE
  29069.       Model = NVTCrawler
  29070.     End
  29071.     ConditionState       = REALLYDAMAGED
  29072.       Model              = NVTCrawler_D
  29073.     End
  29074.     ConditionState       = RUBBLE
  29075.       Model              = NVTCrawler_D
  29076.     End
  29077.   End
  29078.  
  29079.   ; ***DESIGN parameters ***
  29080.   DisplayName      = OBJECT:TroopCrawler
  29081.   Side = China
  29082.   EditorSorting   = VEHICLE
  29083.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  29084.   WeaponSet
  29085.     Conditions = None 
  29086.     Weapon = PRIMARY TroopCrawlerAssault
  29087.   End
  29088.   ArmorSet
  29089.     Conditions      = None
  29090.     Armor           = TankArmor
  29091.     DamageFX        = TankDamageFX
  29092.   End
  29093.   BuildCost       = 700
  29094.   BuildTime       = 1.0          ;in seconds    
  29095.   VisionRange     = 150
  29096.   ShroudClearingRange = 150
  29097.   Prerequisites
  29098.     Object = ChinaWarFactory
  29099.   End
  29100.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  29101.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  29102.   CommandSet = ChinaTroopCrawlerCommandSet
  29103.  
  29104.   ; *** AUDIO Parameters ***
  29105.   VoiceSelect = TroopCrawlerVoiceSelect
  29106.   VoiceMove = TroopCrawlerVoiceMove
  29107.   VoiceGuard = TroopCrawlerVoiceMove
  29108.   VoiceAttack = TroopCrawlerVoiceAttack
  29109.   SoundMoveStart = TroopCrawlerMoveStart
  29110.  
  29111.   UnitSpecificSounds
  29112.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  29113.     VoiceCreate     = TroopCrawlerVoiceCreate
  29114.     TurretMoveStart = NoSound
  29115.     TurretMoveLoop  = TurretMoveLoop
  29116.     VoiceUnload     = TroopCrawlerVoiceUnload
  29117.     VoiceEnter = TroopCrawlerVoiceMove
  29118.   End
  29119.  
  29120.  
  29121.   ; *** ENGINEERING Parameters ***
  29122.   RadarPriority = UNIT
  29123.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS TRANSPORT VEHICLE SCORE
  29124.   
  29125.   Body = ActiveBody ModuleTag_02
  29126.     MaxHealth       = 200.0
  29127.     InitialHealth   = 200.0
  29128.   End
  29129.   Behavior = AIUpdateInterface ModuleTag_03
  29130.     Turret
  29131.       ControlledWeaponSlots = PRIMARY
  29132.     End
  29133.   End
  29134.   Locomotor = SET_NORMAL CINE_TroopCrawlerLocomotor
  29135.   Behavior = PhysicsBehavior ModuleTag_04
  29136.     Mass = 50.0
  29137.   End
  29138.  
  29139.  
  29140.   Behavior = SlowDeathBehavior  ModuleTag_05
  29141.     DeathTypes = ALL -CRUSHED -SPLATTED
  29142.     ProbabilityModifier = 5
  29143.     ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
  29144.     DestructionDelay = 0
  29145.     DestructionDelayVariance = 200
  29146.     FX = FINAL FX_BuggyNewDeathExplosion
  29147.     OCL = FINAL OCL_FinalTroopCrawlerDebris
  29148.   End
  29149.     
  29150.   Behavior = TransportContain ModuleTag_06
  29151.     Slots = 10
  29152.     HealthRegen%PerSec = 10
  29153.     DamagePercentToUnits = 10%
  29154.     AllowInsideKindOf  = INFANTRY
  29155.   End
  29156.  
  29157.  
  29158.   ; A crushing defeat
  29159.   Behavior = FXListDie ModuleTag_07
  29160.     DeathTypes = NONE +CRUSHED +SPLATTED
  29161.     DeathFX = FX_CarCrush
  29162.   End
  29163.   Behavior = CreateObjectDie ModuleTag_08
  29164.     DeathTypes = NONE +CRUSHED +SPLATTED
  29165.     CreationList = OCL_CrusaderTank_CrushEffect
  29166.   End
  29167.   ;Behavior = CreateCrateDie ModuleTag_09
  29168.    ; CrateData = None
  29169.     ;CrateData = SalvageCrateData
  29170.     ;CrateData = EliteTankCrateData
  29171.     ;CrateData = HeroicTankCrateData
  29172.   ;End
  29173.  
  29174.   Behavior = FlammableUpdate ModuleTag_21
  29175.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  29176.     AflameDamageAmount = 3       ; taking this much damage...
  29177.     AflameDamageDelay = 500       ; this often.
  29178.   End
  29179.  
  29180.   Geometry = BOX
  29181.   GeometryMajorRadius = 22.0
  29182.   GeometryMinorRadius = 9.0
  29183.   GeometryHeight = 13.0     
  29184.   GeometryIsSmall = No
  29185.   Shadow = SHADOW_VOLUME    
  29186.  
  29187. End
  29188.  
  29189. ;------------------------------------------------------------------------------
  29190. ; ************************* Cinematic-only unit *******************************
  29191. Object CINE_ChinaInfantryRedguard
  29192.  
  29193.   ; *** ART Parameters ***
  29194.   SelectPortrait         = SNRedGuard_L  
  29195.   ButtonImage            = SNRedGuard_L
  29196.   
  29197.   UpgradeCameo1 = Upgrade_Nationalism
  29198.   ;UpgradeCameo2 = NONE
  29199.   ;UpgradeCameo3 = NONE
  29200.   ;UpgradeCameo4 = NONE
  29201.   ;UpgradeCameo5 = NONE
  29202.  
  29203.   Draw = W3DModelDraw ModuleTag_01
  29204.     OkToChangeModelColor = Yes
  29205.  
  29206.     ; ------- Standing-Around Animations
  29207.  
  29208.     DefaultConditionState
  29209.       Model               = NICNSC_SKN
  29210.       IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
  29211.       IdleAnimation       = NICNSC_SKL.NICNSC_IDA
  29212.       IdleAnimation       = NICNSC_SKL.NICNSC_IDB
  29213.       AnimationMode       = ONCE
  29214.       WeaponFireFXBone    = PRIMARY Muzzle
  29215.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  29216.       TransitionKey       = TRANS_Stand
  29217.     End
  29218.  
  29219.     ConditionState = REALLYDAMAGED
  29220.       IdleAnimation       = NICNSC_SKL.NICNSC_STB
  29221.       AnimationMode       = ONCE
  29222.       TransitionKey       = TRANS_StandDamaged
  29223.     End
  29224.  
  29225.     ; ------- Machine Gun Animations
  29226.  
  29227.     ConditionState = FIRING_A 
  29228.       Animation         = NICNSC_SKL.NICNSC_ATA
  29229.       AnimationMode     = LOOP
  29230.       TransitionKey     = TRANS_Firing
  29231.     End
  29232.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  29233.     AliasConditionState = RELOADING_A
  29234.  
  29235.     ConditionState = FIRING_A REALLYDAMAGED
  29236.       Animation         = NICNSC_SKL.NICNSC_ATC
  29237.       AnimationMode     = LOOP
  29238.       TransitionKey     = TRANS_FiringDamaged
  29239.     End
  29240.     AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  29241.     AliasConditionState = RELOADING_A REALLYDAMAGED
  29242.  
  29243.     ; ------- Stun Bullet Animations
  29244. ; sorry, no tranq or stun bullets, cut for this version (srj)
  29245. ;
  29246. ;    ConditionState = FIRING_B
  29247. ;      Animation         = NICNSC_SKL.NICNSC_ATA
  29248. ;      AnimationMode     = LOOP
  29249. ;      TransitionKey     = TRANS_Firing
  29250. ;    End
  29251. ;    AliasConditionState = BETWEEN_FIRING_SHOTS_B
  29252. ;    AliasConditionState = RELOADING_B
  29253. ;
  29254. ;    ConditionState = FIRING_B REALLYDAMAGED
  29255. ;      Animation         = NICNSC_SKL.NICNSC_ATC
  29256. ;      AnimationMode     = LOOP
  29257. ;      TransitionKey     = TRANS_FiringDamaged
  29258. ;    End
  29259. ;    AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  29260. ;    AliasConditionState = RELOADING_B REALLYDAMAGED
  29261.  
  29262.     ; ------- Firing-related Transitions
  29263.  
  29264.     TransitionState = TRANS_Firing TRANS_FiringDamaged
  29265.       Animation       = NICNSC_SKL.NICNSC_AA2AC
  29266.       AnimationMode   = ONCE
  29267.     End
  29268.  
  29269.     TransitionState = TRANS_Stand TRANS_Firing
  29270.       Animation       = NICNSC_SKL.NICNSC_SA2AA
  29271.       AnimationMode   = ONCE
  29272.     End
  29273.  
  29274.     TransitionState = TRANS_Firing TRANS_Stand
  29275.       Animation       = NICNSC_SKL.NICNSC_AA2SA
  29276.       AnimationMode   = ONCE
  29277.     End
  29278.  
  29279.     TransitionState   = TRANS_StandDamaged TRANS_FiringDamaged
  29280.       Animation       = NICNSC_SKL.NICNSC_ATCST
  29281.       AnimationMode   = ONCE
  29282.     End
  29283.  
  29284.     TransitionState   = TRANS_FiringDamaged TRANS_StandDamaged
  29285.       Animation       = NICNSC_SKL.NICNSC_ATCED
  29286.       AnimationMode   = ONCE
  29287.     End
  29288.  
  29289.     ; ------------- Damage Transitions --------------------
  29290.     TransitionState = TRANS_StandDamaged TRANS_RunDamaged
  29291.       Animation       = NICNSC_SKL.NICNSC_AA2AC
  29292.       AnimationMode   = ONCE
  29293.       AnimationSpeedFactorRange = 2 2
  29294.     End
  29295.     TransitionState = TRANS_RunDamaged TRANS_StandDamaged 
  29296.       Animation       = NICNSC_SKL.NICNSC_AA2AC
  29297.       AnimationMode   = ONCE_BACKWARDS
  29298.       AnimationSpeedFactorRange = 2 2
  29299.       Flags           = START_FRAME_LAST
  29300.     End
  29301.     TransitionState = TRANS_Stand TRANS_StandDamaged 
  29302.       Animation       = NICNSC_SKL.NICNSC_AA2SA
  29303.       AnimationMode   = ONCE_BACKWARDS
  29304.       AnimationSpeedFactorRange = 4 5
  29305.       Flags           = START_FRAME_LAST
  29306.     End
  29307.  
  29308.  
  29309.     ; ------- Bayonet Animations
  29310.  
  29311.     ConditionState = PREATTACK_C 
  29312.       Animation = NICNSC_SKL.NICNSC_ATB1
  29313.       AnimationMode   = ONCE
  29314.       TransitionKey   = TRANS_Stab
  29315.     End
  29316.     AliasConditionState = PREATTACK_C MOVING
  29317.     AliasConditionState = PREATTACK_C FIRING_C
  29318.     AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C
  29319.  
  29320.     ConditionState = FIRING_C
  29321.       Animation         = NICNSC_SKL.NICNSC_ATB2
  29322.       AnimationMode     = ONCE
  29323.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  29324.       ; and a long recycle time between shots. we want him to finish his fire animation
  29325.       ; (unless he's ordered to do something else), so this is just a handy trick that
  29326.       ; says, "if the previous state had this transition key, allow it to finish before
  29327.       ; switching to us, if possible".
  29328.       WaitForStateToFinishIfPossible = TRANS_Stab
  29329.     End
  29330.     AliasConditionState = BETWEEN_FIRING_SHOTS_C
  29331.     AliasConditionState = RELOADING_C
  29332.  
  29333.     ; ------- Parachuting Animations
  29334.  
  29335.     ConditionState = FREEFALL
  29336.       Animation       = NICNSC_SKL.NICNSC_POP
  29337.       AnimationMode   = MANUAL
  29338.       Flags           = START_FRAME_FIRST
  29339.       TransitionKey   = TRANS_Falling
  29340.     End
  29341.     AliasConditionState = FREEFALL REALLYDAMAGED
  29342.     AliasConditionState = FREEFALL DYING
  29343.  
  29344.     ConditionState = PARACHUTING
  29345.       Animation       = NICNSC_SKL.NICNSC_PHG
  29346.       AnimationMode   = LOOP
  29347.       Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  29348.       TransitionKey   = TRANS_Chute
  29349.     End
  29350.     AliasConditionState = PARACHUTING REALLYDAMAGED
  29351.     AliasConditionState = PARACHUTING DYING
  29352.  
  29353.     TransitionState = TRANS_Falling TRANS_Chute
  29354.       Animation       = NICNSC_SKL.NICNSC_POP
  29355.       AnimationMode   = ONCE
  29356.       Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  29357.     End
  29358.  
  29359.     TransitionState = TRANS_Chute TRANS_Stand
  29360.       Animation       = NICNSC_SKL.NICNSC_PTD
  29361.       AnimationMode   = ONCE
  29362.     End
  29363.  
  29364.     ; ------- Movement Animations
  29365.  
  29366.     ConditionState = MOVING
  29367.       Animation         = NICNSC_SKL.NICNSC_RNA 48 ; used to be 26
  29368.       AnimationMode     = LOOP
  29369.       Flags             = RANDOMSTART
  29370.       TransitionKey     = None
  29371.     End
  29372.     AliasConditionState = MOVING ATTACKING 
  29373.  
  29374.     ConditionState = MOVING REALLYDAMAGED
  29375.       Animation         = NICNSC_SKL.NICNSC_RNB 28
  29376.       AnimationMode     = LOOP
  29377.       Flags             = RANDOMSTART
  29378.       TransitionKey     = TRANS_RunDamaged
  29379.       TransitionKey     = None
  29380.     End
  29381.     AliasConditionState = MOVING ATTACKING REALLYDAMAGED
  29382.  
  29383.     ; ------- Bldg-capture
  29384.  
  29385.     ConditionState = UNPACKING
  29386.       Model             = NICNSC_F_SKN
  29387.       Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
  29388.       AnimationMode     = ONCE
  29389.     End
  29390.     AliasConditionState = UNPACKING REALLYDAMAGED
  29391.  
  29392.     ConditionState = RAISING_FLAG
  29393.       Model             = NICNSC_F_SKN
  29394.       Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
  29395.       AnimationMode     = ONCE
  29396.       TransitionKey     = TRANS_Raising
  29397.     End
  29398.     AliasConditionState = RAISING_FLAG REALLYDAMAGED
  29399.  
  29400.     ConditionState = PACKING
  29401.       Model             = NICNSC_F_SKN
  29402.       Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
  29403.       AnimationMode     = ONCE_BACKWARDS
  29404.       Flags             = START_FRAME_LAST
  29405.       TransitionKey     = TRANS_Packing
  29406.     End
  29407.     AliasConditionState = PACKING REALLYDAMAGED
  29408.  
  29409.     TransitionState = TRANS_Raising TRANS_Packing
  29410.       Model             = NICNSC_F_SKN
  29411.       Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
  29412.       AnimationMode     = ONCE_BACKWARDS
  29413.       Flags             = START_FRAME_LAST
  29414.     End
  29415.  
  29416.     ; ------- Misc Animations
  29417.  
  29418.     ConditionState      = DYING
  29419.       Animation         = NICNSC_SKL.NICNSC_DTA
  29420.       Animation         = NICNSC_SKL.NICNSC_DTB
  29421.       AnimationMode     = ONCE
  29422.       TransitionKey     = TRANS_Dying
  29423.     End
  29424.  
  29425.     TransitionState     = TRANS_Dying TRANS_Flailing
  29426.       Animation         = NICNSC_SKL.NICNSC_ATDE1
  29427.       AnimationMode     = ONCE
  29428.     End
  29429.  
  29430.     ConditionState      = DYING EXPLODED_FLAILING
  29431.       Animation         = NICNSC_SKL.NICNSC_ATDE2
  29432.       AnimationMode     = LOOP
  29433.       TransitionKey     = TRANS_Flailing
  29434.     End
  29435.  
  29436.     ConditionState      = DYING EXPLODED_BOUNCING
  29437.       Animation         = NICNSC_SKL.NICNSC_ATDE3
  29438.       AnimationMode     = ONCE
  29439.       TransitionKey     = None
  29440.     End
  29441.  
  29442.     ConditionState = SPECIAL_CHEERING
  29443.       Animation         = NICNSC_SKL.NICNSC_CHA
  29444.       AnimationMode     = LOOP
  29445.     End
  29446.  
  29447.   End
  29448.  
  29449.   ; ***DESIGN parameters ***
  29450.   DisplayName         = OBJECT:Redguard
  29451.   Side                = China
  29452.   EditorSorting       = INFANTRY
  29453.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  29454.   WeaponSet
  29455.     Conditions = None 
  29456.     Weapon = PRIMARY RedguardMachineGun
  29457.     Weapon = SECONDARY None
  29458.     Weapon = TERTIARY RedguardBayonet
  29459.     AutoChooseSources = PRIMARY None
  29460.     AutoChooseSources = SECONDARY None
  29461.     AutoChooseSources = TERTIARY None
  29462.   End
  29463. ; sorry, no stun bullets, cut for this version (srj)
  29464. ;  WeaponSet
  29465. ;    Conditions = PLAYER_UPGRADE
  29466. ;    Weapon = PRIMARY RedguardMachineGun
  29467. ;    Weapon = SECONDARY RedguardStunBulletsMachineGun
  29468. ;    Weapon = TERTIARY RedguardBayonet
  29469. ;    AutoChooseSources = SECONDARY None
  29470. ;    AutoChooseSources   = TERTIARY None
  29471. ;  End
  29472.   ArmorSet
  29473.     Conditions      = None
  29474.     Armor           = HumanArmor
  29475.     DamageFX        = InfantryDamageFX
  29476.   End
  29477.   VisionRange = 100
  29478.   ShroudClearingRange = 200
  29479.   Prerequisites
  29480.     Object = ChinaBarracks
  29481.   End
  29482.   BuildCost     = 300
  29483.   BuildTime     = 10.0          ;in seconds      
  29484.  
  29485.   ExperienceValue = 5 5 10 20   ;Experience point value at each level
  29486.   ExperienceRequired = 0 20 40 80  ;Experience points needed to gain each level
  29487.   IsTrainable = Yes             ;Can gain experience
  29488.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  29489.   CommandSet    = ChinaInfantryRedguardCommandSet
  29490.  
  29491.   ; *** AUDIO Parameters ***
  29492.   VoiceSelect = RedGuardVoiceSelect
  29493.   VoiceMove = RedGuardVoiceMove
  29494.   VoiceGuard = RedGuardVoiceMove
  29495.   VoiceAttack = RedGuardVoiceAttack
  29496.   VoiceGroupSelect = BattleCrySound
  29497.   SoundDie = RedGuardVoiceDie
  29498.   SoundDieFire = DieByFireChina
  29499.   SoundDieToxin = DieByToxinChina
  29500.   VoiceFear = RedGuardVoiceFear
  29501.   VoiceTaskComplete = RedGuardVoiceCaptureComplete
  29502.   UnitSpecificSounds
  29503.     VoiceGarrison = RedGuardVoiceGarrison
  29504.     VoiceCreate     = RedGuardVoiceCreate
  29505.     VoiceSubdue     = RedGuardVoiceSubdue
  29506.     VoiceEnter = RedGuardVoiceMove
  29507.     VoiceEnterHostile = RedGuardVoiceMove
  29508.     VoiceGetHealed      = RedGuardVoiceMove
  29509.   End
  29510.  
  29511.   ; *** ENGINEERING Parameters ***
  29512.   RadarPriority = UNIT
  29513.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE
  29514.  
  29515.   Body = ActiveBody ModuleTag_02
  29516.     MaxHealth       = 120.0
  29517.     InitialHealth   = 120.0
  29518.   End
  29519.  
  29520.   Behavior = VeterancyGainCreate ModuleTag_03
  29521.     StartingLevel = VETERAN
  29522.     ScienceRequired = SCIENCE_RedGuardTraining
  29523.   End
  29524.  
  29525.   Behavior = AIUpdateInterface ModuleTag_04
  29526.     AutoAcquireEnemiesWhenIdle = Yes
  29527.   End
  29528.  
  29529.   Behavior = CommandButtonHuntUpdate  ModuleTag_05 ; allows use of command button hunt script with this unit. 
  29530.   End
  29531.  
  29532.   Locomotor = SET_NORMAL CINE_RedguardLocomotor
  29533.  
  29534.   Behavior = HordeUpdate ModuleTag_06
  29535.     RubOffRadius = 60    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
  29536.     UpdateRate = 1000    ; how often to recheck horde status (msec)
  29537.     Radius = 30          ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
  29538.     KindOf = INFANTRY    ; what KindOf's must match to count towards horde-ness
  29539.     AlliesOnly = Yes     ; do we only count allies towards horde status? 
  29540.     ExactMatch = No      ; do we only count units of our exact same type towards horde status? (overrides kindof)
  29541.     Count = 5            ; how many units must be within Radius to grant us horde-ness
  29542.     Action = HORDE       ; when horde-ing, grant us the HORDE bonus
  29543.   End
  29544.   Behavior = PhysicsBehavior ModuleTag_07
  29545.     Mass = 5.0
  29546.   End
  29547.  
  29548. ; sorry, no tranq or stun bullets, cut for this version (srj)
  29549. ;  Behavior = WeaponSetUpgrade ModuleTag_09
  29550. ;    TriggeredBy = Upgrade_ChinaStunBullets
  29551. ;  End
  29552.  
  29553.   Behavior = SquishCollide ModuleTag_10
  29554.     ;nothing
  29555.   End
  29556.  
  29557. ; --- begin Death modules ---
  29558.   Behavior = SlowDeathBehavior ModuleTag_Death01
  29559.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  29560.     SinkDelay           = 3000
  29561.     SinkRate            = 0.5     ; in Dist/Sec
  29562.     DestructionDelay    = 8000
  29563.     FX                  = INITIAL FX_GIDie
  29564.   End
  29565.   Behavior = SlowDeathBehavior ModuleTag_Death02
  29566.     DeathTypes          = NONE +CRUSHED +SPLATTED
  29567.     SinkDelay           = 3000
  29568.     SinkRate            = 0.5     ; in Dist/Sec
  29569.     DestructionDelay    = 8000
  29570.     FX                  = INITIAL FX_GIDieCrushed
  29571.   End
  29572.   Behavior = SlowDeathBehavior ModuleTag_Death03
  29573.     DeathTypes          = NONE +EXPLODED
  29574.     SinkDelay           = 3000
  29575.     SinkRate            = 0.5     ; in Dist/Sec
  29576.     DestructionDelay    = 8000
  29577.     FX                  = INITIAL FX_GIDie
  29578.     FlingForce          = 8
  29579.     FlingForceVariance  = 3
  29580.     FlingPitch          = 60
  29581.     FlingPitchVariance  = 10
  29582.   End
  29583.   Behavior = SlowDeathBehavior ModuleTag_Death04
  29584.     DeathTypes          = NONE +BURNED
  29585.     DestructionDelay    = 0
  29586.     FX                  = INITIAL FX_GIDie
  29587.     OCL                 = INITIAL OCL_FlamingInfantry
  29588.   End
  29589.   Behavior = SlowDeathBehavior ModuleTag_Death05
  29590.     DeathTypes          = NONE +POISONED
  29591.     DestructionDelay    = 0
  29592.     FX                  = INITIAL FX_GIDie
  29593.     OCL                 = INITIAL OCL_ToxicInfantry
  29594.   End
  29595. ; --- end Death modules ---
  29596.  
  29597.   Behavior = PoisonedBehavior ModuleTag_15
  29598.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  29599.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  29600.   End
  29601.  
  29602.   Behavior = SpecialAbility ModuleTag_16
  29603.     SpecialPowerTemplate      = SpecialAbilityRedGuardCaptureBuilding
  29604.     UpdateModuleStartsAttack  = Yes
  29605.     StartsPaused              = Yes
  29606.     InitiateSound         = RedGuardVoiceCapture
  29607.   End
  29608.   Behavior = SpecialAbilityUpdate ModuleTag_17
  29609.     SpecialPowerTemplate  = SpecialAbilityRedGuardCaptureBuilding
  29610.     StartAbilityRange  = 5.0
  29611.     UnpackTime            = 3000  ; (changing this will scale anim speed)
  29612.     PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
  29613.     PackTime              = 2000  ; (changing this will scale anim speed)
  29614.     DoCaptureFX           = Yes
  29615.   End
  29616.  
  29617.   Behavior = UnpauseSpecialPowerUpgrade ModuleTag_18
  29618.     SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding
  29619.     TriggeredBy = Upgrade_InfantryCaptureBuilding
  29620.   End
  29621.  
  29622.   Geometry = CYLINDER
  29623.   GeometryMajorRadius = 7.0
  29624.   GeometryMinorRadius = 7.0
  29625.   GeometryHeight = 12.0
  29626.   GeometryIsSmall = Yes
  29627.   Shadow = SHADOW_DECAL
  29628.   ShadowSizeX = 14;
  29629.   ShadowSizeY = 14;
  29630.   ShadowTexture = ShadowI;
  29631.   BuildCompletion = APPEARS_AT_RALLY_POINT
  29632.  
  29633. End
  29634. ;------------------------------------------------------------------------------
  29635. Object CINE_AmericaJetRaptor
  29636.  
  29637.   ; *** ART Parameters ***
  29638.   SelectPortrait         = SACRaptor_L
  29639.   ButtonImage            = SACRaptor
  29640.   
  29641.   UpgradeCameo1 = Upgrade_AmericaLaserMissiles
  29642.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  29643.   ;UpgradeCameo3 = NONE
  29644.   ;UpgradeCameo4 = NONE
  29645.   ;UpgradeCameo5 = NONE
  29646.   
  29647.   Draw                   = W3DModelDraw ModuleTag_01
  29648.  
  29649.     DefaultConditionState
  29650.       Model               = AVRaptor
  29651.       HideSubObject       = BurnerFX01 BurnerFX02
  29652.       WeaponLaunchBone = PRIMARY WeaponA
  29653.     End
  29654.  
  29655.     ConditionState        = JETEXHAUST
  29656.       ; exhaust
  29657.       ParticleSysBone     = Wingtip01 JetContrail
  29658.       ParticleSysBone     = Wingtip02 JetContrail
  29659.     End
  29660.  
  29661.     ConditionState        = JETEXHAUST JETAFTERBURNER
  29662.       ; exhaust
  29663.       ParticleSysBone     = Wingtip01 JetContrail
  29664.       ParticleSysBone     = Wingtip02 JetContrail
  29665.       ; afterburner
  29666.       ShowSubObject       = BurnerFX01 BurnerFX02
  29667.       ParticleSysBone     = Engine01 JetLenzflare
  29668.       ParticleSysBone     = Engine02 JetLenzflare
  29669.     End
  29670.  
  29671.     ConditionState        = REALLYDAMAGED
  29672.       Model               = AVRaptor_D
  29673.       ; damage
  29674.       ParticleSysBone     = Smoke01 JetSmoke
  29675.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  29676.     End
  29677.     
  29678.     ConditionState        = REALLYDAMAGED JETEXHAUST
  29679.       Model               = AVRaptor_D
  29680.       ; damage
  29681.       ParticleSysBone     = Smoke01 JetSmoke
  29682.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  29683.       ; exhaust
  29684.       ParticleSysBone     = Wingtip01 JetContrail
  29685.       ParticleSysBone     = Wingtip02 JetContrail
  29686.     End
  29687.  
  29688.     ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
  29689.       Model               = AVRaptor_D
  29690.       ; damage
  29691.       ParticleSysBone     = Smoke01 JetSmoke
  29692.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  29693.       ; afterburner
  29694.       ShowSubObject       = BurnerFX01 BurnerFX02
  29695.       ParticleSysBone     = Engine01 JetLenzflare
  29696.       ParticleSysBone     = Engine02 JetLenzflare
  29697.       ; exhaust
  29698.       ParticleSysBone     = Wingtip01 JetContrail
  29699.       ParticleSysBone     = Wingtip02 JetContrail
  29700.     End
  29701.  
  29702.     ConditionState        = RUBBLE
  29703.       Model               = AVRaptor_D1B
  29704.       HideSubObject       = None 
  29705.       ShowSubObject       = None
  29706.     End
  29707.  
  29708.     ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
  29709.       Model               = AVRaptor_D1B
  29710.       ;HideSubObject is needed cause there're inherited from default condition state      
  29711.       HideSubObject       = None 
  29712.       ShowSubObject       = None
  29713.       ParticleSysBone     = Engine01 JetExhaust
  29714.       ParticleSysBone     = Engine02 JetExhaust
  29715.       ; exhaust
  29716.       ParticleSysBone     = Wingtip01 JetContrail
  29717.       ParticleSysBone     = Wingtip02 JetContrail
  29718.     End
  29719.  
  29720.     OkToChangeModelColor = Yes
  29721.  
  29722.   End
  29723.  
  29724.   ; ***DESIGN parameters ***
  29725.   DisplayName             = OBJECT:Raptor
  29726.   EditorSorting           = VEHICLE
  29727.   Side                    = America
  29728.   TransportSlotCount      = 0 ;how many "slots" we take in a transport (0 == not transportable)
  29729.   VisionRange             = 400.0 
  29730.   ShroudClearingRange     = 400
  29731.   Prerequisites
  29732.     Object                = AmericaAirfield
  29733.   End
  29734.  
  29735.   WeaponSet
  29736.     Conditions            = None 
  29737.     Weapon                = PRIMARY RaptorJetMissileWeapon
  29738.   End
  29739.   WeaponSet
  29740.     Conditions            = PLAYER_UPGRADE 
  29741.     Weapon                = PRIMARY RaptorJetLaserGuidedMissileWeapon
  29742.   End
  29743.   ArmorSet
  29744.     Conditions            = None
  29745.     Armor                 = AirplaneArmor
  29746.     DamageFX              = None
  29747.   End
  29748.  
  29749.   BuildCost               = 1400
  29750.   BuildTime               = 1   
  29751.   ExperienceValue         = 50 50 100 150  ;Experience point value at each level
  29752.   ExperienceRequired      = 0 100 200 400   ;Experience points needed to gain each level
  29753.   IsTrainable             = Yes             ;Can gain experience
  29754.   CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  29755.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  29756.   CommandSet              = AmericaJetRaptorCommandSet
  29757.  
  29758.   ; *** AUDIO Parameters ***
  29759.   VoiceSelect            = RaptorVoiceSelect
  29760.   VoiceMove              = RaptorVoiceMove
  29761.   VoiceAttack            = RaptorVoiceAttack
  29762.   VoiceAttackAir         = RaptorVoiceAttackAir
  29763.   VoiceGuard             = RaptorVoiceAirPatrol
  29764.   SoundDie               = RaptorVoiceFalling
  29765.   SoundAmbient           = RaptorAmbientLoop
  29766.   SoundAmbientRubble    = NoSound
  29767.   ; For now, it is better to have some sound than no sound cause there is a bug in
  29768.   ; what triggers the sound move loop sound, and the multiplayer test is only days away
  29769.   ; SoundMoveLoop          = RaptorAmbientLoop  ; don't want sound while sitting at airfield
  29770.   ; SoundAmbient           = NoSound
  29771.   UnitSpecificSounds
  29772.     VoiceCreate          = RaptorVoiceCreate
  29773.     SoundEject           = PilotSoundEject
  29774.     VoiceEject           = PilotVoiceEject
  29775.     Afterburner          = RaptorAfterburner
  29776.     VoiceLowFuel         = RaptorVoiceLowFuel
  29777.     VoiceGarrison        = RaptorVoiceMove
  29778.   End
  29779.  
  29780.   ; *** ENGINEERING Parameters ***
  29781.   RadarPriority          = UNIT
  29782.   KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  29783.   Body                   = ActiveBody ModuleTag_02
  29784.     MaxHealth            = 160.0
  29785.     InitialHealth        = 160.0
  29786.   End
  29787.  
  29788.   Behavior                = WeaponSetUpgrade ModuleTag_03
  29789.     TriggeredBy          = Upgrade_AmericaLaserMissiles
  29790.   End
  29791.   Behavior = ExperienceScalarUpgrade ModuleTag_04
  29792.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  29793.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  29794.   End
  29795.  
  29796.   Behavior                          = JetSlowDeathBehavior ModuleTag_05
  29797.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  29798.     OCLOnGroundDeath                = OCL_RaptorDeathFinalBlowUp
  29799.     DestructionDelay                = 99999999; destruction will happen when we
  29800.     RollRate                        = 0.2
  29801.     RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
  29802.     PitchRate                       = 0.0
  29803.     FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  29804.     FXInitialDeath                  = FX_JetDeathInitial
  29805.     OCLInitialDeath                 = OCL_RaptorDeathInitial
  29806.     DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
  29807.     FXSecondary                     = FX_JetDeathSecondary
  29808.     OCLSecondary                    = OCL_RaptorDeathSecondary
  29809.     FXHitGround                     = FX_JetDeathHitGround
  29810.     OCLHitGround                    = OCL_RaptorDeathHitGround
  29811.     DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
  29812.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  29813.     OCLFinalBlowUp                  = OCL_RaptorDeathFinalBlowUp
  29814. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  29815.   End
  29816.   Behavior                    = EjectPilotDie ModuleTag_06
  29817.     ExemptStatus         = HIJACKED
  29818.     GroundCreationList = OCL_EjectPilotOnGround
  29819.     AirCreationList = OCL_EjectPilotViaParachute
  29820.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  29821.   End
  29822.   
  29823.   Behavior               = PhysicsBehavior ModuleTag_07
  29824.     Mass                 = 500.0
  29825.   End
  29826.  
  29827.   Behavior                 = TransitionDamageFX ModuleTag_08
  29828.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  29829.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
  29830.   End
  29831.  
  29832.   Behavior = JetAIUpdate ModuleTag_09
  29833.     OutOfAmmoDamagePerSecond  = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
  29834.                                     ; note that it's expressed as a percent of max health, not an absolute
  29835.     TakeoffSpeedForMaxLift    = 100%   ; smaller numbers give more lift sooner when taking off
  29836.     TakeoffPause              = 500
  29837.     MinHeight                 = 5
  29838.     ParkingOffset             = 3             ; scooch it a little forward so the tail doesn't hit the doors
  29839.     ReturnToBaseIdleTime      = 3         ; if idle for this long, return to base, even if not out of ammo
  29840.   End
  29841.   Locomotor = SET_NORMAL RaptorJetLocomotor
  29842.   Locomotor = SET_TAXIING CINE_BasicJetTaxiLocomotor
  29843.  
  29844.   Behavior = FlammableUpdate ModuleTag_21
  29845.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  29846.     AflameDamageAmount = 3       ; taking this much damage...
  29847.     AflameDamageDelay = 500       ; this often.
  29848.   End
  29849.  
  29850.  
  29851.   Geometry                 = Box
  29852.   GeometryIsSmall          = Yes
  29853.   GeometryMajorRadius      = 14.0
  29854.   GeometryMinorRadius      = 7.0
  29855.   GeometryHeight           = 5.0
  29856.   Shadow                   = SHADOW_VOLUME
  29857.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length.
  29858.  
  29859. End
  29860.  
  29861. ;------------------------------------------------------------------------------
  29862. ; *********************** Cinematic-only unit *********************************
  29863. Object CINE_AmericaJetB52
  29864.  
  29865.   ; *** ART Parameters ***
  29866.   Draw = W3DModelDraw ModuleTag_01
  29867.     DefaultConditionState
  29868.       Model = AVBomber
  29869.       ParticleSysBone = Engine01 JetBlackTrailThin
  29870.       ParticleSysBone = Engine02 JetBlackTrailThin
  29871.       ParticleSysBone = Engine03 JetBlackTrailThin
  29872.       ParticleSysBone = Engine04 JetBlackTrailThin
  29873.       ParticleSysBone = WingTip01 JetContrailThin
  29874.       ParticleSysBone = WingTip02 JetContrailThin
  29875.     End
  29876.     ConditionState = DAMAGED
  29877.       Model = AVBomber_D
  29878.       ParticleSysBone = Smoke01 JetFireLarge
  29879.       ParticleSysBone = Smoke02 JetFireLarge
  29880.       ParticleSysBone = Engine01 JetBlackTrailThin
  29881.       ParticleSysBone = Engine02 JetBlackTrailThin
  29882.       ParticleSysBone = Engine03 JetBlackTrailThin
  29883.       ParticleSysBone = Engine04 JetBlackTrailThin
  29884.       ParticleSysBone = Smoke01 JetSmokeLarge
  29885.       ParticleSysBone = Smoke02 JetSmokeLarge
  29886.     End
  29887.     ConditionState = REALLYDAMAGED
  29888.       Model = AVBomber_D
  29889.       ParticleSysBone = Smoke01 JetFireLarge
  29890.       ParticleSysBone = Smoke02 JetFireLarge
  29891.       ParticleSysBone = Engine01 JetBlackTrailThin
  29892.       ParticleSysBone = Engine02 JetBlackTrailThin
  29893.       ParticleSysBone = Engine03 JetBlackTrailThin
  29894.       ParticleSysBone = Engine04 JetBlackTrailThin
  29895.       ParticleSysBone = Smoke01 JetSmokeLarge
  29896.       ParticleSysBone = Smoke02 JetSmokeLarge
  29897.     End
  29898.     ConditionState = RUBBLE
  29899.       Model = AVBomber_D1
  29900.       ParticleSysBone = Smoke01 JetFireLarge
  29901.       ParticleSysBone = Smoke02 JetFireLarge
  29902.       ParticleSysBone = Smoke01 JetSmokeLarge
  29903.       ParticleSysBone = Smoke02 JetSmokeLarge
  29904.     End
  29905.     OkToChangeModelColor = Yes
  29906.   End
  29907.   
  29908.   Draw = W3DModelDraw ModuleTag_02
  29909.     DefaultConditionState
  29910.       Model           = AVBomber_A2U
  29911.       Animation       = AVBomber_A2K.AVBomber_A2
  29912.       AnimationMode   = MANUAL
  29913.       Flags           = START_FRAME_FIRST
  29914.     End
  29915.     ConditionState = DOOR_1_OPENING
  29916.       Animation       = AVBomber_A2K.AVBomber_A2
  29917.       AnimationMode   = ONCE
  29918.       Flags           = START_FRAME_FIRST
  29919.     End
  29920.     ConditionState = DOOR_1_CLOSING
  29921.       Animation       = AVBomber_A2K.AVBomber_A2
  29922.       AnimationMode   = ONCE_BACKWARDS
  29923.       Flags           = START_FRAME_LAST
  29924.     End
  29925.  
  29926.     ConditionState = REALLYDAMAGED
  29927.       Model           = AVBomber_A2DU
  29928.       Animation       = AVBomber_A2K.AVBomber_A2
  29929.       AnimationMode   = MANUAL
  29930.       Flags           = START_FRAME_FIRST
  29931.     End
  29932.     ConditionState = DOOR_1_OPENING REALLYDAMAGED
  29933.       Model           = AVBomber_A2DU
  29934.       Animation       = AVBomber_A2K.AVBomber_A2
  29935.       AnimationMode   = ONCE
  29936.       Flags           = START_FRAME_FIRST
  29937.     End
  29938.     ConditionState = DOOR_1_CLOSING REALLYDAMAGED
  29939.       Model           = AVBomber_A2DU
  29940.       Animation       = AVBomber_A2K.AVBomber_A2
  29941.       AnimationMode   = ONCE_BACKWARDS
  29942.       Flags           = START_FRAME_LAST
  29943.     End
  29944.   End
  29945.  
  29946.   ; ***DESIGN parameters ***
  29947.   DisplayName         = OBJECT:B52
  29948.   EditorSorting       = VEHICLE
  29949.   Side                = America
  29950.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  29951.   VisionRange         = 0.0 
  29952.   ArmorSet
  29953.     Conditions      = None
  29954.     Armor           = AirplaneArmor
  29955.     DamageFX        = TankDamageFX
  29956.   End
  29957.   CommandSet        = Command_ScriptedTransportDrops
  29958.  
  29959.   ; *** AUDIO Parameters ***
  29960.   SoundAmbient = CINE_B52AmbientLoop
  29961.   SoundAmbientRubble    = NoSound
  29962.  
  29963.   ; *** ENGINEERING Parameters ***
  29964.   RadarPriority = UNIT
  29965.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK  VEHICLE SCORE TRANSPORT AIRCRAFT IGNORED_IN_GUI
  29966.   Body = ActiveBody ModuleTag_03
  29967.     MaxHealth       = 1000.0
  29968.     InitialHealth   = 1000.0
  29969.   End
  29970.  
  29971.   ExperienceValue     = 50 50 50 50  ; Experience point value at each level
  29972.  
  29973.   ;SCRIPTED SUPPORT: These special powers are triggered directly 
  29974.   ;from the transport without creating a transport. This is done 
  29975.   ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
  29976.   ;which also prevents creating the payload transport.
  29977.   Behavior    = OCLSpecialPower ModuleTag_04
  29978.     SpecialPowerTemplate = SuperweaponDaisyCutter  ;@@KRIS@@
  29979.     OCL                  = SUPERWEAPON_DaisyCutter
  29980.     CreateLocation       = USE_OWNER_OBJECT
  29981.   End
  29982.   Behavior    = OCLSpecialPower ModuleTag_05
  29983.     SpecialPowerTemplate = SuperweaponParadropAmerica
  29984.     UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
  29985.     UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
  29986.     OCL                  = SUPERWEAPON_Paradrop1
  29987.     CreateLocation       = USE_OWNER_OBJECT
  29988.   End 
  29989.   Behavior    = OCLSpecialPower ModuleTag_06
  29990.     SpecialPowerTemplate = SuperweaponCarpetBomb
  29991.     OCL                  = SUPERWEAPON_CarpetBomb
  29992.     CreateLocation       = USE_OWNER_OBJECT
  29993.   End 
  29994.    
  29995.   Behavior = PhysicsBehavior ModuleTag_07
  29996.     Mass = 500.0
  29997.   End
  29998.  
  29999.   Behavior = DeliverPayloadAIUpdate ModuleTag_08
  30000.     DoorDelay         = 500
  30001.     MaxAttempts       = 4
  30002.     DropOffset        = X:0 Y:0 Z:-10
  30003.     DropDelay         = 300     ; time in between each item dropped (if more than one)
  30004.     PutInContainer    = AmericaParachute
  30005.     DeliveryDistance  = 150
  30006.   End
  30007.   Locomotor = SET_NORMAL CINE_B52Locomotor
  30008.  
  30009.   Behavior = TransportContain ModuleTag_09
  30010.     Slots                       = 100                     ; hey, it's a BIG transport
  30011.     ScatterNearbyOnExit         = No
  30012.     OrientLikeContainerOnExit   = Yes
  30013.     KeepContainerVelocityOnExit = Yes
  30014.     ExitPitchRate               = 30
  30015.     ExitBone                    = WeaponA01
  30016.     AllowInsideKindOf           = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE
  30017.     DoorOpenTime                = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
  30018.     NumberOfExitPaths           = 0
  30019.     DestroyRidersWhoAreNotFreeToExit = Yes
  30020.   End
  30021.     
  30022.   Behavior                          = JetSlowDeathBehavior ModuleTag_10
  30023.     DestructionDelay                = 2000 
  30024.     RollRate                        = 0.0
  30025.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  30026.     PitchRate                       = 0
  30027.     FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  30028.     FXInitialDeath                  = FX_JetBigDeathInitial
  30029.     OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
  30030.     DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
  30031.     OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
  30032.     FXSecondary                     = FX_BigPlaneDeath
  30033. ;   FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  30034. ;   OCLFinalBlowUp                  = OCL_AuroraDeathFinalBlowUp
  30035. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  30036.   End
  30037.  
  30038.   Behavior = TransitionDamageFX ModuleTag_11
  30039.     DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  30040.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  30041.   End
  30042.  
  30043.   Geometry = Box
  30044.   GeometryIsSmall = No
  30045.   GeometryMajorRadius = 60.0
  30046.   GeometryMinorRadius = 10.0
  30047.   GeometryHeight = 10.0
  30048.   Shadow = SHADOW_VOLUME
  30049.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  30050.  
  30051. End
  30052.  
  30053. ;------------------------------------------------------------------------------
  30054. ; *********************** Cinematic-only unit *********************************
  30055. Object CINE_GLAInfantryRebel
  30056.  
  30057.   ; *** ART Parameters ***
  30058.   SelectPortrait         = SURebel_L
  30059.   ButtonImage            = SURebel
  30060.  
  30061.   UpgradeCameo1 = Upgrade_GLAAPBullets
  30062.   UpgradeCameo2 = Upgrade_GLACamouflage
  30063.   ;UpgradeCameo3 = NONE
  30064.   ;UpgradeCameo4 = NONE
  30065.   ;UpgradeCameo5 = NONE
  30066.  
  30067.   Draw = W3DModelDraw ModuleTag_01
  30068.  
  30069.     OkToChangeModelColor = Yes
  30070.  
  30071.     ; this says "we don't use these condition states at all, so completely
  30072.     ; ignore them for purposes of matchmaking"... this is useful to help
  30073.     ; reduce the number of AliasConditionState clauses you must add in
  30074.     ; order to avoid ambiguity in some cases.
  30075.     IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
  30076.  
  30077.     ; ---- standing
  30078.     DefaultConditionState
  30079.       Model               = UIRGrd_SKN
  30080.       IdleAnimation       = UIRGrd_SKL.UIRGrd_STN 0 35
  30081.       IdleAnimation       = UIRGrd_SKL.UIRGrd_IDA 
  30082.       IdleAnimation       = UIRGrd_SKL.UIRGrd_IDB 
  30083.       AnimationMode       = ONCE
  30084.       WeaponFireFXBone    = PRIMARY Muzzle
  30085.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  30086.       TransitionKey       = TRANS_Standing
  30087.     End
  30088.  
  30089.     ConditionState        = REALLYDAMAGED
  30090.       IdleAnimation       = UIRGrd_SKL.UIRGrd_STB 0 35
  30091.       IdleAnimation       = UIRGrd_SKL.UIRGrd_IDC
  30092.       IdleAnimation       = UIRGrd_SKL.UIRGrd_IDD 
  30093.       AnimationMode       = ONCE
  30094.       TransitionKey       = TRANS_StandingHurt
  30095.     End
  30096.  
  30097.     ; ---- moving
  30098.     ConditionState        = MOVING
  30099.       Animation           = UIRGrd_SKL.UIRGrd_RNA 21 ; used to be 15
  30100.       AnimationMode       = LOOP
  30101.       TransitionKey       = TRANS_Walking
  30102.       ParticleSysBone     = None InfantryDustTrails
  30103.     End
  30104.     AliasConditionState   = MOVING ATTACKING
  30105.  
  30106.     ConditionState        = MOVING REALLYDAMAGED
  30107.       Animation           = UIRGrd_SKL.UIRGrd_RNB 25
  30108.       AnimationMode       = LOOP
  30109.       TransitionKey       = TRANS_WalkingHurt
  30110.       ParticleSysBone     = None InfantryDustTrails
  30111.     End
  30112.     AliasConditionState   = MOVING ATTACKING REALLYDAMAGED
  30113.     
  30114.     ; ---- dying 
  30115.     ConditionState        = DYING
  30116.       Animation           = UIRGrd_SKL.UIRGrd_DTA 
  30117.       Animation           = UIRGrd_SKL.UIRGrd_DTB 
  30118.       AnimationMode       = ONCE
  30119.       TransitionKey       = TRANS_Dying
  30120.     End
  30121.  
  30122.     TransitionState = TRANS_Dying TRANS_Flailing
  30123.       Animation = UIRGrd_SKL.UIRGrd_ADTE1
  30124.       AnimationMode = ONCE
  30125.     End
  30126.  
  30127.     ConditionState = DYING EXPLODED_FLAILING
  30128.       Animation = UIRGrd_SKL.UIRGrd_ADTE2
  30129.       AnimationMode = LOOP
  30130.       TransitionKey = TRANS_Flailing
  30131.     End
  30132.  
  30133.     ConditionState = DYING EXPLODED_BOUNCING
  30134.       Animation = UIRGrd_SKL.UIRGrd_ADTE3
  30135.       AnimationMode = ONCE
  30136.       TransitionKey = None
  30137.     End
  30138.     
  30139.     ; ---- firing
  30140.     ConditionState = USING_WEAPON_A
  30141.       Animation = UIRGrd_SKL.UIRGrd_ATA
  30142.       AnimationMode = LOOP
  30143.       TransitionKey = TRANS_Firing
  30144.     End
  30145.  
  30146.     ConditionState = USING_WEAPON_A REALLYDAMAGED
  30147.       Animation = UIRGrd_SKL.UIRGrd_ATA2
  30148.       AnimationMode = LOOP
  30149.       TransitionKey = TRANS_FiringHurt
  30150.     End
  30151.  
  30152.     TransitionState = TRANS_Standing TRANS_Firing
  30153.       Animation = UIRGrd_SKL.UIRGrd_ATAST
  30154.       AnimationMode = ONCE
  30155.     End
  30156.  
  30157.     TransitionState = TRANS_Firing TRANS_Standing
  30158.       Animation = UIRGrd_SKL.UIRGrd_ATAED
  30159.       AnimationMode = ONCE
  30160.     End
  30161.  
  30162.     TransitionState = TRANS_StandingHurt TRANS_FiringHurt
  30163.       Animation = UIRGrd_SKL.UIRGrd_ATA2ED
  30164.       AnimationMode = ONCE_BACKWARDS
  30165.     End
  30166.  
  30167.     TransitionState = TRANS_FiringHurt TRANS_StandingHurt
  30168.       Animation = UIRGrd_SKL.UIRGrd_ATA2ED
  30169.       AnimationMode = ONCE
  30170.     End
  30171.  
  30172.     ; ------- Bldg-capture
  30173.  
  30174.     ConditionState = UNPACKING
  30175.       Model             = UIRGrd_F_SKN
  30176.       Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
  30177.       AnimationMode     = ONCE
  30178.     End
  30179.     AliasConditionState = UNPACKING REALLYDAMAGED
  30180.  
  30181.     ConditionState = RAISING_FLAG
  30182.       Model             = UIRGrd_F_SKN
  30183.       Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
  30184.       AnimationMode     = ONCE
  30185.       TransitionKey     = TRANS_Raising
  30186.     End
  30187.     AliasConditionState = RAISING_FLAG REALLYDAMAGED
  30188.  
  30189.     ConditionState = PACKING
  30190.       Model             = UIRGrd_F_SKN
  30191.       Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
  30192.       AnimationMode     = ONCE_BACKWARDS
  30193.       Flags             = START_FRAME_LAST
  30194.       TransitionKey     = TRANS_Packing
  30195.     End
  30196.     AliasConditionState = PACKING REALLYDAMAGED
  30197.  
  30198.     TransitionState = TRANS_Raising TRANS_Packing
  30199.       Model             = UIRGrd_F_SKN
  30200.       Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
  30201.       AnimationMode     = ONCE_BACKWARDS
  30202.       Flags             = START_FRAME_LAST
  30203.     End
  30204.  
  30205.   End
  30206.  
  30207.   ; ***DESIGN parameters ***
  30208.   DisplayName         = OBJECT:Rebel
  30209.   Side                = GLA
  30210.   EditorSorting       = INFANTRY
  30211.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  30212.  
  30213.   WeaponSet
  30214.     Conditions = None 
  30215.     Weapon = PRIMARY GLARebelMachineGun
  30216.   End
  30217. ; sorry, no tranqs, cut for this version (srj)
  30218. ;  WeaponSet
  30219. ;    Conditions = PLAYER_UPGRADE 
  30220. ;    Weapon = PRIMARY GLARebelMachineGun
  30221. ;    Weapon = SECONDARY GLARebelTranqDartsWeapon
  30222. ;    AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  30223. ;    AutoChooseSources = SECONDARY NONE
  30224. ;  End
  30225.  
  30226.   ArmorSet
  30227.     Conditions      = None
  30228.     Armor           = HumanArmor
  30229.     DamageFX        = InfantryDamageFX
  30230.   End
  30231.   VisionRange         = 150
  30232.   ShroudClearingRange = 300
  30233.   Prerequisites
  30234.     Object = GLABarracks
  30235.   End
  30236.   BuildCost = 150
  30237.   BuildTime = 5.0          ;in seconds  
  30238.  
  30239.   ExperienceValue     = 15 15 30 40     ;Experience point value at each level
  30240.   ExperienceRequired  = 0 40 60 120     ;Experience points needed to gain each level
  30241.   IsTrainable         = Yes             ;Can gain experience
  30242.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  30243.   CommandSet          = GLAInfantryRebelCommandSet
  30244.  
  30245.   ; *** AUDIO Parameters ***
  30246.   VoiceSelect = RebelVoiceSelect
  30247.   VoiceMove = RebelVoiceMove
  30248.   VoiceGuard = RebelVoiceMove
  30249.   VoiceAttack = RebelVoiceAttack
  30250.   SoundDie = RebelVoiceDie
  30251.   SoundDieFire = DieByFireGLA
  30252.   SoundDieToxin = DieByToxinGLA
  30253.   SoundStealthOn = StealthOn
  30254.   SoundStealthOff = StealthOff
  30255.   VoiceFear = RebelVoiceFear
  30256.   VoiceTaskComplete = RebelVoiceCaptureComplete
  30257.   UnitSpecificSounds
  30258.     VoiceCreate = RebelVoiceCreate
  30259.     VoiceSubdue = RebelVoiceSubdue
  30260.     VoiceGarrison = RebelVoiceGarrison
  30261.     VoiceEnter = RebelVoiceMove
  30262.     VoiceEnterHostile = RebelVoiceMove
  30263.     VoiceGetHealed      = RebelVoiceMove
  30264.   End
  30265.  
  30266.   ; *** ENGINEERING Parameters ***
  30267.   RadarPriority = UNIT
  30268.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE 
  30269.  
  30270.   Body = ActiveBody ModuleTag_02
  30271.     MaxHealth       = 120.0
  30272.     InitialHealth   = 120.0
  30273.   End
  30274.  
  30275.   Behavior = AIUpdateInterface ModuleTag_03
  30276.     AutoAcquireEnemiesWhenIdle = Yes
  30277.   End
  30278.  
  30279.   Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
  30280.   End
  30281.  
  30282.   Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
  30283.  
  30284.   Behavior = PhysicsBehavior ModuleTag_05
  30285.     Mass = 5.0
  30286.   End
  30287.   Behavior = StealthUpdate ModuleTag_07
  30288.     StealthDelay                = 2500 ; msec
  30289.     StealthForbiddenConditions  = ATTACKING USING_ABILITY
  30290.     MoveThresholdSpeed          = 3
  30291.     InnateStealth               = No ;Requires upgrade first
  30292.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  30293.   End
  30294.  
  30295. ; sorry, no tranq or stun bullets, cut for this version (srj)
  30296. ;  Behavior = WeaponSetUpgrade ModuleTag_08
  30297. ;    TriggeredBy = Upgrade_GLATranqDarts
  30298. ;  End
  30299.   Behavior = WeaponBonusUpgrade ModuleTag_09
  30300.     TriggeredBy = Upgrade_GLAAPBullets
  30301.   End
  30302.   Behavior = StealthUpgrade ModuleTag_10
  30303.     TriggeredBy = Upgrade_GLACamouflage
  30304.   End
  30305.  
  30306.  
  30307.   Behavior = SquishCollide ModuleTag_11
  30308.     ;nothing
  30309.   End
  30310.  
  30311.  
  30312. ; --- begin Death modules ---
  30313.   Behavior = SlowDeathBehavior ModuleTag_Death01
  30314.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  30315.     SinkDelay           = 3000
  30316.     SinkRate            = 0.5     ; in Dist/Sec
  30317.     DestructionDelay    = 8000
  30318.     FX                  = INITIAL FX_GIDie
  30319.   End
  30320.   Behavior = SlowDeathBehavior ModuleTag_Death02
  30321.     DeathTypes          = NONE +CRUSHED +SPLATTED
  30322.     SinkDelay           = 3000
  30323.     SinkRate            = 0.5     ; in Dist/Sec
  30324.     DestructionDelay    = 8000
  30325.     FX                  = INITIAL FX_GIDieCrushed
  30326.   End
  30327.   Behavior = SlowDeathBehavior ModuleTag_Death03
  30328.     DeathTypes          = NONE +EXPLODED
  30329.     SinkDelay           = 3000
  30330.     SinkRate            = 0.5     ; in Dist/Sec
  30331.     DestructionDelay    = 8000
  30332.     FX                  = INITIAL FX_GIDie
  30333.     FlingForce          = 8
  30334.     FlingForceVariance  = 3
  30335.     FlingPitch          = 60
  30336.     FlingPitchVariance  = 10
  30337.   End
  30338.   Behavior = SlowDeathBehavior ModuleTag_Death04
  30339.     DeathTypes          = NONE +BURNED
  30340.     DestructionDelay    = 0
  30341.     FX                  = INITIAL FX_GIDie
  30342.     OCL                 = INITIAL OCL_FlamingInfantry
  30343.   End
  30344.   Behavior = SlowDeathBehavior ModuleTag_Death05
  30345.     DeathTypes          = NONE +POISONED
  30346.     DestructionDelay    = 0
  30347.     FX                  = INITIAL FX_GIDie
  30348.     OCL                 = INITIAL OCL_ToxicInfantry
  30349.   End
  30350.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  30351.     DeathTypes          = NONE +POISONED_BETA
  30352.     DestructionDelay    = 0
  30353.     FX                  = INITIAL FX_GIDie
  30354.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  30355.   End
  30356. ; --- end Death modules ---
  30357.  
  30358.   Behavior = PoisonedBehavior ModuleTag_16
  30359.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  30360.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  30361.   End
  30362.  
  30363.   Behavior = SpecialAbility ModuleTag_17
  30364.     SpecialPowerTemplate      = SpecialAbilityRebelCaptureBuilding
  30365.     UpdateModuleStartsAttack  = Yes
  30366.     StartsPaused              = Yes
  30367.     InitiateSound         = RebelVoiceCapture
  30368.   End
  30369.   Behavior = SpecialAbilityUpdate ModuleTag_18
  30370.     SpecialPowerTemplate  = SpecialAbilityRebelCaptureBuilding
  30371.     StartAbilityRange  = 5.0
  30372.     UnpackTime            = 3000  ; (changing this will scale anim speed)
  30373.     PreparationTime       = 10000 ; time to complete hack once prepared (changing this will scale anim speed)
  30374.     PackTime              = 2000  ; (changing this will scale anim speed)
  30375.     DoCaptureFX           = Yes
  30376.   End
  30377.  
  30378.   Behavior = UnpauseSpecialPowerUpgrade ModuleTag_19
  30379.     SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding
  30380.     TriggeredBy = Upgrade_InfantryCaptureBuilding
  30381.   End
  30382.  
  30383.  
  30384.   Geometry = CYLINDER
  30385.   GeometryMajorRadius = 1
  30386.   GeometryMinorRadius = 1
  30387.   GeometryHeight = 12.0
  30388.   GeometryIsSmall = Yes
  30389.   Shadow = SHADOW_DECAL
  30390.   ShadowSizeX = 14;
  30391.   ShadowSizeY = 14;
  30392.   ShadowTexture = ShadowI;
  30393.   BuildCompletion = APPEARS_AT_RALLY_POINT
  30394.  
  30395. End
  30396.  
  30397. ;------------------------------------------------------------------------------
  30398. ; *********************** Cinematic-only unit *********************************
  30399. ;Tunnel Fanatic ;Now called the RPG Trooper
  30400. Object CINE_GLAInfantryTunnelDefender
  30401.  
  30402.   ; *** ART Parameters ***
  30403.   SelectPortrait         = SURPG_L
  30404.   ButtonImage            = SURPG
  30405.   
  30406.   UpgradeCameo1 = Upgrade_GLAAPRockets
  30407.   ;UpgradeCameo2 = NONE
  30408.   ;UpgradeCameo3 = NONE
  30409.   ;UpgradeCameo4 = NONE
  30410.   ;UpgradeCameo5 = NONE
  30411.  
  30412.   Draw = W3DModelDraw ModuleTag_01
  30413.     OkToChangeModelColor = Yes
  30414.  
  30415.     DefaultConditionState
  30416.       Model = UITunF_SKN
  30417.       IdleAnimation = UITunF_SKL.UITunF_STA 0 20
  30418.       IdleAnimation = UITunF_SKL.UITunF_IDA 
  30419.       IdleAnimation = UITunF_SKL.UITunF_IDB 
  30420.       IdleAnimation = UITunF_SKL.UITunF_IDC 
  30421.       AnimationMode = ONCE
  30422.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  30423.       WeaponFireFXBone = PRIMARY Muzzle
  30424.       WeaponLaunchBone = PRIMARY Muzzle
  30425.     End
  30426.  
  30427.     ConditionState = MOVING
  30428.       Animation = UITunF_SKL.UITunF_WKA 18.5 ; used to be 16
  30429.       Animation = UITunF_SKL.UITunF_WKB 36 ; used to be 30
  30430.       Animation = UITunF_SKL.UITunF_WKC 40 ; used to be 30
  30431.       Animation = UITunF_SKL.UITunF_RNA 25 ; used to be 15
  30432.       Animation = UITunF_SKL.UITunF_RNB 38 ; used to be 25   
  30433.       AnimationMode = LOOP
  30434.       ParticleSysBone   = None InfantryDustTrails
  30435.     End
  30436.  
  30437.     ConditionState = DYING
  30438.       Animation = UITunF_SKL.UITunF_DTA 
  30439.       Animation = UITunF_SKL.UITunF_DTB 
  30440.       AnimationMode = ONCE
  30441.       TransitionKey = TRANS_Dying
  30442.     End
  30443.  
  30444.     TransitionState = TRANS_Dying TRANS_Flailing
  30445.       Animation = UITunF_SKL.UITunF_ADTA1
  30446.       Animation = UITunF_SKL.UITunF_ADTE1
  30447.       Animation = UITunF_SKL.UITunF_ADTF1
  30448.       AnimationMode = ONCE
  30449.     End
  30450.  
  30451.     ConditionState = DYING EXPLODED_FLAILING
  30452.       Animation = UITunF_SKL.UITunF_ADTA2
  30453.       Animation = UITunF_SKL.UITunF_ADTE2
  30454.       Animation = UITunF_SKL.UITunF_ADTF2
  30455.       AnimationMode = LOOP
  30456.       TransitionKey = TRANS_Flailing
  30457.     End
  30458.  
  30459.     ConditionState = DYING EXPLODED_BOUNCING
  30460.       Animation = UITunF_SKL.UITunF_ADTA3
  30461.       Animation = UITunF_SKL.UITunF_ADTE3
  30462.       Animation = UITunF_SKL.UITunF_ADTF3
  30463.       AnimationMode = ONCE
  30464.       TransitionKey = None
  30465.     End
  30466.  
  30467.     ConditionState = FIRING_A 
  30468.       Animation = UITunF_SKL.UITunF_ATA 
  30469.       AnimationMode = ONCE
  30470.       TransitionKey = TRANS_START_FIRING
  30471.     End
  30472.     ConditionState = BETWEEN_FIRING_SHOTS_A
  30473.       Animation = UITunF_SKL.UITunF_STA
  30474.       AnimationMode = ONCE
  30475.       ; this is basically a trick: this guy has a nontrivial animation for firing,
  30476.       ; and a long recycle time between shots. we want him to finish his fire animation
  30477.       ; (unless he's ordered to do something else), so this is just a handy trick that
  30478.       ; says, "if the previous state had this transition key, allow it to finish before
  30479.       ; switching to us, if possible".
  30480.       WaitForStateToFinishIfPossible = TRANS_START_FIRING
  30481.     End
  30482.     AliasConditionState = RELOADING_A
  30483.  
  30484.     ConditionState = SPECIAL_CHEERING
  30485.       Animation = UITUNF_SKL.UITUNF_CHA
  30486.       AnimationMode = LOOP
  30487.     End
  30488.  
  30489.   End
  30490.  
  30491.   ; ***DESIGN parameters ***
  30492.   DisplayName      = OBJECT:TunnelDefender
  30493.   Side = GLA
  30494.   EditorSorting = INFANTRY
  30495.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  30496.   WeaponSet
  30497.     Conditions = None 
  30498.     Weapon = PRIMARY TunnelDefenderRocketWeapon
  30499.   End
  30500.   ArmorSet
  30501.     Conditions      = None
  30502.     Armor           = HumanArmor
  30503.     DamageFX        = InfantryDamageFX
  30504.   End
  30505.   VisionRange = 150
  30506.   ShroudClearingRange = 400
  30507.  ; Prerequisites
  30508.  ;   Object = GLATunnelNetwork
  30509.  ; End
  30510.   BuildCost = 300
  30511.   BuildTime = 5.0          ;in seconds  
  30512.  
  30513.   ExperienceValue = 20 20 40 60    ;Experience point value at each level
  30514.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  30515.   IsTrainable = Yes             ;Can gain experience
  30516.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  30517.   CommandSet      = GLAInfantryTunnelDefenderCommandSet
  30518.  
  30519.   ; *** AUDIO Parameters ***
  30520.   VoiceSelect = RPGTrooperVoiceSelect
  30521.   VoiceMove = RPGTrooperVoiceMove
  30522.   VoiceGuard = RPGTrooperVoiceMove
  30523.   VoiceAttack = RPGTrooperVoiceAttack
  30524.   VoiceAttackAir = RPGTrooperVoiceAttack
  30525.   SoundDie = RPGTrooperVoiceDie
  30526.   SoundDieFire = DieByFireGLA
  30527.   SoundDieToxin = DieByToxinGLA
  30528.   VoiceFear = RPGTrooperVoiceFear
  30529.   UnitSpecificSounds
  30530.     VoiceCreate          = RPGTrooperVoiceCreate
  30531.     VoiceGarrison = RPGTrooperVoiceGarrison
  30532.     VoiceEnter = RPGTrooperVoiceMove
  30533.     VoiceEnterHostile = RPGTrooperVoiceMove
  30534.     VoiceGetHealed      = RPGTrooperVoiceMove
  30535.   End
  30536.  
  30537.  
  30538.   ; *** ENGINEERING Parameters ***
  30539.   RadarPriority = UNIT
  30540.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
  30541.  
  30542.   Body = ActiveBody ModuleTag_02
  30543.     MaxHealth       = 100.0
  30544.     InitialHealth   = 100.0
  30545.   End
  30546.  
  30547.   Behavior = AIUpdateInterface ModuleTag_03
  30548.     AutoAcquireEnemiesWhenIdle = Yes
  30549.   End
  30550.   Locomotor = SET_NORMAL CINE_MissileDefenderLocomotor
  30551.  
  30552.   Behavior = PhysicsBehavior ModuleTag_04
  30553.     Mass = 5.0
  30554.   End
  30555.  
  30556.   Behavior = SquishCollide ModuleTag_06
  30557.     ;nothing
  30558.   End
  30559.  
  30560. ; --- begin Death modules ---
  30561.   Behavior = SlowDeathBehavior ModuleTag_Death01
  30562.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  30563.     SinkDelay           = 3000
  30564.     SinkRate            = 0.5     ; in Dist/Sec
  30565.     DestructionDelay    = 8000
  30566.     FX                  = INITIAL FX_GIDie
  30567.   End
  30568.   Behavior = SlowDeathBehavior ModuleTag_Death02
  30569.     DeathTypes          = NONE +CRUSHED +SPLATTED
  30570.     SinkDelay           = 3000
  30571.     SinkRate            = 0.5     ; in Dist/Sec
  30572.     DestructionDelay    = 8000
  30573.     FX                  = INITIAL FX_GIDieCrushed
  30574.   End
  30575.   Behavior = SlowDeathBehavior ModuleTag_Death03
  30576.     DeathTypes          = NONE +EXPLODED
  30577.     SinkDelay           = 3000
  30578.     SinkRate            = 0.5     ; in Dist/Sec
  30579.     DestructionDelay    = 8000
  30580.     FX                  = INITIAL FX_GIDie
  30581.     FlingForce          = 8
  30582.     FlingForceVariance  = 3
  30583.     FlingPitch          = 60
  30584.     FlingPitchVariance  = 10
  30585.   End
  30586.   Behavior = SlowDeathBehavior ModuleTag_Death04
  30587.     DeathTypes          = NONE +BURNED
  30588.     DestructionDelay    = 0
  30589.     FX                  = INITIAL FX_GIDie
  30590.     OCL                 = INITIAL OCL_FlamingInfantry
  30591.   End
  30592.   Behavior = SlowDeathBehavior ModuleTag_Death05
  30593.     DeathTypes          = NONE +POISONED
  30594.     DestructionDelay    = 0
  30595.     FX                  = INITIAL FX_GIDie
  30596.     OCL                 = INITIAL OCL_ToxicInfantry
  30597.   End
  30598. ; --- end Death modules ---
  30599.  
  30600.   Behavior = PoisonedBehavior ModuleTag_12
  30601.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  30602.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  30603.   End
  30604.  
  30605.   Geometry = CYLINDER
  30606.   GeometryMajorRadius = 10.0
  30607.   GeometryMinorRadius = 10.0
  30608.   GeometryHeight = 12.0
  30609.   GeometryIsSmall = Yes
  30610.   Shadow = SHADOW_DECAL
  30611.   ShadowSizeX = 14;
  30612.   ShadowSizeY = 14;
  30613.   ShadowTexture = ShadowI;
  30614.   BuildCompletion = APPEARS_AT_RALLY_POINT
  30615.  
  30616. End
  30617.  
  30618. ;------------------------------------------------------------------------------
  30619. ; ************************* Cinematic-only unit *******************************
  30620. ;------------------------------------------------------------------------------
  30621. ; this unit is never really "built"; building one triggers the random building of
  30622. ; one of the other chassis. If you want a *specific* chassis, choose it explicitly;
  30623. ; if you want a chassis at random, specify this.
  30624. Object CINE_GLAVehicleTechnical
  30625.  
  30626.   ; *** ART Parameters ***
  30627.  
  30628.   Draw = W3DModelDraw ModuleTag_01
  30629.     DefaultConditionState
  30630.       ; give it a model so it'll show up in WB
  30631.       Model = UVTechTrck
  30632.     End
  30633.   End
  30634.  
  30635.   ; set cost and time fields here or else they won't work
  30636.   BuildCost       = 500
  30637.   BuildTime       = 5.0          ;in seconds    
  30638.  
  30639.   ; Needed to get the Veterancy Overlays on top of the Technical with his build variations.
  30640.   ;------------------------------------------------------------
  30641.   Behavior = VeterancyGainCreate ModuleTag_03
  30642.     StartingLevel = VETERAN
  30643.     ScienceRequired = SCIENCE_TechnicalTraining
  30644.   End
  30645.  
  30646.   Side = GLA
  30647.   EditorSorting = VEHICLE
  30648.   BuildVariations = CINE_GLAVehicleTechnicalChassisOne CINE_GLAVehicleTechnicalChassisTwo CINE_GLAVehicleTechnicalChassisThree
  30649.  
  30650.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE TRANSPORT
  30651.  
  30652. End
  30653.  
  30654. ;------------------------------------------------------------------------------
  30655. ; ************************* Cinematic-only unit *******************************
  30656. Object CINE_GLAVehicleTechnicalChassisOne
  30657.  
  30658.   ; *** ART Parameters ***
  30659.   SelectPortrait         = SUTechnical_L 
  30660.   ButtonImage            = SUTechnical
  30661.  
  30662.   UpgradeCameo1 = Upgrade_GLAAPBullets
  30663.   UpgradeCameo2 = Upgrade_GLAJunkRepair
  30664.   ;UpgradeCameo3 = NONE
  30665.   ;UpgradeCameo4 = NONE
  30666.   ;UpgradeCameo5 = NONE
  30667.  
  30668.   Draw = W3DTruckDraw ModuleTag_01
  30669.  
  30670.     ExtraPublicBone = Dum_Turret 
  30671.  
  30672.     DefaultConditionState
  30673.       Model         = UVTechTrck
  30674.     End
  30675.     ConditionState  = REALLYDAMAGED
  30676.       Model         = UVTechTrck_d
  30677.     End
  30678.     ConditionState  = RUBBLE
  30679.       Model         = UVTechTrck_d
  30680.     End
  30681.  
  30682.     OkToChangeModelColor        = Yes
  30683.     TrackMarks                  = EXTireTrack.tga
  30684.     Dust                        = TechnicalDust
  30685.     DirtSpray                   = RocketBuggyDirtSpray
  30686.     PowerslideSpray             = RocketBuggyDirtPowerSlide
  30687.  
  30688.     ; These parameters are only used if the model has a separate suspension, 
  30689.     ; and the locomotor has HasSuspension = Yes.
  30690.     LeftFrontTireBone           = Tire01
  30691.     RightFrontTireBone          = Tire02
  30692.     LeftRearTireBone            = Tire03
  30693.     RightRearTireBone           = Tire04
  30694.     TireRotationMultiplier      = 0.2        ; this * speed = rotation.
  30695.     PowerslideRotationAddition  = 2.5    ; This speed is added to the rotation speed when powersliding.
  30696.   End
  30697.  
  30698.   Draw = W3DModelDraw ModuleTag_02
  30699.  
  30700.     OkToChangeModelColor        = Yes
  30701.     AttachToBoneInAnotherModule = Dum_Turret
  30702.  
  30703.     ; ------------------ basic technical ------------------------
  30704.     DefaultConditionState
  30705.       Model = UITech_SKN
  30706.       Turret = Dum-TurManMVR
  30707.       TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
  30708.       HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
  30709.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  30710.       IdleAnimation = UITech_SKL.UITech_IDA
  30711.       IdleAnimation = UITech_SKL.UITech_IDB
  30712.       AnimationMode = ONCE
  30713.       ShowSubObject = 20Cal
  30714.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  30715.       WeaponFireFXBone = PRIMARY Muzzle01
  30716.     End
  30717.  
  30718.     ConditionState = RUBBLE MOVING TURRET_ROTATE
  30719.       Animation = None
  30720.       HideSubObject = UITech-SKN
  30721.       ShowSubObject = 20Cal
  30722.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  30723.       WeaponFireFXBone = PRIMARY Muzzle01
  30724.     End
  30725.  
  30726.     ConditionState = MOVING
  30727.       Animation = UITech_SKL.UITech_MVB
  30728.       AnimationMode = LOOP
  30729.       ShowSubObject = 20Cal
  30730.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  30731.       WeaponFireFXBone = PRIMARY Muzzle01
  30732.     End
  30733.  
  30734.     ConditionState = TURRET_ROTATE
  30735.       Animation = UITech_SKL.UITech_TNA
  30736.       AnimationMode = LOOP
  30737.       ShowSubObject = 20Cal
  30738.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  30739.       WeaponFireFXBone = PRIMARY Muzzle01
  30740.     End
  30741.     AliasConditionState = TURRET_ROTATE MOVING
  30742.     AliasConditionState = TURRET_ROTATE FIRING_A
  30743.     AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  30744.     AliasConditionState = TURRET_ROTATE RELOADING_A
  30745.     AliasConditionState = TURRET_ROTATE MOVING FIRING_A
  30746.     AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  30747.     AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
  30748.  
  30749.     ConditionState = FIRING_A 
  30750.       Animation = UITech_SKL.UITech_ATA
  30751.       AnimationMode = LOOP
  30752.       ShowSubObject = 20Cal
  30753.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  30754.       WeaponFireFXBone = PRIMARY Muzzle01
  30755.     End
  30756.  
  30757.     ; AliasConditionState is a new keyword that says,
  30758.     ; "give me another ConditionState exactly like the previous
  30759.     ; one, except with different conditions". Useful when you
  30760.     ; have several states that are the same with only different condition bits.
  30761.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  30762.     AliasConditionState = RELOADING_A
  30763.  
  30764.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  30765.     AliasConditionState = MOVING FIRING_A
  30766.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  30767.     AliasConditionState = MOVING RELOADING_A
  30768.  
  30769.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
  30770.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE
  30771.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  30772.       IdleAnimation = UITech_SKL.UITech_IDA
  30773.       IdleAnimation = UITech_SKL.UITech_IDB
  30774.       AnimationMode = ONCE
  30775.       ShowSubObject = 50Cal
  30776.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  30777.       WeaponFireFXBone = PRIMARY Muzzle02
  30778.       WeaponLaunchBone = PRIMARY Muzzle02
  30779.     End
  30780.  
  30781.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
  30782.       Animation = None
  30783.       HideSubObject = UITech-SKN
  30784.       ShowSubObject = 50Cal
  30785.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  30786.       WeaponFireFXBone = PRIMARY Muzzle02
  30787.       WeaponLaunchBone = PRIMARY Muzzle02
  30788.     End
  30789.  
  30790.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
  30791.       Animation = UITech_SKL.UITech_MVB
  30792.       AnimationMode = LOOP
  30793.       ShowSubObject = 50Cal
  30794.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  30795.       WeaponFireFXBone = PRIMARY Muzzle02
  30796.       WeaponLaunchBone = PRIMARY Muzzle02
  30797.     End
  30798.  
  30799.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
  30800.       Animation = UITech_SKL.UITech_TNA
  30801.       AnimationMode = LOOP
  30802.       ShowSubObject = 50Cal
  30803.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  30804.       WeaponFireFXBone = PRIMARY Muzzle02
  30805.       WeaponLaunchBone = PRIMARY Muzzle02
  30806.     End
  30807.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
  30808.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
  30809.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  30810.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
  30811.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
  30812.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  30813.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
  30814.  
  30815.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A 
  30816.       Animation = UITech_SKL.UITech_ATA
  30817.       AnimationMode = LOOP
  30818.       ShowSubObject = 50Cal
  30819.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  30820.       WeaponFireFXBone = PRIMARY Muzzle02
  30821.       WeaponLaunchBone = PRIMARY Muzzle02
  30822.     End
  30823.  
  30824.     ; AliasConditionState is a new keyword that says,
  30825.     ; "give me another ConditionState exactly like the previous
  30826.     ; one, except with different conditions". Useful when you
  30827.     ; have several states that are the same with only different condition bits.
  30828.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
  30829.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
  30830.  
  30831.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  30832.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
  30833.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
  30834.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
  30835.  
  30836.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
  30837.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO
  30838.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  30839.       IdleAnimation = UITech_SKL.UITech_IDA
  30840.       IdleAnimation = UITech_SKL.UITech_IDB
  30841.       AnimationMode = ONCE
  30842.       ShowSubObject = RPG
  30843.       WeaponFireFXBone = PRIMARY Muzzle03
  30844.       WeaponLaunchBone = PRIMARY Muzzle03
  30845.     End
  30846.  
  30847.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
  30848.       Animation = None
  30849.       HideSubObject = UITech-SKN
  30850.       ShowSubObject = RPG
  30851.       WeaponFireFXBone = PRIMARY Muzzle03
  30852.       WeaponLaunchBone = PRIMARY Muzzle03
  30853.     End
  30854.  
  30855.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
  30856.       Animation = UITech_SKL.UITech_MVB
  30857.       AnimationMode = LOOP
  30858.       ShowSubObject = RPG
  30859.       WeaponFireFXBone = PRIMARY Muzzle03
  30860.       WeaponLaunchBone = PRIMARY Muzzle03
  30861.     End
  30862.  
  30863.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
  30864.       Animation = UITech_SKL.UITech_TNA
  30865.       AnimationMode = LOOP
  30866.       ShowSubObject = RPG
  30867.       WeaponFireFXBone = PRIMARY Muzzle03
  30868.       WeaponLaunchBone = PRIMARY Muzzle03
  30869.     End
  30870.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
  30871.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
  30872.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  30873.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
  30874.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
  30875.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  30876.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
  30877.  
  30878.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A 
  30879.       Animation = UITech_SKL.UITech_ATA
  30880.       AnimationMode = LOOP
  30881.       ShowSubObject = RPG
  30882.       WeaponFireFXBone = PRIMARY Muzzle03
  30883.       WeaponLaunchBone = PRIMARY Muzzle03
  30884.     End
  30885.  
  30886.     ; AliasConditionState is a new keyword that says,
  30887.     ; "give me another ConditionState exactly like the previous
  30888.     ; one, except with different conditions". Useful when you
  30889.     ; have several states that are the same with only different condition bits.
  30890.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
  30891.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
  30892.  
  30893.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  30894.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
  30895.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
  30896.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
  30897.  
  30898.   End
  30899.  
  30900.   ; ***DESIGN parameters ***
  30901.   DisplayName         = OBJECT:Technical
  30902.   Side                = GLA
  30903.   EditorSorting       = VEHICLE
  30904.   TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  30905.  
  30906.   WeaponSet
  30907.     Conditions = None 
  30908.     Weapon = PRIMARY TechnicalMachineGunWeapon
  30909.   End
  30910.   WeaponSet
  30911.     Conditions = CRATEUPGRADE_ONE 
  30912.     Weapon = PRIMARY TechnicalCannonWeapon
  30913.   End
  30914.   WeaponSet
  30915.     Conditions = CRATEUPGRADE_TWO 
  30916.     Weapon = PRIMARY TechnicalRPGWeapon
  30917.   End
  30918.   ArmorSet
  30919.     Conditions      = None
  30920.     Armor           = TruckArmor
  30921.     DamageFX        = TruckDamageFX
  30922.   End
  30923.   ;update cost and time fields in Object GLAVehicleTechnical, or else they won't work
  30924.   ;BuildCost            = 300
  30925.   ;BuildTime            = 5.0          ;in seconds    
  30926.   VisionRange           = 100
  30927.   ShroudClearingRange   = 300
  30928.   Prerequisites
  30929.     Object = GLAArmsDealer
  30930.   End
  30931.  
  30932.   ExperienceValue         = 25 25 50 100    ;Experience point value at each level
  30933.   ExperienceRequired      = 0 50 75 150  ;Experience points needed to gain each level
  30934.   IsTrainable             = Yes             ;Can gain experience
  30935.   CrusherLevel            = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  30936.   CrushableLevel          = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  30937.   CommandSet              = GLAVehicleTechnicalCommandSet
  30938.  
  30939.   ; *** AUDIO Parameters ***
  30940.   VoiceSelect = TechnicalVoiceSelect
  30941.   VoiceMove = TechnicalVoiceMove
  30942.   VoiceGuard = TechnicalVoiceMove
  30943.   VoiceAttack = TechnicalVoiceAttack
  30944.   SoundMoveStart = TechnicalMoveStart
  30945.   SoundMoveStartDamaged = TechnicalMoveStart
  30946.   SoundDie = TechnicalVoiceDie
  30947.   SoundEnter = HumveeEnter
  30948.   SoundExit = HumveeExit
  30949.  
  30950.   UnitSpecificSounds
  30951.   ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  30952.     VoiceCreate          = TechnicalVoiceCreate
  30953.     TurretMoveStart = NoSound
  30954.     TurretMoveLoop = TurretMoveLoop
  30955.     TruckLandingSound = RocketBuggyLand
  30956.     TruckPowerslideSound = RocketBuggyPowerslide
  30957.     VoiceCrush      = TechnicalVoiceCrush
  30958.     VoiceUnload     = TechnicalVoiceUnload
  30959.     VoiceEnter = TechnicalVoiceMove
  30960.   End
  30961.  
  30962.   ; *** ENGINEERING Parameters ***
  30963.   RadarPriority = UNIT
  30964.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE TRANSPORT
  30965.  
  30966.   Behavior = VeterancyGainCreate ModuleTag_03
  30967.     StartingLevel = VETERAN
  30968.     ScienceRequired = SCIENCE_TechnicalTraining
  30969.   End
  30970.  
  30971.   Body = ActiveBody ModuleTag_04
  30972.     MaxHealth       = 180
  30973.     InitialHealth   = 180
  30974.   End
  30975.   Behavior = AIUpdateInterface ModuleTag_05
  30976.     Turret
  30977.       TurretTurnRate = 240       ; turn rate, in degrees per sec
  30978.       NaturalTurretAngle = 0
  30979.       MinIdleScanAngle = 30      ; in degrees off the natural turret angle
  30980.       MaxIdleScanAngle = 60      ; in degrees off the natural turret angle
  30981.       MinIdleScanInterval = 5000 ; in milliseconds
  30982.       MaxIdleScanInterval = 10000 ; in milliseconds
  30983.       ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
  30984.     End
  30985.     AutoAcquireEnemiesWhenIdle = Yes
  30986.   End
  30987.   Locomotor = SET_NORMAL CINE_TechnicalLocomotor
  30988.   Behavior = PhysicsBehavior ModuleTag_06
  30989.     Mass = 40.0
  30990.   End
  30991.   Behavior = AutoHealBehavior ModuleTag_07
  30992.     HealingAmount = 2
  30993.     HealingDelay = 1000 ; msec
  30994.     TriggeredBy = Upgrade_GLAJunkRepair
  30995.   End
  30996.  
  30997.   Behavior = FlammableUpdate ModuleTag_09
  30998.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  30999.     AflameDamageAmount = 3       ; taking this much damage...
  31000.     AflameDamageDelay = 500       ; this often.
  31001.   End
  31002.  
  31003.   Behavior                 = TransitionDamageFX ModuleTag_10
  31004.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  31005.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  31006.   End
  31007.  
  31008.   Behavior = DestroyDie ModuleTag_11
  31009.     DeathTypes = NONE +CRUSHED +SPLATTED
  31010.   End
  31011.  
  31012.   ; A crushing defeat
  31013.   Behavior = FXListDie ModuleTag_12
  31014.     DeathTypes = NONE +CRUSHED +SPLATTED
  31015.     DeathFX = FX_CarCrush
  31016.   End
  31017.   Behavior = CreateObjectDie ModuleTag_13
  31018.     DeathTypes = NONE +CRUSHED +SPLATTED
  31019.     CreationList = OCL_CrusaderTank_CrushEffect
  31020.   End
  31021.   Behavior = CreateCrateDie ModuleTag_14
  31022.     CrateData = SalvageCrateData
  31023.     ;CrateData = EliteTankCrateData
  31024.     ;CrateData = HeroicTankCrateData
  31025.   End
  31026.  
  31027.   Behavior = SlowDeathBehavior ModuleTag_15
  31028.     DeathTypes = ALL -CRUSHED -SPLATTED
  31029.     DestructionDelay = 500
  31030.     DestructionDelayVariance = 1500
  31031.     OCL = INITIAL OCL_TechnicalAirDeathStart
  31032.     FX = INITIAL FX_RocketBuggyAirDeathGroundPart
  31033.     OCL = FINAL OCL_RocketBuggyAirDeath
  31034.     FX = FINAL FX_RocketBuggyAirDeathAirPart    ; This happens in the air
  31035.   End
  31036.  
  31037.   Behavior = TransportContain ModuleTag_16
  31038.     Slots = 5
  31039.     AllowInsideKindOf   = INFANTRY
  31040.     DamagePercentToUnits = 10%
  31041.     GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting
  31042.    End
  31043.  
  31044.   Behavior = WeaponBonusUpgrade ModuleTag_17 ; Not a full weapon set switch, just a number tweak reflected in a weapon. 
  31045.     TriggeredBy = Upgrade_GLAAPBullets
  31046.   End 
  31047.  
  31048.   Geometry = BOX
  31049.   GeometryMajorRadius = 18.0
  31050.   GeometryMinorRadius = 9.0
  31051.   GeometryHeight = 7.5     
  31052.   GeometryIsSmall = No    
  31053.   Shadow = SHADOW_VOLUME
  31054.  
  31055. End
  31056.  
  31057. ;------------------------------------------------------------------------------
  31058. ; ************************* Cinematic-only unit *******************************
  31059. ObjectReskin CINE_GLAVehicleTechnicalChassisTwo CINE_GLAVehicleTechnicalChassisOne
  31060.  
  31061.   ; *** ART Parameters ***
  31062.   Draw = W3DTruckDraw ModuleTag_01
  31063.  
  31064.     ExtraPublicBone = Dum_Turret 
  31065.  
  31066.     DefaultConditionState
  31067.       Model = UVTechVan
  31068.     End
  31069.  
  31070.     ConditionState = REALLYDAMAGED
  31071.       Model = UVTechVan_d
  31072.     End
  31073.     ConditionState = RUBBLE
  31074.       Model = UVTechVan_d
  31075.     End
  31076.  
  31077.     OkToChangeModelColor = Yes
  31078.     TrackMarks = EXTireTrack.tga
  31079.     Dust = TechnicalDust
  31080.  
  31081.     ;DirtSpray = RocketBuggyDirtSpray
  31082.     PowerslideSpray = RocketBuggyDirtPowerSlide
  31083.  
  31084.     ; These parameters are only used if the model has a separate suspension, 
  31085.     ; and the locomotor has HasSuspension = Yes.
  31086.     LeftFrontTireBone = Tire01
  31087.     RightFrontTireBone = Tire02
  31088.     LeftRearTireBone = Tire03
  31089.     RightRearTireBone = Tire04
  31090.     TireRotationMultiplier = 0.2        ; this * speed = rotation.
  31091.     PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
  31092.   End
  31093.  
  31094.   Draw = W3DModelDraw ModuleTag_02
  31095.     OkToChangeModelColor = Yes
  31096.     AttachToBoneInAnotherModule = Dum_Turret
  31097.  
  31098.     ; ------------------ basic technical ------------------------
  31099.     DefaultConditionState
  31100.       Model = UITech_SKN
  31101.       Turret = Dum-TurManMVR
  31102.       TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
  31103.       HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
  31104.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  31105.       IdleAnimation = UITech_SKL.UITech_IDA
  31106.       IdleAnimation = UITech_SKL.UITech_IDB
  31107.       AnimationMode = ONCE
  31108.       ShowSubObject = 20Cal
  31109.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  31110.       WeaponFireFXBone = PRIMARY Muzzle01
  31111.     End
  31112.  
  31113.     ConditionState = RUBBLE MOVING TURRET_ROTATE
  31114.       Animation = None
  31115.       HideSubObject = UITech-SKN
  31116.       ShowSubObject = 20Cal
  31117.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  31118.       WeaponFireFXBone = PRIMARY Muzzle01
  31119.     End
  31120.  
  31121.     ConditionState = MOVING
  31122.       Animation = UITech_SKL.UITech_MVB
  31123.       AnimationMode = LOOP
  31124.       ShowSubObject = 20Cal
  31125.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  31126.       WeaponFireFXBone = PRIMARY Muzzle01
  31127.     End
  31128.  
  31129.     ConditionState = TURRET_ROTATE
  31130.       Animation = UITech_SKL.UITech_TNA
  31131.       AnimationMode = LOOP
  31132.       ShowSubObject = 20Cal
  31133.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  31134.       WeaponFireFXBone = PRIMARY Muzzle01
  31135.     End
  31136.     AliasConditionState = TURRET_ROTATE MOVING
  31137.     AliasConditionState = TURRET_ROTATE FIRING_A
  31138.     AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  31139.     AliasConditionState = TURRET_ROTATE RELOADING_A
  31140.     AliasConditionState = TURRET_ROTATE MOVING FIRING_A
  31141.     AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  31142.     AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
  31143.  
  31144.     ConditionState = FIRING_A 
  31145.       Animation = UITech_SKL.UITech_ATA
  31146.       AnimationMode = LOOP
  31147.       ShowSubObject = 20Cal
  31148.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  31149.       WeaponFireFXBone = PRIMARY Muzzle01
  31150.     End
  31151.  
  31152.     ; AliasConditionState is a new keyword that says,
  31153.     ; "give me another ConditionState exactly like the previous
  31154.     ; one, except with different conditions". Useful when you
  31155.     ; have several states that are the same with only different condition bits.
  31156.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  31157.     AliasConditionState = RELOADING_A
  31158.  
  31159.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  31160.     AliasConditionState = MOVING FIRING_A
  31161.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  31162.     AliasConditionState = MOVING RELOADING_A
  31163.  
  31164.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
  31165.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE
  31166.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  31167.       IdleAnimation = UITech_SKL.UITech_IDA
  31168.       IdleAnimation = UITech_SKL.UITech_IDB
  31169.       AnimationMode = ONCE
  31170.       ShowSubObject = 50Cal
  31171.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  31172.       WeaponFireFXBone = PRIMARY Muzzle02
  31173.       WeaponLaunchBone = PRIMARY Muzzle02
  31174.     End
  31175.  
  31176.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
  31177.       Animation = None
  31178.       HideSubObject = UITech-SKN
  31179.       ShowSubObject = 50Cal
  31180.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  31181.       WeaponFireFXBone = PRIMARY Muzzle02
  31182.       WeaponLaunchBone = PRIMARY Muzzle02
  31183.     End
  31184.  
  31185.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
  31186.       Animation = UITech_SKL.UITech_MVB
  31187.       AnimationMode = LOOP
  31188.       ShowSubObject = 50Cal
  31189.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  31190.       WeaponFireFXBone = PRIMARY Muzzle02
  31191.       WeaponLaunchBone = PRIMARY Muzzle02
  31192.     End
  31193.  
  31194.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
  31195.       Animation = UITech_SKL.UITech_TNA
  31196.       AnimationMode = LOOP
  31197.       ShowSubObject = 50Cal
  31198.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  31199.       WeaponFireFXBone = PRIMARY Muzzle02
  31200.       WeaponLaunchBone = PRIMARY Muzzle02
  31201.     End
  31202.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
  31203.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
  31204.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  31205.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
  31206.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING FIRING_A
  31207.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  31208.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING RELOADING_A
  31209.  
  31210.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A
  31211.       Animation = UITech_SKL.UITech_ATA
  31212.       AnimationMode = LOOP
  31213.       ShowSubObject = 50Cal
  31214.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  31215.       WeaponFireFXBone = PRIMARY Muzzle02
  31216.       WeaponLaunchBone = PRIMARY Muzzle02
  31217.     End
  31218.  
  31219.     ; AliasConditionState is a new keyword that says,
  31220.     ; "give me another ConditionState exactly like the previous
  31221.     ; one, except with different conditions". Useful when you
  31222.     ; have several states that are the same with only different condition bits.
  31223.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
  31224.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
  31225.  
  31226.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  31227.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
  31228.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
  31229.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
  31230.  
  31231.  
  31232.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
  31233.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO
  31234.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  31235.       IdleAnimation = UITech_SKL.UITech_IDA
  31236.       IdleAnimation = UITech_SKL.UITech_IDB
  31237.       AnimationMode = ONCE
  31238.       ShowSubObject = RPG
  31239.       WeaponFireFXBone = PRIMARY Muzzle03
  31240.       WeaponLaunchBone = PRIMARY Muzzle03
  31241.     End
  31242.  
  31243.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
  31244.       Animation = None
  31245.       HideSubObject = UITech-SKN
  31246.       ShowSubObject = RPG
  31247.       WeaponFireFXBone = PRIMARY Muzzle03
  31248.       WeaponLaunchBone = PRIMARY Muzzle03
  31249.     End
  31250.  
  31251.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
  31252.       Animation = UITech_SKL.UITech_MVB
  31253.       AnimationMode = LOOP
  31254.       ShowSubObject = RPG
  31255.       WeaponFireFXBone = PRIMARY Muzzle03
  31256.       WeaponLaunchBone = PRIMARY Muzzle03
  31257.     End
  31258.  
  31259.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
  31260.       Animation = UITech_SKL.UITech_TNA
  31261.       AnimationMode = LOOP
  31262.       ShowSubObject = RPG
  31263.       WeaponFireFXBone = PRIMARY Muzzle03
  31264.       WeaponLaunchBone = PRIMARY Muzzle03
  31265.     End
  31266.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
  31267.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
  31268.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  31269.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
  31270.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING FIRING_A
  31271.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  31272.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING RELOADING_A
  31273.  
  31274.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A
  31275.       Animation = UITech_SKL.UITech_ATA
  31276.       AnimationMode = LOOP
  31277.       ShowSubObject = RPG
  31278.       WeaponFireFXBone = PRIMARY Muzzle03
  31279.       WeaponLaunchBone = PRIMARY Muzzle03
  31280.     End
  31281.  
  31282.     ; AliasConditionState is a new keyword that says,
  31283.     ; "give me another ConditionState exactly like the previous
  31284.     ; one, except with different conditions". Useful when you
  31285.     ; have several states that are the same with only different condition bits.
  31286.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
  31287.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
  31288.  
  31289.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  31290.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
  31291.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
  31292.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
  31293.  
  31294.   End 
  31295.  
  31296.   Geometry = BOX
  31297.   GeometryMajorRadius = 16.0
  31298.   GeometryMinorRadius = 8.0
  31299.   GeometryHeight = 7.5     
  31300.   GeometryIsSmall = Yes    
  31301.  
  31302. End
  31303.  
  31304. ;------------------------------------------------------------------------------
  31305. ; ************************* Cinematic-only unit *******************************
  31306. ObjectReskin CINE_GLAVehicleTechnicalChassisThree CINE_GLAVehicleTechnicalChassisOne
  31307.  
  31308.   ; *** ART Parameters ***
  31309.   Draw = W3DTruckDraw ModuleTag_01
  31310.  
  31311.     ExtraPublicBone = Dum_Turret 
  31312.  
  31313.     DefaultConditionState
  31314.       Model = UVTechJeep
  31315.     End
  31316.  
  31317.     ConditionState = REALLYDAMAGED
  31318.       Model = UVTechJeep_d
  31319.     End
  31320.     ConditionState = RUBBLE
  31321.       Model = UVTechJeep_d
  31322.     End
  31323.  
  31324.     OkToChangeModelColor = Yes
  31325.     TrackMarks = EXTireTrack.tga
  31326.     Dust = TechnicalDust
  31327.  
  31328.     ;DirtSpray = RocketBuggyDirtSpray
  31329.     PowerslideSpray = RocketBuggyDirtPowerSlide
  31330.  
  31331.     ; These parameters are only used if the model has a separate suspension, 
  31332.     ; and the locomotor has HasSuspension = Yes.
  31333.     LeftFrontTireBone = Tire01
  31334.     RightFrontTireBone = Tire02
  31335.     LeftRearTireBone = Tire03
  31336.     RightRearTireBone = Tire04
  31337.     TireRotationMultiplier = 0.2        ; this * speed = rotation.
  31338.     PowerslideRotationAddition = 2.5    ; This speed is added to the rotation speed when powersliding.
  31339.   End
  31340.  
  31341.   Draw = W3DModelDraw ModuleTag_02
  31342.     OkToChangeModelColor = Yes
  31343.     AttachToBoneInAnotherModule = Dum_Turret
  31344.  
  31345.     ; ------------------ basic technical ------------------------
  31346.     DefaultConditionState
  31347.       Model = UITech_SKN
  31348.       Turret = Dum-TurManMVR
  31349.       TurretArtAngle = 180  ; this turret has art pointed 180 degrees backward
  31350.       HideSubObject = 20Cal 50Cal RPG MuzzleFX01 MuzzleFX02 MuzzleFX03
  31351.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  31352.       IdleAnimation = UITech_SKL.UITech_IDA
  31353.       IdleAnimation = UITech_SKL.UITech_IDB
  31354.       AnimationMode = ONCE
  31355.       ShowSubObject = 20Cal
  31356.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  31357.       WeaponFireFXBone = PRIMARY Muzzle01
  31358.     End
  31359.  
  31360.     ConditionState = RUBBLE MOVING TURRET_ROTATE
  31361.       Animation = None
  31362.       HideSubObject = UITech-SKN
  31363.       ShowSubObject = 20Cal
  31364.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  31365.       WeaponFireFXBone = PRIMARY Muzzle01
  31366.     End
  31367.  
  31368.     ConditionState = MOVING
  31369.       Animation = UITech_SKL.UITech_MVB
  31370.       AnimationMode = LOOP
  31371.       ShowSubObject = 20Cal
  31372.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  31373.       WeaponFireFXBone = PRIMARY Muzzle01
  31374.     End
  31375.  
  31376.     ConditionState = TURRET_ROTATE
  31377.       Animation = UITech_SKL.UITech_TNA
  31378.       AnimationMode = LOOP
  31379.       ShowSubObject = 20Cal
  31380.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  31381.       WeaponFireFXBone = PRIMARY Muzzle01
  31382.     End
  31383.     AliasConditionState = TURRET_ROTATE MOVING
  31384.     AliasConditionState = TURRET_ROTATE FIRING_A
  31385.     AliasConditionState = TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  31386.     AliasConditionState = TURRET_ROTATE RELOADING_A
  31387.     AliasConditionState = TURRET_ROTATE MOVING FIRING_A
  31388.     AliasConditionState = TURRET_ROTATE MOVING BETWEEN_FIRING_SHOTS_A
  31389.     AliasConditionState = TURRET_ROTATE MOVING RELOADING_A
  31390.  
  31391.     ConditionState = FIRING_A
  31392.       Animation = UITech_SKL.UITech_ATA
  31393.       AnimationMode = LOOP
  31394.       ShowSubObject = 20Cal
  31395.       WeaponMuzzleFlash = PRIMARY MuzzleFX01
  31396.       WeaponFireFXBone = PRIMARY Muzzle01
  31397.     End
  31398.  
  31399.     ; AliasConditionState is a new keyword that says,
  31400.     ; "give me another ConditionState exactly like the previous
  31401.     ; one, except with different conditions". Useful when you
  31402.     ; have several states that are the same with only different condition bits.
  31403.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  31404.     AliasConditionState = RELOADING_A
  31405.  
  31406.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  31407.     AliasConditionState = MOVING FIRING_A
  31408.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  31409.     AliasConditionState = MOVING RELOADING_A
  31410.  
  31411.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_ONE ------------------------
  31412.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE
  31413.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  31414.       IdleAnimation = UITech_SKL.UITech_IDA
  31415.       IdleAnimation = UITech_SKL.UITech_IDB
  31416.       AnimationMode = ONCE
  31417.       ShowSubObject = 50Cal
  31418.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  31419.       WeaponFireFXBone = PRIMARY Muzzle02
  31420.       WeaponLaunchBone = PRIMARY Muzzle02
  31421.     End
  31422.  
  31423.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE MOVING TURRET_ROTATE
  31424.       Animation = None
  31425.       HideSubObject = UITech-SKN
  31426.       ShowSubObject = 50Cal
  31427.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  31428.       WeaponFireFXBone = PRIMARY Muzzle02
  31429.       WeaponLaunchBone = PRIMARY Muzzle02
  31430.     End
  31431.  
  31432.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_ONE
  31433.       Animation = UITech_SKL.UITech_MVB
  31434.       AnimationMode = LOOP
  31435.       ShowSubObject = 50Cal
  31436.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  31437.       WeaponFireFXBone = PRIMARY Muzzle02
  31438.       WeaponLaunchBone = PRIMARY Muzzle02
  31439.     End
  31440.  
  31441.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE
  31442.       Animation = UITech_SKL.UITech_TNA
  31443.       AnimationMode = LOOP
  31444.       ShowSubObject = 50Cal
  31445.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  31446.       WeaponFireFXBone = PRIMARY Muzzle02
  31447.       WeaponLaunchBone = PRIMARY Muzzle02
  31448.     End
  31449.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE MOVING
  31450.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE FIRING_A
  31451.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  31452.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE TURRET_ROTATE RELOADING_A
  31453.  
  31454.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE FIRING_A
  31455.       Animation = UITech_SKL.UITech_ATA
  31456.       AnimationMode = LOOP
  31457.       ShowSubObject = 50Cal
  31458.       WeaponMuzzleFlash = PRIMARY MuzzleFX02
  31459.       WeaponFireFXBone = PRIMARY Muzzle02
  31460.       WeaponLaunchBone = PRIMARY Muzzle02
  31461.     End
  31462.  
  31463.     ; AliasConditionState is a new keyword that says,
  31464.     ; "give me another ConditionState exactly like the previous
  31465.     ; one, except with different conditions". Useful when you
  31466.     ; have several states that are the same with only different condition bits.
  31467.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE BETWEEN_FIRING_SHOTS_A
  31468.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE RELOADING_A
  31469.  
  31470.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  31471.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING FIRING_A
  31472.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING BETWEEN_FIRING_SHOTS_A
  31473.     AliasConditionState = WEAPONSET_CRATEUPGRADE_ONE MOVING RELOADING_A
  31474.  
  31475.     ; ------------------ technical with WEAPONSET_CRATEUPGRADE_TWO ------------------------
  31476.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO
  31477.       IdleAnimation = UITech_SKL.UITech_STA 0 6
  31478.       IdleAnimation = UITech_SKL.UITech_IDA
  31479.       IdleAnimation = UITech_SKL.UITech_IDB
  31480.       AnimationMode = ONCE
  31481.       ShowSubObject = RPG
  31482.       WeaponFireFXBone = PRIMARY Muzzle03
  31483.       WeaponLaunchBone = PRIMARY Muzzle03
  31484.     End
  31485.  
  31486.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE MOVING TURRET_ROTATE
  31487.       Animation = None
  31488.       HideSubObject = UITech-SKN
  31489.       ShowSubObject = RPG
  31490.       WeaponFireFXBone = PRIMARY Muzzle03
  31491.       WeaponLaunchBone = PRIMARY Muzzle03
  31492.     End
  31493.  
  31494.     ConditionState = MOVING WEAPONSET_CRATEUPGRADE_TWO
  31495.       Animation = UITech_SKL.UITech_MVB
  31496.       AnimationMode = LOOP
  31497.       ShowSubObject = RPG
  31498.       WeaponFireFXBone = PRIMARY Muzzle03
  31499.       WeaponLaunchBone = PRIMARY Muzzle03
  31500.     End
  31501.  
  31502.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE
  31503.       Animation = UITech_SKL.UITech_TNA
  31504.       AnimationMode = LOOP
  31505.       ShowSubObject = RPG
  31506.       WeaponFireFXBone = PRIMARY Muzzle03
  31507.       WeaponLaunchBone = PRIMARY Muzzle03
  31508.     End
  31509.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE MOVING
  31510.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE FIRING_A
  31511.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE BETWEEN_FIRING_SHOTS_A
  31512.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO TURRET_ROTATE RELOADING_A
  31513.  
  31514.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO FIRING_A
  31515.       Animation = UITech_SKL.UITech_ATA
  31516.       AnimationMode = LOOP
  31517.       ShowSubObject = RPG
  31518.       WeaponFireFXBone = PRIMARY Muzzle03
  31519.       WeaponLaunchBone = PRIMARY Muzzle03
  31520.     End
  31521.  
  31522.     ; AliasConditionState is a new keyword that says,
  31523.     ; "give me another ConditionState exactly like the previous
  31524.     ; one, except with different conditions". Useful when you
  31525.     ; have several states that are the same with only different condition bits.
  31526.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO BETWEEN_FIRING_SHOTS_A
  31527.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO RELOADING_A
  31528.  
  31529.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  31530.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING FIRING_A
  31531.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING BETWEEN_FIRING_SHOTS_A
  31532.     AliasConditionState = WEAPONSET_CRATEUPGRADE_TWO MOVING RELOADING_A
  31533.  
  31534.   End  
  31535.   
  31536.   Geometry = BOX
  31537.   GeometryMajorRadius = 14.0
  31538.   GeometryMinorRadius = 9.0
  31539.   GeometryHeight = 9.5     
  31540.   GeometryIsSmall = Yes    
  31541.  
  31542. End
  31543.  
  31544. ;------------------------------------------------------------------------------
  31545. ; ************************* Cinematic-only unit *******************************
  31546. Object CINE_AmericaVehicleComanche
  31547.  
  31548.   ; *** ART Parameters ***
  31549.   SelectPortrait         = SACCommanche_L
  31550.   ButtonImage            = SACCommanche
  31551.   
  31552.   UpgradeCameo1 = Upgrade_ComancheRocketPods
  31553.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  31554.   ;UpgradeCameo3 = NONE
  31555.   ;UpgradeCameo4 = NONE
  31556.   ;UpgradeCameo5 = NONE
  31557.   
  31558.   Draw = W3DModelDraw ModuleTag_01
  31559.  
  31560.     DefaultConditionState
  31561.       Model                           = AVComanche
  31562.       HideSubObject                   = MissileUpgrade
  31563.       Animation                       = AVComanche.AVComanche
  31564.       AnimationMode                   = LOOP
  31565.       WeaponMuzzleFlash               = PRIMARY TurretFX
  31566.       WeaponFireFXBone                = PRIMARY Muzzle
  31567.       WeaponFireFXBone                = SECONDARY Muzzle
  31568.       WeaponLaunchBone  = SECONDARY Muzzle
  31569.     End
  31570.  
  31571.     ConditionState = REALLYDAMAGED
  31572.       Model                           = AVComanche_d
  31573.       Animation                       = AVComanche_d.AVComanche_d
  31574.       AnimationMode                   = LOOP
  31575.     End
  31576.  
  31577.     ConditionState = WEAPONSET_PLAYER_UPGRADE
  31578.       ShowSubObject                   = MissileUpgrade
  31579.       Animation                       = AVComanche.AVComanche
  31580.       AnimationMode                   = LOOP
  31581.       WeaponFireFXBone                = TERTIARY WeaponB
  31582.       WeaponLaunchBone  = TERTIARY WeaponB
  31583.     End
  31584.  
  31585.     ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
  31586.       Model                           = AVComanche_d
  31587.       ShowSubObject                   = MissileUpgrade
  31588.       Animation                       = AVComanche_d.AVComanche_d
  31589.       AnimationMode                   = LOOP
  31590.       WeaponFireFXBone                = TERTIARY WeaponB
  31591.       WeaponLaunchBone  = TERTIARY WeaponB
  31592.     End
  31593.  
  31594.     ConditionState = RUBBLE
  31595.       Model                           = AVComanche_d
  31596.       Animation                       = AVComanche_d.AVComanche_d
  31597.       AnimationMode                   = LOOP
  31598.     End
  31599.  
  31600.     ConditionState = RUBBLE SPECIAL_DAMAGED
  31601.       Model                           = AVComanche_d
  31602.       HideSubObject                   = AVComanche_Prop
  31603.     End
  31604.  
  31605.     OkToChangeModelColor = Yes
  31606.   End
  31607.  
  31608.   ; ***DESIGN parameters ***
  31609.   DisplayName         = OBJECT:Comanche
  31610.   EditorSorting       = VEHICLE
  31611.   Side                = America
  31612.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  31613.   VisionRange         = 400.0 
  31614.   ShroudClearingRange = 600
  31615.   Prerequisites
  31616.     Object            = AmericaAirfield
  31617.   End
  31618.  
  31619.   WeaponSet
  31620.     Conditions          = None 
  31621.     ; -----
  31622.     Weapon              = PRIMARY     Comanche20mmCannonWeapon
  31623.     PreferredAgainst    = PRIMARY     INFANTRY
  31624.     AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  31625.     ; -----
  31626.     Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
  31627.     PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
  31628.     AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
  31629.     ; -----
  31630.     Weapon              = TERTIARY    NONE
  31631.   End
  31632.   WeaponSet
  31633.     Conditions          = PLAYER_UPGRADE 
  31634.     ; -----
  31635.     Weapon              = PRIMARY     Comanche20mmCannonWeapon
  31636.     PreferredAgainst    = PRIMARY     INFANTRY
  31637.     AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  31638.     ; -----
  31639.     Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
  31640.     PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
  31641.     AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
  31642.     ; -----
  31643.     Weapon              = TERTIARY    ComancheRocketPodWeapon
  31644.     AutoChooseSources   = TERTIARY    NONE
  31645.   End
  31646.   ArmorSet
  31647.     Conditions      = None
  31648.     Armor           = ComancheArmor
  31649.     DamageFX        = None
  31650.   End
  31651.   BuildCost           = 1500
  31652.   BuildTime           = 20              ; in seconds  
  31653.   ExperienceValue     = 50 50 100 200   ; Experience point value at each level
  31654.   ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
  31655.   IsTrainable         = Yes             ; Can gain experience
  31656.   CommandSet          = AmericaVehicleComancheCommandSet
  31657.  
  31658.   ; *** AUDIO Parameters ***
  31659.   VoiceSelect     = ComancheVoiceSelect
  31660.   VoiceMove       = ComancheVoiceMove
  31661.   VoiceGuard      = ComancheVoiceMove
  31662.   VoiceAttack     = ComancheVoiceAttack
  31663.   SoundAmbient    = ComancheAmbientLoop
  31664.   SoundAmbientRubble    = NoSound
  31665.   SoundDie        = ComancheVoiceFalling
  31666.   UnitSpecificSounds
  31667.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  31668.     VoiceCreate   = ComancheVoiceCreate
  31669.     SoundEject    = PilotSoundEject
  31670.     VoiceEject    = PilotVoiceEject
  31671.     Afterburner   = RaptorAfterburner
  31672.     VoiceGarrison = ComancheVoiceMove
  31673.     TurretMoveStart = NoSound
  31674.     TurretMoveLoop  = NoSound
  31675.   End
  31676.  
  31677.  
  31678.   ; *** ENGINEERING Parameters ***
  31679.   RadarPriority   = UNIT
  31680.   KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
  31681.  
  31682.   Behavior = WeaponSetUpgrade ModuleTag_02
  31683.     TriggeredBy = Upgrade_ComancheRocketPods
  31684.   End
  31685.   Behavior = ExperienceScalarUpgrade ModuleTag_03
  31686.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  31687.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  31688.   End
  31689.  
  31690.   Body = ActiveBody ModuleTag_04
  31691.     MaxHealth       = 220.0
  31692.     InitialHealth   = 220.0
  31693.   End
  31694.  
  31695.   Behavior = FXListDie ModuleTag_05
  31696.     DeathFX = FX_HelicopterStartDeath
  31697.   End
  31698.  
  31699.   Behavior = JetAIUpdate ModuleTag_06
  31700.     MinHeight                     = 5
  31701.     NeedsRunway                   = No
  31702.     KeepsParkingSpaceWhenAirborne = No
  31703.     AutoAcquireEnemiesWhenIdle    = Yes
  31704.     ; note that comanches do not return to base when idle
  31705.     
  31706.     ; this is a bit of a trick... normally, units cannot move-and-fire at
  31707.     ; the same time. we need the comanche to be able to. so we give it
  31708.     ; a "turret" (invisible) and put the two main weapons on it, but with
  31709.     ; no turn rate. voila!
  31710.     Turret
  31711.       TurretTurnRate = 0      ; this "turret" does not turn
  31712.       TurretPitchRate = 0     ; nor does it pitch
  31713.       ControlledWeaponSlots = PRIMARY SECONDARY
  31714.     End
  31715.  
  31716.   End
  31717.   Locomotor = SET_NORMAL  CINE_ComancheLocomotor
  31718.   Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
  31719.  
  31720.   Behavior = PhysicsBehavior ModuleTag_07
  31721.     Mass = 50.0
  31722.   End
  31723.   Behavior = HelicopterSlowDeathBehavior ModuleTag_08
  31724.     DestructionDelay                = 99999999        ; the destruction delay
  31725.     SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
  31726.     SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
  31727.     SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
  31728.     MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
  31729.     SoundDeathLoop                  = ComancheDamagedLoop
  31730.     MinSelfSpin                     = 100                     ; in degrees per second
  31731.     MaxSelfSpin                     = 300                     ; in degrees per second
  31732.     SelfSpinUpdateDelay             = 100             ; in milliseconds
  31733.     SelfSpinUpdateAmount            = 10             ; in degrees   
  31734.     FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
  31735.     MinBladeFlyOffDelay             = 1500            ; in milliseconds
  31736.     MaxBladeFlyOffDelay             = 1500            ; in milliseconds
  31737.     AttachParticle                  = SootySmokeTrail
  31738.     AttachParticleBone              = Propeller02
  31739.     BladeObjectName                 = ComancheBlades
  31740.     BladeBoneName                   = Propeller01    
  31741.     ; Most things that eject pilots do so immediately upon death,
  31742.     ; via use of EjectPilotDie, but Helicopters are a special case...
  31743.     ; they need to do so after their blades are ejected. 
  31744.     OCLEjectPilot                   = OCL_EjectPilotViaParachute
  31745.     FXBlade                         = FX_HelicopterBladeExplosion
  31746.     OCLBlade                        = OCL_HelicopterBladeExplosion
  31747.     FXHitGround                     = FX_HelicopterHitGround
  31748.     OCLHitGround                    = OCL_HelicopterHitGround
  31749.     FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
  31750.     OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
  31751.     DelayFromGroundToFinalDeath     = 1500
  31752.     FinalRubbleObject               = ComancheRubbleHull
  31753.   End
  31754.  
  31755.   Behavior = TransitionDamageFX ModuleTag_09
  31756.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
  31757.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
  31758.   End
  31759.  
  31760.   Behavior = FlammableUpdate ModuleTag_21
  31761.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  31762.     AflameDamageAmount = 3       ; taking this much damage...
  31763.     AflameDamageDelay = 500       ; this often.
  31764.   End
  31765.  
  31766.   Geometry = BOX
  31767.   GeometryMajorRadius = 20.0
  31768.   GeometryMinorRadius = 3.0
  31769.   GeometryHeight = 25.0     
  31770.   GeometryIsSmall = No
  31771.   Shadow = SHADOW_VOLUME    
  31772.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  31773.  
  31774. End
  31775.  
  31776. ;------------------------------------------------------------------------------
  31777. ; *************************** Cinematic-only unit *****************************
  31778. Object CINE_GLATankScorpion
  31779.  
  31780.   ; *** ART Parameters ***
  31781.   SelectPortrait         = SUScorpion_L
  31782.   ButtonImage            = SUScorpion
  31783.   
  31784.   UpgradeCameo1 = Upgrade_GLAScorpionRocket
  31785.   UpgradeCameo2 = Upgrade_GLAAPRockets
  31786.   UpgradeCameo3 = Upgrade_GLAToxinShells
  31787.   UpgradeCameo4 = Upgrade_GLAJunkRepair
  31788.   ;UpgradeCameo5 = NONE
  31789.   
  31790.   Draw = W3DTankDraw ModuleTag_01
  31791.     OkToChangeModelColor = Yes
  31792.  
  31793.     ProjectileBoneFeedbackEnabledSlots = SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
  31794.   
  31795.     DefaultConditionState
  31796.       Model = UVLiteTank
  31797.       Turret = Turret01
  31798.       ; note, order-dependent: we must hide/show Missile AFTER we hide/show MissileRack!
  31799.       HideSubObject = MissleRack01 Missile ; MissileRack misspelled in the Art
  31800.       WeaponFireFXBone = PRIMARY Muzzle
  31801.       WeaponRecoilBone = PRIMARY Barrel
  31802.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  31803.       WeaponLaunchBone = PRIMARY Muzzle
  31804.     End
  31805.  
  31806.     ConditionState = REALLYDAMAGED
  31807.       Model = UVLiteTank_d
  31808.     End
  31809.     
  31810.     ConditionState = RUBBLE
  31811.       Model = UVLiteTank_d
  31812.     End
  31813.  
  31814.     ConditionState = WEAPONSET_PLAYER_UPGRADE
  31815.       ShowSubObject = MissleRack01
  31816.       WeaponFireFXBone = SECONDARY WeaponA
  31817.       WeaponLaunchBone = SECONDARY WeaponA
  31818.       WeaponHideShowBone = SECONDARY Missile
  31819.     End
  31820.  
  31821.     ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
  31822.       Model = UVLiteTank_d
  31823.       ShowSubObject = MissleRack01
  31824.       WeaponFireFXBone = SECONDARY WeaponA
  31825.       WeaponLaunchBone = SECONDARY WeaponA
  31826.       WeaponHideShowBone = SECONDARY Missile
  31827.     End
  31828.  
  31829.     TrackMarks = EXTnkTrack.tga
  31830.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  31831.   End
  31832.  
  31833.   ; ***DESIGN parameters ***
  31834.   DisplayName           = OBJECT:Scorpion
  31835.   Side                  = GLA
  31836.   EditorSorting         = VEHICLE
  31837.   TransportSlotCount    = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  31838.   WeaponSet
  31839.     Conditions = None 
  31840.     Weapon = PRIMARY ScorpionTankGun
  31841.     Weapon = SECONDARY None
  31842.   End
  31843.   WeaponSet
  31844.     Conditions = PLAYER_UPGRADE 
  31845.     Weapon = PRIMARY ScorpionTankGun
  31846.     Weapon = SECONDARY ScorpionMissileWeapon
  31847.     AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  31848.     AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI
  31849.   End
  31850.   ArmorSet
  31851.     Conditions      = None
  31852.     Armor           = TankArmor
  31853.     DamageFX        = TankDamageFX
  31854.   End
  31855.   BuildCost       = 600
  31856.   BuildTime       = 7.0          ;in seconds    
  31857.   VisionRange     = 125
  31858.   ShroudClearingRange = 300
  31859.   Prerequisites
  31860.     Object = GLAArmsDealer
  31861.   End
  31862.  
  31863.   ExperienceValue = 60 60 120 200    ;Experience point value at each level
  31864.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  31865.   IsTrainable = Yes             ;Can gain experience
  31866.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  31867.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  31868.   CommandSet      = GLATankScorpionCommandSet
  31869.  
  31870.   ; *** AUDIO Parameters ***
  31871.   VoiceSelect = ScorpionTankVoiceSelect
  31872.   VoiceMove = ScorpionTankVoiceMove
  31873.   VoiceAttack = ScorpionTankVoiceAttack
  31874.   SoundMoveStart = ScorpionTankMoveStart
  31875.   SoundMoveStartDamaged = ScorpionTankMoveStart
  31876.   VoiceGuard = ScorpionTankVoiceMove
  31877.  
  31878.   UnitSpecificSounds
  31879.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  31880.     VoiceCreate          = ScorpionTankVoiceCreate
  31881.     ;TurretMoveStart = NoSound
  31882.     TurretMoveLoop = TurretMoveLoop
  31883.     VoiceEnter = ScorpionTankVoiceMove
  31884.   End
  31885.  
  31886.   ; *** ENGINEERING Parameters ***
  31887.   RadarPriority = UNIT
  31888.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
  31889.  
  31890.   Body = ActiveBody ModuleTag_02
  31891.     MaxHealth       = 370.0
  31892.     InitialHealth   = 370.0
  31893.   End
  31894.  
  31895.   Behavior = AIUpdateInterface ModuleTag_03
  31896.     Turret
  31897.       TurretTurnRate = 100
  31898.       RecenterTime = 5000   ; how long to wait during idle before recentering
  31899.       ControlledWeaponSlots = PRIMARY SECONDARY
  31900.     End
  31901.     AutoAcquireEnemiesWhenIdle = Yes
  31902.   End
  31903.   Locomotor = SET_NORMAL CINE_ScorpionLocomotor
  31904.   Behavior = PhysicsBehavior ModuleTag_04
  31905.     Mass = 50.0
  31906.   End
  31907.   Behavior = AutoHealBehavior ModuleTag_05
  31908.     HealingAmount = 2
  31909.     HealingDelay = 1000 ; msec
  31910.     TriggeredBy = Upgrade_GLAJunkRepair
  31911.   End
  31912.  
  31913.   ; Catch fire, and explode death
  31914.   Behavior = SlowDeathBehavior ModuleTag_06
  31915.     DeathTypes = ALL -CRUSHED -SPLATTED
  31916.     ProbabilityModifier = 50
  31917.     DestructionDelay = 2000
  31918.     DestructionDelayVariance = 300
  31919.     FX  = INITIAL  FX_CrusaderCatchFire
  31920.     OCL = FINAL    OCL_GenericTankDeathEffect  
  31921.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  31922.   End
  31923.  
  31924.   Behavior = WeaponSetUpgrade ModuleTag_07
  31925.     TriggeredBy = Upgrade_GLAScorpionRocket
  31926.   End
  31927.  
  31928.   Behavior = DestroyDie ModuleTag_09
  31929.     DeathTypes = NONE +CRUSHED +SPLATTED
  31930.   End
  31931.  
  31932.   ; A crushing defeat
  31933.   Behavior = FXListDie ModuleTag_10
  31934.     DeathTypes = NONE +CRUSHED +SPLATTED
  31935.     DeathFX = FX_CarCrush
  31936.   End
  31937.   Behavior = CreateObjectDie ModuleTag_11
  31938.     DeathTypes = NONE +CRUSHED +SPLATTED
  31939.     CreationList = OCL_CrusaderTank_CrushEffect
  31940.   End
  31941.   Behavior = CreateCrateDie ModuleTag_12
  31942.     CrateData = SalvageCrateData
  31943.     ;CrateData = EliteTankCrateData
  31944.     ;CrateData = HeroicTankCrateData
  31945.   End
  31946.   
  31947.   Behavior                 = TransitionDamageFX ModuleTag_13
  31948.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  31949.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  31950.   End
  31951.  
  31952.   Behavior = FlammableUpdate ModuleTag_21
  31953.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  31954.     AflameDamageAmount = 3       ; taking this much damage...
  31955.     AflameDamageDelay = 500       ; this often.
  31956.   End
  31957.  
  31958.   Geometry = BOX
  31959.   GeometryMajorRadius = 14.0
  31960.   GeometryMinorRadius = 9.0
  31961.   GeometryHeight = 10.5    
  31962.   GeometryIsSmall = Yes 
  31963.   Shadow = SHADOW_VOLUME   
  31964.  
  31965. End
  31966.  
  31967. ;------------------------------------------------------------------------------
  31968. ;************************* Cinematic-only unit ********************************
  31969. Object CINE_ChinaJetMIG
  31970.  
  31971.   ; *** ART Parameters ***
  31972.   SelectPortrait         = SNMig_L
  31973.   ButtonImage            = SNMig
  31974.   
  31975.   UpgradeCameo1 = Upgrade_ChinaAircraftArmor
  31976.   UpgradeCameo2 = Upgrade_ChinaBlackNapalm
  31977.   ;UpgradeCameo3 = NONE
  31978.   ;UpgradeCameo4 = NONE
  31979.   ;UpgradeCameo5 = NONE
  31980.   
  31981.   Draw = W3DModelDraw ModuleTag_01
  31982.  
  31983.     OkToChangeModelColor = Yes
  31984.  
  31985.     DefaultConditionState
  31986.       Model               = NVMIG
  31987.       HideSubObject       = BurnerFX01 BurnerFX02
  31988.       WeaponLaunchBone    = PRIMARY WeaponA
  31989.     End
  31990.  
  31991.     ConditionState        = JETEXHAUST
  31992.       ParticleSysBone     = Wingtip01 JetContrail
  31993.       ParticleSysBone     = Wingtip02 JetContrail
  31994.     End
  31995.  
  31996.     ConditionState       = JETEXHAUST JETAFTERBURNER
  31997.       ShowSubObject      = BurnerFX01 BurnerFX02
  31998.       ParticleSysBone     = Exhaust01 JetExhaust
  31999.       ParticleSysBone     = Exhaust02 JetExhaust
  32000.       ParticleSysBone     = Wingtip01 JetContrail
  32001.       ParticleSysBone     = Wingtip02 JetContrail
  32002.     End
  32003.  
  32004.     ConditionState        = REALLYDAMAGED
  32005.       Model               = NVMIG_D
  32006.       ParticleSysBone     = Wingtip01 JetContrail
  32007.       ParticleSysBone     = Wingtip02 JetContrail
  32008.     End
  32009.  
  32010.     ConditionState        = RUBBLE
  32011.       Model               = NVMIG_D
  32012.     End
  32013.  
  32014.     ConditionState        = REALLYDAMAGED JETEXHAUST
  32015.       Model               = NVMIG_D
  32016.       ParticleSysBone     = Wingtip01 JetContrail
  32017.       ParticleSysBone     = Wingtip02 JetContrail
  32018.     End
  32019.  
  32020.     ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
  32021.       Model               = NVMIG_D
  32022.       ShowSubObject       = BurnerFX01 BurnerFX02
  32023.       ParticleSysBone     = Engine01 JetExhaust
  32024.       ParticleSysBone     = Engine02 JetExhaust
  32025.       ParticleSysBone     = Wingtip01 JetContrail
  32026.       ParticleSysBone     = Wingtip02 JetContrail
  32027.     End
  32028.  
  32029.     ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
  32030.       ; @todo srj -- model missing
  32031.       ;Model              = NVMIG_D1B
  32032.       Model               = NVMIG_D
  32033.       ;HideSubObject is needed cause there're inherited from default condition state      
  32034.       HideSubObject       = None 
  32035.       ShowSubObject       = None
  32036.       ParticleSysBone     = Engine01 JetExhaust
  32037.       ParticleSysBone     = Engine02 JetExhaust
  32038.       ParticleSysBone     = Wingtip01 JetContrail
  32039.       ParticleSysBone     = Wingtip02 JetContrail
  32040.     End
  32041.  
  32042.   End
  32043.  
  32044.   ; ***DESIGN parameters ***
  32045.   DisplayName             = OBJECT:MIG
  32046.   EditorSorting           = VEHICLE
  32047.   Side                    = China
  32048.   TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
  32049.   VisionRange             = 300.0 
  32050.   ShroudClearingRange     = 300.0
  32051.  
  32052.   Prerequisites
  32053.     Object                = ChinaAirfield
  32054.   End
  32055.  
  32056.   WeaponSet
  32057.     Conditions        = None 
  32058.     Weapon            = PRIMARY     NapalmMissileWeapon
  32059.     AutoChooseSources = PRIMARY     NONE
  32060.   End
  32061.   WeaponSet
  32062.     Conditions = PLAYER_UPGRADE 
  32063.     Weapon            = PRIMARY     BlackNapalmMissileWeapon
  32064.     AutoChooseSources = PRIMARY     NONE
  32065.   End
  32066.  
  32067.   ArmorSet
  32068.     Conditions           = None
  32069.     Armor                = AirplaneArmor
  32070.     DamageFX             = None
  32071.   End
  32072.  
  32073.   BuildCost               = 1000
  32074.   BuildTime               = 10   
  32075.   ExperienceValue         = 50 50 100 150   ;Experience point value at each level
  32076.   ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
  32077.   IsTrainable = Yes             ;Can gain experience
  32078.   CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  32079.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  32080.   CommandSet             = ChinaJetMIGCommandSet
  32081.  
  32082.   ; *** AUDIO Parameters ***
  32083.   VoiceSelect             = MigVoiceSelect
  32084.   VoiceMove               = MigVoiceMove
  32085.   VoiceAttack             = MigVoiceAttack
  32086.   VoiceAttackAir          = MigVoiceAttackAir
  32087.   VoiceGuard              = MigVoiceAirPatrol
  32088.   SoundMoveLoop           = NoSound  ; don't want sound while sitting
  32089.   SoundAmbient            = MigAmbientLoop
  32090.   SoundAmbientRubble      = NoSound
  32091.   SoundDie                = MigVoiceFalling
  32092.   UnitSpecificSounds
  32093.     VoiceCreate           = MigVoiceCreate
  32094.     Afterburner           = RaptorAfterburner
  32095.     VoiceGarrison         = MigVoiceMove
  32096.   End
  32097.  
  32098.   ; *** ENGINEERING Parameters ***
  32099.   RadarPriority          = UNIT
  32100.   KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  32101.   Body                   = ActiveBody ModuleTag_02
  32102.     MaxHealth            = 160.0
  32103.     InitialHealth        = 160.0
  32104.   End
  32105.  
  32106.   Behavior                          = JetSlowDeathBehavior ModuleTag_03
  32107.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  32108.     OCLOnGroundDeath                = OCL_MIGDeathFinalBlowUp_CinematicVersion
  32109.     DestructionDelay                = 99999999  ; destruction will happen when we
  32110.     RollRate                        = 0.2
  32111.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  32112.     PitchRate                       = 0.0
  32113.     FallHowFast                     = 110.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  32114.     FXInitialDeath                  = FX_JetDeathInitial
  32115.     OCLInitialDeath                 = OCL_MIGDeathInitial
  32116.     DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
  32117.     FXSecondary                     = FX_JetDeathSecondary
  32118.     OCLSecondary                    = OCL_MIGDeathSecondary
  32119.     FXHitGround                     = FX_JetDeathHitGround
  32120.     OCLHitGround                    = OCL_MIGDeathHitGround
  32121.     DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
  32122.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp_CinematicVersion
  32123.     OCLFinalBlowUp                  = OCL_MIGDeathFinalBlowUp_CinematicVersion
  32124.   End
  32125.  
  32126.   Behavior = WeaponSetUpgrade ModuleTag_04
  32127.     TriggeredBy = Upgrade_ChinaBlackNapalm
  32128.   End
  32129.  
  32130.   Behavior = PhysicsBehavior ModuleTag_05
  32131.     Mass = 500.0
  32132.   End
  32133.  
  32134.   Behavior = JetAIUpdate ModuleTag_06
  32135.     OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
  32136.                                         ; note that it's expressed as a percent of max health, not an absolute
  32137.     TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
  32138.     TakeoffPause              = 500
  32139.     MinHeight                 = 5
  32140.     ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
  32141.   End
  32142.  
  32143.   Locomotor = SET_NORMAL CINE_MIGLocomotor
  32144.   Locomotor = SET_TAXIING CINE_BasicJetTaxiLocomotor
  32145.  
  32146.  
  32147.   Behavior = FlammableUpdate ModuleTag_08
  32148.     AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
  32149.     AflameDamageAmount = 3       ; taking this much damage...
  32150.     AflameDamageDelay = 500      ; this often.
  32151.   End
  32152.  
  32153.   Behavior                       = TransitionDamageFX ModuleTag_09
  32154.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  32155.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
  32156.   End
  32157.  
  32158.   Behavior        = MaxHealthUpgrade ModuleTag_10
  32159.     TriggeredBy   = Upgrade_ChinaAircraftArmor
  32160.     AddMaxHealth  = 40.0
  32161.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  32162.   End
  32163.  
  32164.  
  32165.  
  32166.   Geometry                 = Box
  32167.   GeometryIsSmall          = Yes
  32168.   GeometryMajorRadius      = 14.0
  32169.   GeometryMinorRadius      = 7.0
  32170.   GeometryHeight           = 5.0
  32171.   Shadow                   = SHADOW_VOLUME
  32172.   
  32173.   Shadow = SHADOW_VOLUME
  32174.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  32175.  
  32176. End
  32177.  
  32178. ;------------------------------------------------------------------------------
  32179. ; ******************** Cinematic-only unit ***********************************
  32180. Object CINE_GLAInfantryAngryMobNexus 
  32181.  
  32182. ;**** ART Parameters **************************
  32183.   SelectPortrait         = SUAngryMob_L
  32184.   ButtonImage            = SUAngryMob
  32185.   
  32186.   UpgradeCameo1 = Upgrade_GLAArmTheMob
  32187.   ;UpgradeCameo2 = NONE
  32188.   ;UpgradeCameo3 = NONE
  32189.   ;UpgradeCameo4 = NONE
  32190.   ;UpgradeCameo5 = NONE
  32191.   
  32192.   Draw = W3DModelDraw ModuleTag_01
  32193.     OkToChangeModelColor = Yes
  32194.     DefaultConditionState
  32195.       Model = None
  32196. ;      Model = AVBomber_B
  32197.     End
  32198.   End
  32199.  
  32200.  
  32201. ;****DESIGN parameters **************************
  32202.  
  32203.   DisplayName      = OBJECT:AngryMobNexus
  32204.   Side = GLA
  32205.   EditorSorting   = INFANTRY
  32206.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  32207.  
  32208.   WeaponSet
  32209.     Conditions = None 
  32210.     Weapon = PRIMARY GLAAngryMobNexusHarmlessWeapon
  32211.     Weapon = SECONDARY GLAAngryMobNexusHarmlessWeapon
  32212.     Weapon = TERTIARY GLAAngryMobNexusHarmlessWeapon
  32213.   End
  32214.  
  32215.  
  32216.   ArmorSet
  32217.     Conditions      = None
  32218.     Armor           = InvulnerableAllArmor
  32219.     DamageFX        = None
  32220.   End
  32221.  
  32222.   BuildCost       = 800
  32223.   BuildTime       = 15.0          ;in seconds    
  32224.   VisionRange     = 200  ; it can scout for the spawn
  32225.   ShroudClearingRange = 0
  32226.  
  32227.   Prerequisites
  32228.     Object = GLABarracks
  32229.     Object = GLAPalace
  32230.   End
  32231.  
  32232.   ExperienceValue    = 5 5 5 5 ;Experience point value at each level
  32233.  
  32234.   IsTrainable     = No
  32235.  
  32236.  
  32237.  
  32238.   CommandSet    = GLAInfantryAngryMobCommandSet;
  32239.  
  32240. ;**** AUDIO Parameters *****************************
  32241.   VoiceSelect = AngryMobVoiceSelect
  32242.   VoiceMove = AngryMobVoiceMove
  32243.   VoiceAttack = AngryMobVoiceAttack
  32244.   SoundMoveStart = AngryMobMoveStart
  32245.   SoundMoveStartDamaged = AngryMobMoveStart
  32246.   SoundAmbient = AngryMobAmbientLoop
  32247.   SoundAmbientRubble    = NoSound
  32248.   SoundDie = CivilianArabMaleDie
  32249.   SoundDieFire = DieByFireGLA
  32250.   SoundDieToxin = DieByToxinGLA
  32251.   UnitSpecificSounds
  32252.     VoiceCreate          = AngryMobVoiceCreate
  32253.   End
  32254.  
  32255.  
  32256. ;**** ENGINEERING Parameters ******************************
  32257.  
  32258.   RadarPriority = UNIT
  32259.   KindOf = PRELOAD CAN_ATTACK INFANTRY MOB_NEXUS ATTACK_NEEDS_LINE_OF_SIGHT NO_COLLIDE SELECTABLE
  32260.   Body = ImmortalBody ModuleTag_02
  32261.     MaxHealth       = 99999.0
  32262.     InitialHealth   = 99999.0
  32263.   End
  32264.  
  32265.   Behavior = AIUpdateInterface ModuleTag_03
  32266.     AutoAcquireEnemiesWhenIdle = Yes
  32267.   End
  32268.  
  32269.   Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
  32270.   Locomotor = SET_WANDER WanderHumanLocomotor
  32271.   Locomotor = SET_PANIC PanicHumanLocomotor
  32272.  
  32273.   Behavior = PhysicsBehavior ModuleTag_04
  32274.     Mass = 50.0
  32275.   End
  32276.  
  32277.   Behavior            = SpawnBehavior ModuleTag_05
  32278.     SpawnNumber       = 17
  32279.     SpawnReplaceDelay = 30000 ; 30 seconds
  32280.  
  32281.  
  32282.     SpawnTemplateName = CINE_GLAInfantryAngryMobPistol01 ; Aladdin
  32283.     SpawnTemplateName = GLAInfantryAngryMobRock02 ; Woman in the Gypsy Costume
  32284.     SpawnTemplateName = CINE_GLAInfantryAngryMobPistol03 ; Skinny Guy with the Green Beret
  32285.     SpawnTemplateName = GLAInfantryAngryMobRock02 ; Woman in the Gypsy Costume
  32286.     SpawnTemplateName = CINE_GLAInfantryAngryMobPistol05 ; The robed dude with the Man-Veil
  32287.     SpawnTemplateName = CINE_GLAInfantryAngryMobPistol01 ; The Lady with the hot sauce
  32288.  
  32289.  
  32290.  
  32291.     ExitByBudding = Yes;!
  32292.  
  32293.     InitialBurst = 15 ; all 15 will not delay
  32294.     OneShot     = No
  32295.     AggregateHealth = Yes
  32296.   End
  32297.  
  32298.   Behavior = QueueProductionExitUpdate ModuleTag_06
  32299.     UnitCreatePoint   = X:  0.0  Y:  0.0   Z:0.0
  32300.     NaturalRallyPoint = X: 0.0  Y:  0.0   Z:0.0
  32301.     ExitDelay     = 5000 ; 5 sec
  32302.     InitialBurst = 15 ; all 15 will not delay
  32303.   End
  32304.  
  32305.   Behavior = DestroyDie ModuleTag_07
  32306.     DeathTypes = ALL
  32307.   End
  32308.  
  32309.   Geometry = CYLINDER
  32310.   GeometryMajorRadius = 1.0
  32311.   GeometryMinorRadius = 1.0
  32312.   GeometryHeight = 1.0     
  32313.   GeometryIsSmall = Yes 
  32314.   Shadow = SHADOW_VOLUME
  32315.  
  32316. End
  32317.  
  32318. ;------------------------------------------------------------------------------
  32319. ; *********************** Cinematic-only unit *********************************
  32320. Object CINE_GLAInfantryAngryMobPistol01
  32321.  
  32322. ;**** ART Parameters ***
  32323.   Draw = W3DModelDraw DrawTag_01
  32324.     OkToChangeModelColor = Yes
  32325.  
  32326.  
  32327.  
  32328.     ; WHILE CARRYING PISTOL
  32329.     ;---------------------------------------------------------
  32330.     DefaultConditionState ;Idle with Pistol Holstered
  32331.       Model = UIMOB01_SKN
  32332.       IdleAnimation = UIMOB01_SKL.UIMOB01_IDA1 0 12
  32333.       IdleAnimation = UIMOB01_SKL.UIMOB01_IDA2 0 5
  32334.       IdleAnimation = UIMOB01_SKL.UIMOB01_CHA  0 5
  32335.       IdleAnimation = UIMOB01_SKL.UIMOB01_STA  0 5
  32336.       AnimationMode = ONCE
  32337.       AnimationSpeedFactorRange 0.9 1.1
  32338.       TransitionKey = TRANS_STAND_A
  32339.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32340.  
  32341.       WeaponFireFXBone = PRIMARY Muzzle
  32342.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  32343.       WeaponFireFXBone = SECONDARY MuzzleAK
  32344.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  32345.       WeaponFireFXBone = TERTIARY "UIMOB01 R HAND"
  32346.     End
  32347.  
  32348.     ; Drawing pistol
  32349.     ConditionState  = PREATTACK_A
  32350.       Animation     = UIMOB01_SKL.UIMOB01_ATA1_ST ; start firing
  32351.       AnimationMode = ONCE
  32352.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32353.     End
  32354.     AliasConditionState = PREATTACK_A FIRING_A
  32355.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  32356.  
  32357.     ; Firing pistol
  32358.     ConditionState = FIRING_A
  32359.       Animation = UIMOB01_SKL.UIMOB01_ATA1_LP ; looping firing
  32360.       AnimationMode = LOOP
  32361.       TransitionKey = TRANS_FIRING_A
  32362.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32363.     End
  32364.  
  32365.     ConditionState  = BETWEEN_FIRING_SHOTS_A
  32366.       Animation     = UIMOB01_SKL.UIMOB01_ATA1_LP ; looping firing
  32367.       AnimationMode = LOOP
  32368.       TransitionKey = TRANS_FIRING_A
  32369.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32370.     End
  32371.     
  32372.     ConditionState  = RELOADING_A
  32373.       Animation     = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing
  32374.       AnimationMode = ONCE
  32375.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32376.     End
  32377.  
  32378.     ; This transition allows him to put his gun away when he's finished attacking.
  32379.     TransitionState = TRANS_FIRING_A TRANS_STAND_A
  32380.       Animation     = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing
  32381.       AnimationMode = ONCE
  32382.     End
  32383.  
  32384.     ConditionState = MOVING
  32385.       Animation = UIMOB01_SKL.UIMOB01_RNA 
  32386.       AnimationMode = LOOP
  32387.       Flags = RANDOMSTART
  32388.       TransitionKey   = MOVING
  32389.       ParticleSysBone   = None InfantryDustTrails
  32390.     End
  32391.     AliasConditionState = MOVING RELOADING_A
  32392.     AliasConditionState = MOVING PREATTACK_A
  32393.     AliasConditionState = MOVING FIRING_A
  32394.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  32395.     AliasConditionState = MOVING RELOADING_C RELOADING_A 
  32396.     AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  32397.  
  32398.     ConditionState = DYING
  32399.       Animation = UIMOB01_SKL.UIMOB01_DA1    
  32400.       Animation = UIMOB01_SKL.UIMOB01_DA2
  32401.       AnimationMode = ONCE
  32402.       TransitionKey = TRANS_Dying
  32403.     End
  32404.  
  32405.  
  32406.     ConditionState = SPECIAL_CHEERING
  32407.       Animation = UIMOB01_SKL.UIMOB01_CHA
  32408.       AnimationMode = ONCE
  32409.     End
  32410.  
  32411.     ;--------------------------------------------------------
  32412.  
  32413.     ; TRANSITION FROM PISTOL TO AK47
  32414.     TransitionState = TRANS_STAND_A TRANS_STAND_AK
  32415.       Animation = UIMOB01_SKL.UIMOB01_TA-D
  32416.       AnimationMode = ONCE
  32417.     End
  32418.  
  32419.  
  32420.     ; WHILE CARRYING AK47 
  32421.     ;---------------------------------------------------------
  32422.     ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
  32423.       Model = UIMOB01_SKN
  32424.       IdleAnimation = UIMOB01_SKL.UIMOB01_IDD1 0 6
  32425.       IdleAnimation = UIMOB01_SKL.UIMOB01_IDD2 0 6
  32426.       IdleAnimation = UIMOB01_SKL.UIMOB01_CHD  0 6
  32427.       IdleAnimation = UIMOB01_SKL.UIMOB01_STD
  32428.       AnimationMode = ONCE
  32429.       AnimationSpeedFactorRange 0.9 1.1
  32430.       TransitionKey = TRANS_STAND_AK
  32431.     End
  32432.  
  32433.     ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
  32434.       Animation = UIMOB01_SKL.UIMOB01_RND 
  32435.       AnimationMode = LOOP
  32436.       Flags = RANDOMSTART
  32437.       TransitionKey   = MOVING_AK
  32438.     End
  32439.  
  32440.     ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
  32441.       Animation = UIMOB01_SKL.UIMOB01_DD1    
  32442.       Animation = UIMOB01_SKL.UIMOB01_DD2
  32443.       AnimationMode = ONCE
  32444.       TransitionKey = TRANS_Dying
  32445.     End
  32446.  
  32447.     ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
  32448.       Animation = UIMOB01_SKL.UIMOB01_CHD
  32449.       AnimationMode = ONCE
  32450.     End
  32451.  
  32452.  
  32453.     ; Drawing AK47
  32454.     ConditionState  = PREATTACK_B 
  32455.       Animation     = UIMOB01_SKL.UIMOB01_ATD1_ST ; start firing
  32456.       AnimationMode = ONCE
  32457.     End
  32458.     AliasConditionState = PREATTACK_B MOVING 
  32459.     AliasConditionState = PREATTACK_B FIRING_B 
  32460.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B 
  32461.  
  32462.     ; Firing Gun
  32463.     ConditionState = FIRING_B 
  32464.       Animation = UIMOB01_SKL.UIMOB01_ATD1_LP ; looping firing
  32465.       AnimationMode = LOOP
  32466.       WeaponFireFXBone = SECONDARY MuzzleAK
  32467.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  32468.       TransitionKey = TRANS_FIRING_AK
  32469.     End
  32470.     AliasConditionState = MOVING FIRING_B 
  32471.  
  32472.     ConditionState  = BETWEEN_FIRING_SHOTS_B 
  32473.       Animation     = UIMOB01_SKL.UIMOB01_ATD1_LP ; looping firing
  32474.       AnimationMode = LOOP
  32475.       TransitionKey = TRANS_FIRING_AK
  32476.     End
  32477.     AliasConditionState = RELOADING_B 
  32478.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B 
  32479.     AliasConditionState = MOVING RELOADING_B 
  32480.  
  32481.     ; This transition allows him to put his gun away when he's finished attacking.
  32482.     TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
  32483.       Animation     = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing
  32484.       AnimationMode = ONCE
  32485.     End
  32486.  
  32487.  
  32488.     ;Throwing bottle----------------------------------------------------------------
  32489.     ConditionState = PREATTACK_C 
  32490.       Animation     = UIMOB01_SKL.UIMOB01_ATCA_BF ; the wind up
  32491.     End
  32492.     AliasConditionState = PREATTACK_C FIRING_A
  32493.     AliasConditionState = PREATTACK_C RELOADING_A
  32494.     AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  32495.  
  32496.     ConditionState = FIRING_C 
  32497.       Animation     = UIMOB01_SKL.UIMOB01_ATCA_AF ; the release and follow-thru
  32498.       TransitionKey = TRANS_THROW
  32499.     End
  32500.     AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
  32501.  
  32502.     ConditionState RELOADING_C
  32503.       Animation =UIMOB01_SKL.UIMOB01_IDA1
  32504.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32505.     End
  32506.     AliasConditionState = RELOADING_C RELOADING_A
  32507.     AliasConditionState = RELOADING_C FIRING_A
  32508.     AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
  32509.  
  32510.  
  32511. ;    TransitionState = TRANSXXX TRANS_THROW
  32512. ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway gun and take out bottle
  32513. ;    End
  32514.  
  32515. ;    TransitionState = TRANS_THROW TRANS_FIRING_A
  32516. ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get PISTOL
  32517. ;    End
  32518.  
  32519. ;    TransitionState = TRANSXXXAK TRANS_THROW
  32520. ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway AK and take out bottle
  32521. ;    End
  32522.  
  32523. ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
  32524. ;      Animation     = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get AK
  32525. ;    End
  32526.  
  32527.  
  32528.  
  32529.  
  32530.  
  32531.     ;--------------------------------------------------------
  32532.  
  32533.  
  32534.  
  32535.  
  32536.  
  32537.  
  32538.     TransitionState = TRANS_Dying TRANS_Flailing
  32539.       Animation = UIMOB01_SKL.UIMOB01_A_ADTE1
  32540.       Animation = UIMOB01_SKL.UIMOB01_D_ADTE1
  32541.       AnimationMode = ONCE
  32542.     End
  32543.  
  32544.     ConditionState = DYING EXPLODED_FLAILING
  32545.       Animation = UIMOB01_SKL.UIMOB01_A_ADTE2
  32546.       Animation = UIMOB01_SKL.UIMOB01_D_ADTE2
  32547.       AnimationMode = LOOP
  32548.       TransitionKey = TRANS_Flailing
  32549.     End
  32550.  
  32551.     ConditionState = DYING EXPLODED_BOUNCING
  32552.       Animation = UIMOB01_SKL.UIMOB01_A_ADTE3
  32553.       Animation = UIMOB01_SKL.UIMOB01_D_ADTE3
  32554.       AnimationMode = ONCE
  32555.       TransitionKey = None
  32556.     End
  32557.  
  32558.  
  32559.   End
  32560.  
  32561. ;**** DESIGN parameters ***
  32562.  
  32563.   DisplayName      = OBJECT:AngryMob
  32564.   Side = GLA
  32565.   EditorSorting = INFANTRY
  32566.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  32567.  
  32568.  
  32569.  
  32570.  
  32571.   ;==================== CINEMA ONLY WEAPONSET ========================
  32572.   WeaponSet
  32573.     Conditions = None 
  32574.     Weapon = PRIMARY GLAAngryMobMolotovCocktailProjectileWeapon
  32575.     PreferredAgainst    = TERTIARY VEHICLE STRUCTURE
  32576.     ShareWeaponReloadTime = No
  32577.   End
  32578.   ;==================== CINEMA ONLY WEAPONSET ========================
  32579.  
  32580.  
  32581.   ArmorSet
  32582.     Conditions      = None
  32583.     Armor           = HumanArmor
  32584.     DamageFX        = InfantryDamageFX
  32585.   End
  32586.   VisionRange = 150
  32587.   ShroudClearingRange = 150
  32588.   Prerequisites
  32589.     Object = GLABarracks
  32590.   End
  32591.   BuildCost = 100
  32592.   BuildTime = 0.0           
  32593.  
  32594.   ExperienceValue = 5 5 5 5    ;Experience point value at each level
  32595.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  32596.   IsTrainable = Yes             ;Can gain experience
  32597.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  32598.  
  32599.   ; *** AUDIO Parameters ***
  32600.   VoiceSelect = NoSound 
  32601.   VoiceMove = NoSound   
  32602.   VoiceAttack = NoSound 
  32603.   SoundDie = RebelVoiceDie
  32604.  
  32605.  
  32606. ;**** ENGINEERING Parameters *** ;MOB01
  32607.   RadarPriority = UNIT
  32608.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
  32609.  
  32610.   Body = ActiveBody BodyTag_01
  32611.     MaxHealth       = 50.0
  32612.     InitialHealth   = 50.0
  32613.   End
  32614.  
  32615.   Behavior = AIUpdateInterface ModuleTag_03
  32616.     AutoAcquireEnemiesWhenIdle = Yes
  32617.   End
  32618.  
  32619.   Behavior = MobMemberSlavedUpdate ModuleTag_04
  32620.     MustCatchUpRadius   = 70   ; bigger; bigger; bigger; bigger; bigger; bigger
  32621.     NoNeedToCatchUpRadius = 25 ; bigger; bigger; bigger; bigger; bigger; bigger
  32622.     Squirrelliness = 0.00      ; zero; zero; zero; zero; zero; zero
  32623.     CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
  32624.   End
  32625.  
  32626.   Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
  32627.   Locomotor = SET_WANDER WanderHumanLocomotor
  32628.   Locomotor = SET_PANIC PanicHumanLocomotor
  32629.  
  32630.   Behavior = PhysicsBehavior BehaviorTag_01
  32631.     Mass = 5.0
  32632.   End
  32633.  
  32634.   Behavior = SquishCollide ModuleTag_08
  32635.     ;nothing
  32636.   End
  32637.  
  32638.   Behavior = WeaponSetUpgrade UpgradeTag_01
  32639.     TriggeredBy = Upgrade_GLAArmTheMob
  32640.   End
  32641.  
  32642.  
  32643. ; --- begin Death modules ---
  32644.   Behavior = SlowDeathBehavior DeathTag_01
  32645.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  32646.     SinkDelay           = 3000
  32647.     SinkRate            = 0.5     ; in Dist/Sec
  32648.     DestructionDelay    = 8000
  32649.     FX                  = INITIAL FX_GIDie
  32650.   End
  32651.   Behavior = SlowDeathBehavior DeathTag_02
  32652.     DeathTypes          = NONE +CRUSHED +SPLATTED
  32653.     SinkDelay           = 3000
  32654.     SinkRate            = 0.5     ; in Dist/Sec
  32655.     DestructionDelay    = 8000
  32656.     FX                  = INITIAL FX_GIDieCrushed
  32657.   End
  32658.   Behavior = SlowDeathBehavior DeathTag_03
  32659.     DeathTypes          = NONE +EXPLODED
  32660.     SinkDelay           = 3000
  32661.     SinkRate            = 0.5     ; in Dist/Sec
  32662.     DestructionDelay    = 8000
  32663.     FX                  = INITIAL FX_GIDie
  32664.     FlingForce          = 8
  32665.     FlingForceVariance  = 3
  32666.     FlingPitch          = 60
  32667.     FlingPitchVariance  = 10
  32668.   End
  32669.   Behavior = SlowDeathBehavior DeathTag_04
  32670.     DeathTypes          = NONE +BURNED
  32671.     DestructionDelay    = 0
  32672.     FX                  = INITIAL FX_GIDie
  32673.     OCL                 = INITIAL OCL_FlamingInfantry
  32674.   End
  32675.   Behavior = SlowDeathBehavior DeathTag_05
  32676.     DeathTypes          = NONE +POISONED
  32677.     DestructionDelay    = 0
  32678.     FX                  = INITIAL FX_GIDie
  32679.     OCL                 = INITIAL OCL_ToxicInfantry
  32680.   End
  32681. ; --- end Death modules ---
  32682.  
  32683.   Behavior = PoisonedBehavior BehaviorTag_02
  32684.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  32685.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  32686.   End
  32687.  
  32688.   Geometry = CYLINDER
  32689.   GeometryMajorRadius = 4.0 ; very thin
  32690.   GeometryHeight = 12.0
  32691.   GeometryIsSmall = Yes
  32692.   Shadow = SHADOW_DECAL
  32693.   ShadowSizeX = 14;
  32694.   ShadowSizeY = 14;
  32695.   ShadowTexture = ShadowI;
  32696.   BuildCompletion = APPEARS_AT_RALLY_POINT
  32697.  
  32698. End
  32699.  
  32700. ;------------------------------------------------------------------------------
  32701. ;------------------------------------------------------------------------------
  32702. ; **************************** Cinematic-only unit ****************************
  32703. Object CINE_GLAInfantryAngryMobPistol03 
  32704.  
  32705. ;**** ART Parameters ***
  32706.   Draw = W3DModelDraw DrawTag_01
  32707.     OkToChangeModelColor = Yes
  32708.  
  32709.  
  32710.  
  32711.     ; WHILE CARRYING PISTOL
  32712.     ;---------------------------------------------------------
  32713.     DefaultConditionState ;Idle with Pistol Holstered
  32714.       Model = UIMOB03_SKN
  32715.       IdleAnimation = UIMOB03_SKL.UIMOB03_IDA1 0 12
  32716.       IdleAnimation = UIMOB03_SKL.UIMOB03_IDA2 0 5
  32717.       IdleAnimation = UIMOB03_SKL.UIMOB03_CHA  0 5
  32718.       IdleAnimation = UIMOB03_SKL.UIMOB03_STA  0 5
  32719.       AnimationMode = ONCE
  32720.       AnimationSpeedFactorRange 0.9 1.1
  32721.       TransitionKey = TRANS_STAND_A
  32722.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32723.  
  32724.       WeaponFireFXBone = PRIMARY Muzzle
  32725.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  32726.       WeaponFireFXBone = SECONDARY MuzzleAK
  32727.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  32728.       WeaponFireFXBone = TERTIARY "UIMOB03 R HAND"
  32729.     End
  32730.  
  32731.     ; Drawing pistol
  32732.     ConditionState  = PREATTACK_A
  32733.       Animation     = UIMOB03_SKL.UIMOB03_ATA1_ST ; start firing
  32734.       AnimationMode = ONCE
  32735.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32736.     End
  32737.     AliasConditionState = PREATTACK_A FIRING_A
  32738.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  32739.  
  32740.     ; Firing pistol
  32741.     ConditionState = FIRING_A
  32742.       Animation = UIMOB03_SKL.UIMOB03_ATA1_LP ; looping firing
  32743.       AnimationMode = LOOP
  32744.       TransitionKey = TRANS_FIRING_A
  32745.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32746.     End
  32747.  
  32748.     ConditionState  = BETWEEN_FIRING_SHOTS_A
  32749.       Animation     = UIMOB03_SKL.UIMOB03_ATA1_LP ; looping firing
  32750.       AnimationMode = LOOP
  32751.       TransitionKey = TRANS_FIRING_A
  32752.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32753.     End
  32754.     
  32755.     ConditionState  = RELOADING_A
  32756.       Animation     = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing
  32757.       AnimationMode = ONCE
  32758.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32759.     End
  32760.  
  32761.     ; This transition allows him to put his gun away when he's finished attacking.
  32762.     TransitionState = TRANS_FIRING_A TRANS_STAND_A
  32763.       Animation     = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing
  32764.       AnimationMode = ONCE
  32765.     End
  32766.  
  32767.     ConditionState = MOVING
  32768.       Animation = UIMOB03_SKL.UIMOB03_RNA 
  32769.       AnimationMode = LOOP
  32770.       Flags = RANDOMSTART
  32771.       TransitionKey   = MOVING
  32772.     End
  32773.     AliasConditionState = MOVING RELOADING_A
  32774.     AliasConditionState = MOVING PREATTACK_A
  32775.     AliasConditionState = MOVING FIRING_A
  32776.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  32777.     AliasConditionState = MOVING RELOADING_C RELOADING_A 
  32778.     AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  32779.  
  32780.     ConditionState = DYING
  32781.       Animation = UIMOB03_SKL.UIMOB03_DA1    
  32782.       Animation = UIMOB03_SKL.UIMOB03_DA2
  32783.       AnimationMode = ONCE
  32784.       TransitionKey = TRANS_Dying
  32785.     End
  32786.  
  32787.  
  32788.     ConditionState = SPECIAL_CHEERING
  32789.       Animation = UIMOB03_SKL.UIMOB03_CHA
  32790.       AnimationMode = ONCE
  32791.     End
  32792.  
  32793.     ;--------------------------------------------------------
  32794.  
  32795.     ; TRANSITION FROM PISTOL TO AK47
  32796.     TransitionState = TRANS_STAND_A TRANS_STAND_AK
  32797.       Animation = UIMOB03_SKL.UIMOB03_TA-D
  32798.       AnimationMode = ONCE
  32799.     End
  32800.  
  32801.  
  32802.     ; WHILE CARRYING AK47 
  32803.     ;---------------------------------------------------------
  32804.     ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
  32805.       Model = UIMOB03_SKN
  32806.       IdleAnimation = UIMOB03_SKL.UIMOB03_IDD1 0 6
  32807.       IdleAnimation = UIMOB03_SKL.UIMOB03_IDD2 0 6
  32808.       IdleAnimation = UIMOB03_SKL.UIMOB03_CHD  0 6
  32809.       IdleAnimation = UIMOB03_SKL.UIMOB03_STD
  32810.       AnimationMode = ONCE
  32811.       AnimationSpeedFactorRange 0.9 1.1
  32812.       TransitionKey = TRANS_STAND_AK
  32813.     End
  32814.  
  32815.     ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
  32816.       Animation = UIMOB03_SKL.UIMOB03_RND 
  32817.       AnimationMode = LOOP
  32818.       Flags = RANDOMSTART
  32819.       TransitionKey   = MOVING_AK
  32820.     End
  32821.  
  32822.     ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
  32823.       Animation = UIMOB03_SKL.UIMOB03_DD1    
  32824.       Animation = UIMOB03_SKL.UIMOB03_DD2
  32825.       AnimationMode = ONCE
  32826.       TransitionKey = TRANS_Dying
  32827.     End
  32828.  
  32829.     ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
  32830.       Animation = UIMOB03_SKL.UIMOB03_CHD
  32831.       AnimationMode = ONCE
  32832.     End
  32833.  
  32834.  
  32835.     ; Drawing AK47
  32836.     ConditionState  = PREATTACK_B 
  32837.       Animation     = UIMOB03_SKL.UIMOB03_ATD_ST ; start firing
  32838.       AnimationMode = ONCE
  32839.     End
  32840.     AliasConditionState = PREATTACK_B MOVING 
  32841.     AliasConditionState = PREATTACK_B FIRING_B 
  32842.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B 
  32843.  
  32844.     ; Firing Gun
  32845.     ConditionState = FIRING_B 
  32846.       Animation = UIMOB03_SKL.UIMOB03_ATD_LP ; looping firing
  32847.       AnimationMode = LOOP
  32848.       WeaponFireFXBone = SECONDARY MuzzleAK
  32849.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  32850.       TransitionKey = TRANS_FIRING_AK
  32851.     End
  32852.     AliasConditionState = MOVING FIRING_B 
  32853.  
  32854.     ConditionState  = BETWEEN_FIRING_SHOTS_B 
  32855.       Animation     = UIMOB03_SKL.UIMOB03_ATD_LP ; looping firing
  32856.       AnimationMode = LOOP
  32857.       TransitionKey = TRANS_FIRING_AK
  32858.     End
  32859.     AliasConditionState = RELOADING_B 
  32860.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B 
  32861.     AliasConditionState = MOVING RELOADING_B 
  32862.  
  32863.     ; This transition allows him to put his gun away when he's finished attacking.
  32864.     TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
  32865.       Animation     = UIMOB03_SKL.UIMOB03_ATD_ED ; end firing
  32866.       AnimationMode = ONCE
  32867.     End
  32868.  
  32869.  
  32870.     ;Throwing bottle----------------------------------------------------------------
  32871.     ConditionState = PREATTACK_C 
  32872.       Animation     = UIMOB03_SKL.UIMOB03_ATCA_BF ; the wind up
  32873.     End
  32874.     AliasConditionState = PREATTACK_C FIRING_A
  32875.     AliasConditionState = PREATTACK_C RELOADING_A
  32876.     AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  32877.  
  32878.     ConditionState = FIRING_C 
  32879.       Animation     = UIMOB03_SKL.UIMOB03_ATCA_AF ; the release and follow-thru
  32880.       TransitionKey = TRANS_THROW
  32881.     End
  32882.     AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
  32883.  
  32884.     ConditionState RELOADING_C
  32885.       Animation =UIMOB03_SKL.UIMOB03_IDA1
  32886.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  32887.  
  32888.     End
  32889.     AliasConditionState = RELOADING_C RELOADING_A
  32890.     AliasConditionState = RELOADING_C FIRING_A
  32891.     AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
  32892.  
  32893.  
  32894. ;    TransitionState = TRANSXXX TRANS_THROW
  32895. ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway gun and take out bottle
  32896. ;    End
  32897.  
  32898. ;    TransitionState = TRANS_THROW TRANS_FIRING_A
  32899. ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get PISTOL
  32900. ;    End
  32901.  
  32902. ;    TransitionState = TRANSXXXAK TRANS_THROW
  32903. ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway AK and take out bottle
  32904. ;    End
  32905.  
  32906. ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
  32907. ;      Animation     = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get AK
  32908. ;    End
  32909.  
  32910.  
  32911.     ;--------------------------------------------------------
  32912.  
  32913.     TransitionState = TRANS_Dying TRANS_Flailing
  32914.       Animation = UIMOB03_SKL.UIMOB03_A_ADTD1
  32915.       Animation = UIMOB03_SKL.UIMOB03_D_ADTD1
  32916.       AnimationMode = ONCE
  32917.     End
  32918.  
  32919.     ConditionState = DYING EXPLODED_FLAILING
  32920.       Animation = UIMOB03_SKL.UIMOB03_A_ADTD2
  32921.       Animation = UIMOB03_SKL.UIMOB03_D_ADTD2
  32922.       AnimationMode = LOOP
  32923.       TransitionKey = TRANS_Flailing
  32924.     End
  32925.  
  32926.     ConditionState = DYING EXPLODED_BOUNCING
  32927.       Animation = UIMOB03_SKL.UIMOB03_A_ADTD3
  32928.       Animation = UIMOB03_SKL.UIMOB03_D_ADTD3
  32929.       AnimationMode = ONCE
  32930.       TransitionKey = None
  32931.     End
  32932.  
  32933.   End
  32934.  
  32935. ;**** DESIGN parameters ***
  32936.  
  32937.   DisplayName      = OBJECT:AngryMob
  32938.   Side = GLA
  32939.   EditorSorting = INFANTRY
  32940.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  32941.  
  32942.  
  32943.  
  32944.  
  32945.   ;==================== CINEMA ONLY WEAPONSET ========================
  32946.   WeaponSet
  32947.     Conditions = None 
  32948.     Weapon = PRIMARY GLAAngryMobMolotovCocktailProjectileWeapon
  32949.     PreferredAgainst    = TERTIARY VEHICLE STRUCTURE
  32950.     ShareWeaponReloadTime = Yes
  32951.   End
  32952.   ;==================== CINEMA ONLY WEAPONSET ========================
  32953.  
  32954.  
  32955.   ArmorSet
  32956.     Conditions      = None
  32957.     Armor           = HumanArmor
  32958.     DamageFX        = InfantryDamageFX
  32959.   End
  32960.   VisionRange = 150
  32961.   ShroudClearingRange = 150
  32962.   Prerequisites
  32963.     Object = GLABarracks
  32964.   End
  32965.   BuildCost = 100
  32966.   BuildTime = 0.0           
  32967.  
  32968.   ExperienceValue = 5 5 5 5    ;Experience point value at each level
  32969.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  32970.   IsTrainable = Yes             ;Can gain experience
  32971.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  32972.  
  32973.   ; *** AUDIO Parameters ***
  32974.   VoiceSelect = NoSound 
  32975.   VoiceMove = NoSound   
  32976.   VoiceAttack = NoSound 
  32977.   SoundDie = RebelVoiceDie
  32978.  
  32979.  
  32980. ;**** ENGINEERING Parameters *** ;MOB01
  32981.   RadarPriority = UNIT
  32982.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
  32983.  
  32984.   Body = ActiveBody BodyTag_01
  32985.     MaxHealth       = 50.0
  32986.     InitialHealth   = 50.0
  32987.   End
  32988.  
  32989.   Behavior = AIUpdateInterface ModuleTag_03
  32990.     AutoAcquireEnemiesWhenIdle = Yes
  32991.   End
  32992.  
  32993.   Behavior = MobMemberSlavedUpdate ModuleTag_04
  32994.     MustCatchUpRadius   = 70   ; bigger; bigger; bigger; bigger; bigger; bigger
  32995.     NoNeedToCatchUpRadius = 25 ; bigger; bigger; bigger; bigger; bigger; bigger
  32996.     Squirrelliness = 0.00      ; zero; zero; zero; zero; zero; zero
  32997.     CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
  32998.   End
  32999.  
  33000.   Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
  33001.   Locomotor = SET_WANDER WanderHumanLocomotor
  33002.   Locomotor = SET_PANIC PanicHumanLocomotor
  33003.  
  33004.   Behavior = PhysicsBehavior BehaviorTag_01
  33005.     Mass = 5.0
  33006.   End
  33007.  
  33008.   Behavior = SquishCollide ModuleTag_08
  33009.     ;nothing
  33010.   End
  33011.  
  33012.   Behavior = WeaponSetUpgrade UpgradeTag_01
  33013.     TriggeredBy = Upgrade_GLAArmTheMob
  33014.   End
  33015.  
  33016.  
  33017. ; --- begin Death modules ---
  33018.   Behavior = SlowDeathBehavior DeathTag_01
  33019.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  33020.     SinkDelay           = 3000
  33021.     SinkRate            = 0.5     ; in Dist/Sec
  33022.     DestructionDelay    = 8000
  33023.     FX                  = INITIAL FX_GIDie
  33024.   End
  33025.   Behavior = SlowDeathBehavior DeathTag_02
  33026.     DeathTypes          = NONE +CRUSHED +SPLATTED
  33027.     SinkDelay           = 3000
  33028.     SinkRate            = 0.5     ; in Dist/Sec
  33029.     DestructionDelay    = 8000
  33030.     FX                  = INITIAL FX_GIDieCrushed
  33031.   End
  33032.   Behavior = SlowDeathBehavior DeathTag_03
  33033.     DeathTypes          = NONE +EXPLODED
  33034.     SinkDelay           = 3000
  33035.     SinkRate            = 0.5     ; in Dist/Sec
  33036.     DestructionDelay    = 8000
  33037.     FX                  = INITIAL FX_GIDie
  33038.     FlingForce          = 8
  33039.     FlingForceVariance  = 3
  33040.     FlingPitch          = 60
  33041.     FlingPitchVariance  = 10
  33042.   End
  33043.   Behavior = SlowDeathBehavior DeathTag_04
  33044.     DeathTypes          = NONE +BURNED
  33045.     DestructionDelay    = 0
  33046.     FX                  = INITIAL FX_GIDie
  33047.     OCL                 = INITIAL OCL_FlamingInfantry
  33048.   End
  33049.   Behavior = SlowDeathBehavior DeathTag_05
  33050.     DeathTypes          = NONE +POISONED
  33051.     DestructionDelay    = 0
  33052.     FX                  = INITIAL FX_GIDie
  33053.     OCL                 = INITIAL OCL_ToxicInfantry
  33054.   End
  33055. ; --- end Death modules ---
  33056.  
  33057.   Behavior = PoisonedBehavior BehaviorTag_02
  33058.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  33059.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  33060.   End
  33061.  
  33062.   Geometry = CYLINDER
  33063.   GeometryMajorRadius = 4.0 ; very thin
  33064.   GeometryHeight = 12.0
  33065.   GeometryIsSmall = Yes
  33066.   Shadow = SHADOW_DECAL
  33067.   ShadowSizeX = 14;
  33068.   ShadowSizeY = 14;
  33069.   ShadowTexture = ShadowI;
  33070.   BuildCompletion = APPEARS_AT_RALLY_POINT
  33071.  
  33072. End
  33073.  
  33074. ;------------------------------------------------------------------------------
  33075. ;------------------------------------------------------------------------------
  33076. ; **************************** Cinematic-only unit ****************************
  33077. Object CINE_GLAInfantryAngryMobPistol05 
  33078.  
  33079. ;**** ART Parameters ***
  33080.   Draw = W3DModelDraw DrawTag_01
  33081.     OkToChangeModelColor = Yes
  33082.  
  33083.  
  33084.  
  33085.     ; WHILE CARRYING PISTOL
  33086.     ;---------------------------------------------------------
  33087.     DefaultConditionState ;Idle with Pistol Holstered
  33088.       Model = UIMOB05_SKN
  33089.       IdleAnimation = UIMOB05_SKL.UIMOB05_IDA1 0 12
  33090.       IdleAnimation = UIMOB05_SKL.UIMOB05_IDA2 0 5
  33091.       IdleAnimation = UIMOB05_SKL.UIMOB05_CHA  0 5
  33092.       IdleAnimation = UIMOB05_SKL.UIMOB05_STA  0 5
  33093.       AnimationMode = ONCE
  33094.       AnimationSpeedFactorRange 0.9 1.1
  33095.       TransitionKey = TRANS_STAND_A
  33096.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  33097.  
  33098.       WeaponFireFXBone = PRIMARY Muzzle01
  33099.       WeaponMuzzleFlash = PRIMARY Muzzle01
  33100.       WeaponFireFXBone = SECONDARY MuzzleAK01
  33101.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX01
  33102.       WeaponFireFXBone = TERTIARY "UIMOB05 R HAND"
  33103.     End
  33104.  
  33105.     ; Drawing pistol
  33106.     ConditionState  = PREATTACK_A
  33107.       Animation     = UIMOB05_SKL.UIMOB05_ATA1_ST ; start firing
  33108.       AnimationMode = ONCE
  33109.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  33110.     End
  33111.     AliasConditionState = PREATTACK_A FIRING_A
  33112.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  33113.  
  33114.     ; Firing pistol
  33115.     ConditionState = FIRING_A
  33116.       Animation = UIMOB05_SKL.UIMOB05_ATA1_LP ; looping firing
  33117.       AnimationMode = LOOP
  33118.       TransitionKey = TRANS_FIRING_A
  33119.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  33120.     End
  33121.  
  33122.     ConditionState  = BETWEEN_FIRING_SHOTS_A
  33123.       Animation     = UIMOB05_SKL.UIMOB05_ATA1_LP ; looping firing
  33124.       AnimationMode = LOOP
  33125.       TransitionKey = TRANS_FIRING_A
  33126.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  33127.     End
  33128.     
  33129.     ConditionState  = RELOADING_A
  33130.       Animation     = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing
  33131.       AnimationMode = ONCE
  33132.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  33133.     End
  33134.  
  33135.     ; This transition allows him to put his gun away when he's finished attacking.
  33136.     TransitionState = TRANS_FIRING_A TRANS_STAND_A
  33137.       Animation     = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing
  33138.       AnimationMode = ONCE
  33139.     End
  33140.  
  33141.     ConditionState = MOVING
  33142.       Animation = UIMOB05_SKL.UIMOB05_RNA 
  33143.       AnimationMode = LOOP
  33144.       Flags = RANDOMSTART
  33145.       TransitionKey   = MOVING
  33146.       ParticleSysBone   = None InfantryDustTrails
  33147.     End
  33148.     AliasConditionState = MOVING RELOADING_A
  33149.     AliasConditionState = MOVING PREATTACK_A
  33150.     AliasConditionState = MOVING FIRING_A
  33151.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  33152.     AliasConditionState = MOVING RELOADING_C RELOADING_A 
  33153.     AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  33154.  
  33155.     ConditionState = DYING
  33156.       Animation = UIMOB05_SKL.UIMOB05_DA1    
  33157.       Animation = UIMOB05_SKL.UIMOB05_DA2
  33158.       AnimationMode = ONCE
  33159.       TransitionKey = TRANS_Dying
  33160.     End
  33161.  
  33162.  
  33163.     ConditionState = SPECIAL_CHEERING
  33164.       Animation = UIMOB05_SKL.UIMOB05_CHA
  33165.       AnimationMode = ONCE
  33166.     End
  33167.  
  33168.     ;--------------------------------------------------------
  33169.  
  33170.     ; TRANSITION FROM PISTOL TO AK47
  33171.     TransitionState = TRANS_STAND_A TRANS_STAND_AK
  33172.       Animation = UIMOB05_SKL.UIMOB05_TA-D
  33173.       AnimationMode = ONCE
  33174.     End
  33175.  
  33176.  
  33177.     ; WHILE CARRYING AK47 
  33178.     ;---------------------------------------------------------
  33179.     ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung
  33180.       Model = UIMOB05_SKN
  33181.       IdleAnimation = UIMOB05_SKL.UIMOB05_IDD1 0 6
  33182.       IdleAnimation = UIMOB05_SKL.UIMOB05_IDD2 0 6
  33183.       IdleAnimation = UIMOB05_SKL.UIMOB05_CHD  0 6
  33184.       IdleAnimation = UIMOB05_SKL.UIMOB05_STD
  33185.       AnimationMode = ONCE
  33186.       AnimationSpeedFactorRange 0.9 1.1
  33187.       TransitionKey = TRANS_STAND_AK
  33188.     End
  33189.  
  33190.     ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE
  33191.       Animation = UIMOB05_SKL.UIMOB05_RND 
  33192.       AnimationMode = LOOP
  33193.       Flags = RANDOMSTART
  33194.       TransitionKey   = MOVING_AK
  33195.     End
  33196.  
  33197.     ConditionState = DYING WEAPONSET_PLAYER_UPGRADE
  33198.       Animation = UIMOB05_SKL.UIMOB05_DD1    
  33199.       Animation = UIMOB05_SKL.UIMOB05_DD2
  33200.       AnimationMode = ONCE
  33201.       TransitionKey = TRANS_Dying
  33202.     End
  33203.  
  33204.     ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE
  33205.       Animation = UIMOB05_SKL.UIMOB05_CHD
  33206.       AnimationMode = ONCE
  33207.     End
  33208.  
  33209.     ; Drawing AK47
  33210.     ConditionState  = PREATTACK_B 
  33211.       Animation     = UIMOB05_SKL.UIMOB05_ATD1_ST ; start firing
  33212.       AnimationMode = ONCE
  33213.     End
  33214.     AliasConditionState = PREATTACK_B MOVING 
  33215.     AliasConditionState = PREATTACK_B FIRING_B 
  33216.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B 
  33217.  
  33218.     ; Firing Gun
  33219.     ConditionState = FIRING_B 
  33220.       Animation = UIMOB05_SKL.UIMOB05_ATD1_LP ; looping firing
  33221.       AnimationMode = LOOP
  33222.       WeaponFireFXBone = SECONDARY MuzzleAK
  33223.       WeaponMuzzleFlash = SECONDARY MuzzleAKFX
  33224.       TransitionKey = TRANS_FIRING_AK
  33225.     End
  33226.     AliasConditionState = MOVING FIRING_B 
  33227.  
  33228.     ConditionState  = BETWEEN_FIRING_SHOTS_B 
  33229.       Animation     = UIMOB05_SKL.UIMOB05_ATD1_LP ; looping firing
  33230.       AnimationMode = LOOP
  33231.       TransitionKey = TRANS_FIRING_AK
  33232.     End
  33233.     AliasConditionState = RELOADING_B 
  33234.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B 
  33235.     AliasConditionState = MOVING RELOADING_B 
  33236.  
  33237.     ; This transition allows him to put his gun away when he's finished attacking.
  33238.     TransitionState = TRANS_FIRING_AK TRANS_STAND_AK
  33239.       Animation     = UIMOB05_SKL.UIMOB05_ATD1_ED ; end firing
  33240.       AnimationMode = ONCE
  33241.     End
  33242.  
  33243.  
  33244.     ;Throwing bottle----------------------------------------------------------------
  33245.     ConditionState = PREATTACK_C 
  33246.       Animation     = UIMOB05_SKL.UIMOB05_ATCA_BF ; the wind up
  33247.     End
  33248.     AliasConditionState = PREATTACK_C FIRING_A
  33249.     AliasConditionState = PREATTACK_C RELOADING_A
  33250.     AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A 
  33251.  
  33252.     ConditionState = FIRING_C 
  33253.       Animation     = UIMOB05_SKL.UIMOB05_ATCA_AF ; the release and follow-thru
  33254.       TransitionKey = TRANS_THROW
  33255.     End
  33256.     AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A
  33257.  
  33258.     ConditionState RELOADING_C
  33259.       Animation =UIMOB05_SKL.UIMOB05_IDA1
  33260.       WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru
  33261.     End
  33262.     AliasConditionState = RELOADING_C RELOADING_A
  33263.     AliasConditionState = RELOADING_C FIRING_A
  33264.     AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A
  33265.  
  33266.  
  33267. ;    TransitionState = TRANSXXX TRANS_THROW
  33268. ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway gun and take out bottle
  33269. ;    End
  33270.  
  33271. ;    TransitionState = TRANS_THROW TRANS_FIRING_A
  33272. ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get PISTOL
  33273. ;    End
  33274.  
  33275. ;    TransitionState = TRANSXXXAK TRANS_THROW
  33276. ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway AK and take out bottle
  33277. ;    End
  33278.  
  33279.  
  33280. ;    TransitionState = TRANS_THROW TRANS_FIRING_AK
  33281. ;      Animation     = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get AK
  33282. ;    End
  33283.  
  33284.     ;--------------------------------------------------------
  33285.  
  33286.     TransitionState = TRANS_Dying TRANS_Flailing
  33287.       Animation = UIMOB05_SKL.UIMOB05_A_ADTA1
  33288.       Animation = UIMOB05_SKL.UIMOB05_D_ADTA1
  33289.       AnimationMode = ONCE
  33290.     End
  33291.  
  33292.     ConditionState = DYING EXPLODED_FLAILING
  33293.       Animation = UIMOB05_SKL.UIMOB05_A_ADTA2
  33294.       Animation = UIMOB05_SKL.UIMOB05_D_ADTA2
  33295.       AnimationMode = LOOP
  33296.       TransitionKey = TRANS_Flailing
  33297.     End
  33298.  
  33299.     ConditionState = DYING EXPLODED_BOUNCING
  33300.       Animation = UIMOB05_SKL.UIMOB05_A_ADTA3
  33301.       Animation = UIMOB05_SKL.UIMOB05_D_ADTA3
  33302.       AnimationMode = ONCE
  33303.       TransitionKey = None
  33304.     End
  33305.  
  33306.  
  33307.   End
  33308.  
  33309.  
  33310.  
  33311. ;**** DESIGN parameters ***
  33312.  
  33313.   DisplayName      = OBJECT:AngryMob
  33314.   Side = GLA
  33315.   EditorSorting = INFANTRY
  33316.   TransportSlotCount = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  33317.  
  33318.  
  33319.  
  33320.  
  33321.   ;==================== CINEMA ONLY WEAPONSET ========================
  33322.   WeaponSet
  33323.     Conditions = None 
  33324.     Weapon = PRIMARY GLAAngryMobPistolWeapon
  33325.     PreferredAgainst    = PRIMARY     INFANTRY
  33326.     Weapon = SECONDARY None
  33327.     Weapon = TERTIARY GLAAngryMobMolotovCocktailProjectileWeapon
  33328.     PreferredAgainst    = TERTIARY VEHICLE STRUCTURE
  33329.     ShareWeaponReloadTime = No
  33330.   End
  33331.   ;==================== CINEMA ONLY WEAPONSET ========================
  33332.  
  33333.  
  33334.   ArmorSet
  33335.     Conditions      = None
  33336.     Armor           = HumanArmor
  33337.     DamageFX        = InfantryDamageFX
  33338.   End
  33339.   VisionRange = 150
  33340.   ShroudClearingRange = 150
  33341.   Prerequisites
  33342.     Object = GLABarracks
  33343.   End
  33344.   BuildCost = 100
  33345.   BuildTime = 0.0           
  33346.  
  33347.   ExperienceValue = 5 5 5 5    ;Experience point value at each level
  33348.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  33349.   IsTrainable = Yes             ;Can gain experience
  33350.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  33351.  
  33352.   ; *** AUDIO Parameters ***
  33353.   VoiceSelect = NoSound 
  33354.   VoiceMove = NoSound   
  33355.   VoiceAttack = NoSound 
  33356.   SoundDie = RebelVoiceDie
  33357.  
  33358.  
  33359. ;**** ENGINEERING Parameters *** ;MOB01
  33360.   RadarPriority = UNIT
  33361.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY IGNORED_IN_GUI  ;NO_COLLIDE ;Lorenzen disables 
  33362.  
  33363.   Body = ActiveBody BodyTag_01
  33364.     MaxHealth       = 50.0
  33365.     InitialHealth   = 50.0
  33366.   End
  33367.  
  33368.   Behavior = AIUpdateInterface ModuleTag_03
  33369.     AutoAcquireEnemiesWhenIdle = Yes
  33370.   End
  33371.  
  33372.   Behavior = MobMemberSlavedUpdate ModuleTag_04
  33373.     MustCatchUpRadius   = 70   ; bigger; bigger; bigger; bigger; bigger; bigger
  33374.     NoNeedToCatchUpRadius = 25 ; bigger; bigger; bigger; bigger; bigger; bigger
  33375.     Squirrelliness = 0.00      ; zero; zero; zero; zero; zero; zero
  33376.     CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames
  33377.   End
  33378.  
  33379.   Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
  33380.   Locomotor = SET_WANDER WanderHumanLocomotor
  33381.   Locomotor = SET_PANIC PanicHumanLocomotor
  33382.  
  33383.   Behavior = PhysicsBehavior BehaviorTag_01
  33384.     Mass = 5.0
  33385.   End
  33386.  
  33387.   Behavior = SquishCollide ModuleTag_08
  33388.     ;nothing
  33389.   End
  33390.  
  33391.   Behavior = WeaponSetUpgrade UpgradeTag_01
  33392.     TriggeredBy = Upgrade_GLAArmTheMob
  33393.   End
  33394.  
  33395.  
  33396. ; --- begin Death modules ---
  33397.   Behavior = SlowDeathBehavior DeathTag_01
  33398.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  33399.     SinkDelay           = 3000
  33400.     SinkRate            = 0.5     ; in Dist/Sec
  33401.     DestructionDelay    = 8000
  33402.     FX                  = INITIAL FX_GIDie
  33403.   End
  33404.   Behavior = SlowDeathBehavior DeathTag_02
  33405.     DeathTypes          = NONE +CRUSHED +SPLATTED
  33406.     SinkDelay           = 3000
  33407.     SinkRate            = 0.5     ; in Dist/Sec
  33408.     DestructionDelay    = 8000
  33409.     FX                  = INITIAL FX_GIDieCrushed
  33410.   End
  33411.   Behavior = SlowDeathBehavior DeathTag_03
  33412.     DeathTypes          = NONE +EXPLODED
  33413.     SinkDelay           = 3000
  33414.     SinkRate            = 0.5     ; in Dist/Sec
  33415.     DestructionDelay    = 8000
  33416.     FX                  = INITIAL FX_GIDie
  33417.     FlingForce          = 8
  33418.     FlingForceVariance  = 3
  33419.     FlingPitch          = 60
  33420.     FlingPitchVariance  = 10
  33421.   End
  33422.   Behavior = SlowDeathBehavior DeathTag_04
  33423.     DeathTypes          = NONE +BURNED
  33424.     DestructionDelay    = 0
  33425.     FX                  = INITIAL FX_GIDie
  33426.     OCL                 = INITIAL OCL_FlamingInfantry
  33427.   End
  33428.   Behavior = SlowDeathBehavior DeathTag_05
  33429.     DeathTypes          = NONE +POISONED
  33430.     DestructionDelay    = 0
  33431.     FX                  = INITIAL FX_GIDie
  33432.     OCL                 = INITIAL OCL_ToxicInfantry
  33433.   End
  33434. ; --- end Death modules ---
  33435.  
  33436.   Behavior = PoisonedBehavior BehaviorTag_02
  33437.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  33438.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  33439.   End
  33440.  
  33441.   Geometry = CYLINDER
  33442.   GeometryMajorRadius = 4.0 ; very thin
  33443.   GeometryHeight = 12.0
  33444.   GeometryIsSmall = Yes
  33445.   Shadow = SHADOW_DECAL
  33446.   ShadowSizeX = 14;
  33447.   ShadowSizeY = 14;
  33448.   ShadowTexture = ShadowI;
  33449.   BuildCompletion = APPEARS_AT_RALLY_POINT
  33450.  
  33451. End
  33452.  
  33453. ;------------------------------------------------------------------------------
  33454. ;**************************** Cinematic-only unit *****************************
  33455. Object CINE_AmericaInfantryColonelBurton
  33456.  
  33457.   ; *** ART Parameters ***
  33458.   SelectPortrait         = SABurton_L
  33459.   ButtonImage            = SABurton
  33460.  
  33461.   Draw = W3DModelDraw ModuleTag_01
  33462.   OkToChangeModelColor = Yes
  33463.  
  33464.     ; idle
  33465.     DefaultConditionState
  33466.       Model               = AIHERO_SKN
  33467.       IdleAnimation       = AIHERO_SKL.AIHERO_STA 0 25
  33468.       IdleAnimation       = AIHERO_SKL.AIHERO_IDA
  33469.       IdleAnimation       = AIHERO_SKL.AIHERO_IDB
  33470.       AnimationMode       = ONCE
  33471.       TransitionKey       = TRANS_Stand
  33472.       WeaponFireFXBone    = PRIMARY Muzzle
  33473.       WeaponMuzzleFlash   = PRIMARY MuzzleFX
  33474.     End
  33475.     
  33476.     ; injured idle
  33477.     ConditionState        = REALLYDAMAGED
  33478.       IdleAnimation       = AIHERO_SKL.AIHERO_ISTA 0 30
  33479.       IdleAnimation       = AIHERO_SKL.AIHERO_IIDA
  33480.       IdleAnimation       = AIHERO_SKL.AIHERO_IIDB
  33481.       AnimationMode       = ONCE
  33482.       TransitionKey       = TRANS_StandInjured
  33483.     End
  33484.  
  33485.     TransitionState     = TRANS_Stand TRANS_StandInjured
  33486.       Animation         = AIHERO_SKL.AIHERO_ISTAHIT
  33487.       AnimationMode     = ONCE
  33488.     End
  33489.     
  33490.     ; moving
  33491.     ConditionState        = MOVING
  33492.       Animation           = AIHERO_SKL.AIHERO_RNA 34
  33493.       AnimationMode       = LOOP
  33494.       Flags               = RANDOMSTART
  33495.       TransitionKey       = TRANS_Stand
  33496.       ParticleSysBone     = None InfantryDustTrails
  33497.     End
  33498.     AliasConditionState = MOVING FIRING_A
  33499.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  33500.     AliasConditionState = MOVING RELOADING_A
  33501.     AliasConditionState = MOVING FIRING_B
  33502.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
  33503.     AliasConditionState = MOVING RELOADING_B
  33504.  
  33505.     ; injured moving
  33506.     ConditionState     = MOVING REALLYDAMAGED
  33507.       Animation        = AIHERO_SKL.AIHERO_IRNA 26
  33508.       AnimationMode    = LOOP
  33509.       Flags            = RANDOMSTART
  33510.       TransitionKey    = TRANS_StandInjured
  33511.       ParticleSysBone  = None InfantryDustTrails
  33512.     End
  33513.     AliasConditionState = MOVING FIRING_A REALLYDAMAGED
  33514.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  33515.     AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
  33516.     AliasConditionState = MOVING FIRING_B REALLYDAMAGED
  33517.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  33518.     AliasConditionState = MOVING RELOADING_B REALLYDAMAGED
  33519.  
  33520.     ; Firing animation
  33521.     ConditionState      = FIRING_A
  33522.       Animation         = AIHERO_SKL.AIHERO_ATA
  33523.       AnimationMode     = ONCE
  33524.       TransitionKey     = TRANS_FiringA
  33525.     End
  33526.     AliasConditionState = BETWEEN_FIRING_SHOTS_A
  33527.     AliasConditionState = RELOADING_A
  33528.  
  33529.     ; Injured Firing animation
  33530.     ConditionState      = FIRING_A REALLYDAMAGED
  33531.       Animation         = AIHERO_SKL.AIHERO_IATA
  33532.       AnimationMode     = ONCE
  33533.       TransitionKey     = TRANS_FiringAInjured
  33534.     End
  33535.     AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  33536.     AliasConditionState = RELOADING_A REALLYDAMAGED
  33537.  
  33538.     TransitionState     = TRANS_FiringA TRANS_FiringAInjured
  33539.       Animation         = AIHERO_SKL.AIHERO_IATAHIT
  33540.       AnimationMode     = ONCE
  33541.     End
  33542.  
  33543.     ; Placing charge animation
  33544.     ConditionState      = UNPACKING
  33545.       Animation         = AIHERO_SKL.AIHERO_ATB1
  33546.       AnimationMode     = ONCE
  33547.     End
  33548.     AliasConditionState = MOVING UNPACKING
  33549.  
  33550.     ; Injured Placing charge animation
  33551.     ConditionState      = UNPACKING REALLYDAMAGED
  33552.       Animation         = AIHERO_SKL.AIHERO_IATB1
  33553.       AnimationMode     = ONCE
  33554.     End
  33555.     AliasConditionState = MOVING UNPACKING REALLYDAMAGED
  33556.  
  33557.     ; Stab animations
  33558.     ConditionState      = PREATTACK_B 
  33559.       Animation         = AIHERO_SKL.AIHERO_ATC
  33560.       AnimationMode     = ONCE
  33561.       TransitionKey     = TRANS_Stabbing
  33562.     End
  33563.     AliasConditionState = PREATTACK_B MOVING
  33564.     AliasConditionState = PREATTACK_B FIRING_B
  33565.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
  33566.  
  33567.     ConditionState      = FIRING_B
  33568.       Animation         = AIHERO_SKL.AIHERO_ATC
  33569.       AnimationMode     = MANUAL
  33570.       Flags             = START_FRAME_LAST
  33571.       TransitionKey     = TRANS_Stabbing
  33572.     End
  33573.     AliasConditionState = BETWEEN_FIRING_SHOTS_B
  33574.     AliasConditionState = RELOADING_B
  33575.  
  33576.     TransitionState     = TRANS_Stabbing TRANS_Stand
  33577.       Animation         = AIHERO_SKL.AIHERO_ATC2
  33578.       AnimationMode     = ONCE
  33579.     End
  33580.  
  33581.     ; Injured Stab animations
  33582.     ConditionState      = PREATTACK_B REALLYDAMAGED 
  33583.       Animation         = AIHERO_SKL.AIHERO_IATC1
  33584.       AnimationMode     = ONCE
  33585.       TransitionKey     = TRANS_StabbingInjured
  33586.     End
  33587.     AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
  33588.     AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
  33589.     AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  33590.  
  33591.     ConditionState      = FIRING_B REALLYDAMAGED
  33592.       Animation         = AIHERO_SKL.AIHERO_IATC2
  33593.       AnimationMode     = MANUAL
  33594.       Flags             = START_FRAME_LAST
  33595.       TransitionKey     = TRANS_StabbingInjured
  33596.     End
  33597.     AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  33598.     AliasConditionState = RELOADING_B REALLYDAMAGED
  33599.  
  33600.     TransitionState     = TRANS_StabbingInjured TRANS_StandInjured
  33601.       Animation         = AIHERO_SKL.AIHERO_IATC2
  33602.       AnimationMode     = ONCE
  33603.     End
  33604.  
  33605.     ; cheering
  33606.     ConditionState      = SPECIAL_CHEERING
  33607.       Animation         = AIHERO_SKL.AIHERO_CHA
  33608.       AnimationMode     = ONCE
  33609.     End
  33610.     
  33611.     ; injured cheering
  33612.     ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
  33613.       Animation         = AIHERO_SKL.AIHERO_ICHA
  33614.       AnimationMode     = ONCE
  33615.     End
  33616.     
  33617.     ; climbing
  33618.     ConditionState      = CLIMBING
  33619.       Animation         = AIHERO_SKL.AIHERO_CLMID
  33620.       AnimationMode     = LOOP
  33621.       TransitionKey     = TRANS_Climbing
  33622.     End
  33623.     AliasConditionState = RAPPELLING
  33624.     AliasConditionState = CLIMBING REALLYDAMAGED
  33625.     AliasConditionState = RAPPELLING REALLYDAMAGED
  33626.  
  33627.     ConditionState      = CLIMBING MOVING
  33628.       Animation         = AIHERO_SKL.AIHERO_CLMUP
  33629.       AnimationMode     = LOOP
  33630.       TransitionKey     = TRANS_Climbing
  33631.     End
  33632.     AliasConditionState = CLIMBING MOVING REALLYDAMAGED
  33633.  
  33634.     ConditionState      = RAPPELLING MOVING
  33635.       Animation         = AIHERO_SKL.AIHERO_CLMUP
  33636.       AnimationMode     = LOOP_BACKWARDS
  33637.       TransitionKey     = TRANS_Climbing
  33638.     End
  33639.     AliasConditionState = RAPPELLING MOVING REALLYDAMAGED
  33640.  
  33641. ; these transitions don't really work well with our code. leave 'em out.
  33642. ;    TransitionState     = TRANS_Climbing TRANS_Stand
  33643. ;      Animation         = AIHERO_SKL.AIHERO_CLMST
  33644. ;      AnimationMode     = ONCE
  33645. ;    End
  33646. ;
  33647. ;    TransitionState     = TRANS_Stand TRANS_Climbing
  33648. ;      Animation         = AIHERO_SKL.AIHERO_CLMST
  33649. ;      AnimationMode     = ONCE_BACKWARDS
  33650. ;    End
  33651.  
  33652.     ; dying anims
  33653.     ConditionState      = DYING
  33654.       Animation         = AIHERO_SKL.AIHERO_DTA
  33655.       Animation         = AIHERO_SKL.AIHERO_DTB
  33656.       Animation         = AIHero_SKL.AIHero_IDTA
  33657.       Animation         = AIHero_SKL.AIHero_IDTB
  33658.       AnimationMode     = ONCE
  33659.       TransitionKey     = TRANS_Dying
  33660.     End
  33661.     AliasConditionState = RAPPELLING DYING
  33662.     AliasConditionState = CLIMBING DYING
  33663.  
  33664.     TransitionState     = TRANS_Dying TRANS_Flailing
  33665.       Animation         = AIHERO_SKL.AIHERO_ADTG21
  33666.       AnimationMode     = ONCE
  33667.     End
  33668.  
  33669.     ConditionState      = DYING EXPLODED_FLAILING
  33670.       Animation         = AIHERO_SKL.AIHERO_ADTG22
  33671.       AnimationMode     = LOOP
  33672.       TransitionKey     = TRANS_Flailing
  33673.     End
  33674.  
  33675.     ConditionState      = DYING EXPLODED_BOUNCING
  33676.       Animation         = AIHERO_SKL.AIHERO_ADTG23
  33677.       AnimationMode     = ONCE
  33678.       TransitionKey     = None
  33679.     End
  33680.  
  33681.     ; misc anims
  33682.     ConditionState      = FREEFALL
  33683.       Animation         = AIHERO_SKL.AIHERO_PFL
  33684.       AnimationMode     = LOOP
  33685.       TransitionKey     = TRANS_Falling
  33686.     End
  33687.     AliasConditionState = FREEFALL REALLYDAMAGED
  33688.     AliasConditionState = FREEFALL DYING
  33689.  
  33690.     ConditionState      = PARACHUTING
  33691.       Animation         = AIHERO_SKL.AIHERO_PHG
  33692.       AnimationMode     = LOOP
  33693.       TransitionKey     = TRANS_Chute
  33694.     End
  33695.     AliasConditionState = PARACHUTING REALLYDAMAGED
  33696.     AliasConditionState = PARACHUTING DYING
  33697.  
  33698.     TransitionState     = TRANS_Falling TRANS_Chute
  33699.       Animation         = AIHERO_SKL.AIHERO_POP
  33700.       AnimationMode     = ONCE
  33701.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  33702.     End
  33703.  
  33704.     TransitionState     = TRANS_Chute TRANS_Stand
  33705.       Animation         = AIHERO_SKL.AIHERO_PTD
  33706.       AnimationMode     = ONCE
  33707.     End
  33708.  
  33709.     TransitionState     = TRANS_Chute TRANS_StandInjured
  33710.       Animation         = AIHERO_SKL.AIHERO_PTD
  33711.       AnimationMode     = ONCE
  33712.     End
  33713.  
  33714.   End
  33715.  
  33716.   ; ***DESIGN parameters ***
  33717.   DisplayName         = OBJECT:ColonelBurton
  33718.   Side                = America
  33719.   EditorSorting       = INFANTRY
  33720.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  33721.   WeaponSet
  33722.     Conditions          = None 
  33723.     Weapon              = PRIMARY     ColonelBurtonSniperRifleWeapon
  33724.     Weapon              = SECONDARY   ColonelBurtonKnifeWeapon
  33725.     AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  33726.     AutoChooseSources   = SECONDARY   NONE
  33727.   End
  33728.   ArmorSet
  33729.     Conditions      = None
  33730.     Armor           = HumanArmor
  33731.     DamageFX        = InfantryDamageFX
  33732.   End
  33733.   VisionRange         = 250
  33734.   ShroudClearingRange = 500
  33735.   Prerequisites
  33736.     Object = AmericaBarracks
  33737.     Object = AmericaStrategyCenter
  33738.   End
  33739.   BuildCost = 1500
  33740.   BuildTime = 20.0          ;in seconds  
  33741.  
  33742.   ExperienceValue     = 50 100 100 150  ; Experience point value at each level
  33743.   ExperienceRequired  = 0 200 300 600   ; Experience points needed to gain each level
  33744.   IsTrainable         = Yes             ; Can gain experience
  33745.   CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  33746.   CommandSet          = AmericaInfantryColonelBurtonCommandSet
  33747.  
  33748.   MaxSimultaneousOfType = 1
  33749.  
  33750.   ; *** AUDIO Parameters ***
  33751.   VoiceSelect = ColonelBurtonVoiceSelect
  33752.   VoiceMove = ColonelBurtonVoiceMove
  33753.   VoiceAttack = ColonelBurtonVoiceAttack
  33754.   VoiceFear = ColonelBurtonVoiceFear
  33755.   VoiceGuard = ColonelBurtonVoiceMove
  33756.   SoundDie = ColonelBurtonVoiceDie
  33757.   SoundDieFire = DieByFireUSA
  33758.   SoundDieToxin = DieByToxinUSA
  33759.   SoundStealthOn = StealthOn
  33760.   SoundStealthOff = StealthOff
  33761.   
  33762.   UnitSpecificSounds
  33763.     VoiceMelee = ColonelBurtonVoiceAttackKnife
  33764.     VoiceCreate           = ColonelBurtonVoiceCreate
  33765.     VoiceGarrison         = ColonelBurtonVoiceGarrison
  33766.     VoiceEnter            = ColonelBurtonVoiceMove
  33767.     VoiceEnterHostile     = ColonelBurtonVoiceMove
  33768.     VoiceGetHealed      = ColonelBurtonVoiceMove
  33769.   End
  33770.  
  33771.   ; *** ENGINEERING Parameters ***
  33772.   RadarPriority = UNIT
  33773.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
  33774.  
  33775.   Body = ActiveBody ModuleTag_02
  33776.     MaxHealth       = 200.0
  33777.     InitialHealth   = 200.0
  33778.   End
  33779.  
  33780.   Behavior = AIUpdateInterface ModuleTag_03
  33781.     AutoAcquireEnemiesWhenIdle = Yes
  33782.   End
  33783.  
  33784.   Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
  33785.   End
  33786.  
  33787.   Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
  33788.     ScanRate = 1000 ; once a second.
  33789.     ScanRange = 300 ;
  33790.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  33791.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  33792.   End
  33793.  
  33794.   Locomotor = SET_NORMAL CINE_ColonelBurtonGroundLocomotor CINE_ColonelBurtonCliffLocomotor
  33795.  
  33796.   Behavior = PhysicsBehavior ModuleTag_06
  33797.     Mass = 5.0
  33798.   End
  33799.  
  33800.   Behavior = StealthUpdate ModuleTag_07
  33801.     StealthDelay                = 2000 ; msec
  33802.     StealthForbiddenConditions  = FIRING_PRIMARY
  33803.     HintDetectableConditions    = IS_FIRING_WEAPON
  33804.     FriendlyOpacityMin          = 50.0%
  33805.     FriendlyOpacityMax          = 100.0%
  33806.     InnateStealth               = Yes
  33807.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  33808.   End
  33809.  
  33810.   Behavior = SpecialAbility ModuleTag_08
  33811.     SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
  33812.     UpdateModuleStartsAttack = Yes
  33813.     InitiateSound             = ColonelBurtonVoicePlantRemoteCharge
  33814.   End
  33815.   Behavior = SpecialAbilityUpdate ModuleTag_09
  33816.     SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
  33817.     StartAbilityRange = 0.0
  33818.     PreparationTime = 0
  33819.     SpecialObject = RemoteC4Charge
  33820.     MaxSpecialObjects = 8
  33821.     SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
  33822.     AlwaysValidateSpecialObjects = Yes      ;Coupled with the above setting, this one is necessary for code optimization.
  33823.     SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
  33824.     UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
  33825.     UnpackTime              = 5500
  33826.     PackTime                = 0
  33827.     SkipPackingWithNoTarget = Yes           ;When yes, the packing/unpacking will be ignored when detonating charges.
  33828.     FlipOwnerAfterUnpacking = Yes
  33829.     FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
  33830.     UnpackSound               = ColonelBurtonPlantCharge
  33831.     LoseStealthOnTrigger      = Yes
  33832.   End
  33833.  
  33834.   Behavior = SpecialAbility ModuleTag_10
  33835.     SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
  33836.     UpdateModuleStartsAttack = Yes
  33837.     InitiateSound             = ColonelBurtonVoicePlantTimedCharge
  33838.   End
  33839.   Behavior = SpecialAbilityUpdate ModuleTag_11
  33840.     SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
  33841.     StartAbilityRange = 0.0
  33842.     PreparationTime = 0
  33843.     SpecialObject = TimedC4Charge
  33844.     MaxSpecialObjects = 10
  33845.     SpecialObjectsPersistWhenOwnerDies = Yes 
  33846.     SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
  33847.     UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
  33848.     UnpackTime              = 5500
  33849.     FlipOwnerAfterUnpacking = Yes
  33850.     FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
  33851.     UnpackSound               = ColonelBurtonPlantCharge
  33852.     LoseStealthOnTrigger      = Yes
  33853.   End
  33854.  
  33855.   Behavior = ExperienceScalarUpgrade ModuleTag_12
  33856.     TriggeredBy   = Upgrade_AmericaAdvancedTraining
  33857.     AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
  33858.   End
  33859.  
  33860.   Behavior = SquishCollide ModuleTag_13
  33861.     ;nothing
  33862.   End
  33863.  
  33864.  
  33865. ; --- begin Death modules ---
  33866.   Behavior = SlowDeathBehavior ModuleTag_Death01
  33867.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  33868.     SinkDelay           = 3000
  33869.     SinkRate            = 0.5     ; in Dist/Sec
  33870.     DestructionDelay    = 8000
  33871.     FX                  = INITIAL FX_GIDie
  33872.   End
  33873.   Behavior = SlowDeathBehavior ModuleTag_Death02
  33874.     DeathTypes          = NONE +CRUSHED +SPLATTED
  33875.     SinkDelay           = 3000
  33876.     SinkRate            = 0.5     ; in Dist/Sec
  33877.     DestructionDelay    = 8000
  33878.     FX                  = INITIAL FX_GIDieCrushed
  33879.   End
  33880.   Behavior = SlowDeathBehavior ModuleTag_Death03
  33881.     DeathTypes          = NONE +EXPLODED
  33882.     SinkDelay           = 3000
  33883.     SinkRate            = 0.5     ; in Dist/Sec
  33884.     DestructionDelay    = 8000
  33885.     FX                  = INITIAL FX_GIDie
  33886.     FlingForce          = 8
  33887.     FlingForceVariance  = 3
  33888.     FlingPitch          = 60
  33889.     FlingPitchVariance  = 10
  33890.   End
  33891.   Behavior = SlowDeathBehavior ModuleTag_Death04
  33892.     DeathTypes          = NONE +BURNED
  33893.     DestructionDelay    = 0
  33894.     FX                  = INITIAL FX_GIDie
  33895.     OCL                 = INITIAL OCL_FlamingInfantry
  33896.   End
  33897.   Behavior = SlowDeathBehavior ModuleTag_Death05
  33898.     DeathTypes          = NONE +POISONED
  33899.     DestructionDelay    = 0
  33900.     FX                  = INITIAL FX_GIDie
  33901.     OCL                 = INITIAL OCL_ToxicInfantry
  33902.   End
  33903.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  33904.     DeathTypes          = NONE +POISONED_BETA
  33905.     DestructionDelay    = 0
  33906.     FX                  = INITIAL FX_GIDie
  33907.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  33908.   End
  33909. ; --- end Death modules ---
  33910.  
  33911.   Behavior = PoisonedBehavior ModuleTag_18
  33912.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  33913.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  33914.   End
  33915.  
  33916.   Geometry = CYLINDER
  33917.   GeometryMajorRadius = 10.0
  33918.   GeometryMinorRadius = 10.0
  33919.   GeometryHeight = 12.0
  33920.   GeometryIsSmall = Yes
  33921.   Shadow = SHADOW_DECAL
  33922.   ShadowSizeX = 14
  33923.   ShadowSizeY = 14
  33924.   ShadowTexture = ShadowI
  33925.   BuildCompletion = APPEARS_AT_RALLY_POINT
  33926.  
  33927. End
  33928.  
  33929. ;------------------------------------------------------------------------------
  33930. ;**************************** Cinematic-only unit *****************************
  33931. Object CINE_GLAVehicleQuadCannon
  33932.  
  33933.   ; *** ART Parameters ***
  33934.   SelectPortrait         = SUQuadCannon_L
  33935.   ButtonImage            = SUQuadCannon
  33936.   
  33937.   UpgradeCameo1 = Upgrade_GLAAPBullets
  33938.   UpgradeCameo2 = Upgrade_GLAJunkRepair
  33939.   ;UpgradeCameo3 = XXX
  33940.   ;UpgradeCameo4 = XXX
  33941.   ;UpgradeCameo5 = XXX
  33942.   
  33943.   Draw = W3DTankTruckDraw ModuleTag_01
  33944.     OkToChangeModelColor = Yes
  33945.  
  33946.     ConditionState = NONE
  33947.       Model = UVQuadCann
  33948.       Turret = TURRET
  33949.       TurretPitch = TURRETEL
  33950.       WeaponFireFXBone  = PRIMARY   BarrelMS
  33951.       WeaponMuzzleFlash = PRIMARY   BarrelFX
  33952.       WeaponRecoilBone  = PRIMARY   Barrel
  33953.       WeaponFireFXBone  = SECONDARY BarrelMS
  33954.       WeaponMuzzleFlash = SECONDARY BarrelFX
  33955.       WeaponRecoilBone  = SECONDARY Barrel
  33956.       HideSubObject = TURRETUP01 TURRETUP02
  33957.       ShowSubObject = TURRET
  33958.     End
  33959.       
  33960.     ConditionState = REALLYDAMAGED
  33961.       Model = UVQuadCann_D
  33962.       Turret = TURRET
  33963.       TurretPitch = TURRETEL
  33964.       WeaponFireFXBone  = PRIMARY   BarrelMS
  33965.       WeaponMuzzleFlash = PRIMARY   BarrelFX
  33966.       WeaponRecoilBone  = PRIMARY   Barrel
  33967.       WeaponFireFXBone  = SECONDARY BarrelMS
  33968.       WeaponMuzzleFlash = SECONDARY BarrelFX
  33969.       WeaponRecoilBone  = SECONDARY Barrel
  33970.       HideSubObject = TURRETUP01 TURRETUP02
  33971.       ShowSubObject = TURRET
  33972.     End
  33973.     
  33974.     ConditionState = RUBBLE
  33975.       Model = UVQuadCann_D
  33976.       Turret = TURRET
  33977.       TurretPitch = TURRETEL
  33978.       WeaponFireFXBone  = PRIMARY   BarrelMS
  33979.       WeaponMuzzleFlash = PRIMARY   BarrelFX
  33980.       WeaponRecoilBone  = PRIMARY   Barrel
  33981.       WeaponFireFXBone  = SECONDARY BarrelMS
  33982.       WeaponMuzzleFlash = SECONDARY BarrelFX
  33983.       WeaponRecoilBone  = SECONDARY Barrel
  33984.       HideSubObject = TURRETUP01 TURRETUP02
  33985.       ShowSubObject = TURRET
  33986.     End
  33987.  
  33988.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE
  33989.       Model = UVQuadCann
  33990.       Turret = TURRETUP01
  33991.       TurretPitch = TURRETEL01
  33992.       WeaponFireFXBone  = PRIMARY   BarrelUp01MS
  33993.       WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
  33994.       WeaponRecoilBone  = PRIMARY   BarrelUp01
  33995.       WeaponFireFXBone  = SECONDARY BarrelUp01MS
  33996.       WeaponMuzzleFlash = SECONDARY BarrelUp01FX
  33997.       WeaponRecoilBone  = SECONDARY BarrelUp01
  33998.       HideSubObject = TURRET TURRETUP02
  33999.       ShowSubObject = TURRETUP01
  34000.     End
  34001.     
  34002.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE REALLYDAMAGED
  34003.       Model = UVQuadCann
  34004.       Turret = TURRETUP01
  34005.       TurretPitch = TURRETEL01
  34006.       WeaponFireFXBone  = PRIMARY   BarrelUp01MS
  34007.       WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
  34008.       WeaponRecoilBone  = PRIMARY   BarrelUp01
  34009.       WeaponFireFXBone  = SECONDARY BarrelUp01MS
  34010.       WeaponMuzzleFlash = SECONDARY BarrelUp01FX
  34011.       WeaponRecoilBone  = SECONDARY BarrelUp01
  34012.       HideSubObject = TURRET TURRETUP02
  34013.       ShowSubObject = TURRETUP01
  34014.     End
  34015.     
  34016.     ConditionState = WEAPONSET_CRATEUPGRADE_ONE RUBBLE
  34017.       Model = UVQuadCann
  34018.       Turret = TURRETUP01
  34019.       TurretPitch = TURRETEL01
  34020.       WeaponFireFXBone  = PRIMARY   BarrelUp01MS
  34021.       WeaponMuzzleFlash = PRIMARY   BarrelUp01FX
  34022.       WeaponRecoilBone  = PRIMARY   BarrelUp01
  34023.       WeaponFireFXBone  = SECONDARY BarrelUp01MS
  34024.       WeaponMuzzleFlash = SECONDARY BarrelUp01FX
  34025.       WeaponRecoilBone  = SECONDARY BarrelUp01
  34026.       HideSubObject = TURRET TURRETUP02
  34027.       ShowSubObject = TURRETUP01
  34028.     End
  34029.  
  34030.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO
  34031.       Model = UVQuadCann
  34032.       Turret = TURRETUP02
  34033.       TurretPitch = TURRETEL02
  34034.       WeaponFireFXBone  = PRIMARY   BarrelUp02MS
  34035.       WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
  34036.       WeaponRecoilBone  = PRIMARY   BarrelUp02
  34037.       WeaponFireFXBone  = SECONDARY BarrelUp02MS
  34038.       WeaponMuzzleFlash = SECONDARY BarrelUp02FX
  34039.       WeaponRecoilBone  = SECONDARY BarrelUp02
  34040.       HideSubObject = TURRETUP01 TURRET
  34041.       ShowSubObject = TURRETUP02
  34042.     End
  34043.     
  34044.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO REALLYDAMAGED
  34045.       Model = UVQuadCann_D
  34046.       Turret = TURRETUP02
  34047.       TurretPitch = TURRETEL02
  34048.       WeaponFireFXBone  = PRIMARY   BarrelUp02MS
  34049.       WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
  34050.       WeaponRecoilBone  = PRIMARY   BarrelUp02
  34051.       WeaponFireFXBone  = SECONDARY BarrelUp02MS
  34052.       WeaponMuzzleFlash = SECONDARY BarrelUp02FX
  34053.       WeaponRecoilBone  = SECONDARY BarrelUp02
  34054.       HideSubObject = TURRETUP01 TURRET
  34055.       ShowSubObject = TURRETUP02
  34056.     End
  34057.     
  34058.     ConditionState = WEAPONSET_CRATEUPGRADE_TWO RUBBLE
  34059.       Model = UVQuadCann_D
  34060.       Turret = TURRETUP02
  34061.       TurretPitch = TURRETEL02
  34062.       WeaponFireFXBone  = PRIMARY   BarrelUp02MS
  34063.       WeaponMuzzleFlash = PRIMARY   BarrelUp02FX
  34064.       WeaponRecoilBone  = PRIMARY   BarrelUp02
  34065.       WeaponFireFXBone  = SECONDARY BarrelUp02MS
  34066.       WeaponMuzzleFlash = SECONDARY BarrelUp02FX
  34067.       WeaponRecoilBone  = SECONDARY BarrelUp02
  34068.       HideSubObject = TURRETUP01 TURRET
  34069.       ShowSubObject = TURRETUP02
  34070.     End
  34071.  
  34072.     TrackMarks = EXTnkTrack.tga
  34073.  
  34074.     TreadAnimationRate = 2.0;  amount of tread texture to move per second
  34075.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  34076.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  34077.  
  34078.     Dust = RocketBuggyDust
  34079.     DirtSpray = RocketBuggyDirtSpray
  34080.  
  34081.     ; These parameters are only used if the model has a separate suspension, 
  34082.     ; and the locomotor has HasSuspension = Yes.
  34083.     LeftFrontTireBone = Tire01
  34084.     RightFrontTireBone = Tire02
  34085.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  34086.     PowerslideRotationAddition = 0   ; This unit doesn't powerslide.
  34087.   End
  34088.  
  34089.   ; ***DESIGN parameters ***
  34090.   DisplayName      = OBJECT:QuadCannon
  34091.   Side = GLA
  34092.   EditorSorting   = VEHICLE
  34093.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  34094.   WeaponSet
  34095.     Conditions = None 
  34096.     Weapon = PRIMARY QuadCannonGun
  34097.     Weapon = SECONDARY QuadCannonGunAir
  34098.   End
  34099.   WeaponSet
  34100.     Conditions = CRATEUPGRADE_ONE 
  34101.     Weapon = PRIMARY QuadCannonGunUpgradeOne
  34102.     Weapon = SECONDARY QuadCannonGunUpgradeOneAir
  34103.   End
  34104.   WeaponSet
  34105.     Conditions = CRATEUPGRADE_TWO 
  34106.     Weapon = PRIMARY QuadCannonGunUpgradeTwo
  34107.     Weapon = SECONDARY QuadCannonGunUpgradeTwoAir
  34108.   End
  34109.   ArmorSet
  34110.     Conditions      = None
  34111.     Armor           = AntiAirVehicle
  34112.     DamageFX        = TankDamageFX
  34113.   End
  34114.   BuildCost       = 700
  34115.   BuildTime       = 10.0          ;in seconds    
  34116.   VisionRange     = 350
  34117.   ShroudClearingRange = 300
  34118.   Prerequisites
  34119.     Object = GLAArmsDealer
  34120.   End
  34121.  
  34122.   CommandSet          = GLAVehicleQuadCannon
  34123.  
  34124.   ExperienceValue = 50 50 100 150    ;Experience point value at each level
  34125.   ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
  34126.   IsTrainable = Yes             ;Can gain experience
  34127.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  34128.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  34129.  
  34130.   ; *** AUDIO Parameters ***
  34131.   VoiceSelect           = QuadCannonVoiceSelect
  34132.   VoiceMove             = QuadCannonVoiceMove
  34133.   VoiceAttack           = QuadCannonVoiceAttack
  34134.   VoiceAttackAir        = QuadCannonVoiceAttackAir
  34135.   SoundMoveStart        = QuadCannonMoveStart
  34136.   SoundMoveStartDamaged = QuadCannonMoveStart
  34137.   VoiceGuard             = QuadCannonVoiceMove
  34138.   UnitSpecificSounds
  34139.    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  34140.     VoiceCreate         = QuadCannonVoiceCreate
  34141.    TurretMoveStart      = NoSound
  34142.    TurretMoveLoop       = TurretMoveLoop
  34143.    ; Required for the W3DTruckDraw module
  34144.    TruckLandingSound    = NoSound
  34145.    TruckPowerslideSound = NoSound
  34146.    VoiceSalvage         = QuadCannonVoiceSalvage
  34147.    VoiceCrush           = QuadCannonVoiceCrush
  34148.    VoiceEnter           = QuadCannonVoiceMove
  34149.   End
  34150.  
  34151.   Behavior = AIUpdateInterface ModuleTag_20
  34152.     AutoAcquireEnemiesWhenIdle = Yes
  34153.     MoodAttackCheckRate        = 250
  34154.   End
  34155.  
  34156.   ; *** ENGINEERING Parameters ***
  34157.   RadarPriority = UNIT
  34158.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS SALVAGER WEAPON_SALVAGER VEHICLE SCORE
  34159.  
  34160.   Body = ActiveBody ModuleTag_02
  34161.     MaxHealth       = 180.0
  34162.     InitialHealth   = 180.0
  34163.   End
  34164.   
  34165.   Behavior = AIUpdateInterface ModuleTag_03
  34166.     Turret
  34167.       TurretTurnRate = 360
  34168.       TurretPitchRate = 360
  34169.       AllowsPitch = Yes
  34170.       ControlledWeaponSlots = PRIMARY SECONDARY
  34171.     End
  34172.     AutoAcquireEnemiesWhenIdle = Yes
  34173.   End
  34174.   
  34175.   Locomotor = SET_NORMAL CINE_QuadCannonLocomotor
  34176.   
  34177.   Behavior = PhysicsBehavior ModuleTag_04
  34178.     Mass = 40.0
  34179.   End
  34180.   
  34181.   ; Catch fire, and explode death
  34182.   Behavior = SlowDeathBehavior ModuleTag_05
  34183.     DeathTypes = ALL -CRUSHED -SPLATTED
  34184.     ProbabilityModifier = 411
  34185.     DestructionDelay = 150
  34186.     DestructionDelayVariance = 250
  34187.     OCL = FINAL    OCL_QuadCannonDeathEffect  
  34188.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  34189.   End
  34190.   
  34191.   Behavior = AutoHealBehavior ModuleTag_06
  34192.     HealingAmount = 2
  34193.     HealingDelay = 1000 ; msec
  34194.     TriggeredBy = Upgrade_GLAJunkRepair
  34195.   End
  34196.  
  34197.   Behavior = FlammableUpdate ModuleTag_08
  34198.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  34199.     AflameDamageAmount = 3       ; taking this much damage...
  34200.     AflameDamageDelay = 500       ; this often.
  34201.   End
  34202.  
  34203.   Behavior                 = TransitionDamageFX ModuleTag_09
  34204.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  34205.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  34206.   End
  34207.  
  34208.  
  34209.   ; A crushing defeat
  34210.   Behavior = FXListDie ModuleTag_10
  34211.     DeathTypes = NONE +CRUSHED +SPLATTED
  34212.     DeathFX = FX_CarCrush
  34213.   End
  34214.  
  34215.   Behavior = CreateCrateDie ModuleTag_11
  34216.     CrateData = SalvageCrateData
  34217.     ;CrateData = EliteTankCrateData
  34218.     ;CrateData = HeroicTankCrateData
  34219.   End
  34220.  
  34221.   Behavior = WeaponBonusUpgrade ModuleTag_12
  34222.     TriggeredBy = Upgrade_GLAAPBullets
  34223.   End 
  34224.  
  34225.   Geometry = BOX
  34226.   GeometryMajorRadius = 18.0
  34227.   GeometryMinorRadius = 7.0
  34228.   GeometryHeight = 11.5     
  34229.   GeometryIsSmall = No
  34230.   Shadow = SHADOW_VOLUME
  34231.  
  34232. End
  34233.  
  34234. ;------------------------------------------------------------------------------
  34235. ;*************************** Cinematic-only unit ******************************
  34236. Object CINE_GLAVehicleScudLauncher
  34237.  
  34238.   ; *** ART Parameters ***
  34239.   SelectPortrait         = SUScudLauncher_L
  34240.   ButtonImage            = SUScudLauncher
  34241.  
  34242.   UpgradeCameo1 = Upgrade_GLAJunkRepair
  34243.   ;UpgradeCameo2 = Upgrade_GLAAnthraxBeta
  34244.   ;UpgradeCameo3 = NONE
  34245.   ;UpgradeCameo4 = NONE
  34246.   ;UpgradeCameo5 = NONE
  34247.  
  34248.   Draw = W3DTruckDraw ModuleTag_01
  34249.     OkToChangeModelColor = Yes
  34250.  
  34251.     ProjectileBoneFeedbackEnabledSlots = PRIMARY SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset
  34252.   
  34253.     DefaultConditionState
  34254.       Model = UVScudLchr
  34255.       Turret = TURRET
  34256.       TurretPitch = TURRETEL
  34257.       WeaponLaunchBone = PRIMARY WeaponA
  34258.       WeaponLaunchBone = SECONDARY WeaponA
  34259.       WeaponHideShowBone = PRIMARY MISSILE
  34260.       WeaponHideShowBone = SECONDARY MISSILE
  34261.     End
  34262.  
  34263.     ConditionState = REALLYDAMAGED
  34264.       Model = UVScudLchr_d
  34265.     End
  34266.     AliasConditionState = RUBBLE
  34267.  
  34268.     TrackMarks = EXTireTrack.tga
  34269.  
  34270.     Dust = ScudLauncherDust
  34271.     DirtSpray = RocketBuggyDirtSpray
  34272.     PowerslideSpray = RocketBuggyDirtPowerSlide
  34273.  
  34274.     ; These parameters are only used if the model has a separate suspension, 
  34275.     ; and the locomotor has HasSuspension = Yes.
  34276.     LeftFrontTireBone = Tire01
  34277.     RightFrontTireBone = Tire05
  34278.     LeftRearTireBone = Tire04
  34279.     RightRearTireBone = Tire08
  34280.     MidLeftFrontTireBone = Tire02
  34281.     MidRightFrontTireBone = Tire06
  34282.     MidLeftRearTireBone = Tire03
  34283.     MidRightRearTireBone = Tire07
  34284.  
  34285.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  34286.     ;PowerslideRotationAddition = 0.0   ; This speed is added to the rotation speed when powersliding.
  34287.  
  34288.   End
  34289.  
  34290.  
  34291.   ; ***DESIGN parameters ***
  34292.  
  34293.   DisplayName      = OBJECT:ScudLauncher
  34294.   Side = GLA
  34295.   EditorSorting   = VEHICLE
  34296.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  34297.   WeaponSet
  34298.     Conditions = None
  34299.     Weapon = PRIMARY CINE_SCUDLauncherGunExplosive
  34300.     Weapon = SECONDARY SCUDLauncherGunAnthrax
  34301.     AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI
  34302.     AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
  34303.     PreferredAgainst = SECONDARY INFANTRY
  34304.     ShareWeaponReloadTime = Yes
  34305.   End
  34306.   ArmorSet
  34307.     Conditions      = None
  34308.     Armor           = TruckArmor
  34309.     DamageFX        = TankDamageFX
  34310.   End
  34311.   BuildCost       = 1200
  34312.   BuildTime       = 20.0          ;in seconds    
  34313.   VisionRange     = 500
  34314.   ShroudClearingRange = 300
  34315.   Prerequisites
  34316.     Object = GLAArmsDealer
  34317.     Object = GLAPalace
  34318.     Science = SCIENCE_ScudLauncher
  34319.   End
  34320.  
  34321.   ExperienceValue = 50 50 100 150   ;Experience point value at each level
  34322.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  34323.   IsTrainable = Yes             ;Can gain experience
  34324.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  34325.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  34326.   CommandSet           = GLAVehicleScudLauncherCommandSet
  34327.  
  34328.   ; *** AUDIO Parameters ***
  34329.   VoiceSelect = ScudLauncherVoiceSelect
  34330.   VoiceMove = ScudLauncherVoiceMove
  34331.   VoiceGuard = ScudLauncherVoiceMove
  34332.   VoiceAttack = ScudLauncherVoiceAttack
  34333.   SoundMoveStart = ScudLauncherMoveStart
  34334.   SoundMoveStartDamaged = ScudLauncherMoveStart
  34335.   UnitSpecificSounds
  34336.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  34337.     VoiceCreate       = ScudLauncherVoiceCreate
  34338.     TurretMoveStart = NoSound
  34339.     TurretMoveLoop = TurretMoveLoop
  34340.     TruckLandingSound = NoSound
  34341.     TruckPowerslideSound = NoSound
  34342.     VoiceCrush = ScudLauncherVoiceCrush
  34343.     VoiceEnter = ScudLauncherVoiceMove
  34344.   End
  34345.  
  34346.   ; *** ENGINEERING Parameters ***
  34347.   RadarPriority = UNIT
  34348.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
  34349.  
  34350.   Body = ActiveBody ModuleTag_02
  34351.     MaxHealth       = 180.0
  34352.     InitialHealth   = 180.0
  34353.   End
  34354.  
  34355.   Behavior = AIUpdateInterface ModuleTag_03
  34356.     Turret
  34357.       TurretTurnRate = 60   ; turn rate, in degrees per sec
  34358.       TurretPitchRate = 60
  34359.       FirePitch = 90  ; Instead of aiming pitchwise at the target, it will aim here
  34360.       AllowsPitch = Yes
  34361.       ControlledWeaponSlots = PRIMARY SECONDARY
  34362.     End
  34363.     AutoAcquireEnemiesWhenIdle = No NotWhileAttacking
  34364.   End  
  34365.  
  34366.   Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
  34367.   End
  34368.  
  34369.   Locomotor = SET_NORMAL CINE_ScudLauncherLocomotor
  34370.   Behavior = PhysicsBehavior ModuleTag_05
  34371.     Mass = 40.0
  34372.   End
  34373.  
  34374.   Behavior = AutoHealBehavior ModuleTag_06
  34375.     HealingAmount = 2
  34376.     HealingDelay = 1000 ; msec
  34377.     TriggeredBy = Upgrade_GLAJunkRepair
  34378.   End
  34379.  
  34380. ;  Behavior = DestroyDie
  34381.     ;nothing
  34382. ;  End
  34383.     
  34384.   Behavior = TransitionDamageFX ModuleTag_08
  34385.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  34386.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_ScudLauncherDamageTransition
  34387.   End
  34388.  
  34389.   ; Catch fire, and explode death
  34390.   Behavior = SlowDeathBehavior ModuleTag_09
  34391.     DeathTypes = ALL -CRUSHED -SPLATTED
  34392.     ProbabilityModifier = 50
  34393.     DestructionDelay = 2000
  34394.     DestructionDelayVariance = 300
  34395.     FX  = INITIAL  FX_CrusaderCatchFire
  34396.     OCL = FINAL    OCL_SCUDLauncherDeathEffect  
  34397.     FX  = FINAL    FX_ScudLauncherExplosionOneFinal
  34398.   End
  34399.  
  34400.   ; A crushing defeat
  34401.   Behavior = FXListDie ModuleTag_10
  34402.     DeathTypes = NONE +CRUSHED +SPLATTED
  34403.     DeathFX = FX_CarCrush
  34404.   End
  34405.  
  34406.   Behavior = CreateObjectDie ModuleTag_11
  34407.     DeathTypes = NONE +CRUSHED +SPLATTED
  34408.     CreationList = OCL_CrusaderTank_CrushEffect
  34409.   End
  34410.  
  34411.   Behavior = FlammableUpdate ModuleTag_21
  34412.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  34413.     AflameDamageAmount = 3       ; taking this much damage...
  34414.     AflameDamageDelay = 500       ; this often.
  34415.   End
  34416.  
  34417.   Geometry = BOX
  34418.   GeometryMajorRadius = 14.0
  34419.   GeometryMinorRadius = 7.0
  34420.   GeometryHeight = 11.5     
  34421.   GeometryIsSmall = No
  34422.   Shadow = SHADOW_VOLUME    
  34423.  
  34424. End
  34425.  
  34426. ;------------------------------------------------------------------------------
  34427. ;************************** Cinematic-only unit *******************************
  34428. Object CINE_GLAVehicleBombTruck
  34429.  
  34430.   ; *** ART Parameters ***
  34431.   SelectPortrait         = SUBombTruck_L
  34432.   ButtonImage            = SUBombTruck
  34433.   
  34434.   UpgradeCameo1 = Upgrade_GLABombTruckHighExplosiveBomb
  34435.   UpgradeCameo2 = Upgrade_GLABombTruckBioBomb
  34436.   UpgradeCameo3 = Upgrade_GLAJunkRepair
  34437.   ;UpgradeCameo4 = NONE
  34438.   ;UpgradeCameo5 = NONE
  34439.   
  34440.   
  34441.   Draw = W3DTruckDraw ModuleTag_01
  34442.     OkToChangeModelColor = Yes
  34443.     TrackMarks = EXTireTrack.tga
  34444.     
  34445.     DefaultConditionState
  34446.       Model = UVBMBTRUK
  34447.       Animation = UVBMBTRUK.UVBMBTRUK
  34448.       AnimationMode = LOOP
  34449.  
  34450.       ;Display the default bombload -- and the upgrades will handle the rest!
  34451.       HideSubObject = Bombload02 Bombload03 Bombload04
  34452.     End
  34453.  
  34454.     ConditionState = REALLYDAMAGED
  34455.       Model = UVBMBTRUK_D
  34456.       Animation = UVBMBTRUK_D.UVBMBTRUK_D
  34457.       AnimationMode = LOOP
  34458.     End
  34459.     
  34460.     ConditionState = RUBBLE
  34461.       Model = UVBMBTRUK_D
  34462.     End
  34463.  
  34464.     LeftFrontTireBone = Tire01
  34465.     RightFrontTireBone = Tire02
  34466.     MidLeftFrontTireBone = Tire03
  34467.     MidRightFrontTireBone = Tire04
  34468.     LeftRearTireBone = Tire05
  34469.     RightRearTireBone = Tire06
  34470.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  34471.  
  34472.     Dust = RocketBuggyDust
  34473.     DirtSpray = RocketBuggyDirtSpray
  34474.     PowerslideSpray = RocketBuggyDirtPowerSlide
  34475.  
  34476.   End
  34477.  
  34478.   ; ***DESIGN parameters ***
  34479.   DisplayName      = OBJECT:BombTruck
  34480.   Side = GLA
  34481.   EditorSorting   = VEHICLE
  34482.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  34483.   WeaponSet
  34484.     Conditions = None 
  34485.     Weapon = PRIMARY SuicideWeapon 
  34486.   End
  34487.   ArmorSet
  34488.     Conditions      = None
  34489.     Armor           = TruckArmor
  34490.     DamageFX        = TruckDamageFX
  34491.   End
  34492.   BuildCost       = 1200
  34493.   BuildTime       = 15.0          ;in seconds    
  34494.   VisionRange     = 150 ; Used in attack move targeting
  34495.   ShroudClearingRange     = 200
  34496.   Prerequisites
  34497.     Object = GLAArmsDealer
  34498.     Object = GLAPalace
  34499.   End
  34500.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  34501.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  34502.   CommandSet = GLAVehicleBombTruckCommandSet
  34503.  
  34504.   ; *** AUDIO Parameters ***
  34505.   VoiceSelect = BombTruckVoiceSelect
  34506.   VoiceMove = BombTruckVoiceMove
  34507.   VoiceGuard = BombTruckVoiceMove
  34508.   VoiceAttack = BombTruckVoiceAttack
  34509.   SoundMoveStart = BombTruckMoveStart
  34510.   SoundMoveStartDamaged = BombTruckMoveStart
  34511.   UnitSpecificSounds
  34512.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  34513.     VoiceCreate                   = BombTruckVoiceCreate
  34514.     TurretMoveStart               = NoSound
  34515.     TurretMoveLoop                = NoSound
  34516.     TruckLandingSound             = RocketBuggyLand
  34517.     TruckPowerslideSound          = RocketBuggyPowerslide
  34518.     DisguiseStarted               = BombTruckDisguiseStarted
  34519.     DisguiseRevealedSuccess       = BombTruckDisguiseRevealedSuccess
  34520.     DisguiseRevealedFailure       = BombTruckDisguiseRevealedFailure
  34521.     VoiceEnter = BombTruckVoiceMove
  34522.   End
  34523.  
  34524.   ; *** ENGINEERING Parameters ***
  34525.   RadarPriority = UNIT
  34526.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
  34527.  
  34528.   Body = ActiveBody ModuleTag_02
  34529.     MaxHealth       = 220.0
  34530.     InitialHealth   = 220.0
  34531.   End
  34532.  
  34533.   ExperienceValue     = 50 50 50 50  ; Experience point value at each level
  34534.  
  34535.   Behavior = VeterancyGainCreate ModuleTag_03
  34536.     StartingLevel = VETERAN
  34537.   End
  34538.  
  34539.   Behavior = AIUpdateInterface ModuleTag_04
  34540.     AutoAcquireEnemiesWhenIdle = No ATTACK_BUILDINGS
  34541.   End
  34542.   Locomotor = SET_NORMAL CINE_BombTruckLocomotor
  34543.  
  34544.   Behavior = PhysicsBehavior ModuleTag_05
  34545.     Mass = 40.0
  34546.   End
  34547.  
  34548.   Behavior = AutoHealBehavior ModuleTag_06
  34549.     HealingAmount = 2
  34550.     HealingDelay = 1000 ; msec
  34551.     TriggeredBy = Upgrade_GLAJunkRepair
  34552.   End
  34553.  
  34554.   Behavior = ProductionUpdate ModuleTag_07
  34555.     ; nothing
  34556.   End
  34557.  
  34558.   Behavior = SlowDeathBehavior  ModuleTag_08
  34559.     DeathTypes = ALL -CRUSHED -SPLATTED
  34560.     ProbabilityModifier = 5
  34561.     ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
  34562.     DestructionDelay = 0
  34563.     DestructionDelayVariance = 200
  34564.     FX = FINAL FX_BuggyNewDeathExplosion
  34565.     OCL = FINAL OCL_BombTruckDeathEffect
  34566.   End
  34567.  
  34568.   ;Behavior = DestroyDie
  34569.     ;nothing
  34570.   ;End
  34571.  
  34572.  
  34573.   ;************************************************************************************************
  34574.   ;* WHICH BOMB DO WE USE??? 
  34575.   ;* We have 2 damage possibilities -- (normal OR high explosive) 
  34576.   ;* So part 1 is inflicting the damage itself without creating effects
  34577.   ;* The complicated part is the part where we have 6 possible effect explosions based on 
  34578.   ;* all the possible upgrade combinations. Note that bio weapons don't inflict damage through
  34579.   ;* the explosion.
  34580.   ;*
  34581.   ;* DAMAGE COMBINATIONS (NO EFFECTS):
  34582.   ;* 1) Normal (doesn't have high explosive upgrade)
  34583.   ;* 2) High explosive (has high-explosive upgrade)
  34584.   ;*
  34585.   ;* EFFECT COMBINATIONS (NO DAMAGE):
  34586.   ;* 1) Normal (no upgrades)
  34587.   ;* 2) Bio (bio-bomb upgrade)
  34588.   ;* 3) Anthrax (bio-bomb and anthrax upgrade)
  34589.   ;* 4) High explosive (high explosive upgrade)
  34590.   ;* 5) High explosive bio (high explosive and bio-bomb upgrade)
  34591.   ;* 6) High explosive anthrax (high explosive, bio-bomb, and anthrax upgrades)
  34592.   ;************************************************************************************************
  34593.  
  34594.   ;************************************************************************************************
  34595.   ;* EXCLUSIVE DAMAGE POSSIBILITY 1 -- Normal explosion (can't have high-explosive upgrade)
  34596.   ;************************************************************************************************
  34597.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
  34598.     DeathWeapon   = BombTruckDefaultBombDamage
  34599.     StartsActive  = Yes                      ; turned on by upgrade
  34600.     ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb
  34601.   End
  34602.  
  34603.   ;************************************************************************************************
  34604.   ;* EXCLUSIVE DAMAGE POSSIBILITY 2 -- High explosion (always plays if it has high-explosive upgrade)
  34605.   ;************************************************************************************************
  34606.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_10
  34607.     DeathWeapon   = BombTruckHighExplosionBombDamage
  34608.     StartsActive  = No                      ; turned on by upgrade
  34609.     TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
  34610.   End
  34611.  
  34612.   ;************************************************************************************************
  34613.   ;* EXCLUSIVE EFFECT COMBINATION 1 - Regular explosion (no upgrades)
  34614.   ;************************************************************************************************
  34615.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_11
  34616.     DeathWeapon   = BombTruckDefaultBombEffect
  34617.     StartsActive  = Yes                      ; turned on by upgrade
  34618.     ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
  34619.   End
  34620.  
  34621.   ;************************************************************************************************
  34622.   ;* EXCLUSIVE EFFECT COMBINATION 2 - Bio explosion 
  34623.   ;* Requires:    Bio upgrade
  34624.   ;* Can't have:  Anthrax upgrade, high explosive upgrade
  34625.   ;************************************************************************************************
  34626.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_12
  34627.     DeathWeapon   = BombTruckBioBombEffect
  34628.     StartsActive  = No                      ; turned on by upgrade
  34629.     TriggeredBy   = Upgrade_GLABombTruckBioBomb
  34630.     ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
  34631.     RequiresAllTriggers = Yes
  34632.   End
  34633.  
  34634.   ;************************************************************************************************
  34635.   ;* EXCLUSIVE EFFECT COMBINATION 3 - Anthrax explosion 
  34636.   ;* Requires:    Bio upgrade and anthrax upgrade
  34637.   ;* Can't have:  High explosive upgrade
  34638.   ;************************************************************************************************
  34639.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_13
  34640.     DeathWeapon   = BombTruckAnthraxBombEffect
  34641.     StartsActive  = No                      ; turned on by upgrade
  34642.     TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLAAnthraxBeta
  34643.     ConflictsWith = Upgrade_GLABombTruckHighExplosiveBomb 
  34644.     RequiresAllTriggers = Yes
  34645.   End
  34646.  
  34647.   ;************************************************************************************************
  34648.   ;* EXCLUSIVE EFFECT COMBINATION 4 - High explosion
  34649.   ;* Requires:    High explosive upgrade
  34650.   ;* Can't have:  Bio upgrade and anthrax upgrade
  34651.   ;************************************************************************************************
  34652.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_14
  34653.     DeathWeapon   = BombTruckHighExplosiveBombEffect
  34654.     StartsActive  = No                      ; turned on by upgrade
  34655.     TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb
  34656.     ConflictsWith = Upgrade_GLABombTruckBioBomb
  34657.     RequiresAllTriggers = Yes
  34658.   End
  34659.  
  34660.   ;************************************************************************************************
  34661.   ;* EXCLUSIVE EFFECT COMBINATION 5 - High explosive bio explosion 
  34662.   ;* Requires:    High explosive upgrade and bio upgrade 
  34663.   ;* Can't have:  Anthrax upgrade
  34664.   ;************************************************************************************************
  34665.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_15
  34666.     DeathWeapon   = BombTruckHighExplosiveBioBombEffect
  34667.     StartsActive  = No                      ; turned on by upgrade
  34668.     TriggeredBy   = Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLABombTruckBioBomb
  34669.     ConflictsWith = Upgrade_GLAAnthraxBeta
  34670.     RequiresAllTriggers = Yes
  34671.   End
  34672.  
  34673.   ;************************************************************************************************
  34674.   ;* EXCLUSIVE EFFECT COMBINATION 6 - High explosive Anthrax explosion 
  34675.   ;* Requires:    High explosive, Bio, and anthrax upgrade
  34676.   ;************************************************************************************************
  34677.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_16
  34678.     DeathWeapon   = BombTruckHighExplosiveAnthraxBombEffect
  34679.     StartsActive  = No                      ; turned on by upgrade
  34680.     TriggeredBy   = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb Upgrade_GLAAnthraxBeta
  34681.     RequiresAllTriggers = Yes
  34682.   End
  34683.  
  34684.   ;-------------------------------------------------------------------
  34685.   ; Wheeeee! Now we get to display the payload based on upgrades!!! 
  34686.   ;-------------------------------------------------------------------
  34687.   Behavior = SubObjectsUpgrade ModuleTag_17
  34688.     ;*** Bio bomb load ***
  34689.     TriggeredBy    = Upgrade_GLABombTruckBioBomb 
  34690.     ConflictsWith  = Upgrade_GLABombTruckHighExplosiveBomb
  34691.     ShowSubObjects = Bombload02 
  34692.     HideSubObjects = Bombload01 Bombload03 Bombload04
  34693.   End
  34694.   Behavior = SubObjectsUpgrade ModuleTag_18
  34695.     ;*** High-explosive bomb load ***
  34696.     TriggeredBy    = Upgrade_GLABombTruckHighExplosiveBomb
  34697.     ConflictsWith  = Upgrade_GLABombTruckBioBomb 
  34698.     ShowSubObjects = Bombload03 
  34699.     HideSubObjects = Bombload01 Bombload02 Bombload04
  34700.   End
  34701.   Behavior = SubObjectsUpgrade ModuleTag_19
  34702.     ;*** High-explosive bio bomb load ***
  34703.     TriggeredBy    = Upgrade_GLABombTruckBioBomb Upgrade_GLABombTruckHighExplosiveBomb
  34704.     ShowSubObjects = Bombload04 
  34705.     HideSubObjects = Bombload01 Bombload02 Bombload03
  34706.     RequiresAllTriggers = Yes
  34707.   End
  34708.   ;-------------------------------------------------------------------
  34709.  
  34710.  
  34711.   Behavior = SpecialAbility ModuleTag_20
  34712.     SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
  34713.     UpdateModuleStartsAttack = Yes
  34714.   End
  34715.   Behavior = SpecialAbilityUpdate ModuleTag_21
  34716.     SpecialPowerTemplate = SpecialAbilityDisguiseAsVehicle
  34717.     StartAbilityRange = 20000.0
  34718.   End
  34719.  
  34720.   Behavior = StealthUpdate ModuleTag_22
  34721.     StealthDelay                          = 1
  34722.     DisguisesAsTeam                       = Yes
  34723.     RevealDistanceFromTarget              = 100.0f
  34724.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  34725.     DisguiseFX                            = FX_BombTruckDisguise
  34726.     DisguiseRevealFX                      = FX_BombTruckDisguiseReveal
  34727.     InnateStealth                         = Yes
  34728.     DisguiseTransitionTime                = 2000
  34729.     DisguiseRevealTransitionTime          = 1000 
  34730.   End
  34731.  
  34732.   ; A crushing defeat
  34733.   Behavior = FXListDie ModuleTag_23
  34734.     DeathTypes = NONE +CRUSHED +SPLATTED
  34735.     DeathFX = FX_CarCrush
  34736.   End
  34737.   Behavior = CreateObjectDie ModuleTag_24
  34738.     DeathTypes = NONE +CRUSHED +SPLATTED
  34739.     CreationList = OCL_CrusaderTank_CrushEffect
  34740.   End
  34741.   Behavior = CreateCrateDie ModuleTag_25
  34742.     CrateData = SalvageCrateData
  34743.     ;CrateData = EliteTankCrateData
  34744.     ;CrateData = HeroicTankCrateData
  34745.   End
  34746.   
  34747.   Behavior                 = TransitionDamageFX ModuleTag_26
  34748.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  34749.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  34750.   End
  34751.  
  34752.   Behavior = FlammableUpdate ModuleTag_28
  34753.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  34754.     AflameDamageAmount = 3       ; taking this much damage...
  34755.     AflameDamageDelay = 500       ; this often.
  34756.   End
  34757.  
  34758.   Geometry = BOX
  34759.   GeometryMajorRadius = 19.0
  34760.   GeometryMinorRadius = 8.0
  34761.   GeometryHeight = 11.5     
  34762.   GeometryIsSmall = No    
  34763.   Shadow = SHADOW_VOLUME
  34764.  
  34765. End
  34766.  
  34767. ;------------------------------------------------------------------------------
  34768. ;************************** Cinematic-only unit *******************************
  34769. Object CINE_AmericaVehicleChinook
  34770.  
  34771.   ; *** ART Parameters ***
  34772.   SelectPortrait         = SAChinook_L
  34773.   ButtonImage            = SAChinook
  34774.   
  34775.   ;UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
  34776.   ;UpgradeCameo2 = NONE
  34777.   ;UpgradeCameo3 = NONE
  34778.   ;UpgradeCameo4 = NONE
  34779.   ;UpgradeCameo5 = NONE
  34780.  
  34781.   Draw = W3DModelDraw                         ModuleTag_01 ; Helicopter 
  34782.  
  34783.     ExtraPublicBone = RopeStart
  34784.     ExtraPublicBone = RopeEnd
  34785.  
  34786.     DefaultConditionState
  34787.       Model = AVChinook
  34788.       Animation = AVChinook.AVChinook
  34789.       AnimationMode = LOOP
  34790.     End
  34791.  
  34792.     ConditionState = REALLYDAMAGED
  34793.       Model = AVChinook_d
  34794.       Animation = AVChinook_d.AVChinook_d
  34795.       AnimationMode = LOOP
  34796.     End
  34797.  
  34798.     ConditionState = RUBBLE
  34799.       Model = AVChinook_d
  34800.       Animation = AVChinook_d.AVChinook_d
  34801.       AnimationMode = LOOP
  34802.     End
  34803.  
  34804.     ConditionState = RUBBLE SPECIAL_DAMAGED
  34805.       Model = AVChinook_d
  34806.       HideSubObject = Props01
  34807.       HideSubObject = Props02
  34808.     End
  34809.  
  34810.     OkToChangeModelColor = Yes
  34811.   End
  34812.  
  34813.   Draw = W3DModelDraw                         ModuleTag_02 ; Cargo net 
  34814.     ConditionState = NONE
  34815.       Model = None  ; Nothing here
  34816.       TransitionKey = TRANS_Empty
  34817.       WaitForStateToFinishIfPossible = TRANS_Unloading
  34818.     End
  34819.  
  34820.     ConditionState = DYING 
  34821.       Model = None  ; Nothing here
  34822.     End
  34823.     AliasConditionState = RUBBLE
  34824.     AliasConditionState = CARRYING RUBBLE
  34825.     AliasConditionState = DOCKING RUBBLE
  34826.     AliasConditionState = DOCKING CARRYING RUBBLE
  34827.  
  34828.      ConditionState = CARRYING
  34829.       Model = AVChinook_A ;Carrying a full wobbly net of stuff
  34830.       Animation = AVChinook_A.AVChinook_A
  34831.       AnimationMode = LOOP
  34832.       TransitionKey = TRANS_Full
  34833.       WaitForStateToFinishIfPossible = TRANS_PickingUp
  34834.     End
  34835.  
  34836.     ConditionState = DOCKING
  34837.       Model = AVChinook_A1MSH ;Lowering an empty net, pulling up with stuff
  34838.       Animation = AVChinook_A1SK.AVChinook_A1
  34839.       AnimationMode = ONCE_BACKWARDS
  34840.       Flags = START_FRAME_LAST
  34841.       AnimationSpeedFactorRange = .75 .75
  34842.       TransitionKey = TRANS_PickingUp
  34843.       WaitForStateToFinishIfPossible = TRANS_Unloading  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
  34844.     End
  34845.  
  34846.     ConditionState = DOCKING CARRYING
  34847.       Model = AVChinook_A1MSH ; Lowering a full net, letting stuff fall out, and pulling up an empty net
  34848.       Animation = AVChinook_A1SK.AVChinook_A1
  34849.       AnimationMode = ONCE
  34850.       AnimationSpeedFactorRange = 2.75 2.75
  34851.       TransitionKey = TRANS_Unloading
  34852.       WaitForStateToFinishIfPossible = TRANS_PickingUp  ;Trick.  Without hardcoding the difference between what we are docking with, need to use DOCKING for both.
  34853.     End
  34854.   End
  34855.  
  34856.   ; ***DESIGN parameters ***
  34857.   DisplayName         = OBJECT:Chinook
  34858.   EditorSorting       = VEHICLE
  34859.   Side                = America
  34860.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  34861.   VisionRange         = 300.0 
  34862.   ShroudClearingRange = 600
  34863.   BuildCost           = 1200
  34864.   BuildTime           = 10.0          ;in seconds  
  34865.   Prerequisites
  34866.     Object = AmericaSupplyCenter
  34867.   End
  34868.   ExperienceValue     = 50 50 50 50 ;Experience point value at each level
  34869.   IsTrainable         = No  
  34870.   CommandSet          = AmericaVehicleChinookCommandSet
  34871.   ArmorSet
  34872.     Conditions      = None
  34873.     Armor           = ChinookArmor
  34874.     DamageFX        = None
  34875.   End
  34876.  
  34877.   ; *** AUDIO Parameters ***
  34878.   VoiceSelect     = ChinookVoiceSelect
  34879.   VoiceMove       = ChinookVoiceMove
  34880.   VoiceAttack     = ChinookVoiceAttack
  34881.   SoundAmbient    = ChinookAmbientLoop
  34882.   SoundAmbientRubble    = NoSound
  34883.   SoundDie        = ChinookVoiceFalling
  34884.   SoundEnter      = HumveeEnter
  34885.   SoundExit       = HumveeExit
  34886.   UnitSpecificSounds
  34887.     VoiceCreate         = ChinookVoiceCreate
  34888.     VoiceSupply         = ChinookVoiceSupply
  34889.     VoiceUnload         = ChinookVoiceUnload
  34890.     VoiceCombatDrop     = ChinookVoiceCombatDrop
  34891.     VoiceClearBuilding  = RangerVoiceClearBuilding ;Special combat drop that clears buildings!
  34892.     VoiceGarrison       = ChinookVoiceMove
  34893.   End
  34894.  
  34895.   ; *** ENGINEERING Parameters ***
  34896.   RadarPriority   = UNIT
  34897.   ; note that, although Chinooks aren't produced at helipads, we want to set this KINDOF so that they can land at
  34898.   ; (well, "near" actually) an Airfield to get healed...
  34899.   ; also note that we should NOT set CAN_ATTACK for chinooks. they can't attack. so there.
  34900.   KindOf          = PRELOAD CAN_CAST_REFLECTIONS SELECTABLE VEHICLE TRANSPORT AIRCRAFT HARVESTER SCORE PRODUCED_AT_HELIPAD
  34901.  
  34902.   Body = ActiveBody ModuleTag_03
  34903.     MaxHealth       = 300.0
  34904.     InitialHealth   = 300.0
  34905.   End
  34906.  
  34907.   Behavior = FXListDie ModuleTag_05
  34908.     DeathFX = FX_HelicopterStartDeath
  34909.   End
  34910.  
  34911.   Behavior                       = TransitionDamageFX ModuleTag_06
  34912.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
  34913.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
  34914.   End
  34915.  
  34916.   Behavior = ChinookAIUpdate ModuleTag_07
  34917.     MaxBoxes                = 8
  34918.     SupplyCenterActionDelay = 3000     ; ms for whole thing (one transaction)
  34919.     SupplyWarehouseActionDelay = 1250  ; 875 ; ms per box (many small transactions)
  34920.     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)
  34921.     SuppliesDepletedVoice = ChinookVoiceSuppliesDepleted
  34922.     NumRopes                = 4
  34923.     ; these define how long we can wait, once a guy is on-rope, before throwing another
  34924.     ; guy onto that same rope. (Hint: you don't want to use zero.) Omit entirely
  34925.     ; and we'll wait for each guy to clear before spawning another.
  34926.     PerRopeDelayMin         = 900
  34927.     PerRopeDelayMax         = 1500
  34928.     RopeWidth               = 0.5
  34929.     RopeColor               = R:0 G:0 B:0
  34930.     RopeWobbleLen           = 10
  34931.     RopeWobbleAmplitude     = 0.25
  34932.     RopeWobbleRate          = 180
  34933.     RopeFinalHeight         = 10    ; stop this far above ground
  34934.     RappelSpeed             = 30
  34935.     MinDropHeight           = 40      ; if dropping into a tall bldg, go at least this far above it
  34936.  
  34937.   End
  34938.   Locomotor = SET_NORMAL    CINE_ChinookLocomotor
  34939.   Locomotor = SET_TAXIING   BasicHelicopterTaxiLocomotor
  34940.  
  34941.   Behavior = TransportContain ModuleTag_08
  34942.     Slots                 = 8
  34943.     DamagePercentToUnits  = 100%
  34944.     AllowInsideKindOf     = INFANTRY VEHICLE
  34945.     ForbidInsideKindOf    = AIRCRAFT HUGE_VEHICLE
  34946.     ExitDelay             = 100
  34947.     NumberOfExitPaths     = 1
  34948.   End
  34949.   Behavior = PhysicsBehavior ModuleTag_09
  34950.     Mass = 50.0
  34951.   End
  34952.   Behavior = HelicopterSlowDeathBehavior ModuleTag_10
  34953.     DestructionDelay                = 99999999        ; the destruction delay
  34954.     SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
  34955.     SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
  34956.     SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
  34957.     MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
  34958.     SoundDeathLoop                  = ComancheDamagedLoop
  34959.     MinSelfSpin                     = 100                     ; in degrees per second
  34960.     MaxSelfSpin                     = 300                     ; in degrees per second
  34961.     SelfSpinUpdateDelay             = 100                     ; in milliseconds
  34962.     SelfSpinUpdateAmount            = 10                      ; in degrees   
  34963.     FallHowFast                     = 12.0%                   ; fraction of gravity, lower = take longer to fall
  34964.     MinBladeFlyOffDelay             = 1500                    ; in milliseconds
  34965.     MaxBladeFlyOffDelay             = 1500                    ; in milliseconds
  34966.     AttachParticle                  = SootySmokeTrail
  34967.     AttachParticleBone              = Propeller02
  34968.     BladeObjectName                 = ComancheBlades
  34969.     BladeBoneName                   = Propeller01    
  34970.     FXBlade                         = FX_HelicopterBladeExplosion
  34971.     OCLBlade                        = OCL_HelicopterBladeExplosion
  34972.     FXHitGround                     = FX_HelicopterHitGround
  34973.     OCLHitGround                    = OCL_HelicopterHitGround
  34974.     FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
  34975.     OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
  34976.     DelayFromGroundToFinalDeath     = 30
  34977.     FinalRubbleObject               = ChinookRubbleHull
  34978.   End
  34979.  
  34980.   Behavior = FlammableUpdate ModuleTag_21
  34981.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  34982.     AflameDamageAmount = 3       ; taking this much damage...
  34983.     AflameDamageDelay = 500       ; this often.
  34984.   End
  34985.  
  34986.   Geometry              = BOX
  34987.   GeometryMajorRadius   = 20.0
  34988.   GeometryMinorRadius   = 6.0
  34989.   GeometryHeight        = 12.0     
  34990.   GeometryIsSmall       = No
  34991.   Shadow                = SHADOW_VOLUME    
  34992.   ShadowSizeX           = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  34993.  
  34994. End
  34995.  
  34996. ;------------------------------------------------------------------------------
  34997. ;************************** Cinematic-only unit *******************************
  34998. ;China Dragon Tank
  34999. Object CINE_ChinaTankDragon
  35000.  
  35001.   ; *** ART Parameters ***
  35002.   SelectPortrait         = SNDragonTank_L
  35003.   ButtonImage            = SNDragonTank
  35004.   
  35005.   UpgradeCameo1 = Upgrade_ChinaBlackNapalm
  35006.   ;UpgradeCameo2 = NONE
  35007.   ;UpgradeCameo3 = NONE
  35008.   ;UpgradeCameo4 = NONE
  35009.   ;UpgradeCameo5 = NONE
  35010.   
  35011.   Draw = W3DTankDraw ModuleTag_01
  35012.     OkToChangeModelColor = Yes
  35013.  
  35014.     DefaultConditionState
  35015.       Model = NVDragon
  35016.       Turret = Turret
  35017.       TurretPitch = TURRETEL
  35018.       WeaponFireFXBone = PRIMARY WeaponA
  35019.       WeaponLaunchBone = PRIMARY WeaponA
  35020.       WeaponFireFXBone = SECONDARY WeaponA
  35021.       WeaponLaunchBone = SECONDARY WeaponA
  35022.     End
  35023.     ConditionState = REALLYDAMAGED
  35024.       Model = NVDragon_D
  35025.       Turret = Turret
  35026.       TurretPitch = TURRETEL
  35027.       WeaponFireFXBone = PRIMARY WeaponA
  35028.       WeaponLaunchBone = PRIMARY WeaponA
  35029.       WeaponFireFXBone = SECONDARY WeaponA
  35030.       WeaponLaunchBone = SECONDARY WeaponA
  35031.     End
  35032.     ConditionState = RUBBLE
  35033.       Model = NVDragon_D
  35034.       Turret = Turret
  35035.       TurretPitch = TURRETEL
  35036.       WeaponFireFXBone = PRIMARY WeaponA
  35037.       WeaponLaunchBone = PRIMARY WeaponA
  35038.       WeaponFireFXBone = SECONDARY WeaponA
  35039.       WeaponLaunchBone = SECONDARY WeaponA
  35040.     End
  35041.     
  35042.     TrackMarks              = EXTnkTrack.tga
  35043.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  35044.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  35045.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  35046.   End
  35047.  
  35048.   ; ***DESIGN parameters ***
  35049.   DisplayName      = OBJECT:Dragon
  35050.   Side = China
  35051.   EditorSorting   = VEHICLE
  35052.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  35053.  
  35054.   WeaponSet
  35055.     Conditions = None 
  35056.     Weapon = PRIMARY DragonTankFlameWeapon
  35057.     Weapon = SECONDARY DragonTankFireWallWeapon
  35058.     AutoChooseSources = SECONDARY NONE
  35059.   End
  35060.   WeaponSet
  35061.     Conditions = PLAYER_UPGRADE 
  35062.     Weapon = PRIMARY DragonTankFlameWeaponUpgraded
  35063.     Weapon = SECONDARY DragonTankFireWallWeaponUpgraded
  35064.     AutoChooseSources = SECONDARY NONE
  35065.   End
  35066.  
  35067.   ArmorSet
  35068.     Conditions      = None
  35069.     Armor           = DragonTankArmor
  35070.     DamageFX        = TankDamageFX
  35071.   End
  35072.   BuildCost       = 800
  35073.   BuildTime       = 10.0          ;in seconds    
  35074.   VisionRange     = 100
  35075.   ShroudClearingRange = 200
  35076.   Prerequisites
  35077.     Object = ChinaWarFactory
  35078.   End
  35079.  
  35080.   ExperienceValue = 50 50 100 150    ;Experience point value at each level
  35081.   ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
  35082.   IsTrainable = Yes             ;Can gain experience
  35083.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  35084.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  35085.   CommandSet    = ChinaTankDragonCommandSet
  35086.  
  35087.   ; *** AUDIO Parameters ***
  35088.   VoiceSelect = DragonTankVoiceSelect
  35089.   VoiceMove = DragonTankVoiceMove
  35090.   VoiceGuard = DragonTankVoiceMove
  35091.   VoiceAttack = DragonTankVoiceAttack
  35092.   SoundMoveStart = DragonTankMoveStart
  35093.   SoundMoveStartDamaged = DragonTankMoveStart
  35094.  
  35095.   UnitSpecificSounds
  35096.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  35097.     VoiceCreate     = DragonTankVoiceCreate
  35098.     TurretMoveStart = NoSound
  35099.     TurretMoveLoop = TurretMoveLoop
  35100.     VoiceEnter = DragonTankVoiceMove
  35101.     VoiceFlameLocation = DragonTankVoiceFireStorm
  35102.   End
  35103.  
  35104.  
  35105.   ; *** ENGINEERING Parameters ***
  35106.   RadarPriority = UNIT
  35107.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE 
  35108.   
  35109.   Body = ActiveBody ModuleTag_02
  35110.     MaxHealth       = 280.0
  35111.     InitialHealth   = 280.0
  35112.   End
  35113.   Behavior = AIUpdateInterface ModuleTag_03
  35114.     Turret
  35115.       TurretTurnRate = 120
  35116.       TurretPitchRate = 120
  35117.  
  35118.       TurretFireAngleSweep = PRIMARY 10
  35119.       TurretFireAngleSweep = SECONDARY 60
  35120.       TurretSweepSpeedModifier = PRIMARY 0.5    ; Sweep slower than you turn (aim for 30 for art)
  35121.       TurretSweepSpeedModifier = SECONDARY 2.0  ; Sweep faster than you turn
  35122.       ControlledWeaponSlots = PRIMARY SECONDARY
  35123.     End
  35124.     AutoAcquireEnemiesWhenIdle = Yes
  35125.   End
  35126.   Locomotor = SET_NORMAL CINE_DragonLocomotor
  35127.   Behavior = PhysicsBehavior ModuleTag_04
  35128.     Mass = 50.0
  35129.   End
  35130.  
  35131.  
  35132.   Behavior = WeaponSetUpgrade ModuleTag_05
  35133.     TriggeredBy = Upgrade_ChinaBlackNapalm
  35134.   End
  35135.  
  35136.   ; A crushing defeat
  35137.   Behavior = DestroyDie ModuleTag_06
  35138.     DeathTypes = NONE +CRUSHED +SPLATTED
  35139.   End
  35140.   Behavior = FXListDie ModuleTag_07
  35141.     DeathTypes = NONE +CRUSHED +SPLATTED
  35142.     DeathFX = FX_CarCrush
  35143.   End
  35144.   Behavior = CreateObjectDie ModuleTag_08
  35145.     DeathTypes = NONE +CRUSHED +SPLATTED
  35146.     CreationList = OCL_CrusaderTank_CrushEffect
  35147.   End
  35148.   Behavior = CreateCrateDie ModuleTag_09
  35149.     CrateData = SalvageCrateData
  35150.     ;CrateData = EliteTankCrateData
  35151.     ;CrateData = HeroicTankCrateData
  35152.   End
  35153.  
  35154.  
  35155.   ; just explode death
  35156.   Behavior = SlowDeathBehavior ModuleTag_10
  35157.     DeathTypes = ALL -CRUSHED -SPLATTED
  35158. ;    ProbabilityModifier = 33
  35159.     DestructionDelay = 500
  35160.     DestructionDelayVariance = 500
  35161.     FX  = INITIAL  FX_BattleMasterExplosionOneFinal
  35162.     OCL = FINAL    OCL_DragonDebris
  35163.     FX  = FINAL    FX_DragonTankDeathExplosionFinal
  35164.   End
  35165.   
  35166.   ; Catch fire, and explode death
  35167. ;  Behavior = SlowDeathBehavior
  35168. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  35169. ;;    ProbabilityModifier = 33
  35170. ;    DestructionDelay = 2000
  35171. ;    DestructionDelayVariance = 300
  35172. ;    FX  = INITIAL  FX_CrusaderCatchFire
  35173. ;    OCL = FINAL    OCL_DragonDebris  
  35174. ;    FX  = FINAL    FX_GenericTankDeathExplosion 
  35175. ;  End
  35176.  
  35177.   ; Napalm spills out, and explode death
  35178. ;  Behavior = SlowDeathBehavior
  35179. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  35180. ;;    ProbabilityModifier = 34
  35181. ;    DestructionDelay = 2000
  35182. ;    DestructionDelayVariance = 300
  35183. ;    FX  = INITIAL  FX_DragonNapalmSpill
  35184. ;    OCL = FINAL    OCL_DragonDebris  
  35185. ;    FX  = FINAL    FX_DragonTankDeathExplosionFinal
  35186. ;  End
  35187.  
  35188.   ; Turret fly off death
  35189. ;  Behavior = SlowDeathBehavior
  35190. ;    DeathTypes = ALL -CRUSHED -SPLATTED
  35191. ;;    ProbabilityModifier = 25
  35192. ;    DestructionDelay = 500
  35193. ;    DestructionDelayVariance = 100
  35194. ;    FX  = INITIAL  FX_GenericTankDeathEffect
  35195. ;    OCL = MIDPOINT OCL_DragonDebris
  35196. ;    FX  = FINAL    FX_GenericTankDeathExplosionFinal
  35197. ;  End
  35198.  
  35199.  
  35200.   Behavior = FlammableUpdate ModuleTag_12
  35201.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  35202.     AflameDamageAmount = 3       ; taking this much damage...
  35203.     AflameDamageDelay = 500       ; this often.
  35204.   End
  35205.  
  35206.   Behavior = TransitionDamageFX ModuleTag_13
  35207. ;   ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  35208.     ReallyDamagedParticleSystem2 = Bone:Smoke RandomBone:Yes Psys:DragonTransitionFire
  35209.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_DragonDamageTransition
  35210.   End
  35211.  
  35212.   Geometry = BOX
  35213.   GeometryMajorRadius = 15.0
  35214.   GeometryMinorRadius = 10.0
  35215.   GeometryHeight = 15.0     
  35216.   GeometryIsSmall = Yes
  35217.   Shadow = SHADOW_VOLUME    
  35218.  
  35219. End
  35220.  
  35221. ;------------------------------------------------------------------------------
  35222. ;*************************** Cinematic-only unit ******************************
  35223. Object CINE_ChinaInfantryBlackLotus
  35224.  
  35225.   ; *** ART Parameters ***
  35226.   SelectPortrait         = SNBlkLotus_L2
  35227.   ButtonImage            = SNBlkLotus2
  35228.   
  35229.   ;UpgradeCameo1 = NONE
  35230.   ;UpgradeCameo2 = NONE
  35231.   ;UpgradeCameo3 = NONE
  35232.   ;UpgradeCameo4 = NONE
  35233.   ;UpgradeCameo5 = NONE
  35234.   
  35235.   Draw = W3DModelDraw ModuleTag_01
  35236.  
  35237.     OkToChangeModelColor = Yes
  35238.     
  35239.     ; --- idle
  35240.     DefaultConditionState
  35241.       Model             = NIHERO_SKN
  35242.       IdleAnimation     = NIHERO_SKL.NIHERO_STA 0 17
  35243.       IdleAnimation     = NIHERO_SKL.NIHero_IDA
  35244.       IdleAnimation     = NIHERO_SKL.NIHero_IDB
  35245.       AnimationMode     = ONCE
  35246.       TransitionKey     = TRANS_Stand
  35247.     End
  35248.  
  35249.     ConditionState      = REALLYDAMAGED
  35250.       IdleAnimation     = NIHERO_SKL.NIHERO_ISTA 0 30
  35251.       IdleAnimation     = NIHERO_SKL.NIHero_IIDA
  35252.       AnimationMode     = ONCE
  35253.       TransitionKey     = TRANS_StandInjured
  35254.     End
  35255.  
  35256.     TransitionState     = TRANS_Stand TRANS_StandInjured
  35257.       Animation         = NIHero_SKL.NIHero_ISTAHIT
  35258.       AnimationMode     = ONCE
  35259.     End
  35260.  
  35261.     ; --- moving
  35262.     ConditionState      = MOVING
  35263.       Animation         = NIHero_SKL.NIHero_RNA 20 ;used to have no value here
  35264.       AnimationMode     = LOOP
  35265.       Flags             = RANDOMSTART
  35266.       TransitionKey     = None
  35267.       ParticleSysBone   = None InfantryDustTrails
  35268.     End
  35269.     AliasConditionState = MOVING UNPACKING
  35270.  
  35271.     ConditionState      = MOVING REALLYDAMAGED
  35272.       Animation         = NIHero_SKL.NIHero_IRNA
  35273.       AnimationMode     = LOOP
  35274.       Flags             = RANDOMSTART
  35275.       TransitionKey     = None
  35276.       ParticleSysBone   = None InfantryDustTrails
  35277.     End
  35278.     AliasConditionState = MOVING UNPACKING REALLYDAMAGED
  35279.  
  35280.     ; --- packing states
  35281.     ConditionState      = UNPACKING
  35282.       ;Preparing to attack (unpacking gear)
  35283.       Animation         = NIHero_SKL.NIHero_ATA1
  35284.       AnimationMode     = ONCE
  35285.     End
  35286.     AliasConditionState = UNPACKING FIRING_A
  35287.  
  35288.     ConditionState      = FIRING_A
  35289.       ;Processing attack (hacking)
  35290.       Animation         = NIHero_SKL.NIHero_ATA2
  35291.       AnimationMode     = LOOP
  35292.       TransitionKey     = TRANS_FiringA
  35293.     End
  35294.  
  35295.     ConditionState      = PACKING
  35296.       ;Completing attack (packing gear)
  35297.       Animation         = NIHero_SKL.NIHero_ATA3
  35298.       AnimationMode     = ONCE
  35299.     End
  35300.     AliasConditionState = FIRING_A PACKING 
  35301.  
  35302.     TransitionState     = TRANS_FiringA TRANS_FiringAInjured
  35303.       Animation         = NIHero_SKL.NIHero_IATAHIT
  35304.       AnimationMode     = ONCE
  35305.     End
  35306.  
  35307.     ; --- injured-packing states
  35308.     ConditionState      = UNPACKING REALLYDAMAGED
  35309.       ;Preparing to attack (unpacking gear)
  35310.       Animation         = NIHero_SKL.NIHero_IATA1
  35311.       AnimationMode     = ONCE
  35312.     End
  35313.     AliasConditionState = UNPACKING FIRING_A REALLYDAMAGED
  35314.  
  35315.     ConditionState      = FIRING_A REALLYDAMAGED
  35316.       ;Processing attack (hacking)
  35317.       Animation         = NIHero_SKL.NIHero_IATA2
  35318.       AnimationMode     = LOOP
  35319.       TransitionKey     = TRANS_FiringAInjured
  35320.     End
  35321.  
  35322.     ConditionState      = PACKING REALLYDAMAGED
  35323.       ;Completing attack (packing gear)
  35324.       Animation         = NIHero_SKL.NIHero_IATA3
  35325.       AnimationMode     = ONCE
  35326.     End
  35327.     AliasConditionState = FIRING_A PACKING REALLYDAMAGED
  35328.  
  35329.     ; --- packing-dying states
  35330. ; code doesn't really support this. Oh well.
  35331. ;    ConditionState      = DYING RAISING_FLAG
  35332. ;      Animation         = NIHero_SKL.NIHero_IDTA
  35333. ;      Animation         = NIHero_SKL.NIHero_IDTB
  35334. ;      AnimationMode     = ONCE
  35335. ;    End
  35336. ;    AliasConditionState = DYING RAISING_FLAG EXPLODED_FLAILING EXPLODED_BOUNCING
  35337.  
  35338.     ; --- normal-dying states
  35339.     ConditionState      = DYING
  35340.       Animation         = NIHero_SKL.NIHero_DTA
  35341.       Animation         = NIHero_SKL.NIHero_DTB
  35342.       AnimationMode     = ONCE
  35343.       TransitionKey     = TRANS_Dying
  35344.     End
  35345.  
  35346.     TransitionState     = TRANS_Dying TRANS_Flailing
  35347.       Animation         = NIHero_SKL.NIHero_ADTF1
  35348.       AnimationMode     = ONCE
  35349.     End
  35350.  
  35351.     ConditionState      = DYING EXPLODED_FLAILING
  35352.       Animation         = NIHero_SKL.NIHero_ADTF2
  35353.       AnimationMode     = LOOP
  35354.       TransitionKey     = TRANS_Flailing
  35355.     End
  35356.  
  35357.     ConditionState      = DYING EXPLODED_BOUNCING
  35358.       Animation         = NIHero_SKL.NIHero_ADTF3
  35359.       AnimationMode     = ONCE
  35360.       TransitionKey     = None
  35361.     End
  35362.  
  35363.     ; --- cheering states
  35364.     ConditionState      = SPECIAL_CHEERING
  35365.       Animation         = NIHERO_SKL.NIHERO_CHA
  35366.       AnimationMode     = ONCE
  35367.     End
  35368.  
  35369.     ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
  35370.       Animation         = NIHERO_SKL.NIHERO_ICHA
  35371.       AnimationMode     = ONCE
  35372.     End
  35373.  
  35374.     ; --- falling states
  35375.     ConditionState      = FREEFALL
  35376.       Animation         = NIHero_SKL.NIHero_PFL
  35377.       AnimationMode     = LOOP
  35378.       TransitionKey     = TRANS_Falling
  35379.     End
  35380.     AliasConditionState = FREEFALL REALLYDAMAGED
  35381.     AliasConditionState = FREEFALL DYING
  35382.  
  35383.     ConditionState      = PARACHUTING
  35384.       Animation         = NIHero_SKL.NIHero_PHG
  35385.       AnimationMode     = LOOP
  35386.       TransitionKey     = TRANS_Chute
  35387.     End
  35388.     AliasConditionState = PARACHUTING REALLYDAMAGED
  35389.     AliasConditionState = PARACHUTING DYING
  35390.  
  35391.     TransitionState     = TRANS_Falling TRANS_Chute
  35392.       Animation         = NIHero_SKL.NIHero_POP
  35393.       AnimationMode     = ONCE
  35394.       Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  35395.     End
  35396.  
  35397.     TransitionState     = TRANS_Chute TRANS_Stand
  35398.       Animation         = NIHero_SKL.NIHero_PTD
  35399.       AnimationMode     = ONCE
  35400.     End
  35401.  
  35402.     TransitionState     = TRANS_Chute TRANS_StandInjured
  35403.       Animation         = NIHero_SKL.NIHero_PTD
  35404.       AnimationMode     = ONCE
  35405.     End
  35406.  
  35407.   End
  35408.  
  35409.   ; ***DESIGN parameters ***
  35410.   DisplayName         = OBJECT:BlackLotus
  35411.   Side                = China
  35412.   EditorSorting       = INFANTRY
  35413.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  35414.   WeaponSet
  35415.     Conditions        = None 
  35416.     Weapon            = PRIMARY None
  35417.   End
  35418.   ArmorSet
  35419.     Conditions      = None
  35420.     Armor           = HumanArmor
  35421.     DamageFX        = InfantryDamageFX
  35422.   End
  35423.   VisionRange         = 150
  35424.   ShroudClearingRange = 300
  35425.   Prerequisites
  35426.     Object = ChinaBarracks
  35427.     Object = ChinaPropagandaCenter
  35428.   End
  35429.   BuildCost             = 1500
  35430.   BuildTime             = 20.0          ;in seconds    
  35431.   MaxSimultaneousOfType = 1
  35432.   CommandSet            = ChinaInfantryBlackLotusCommandSet
  35433.  
  35434.   ExperienceValue       = 50 100 150 400    ;Experience point value at each level
  35435.   ExperienceRequired    = 0 150 450 900  ;Experience points needed to gain each level
  35436.   IsTrainable           = Yes             ;Can gain experience
  35437.   CrushableLevel        = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  35438.   CommandSet            = ChinaInfantryBlackLotusCommandSet
  35439.  
  35440.   ; *** AUDIO Parameters ***
  35441.   VoiceSelect = BlackLotusVoiceSelect
  35442.   VoiceMove = BlackLotusVoiceMove
  35443.   VoiceAttack = BlackLotusVoiceAttack
  35444.   VoiceGuard = BlackLotusVoiceMove
  35445.   VoiceFear = BlackLotusVoiceFear
  35446.   VoiceTaskComplete = BlackLotusVoiceCaptureComplete
  35447.   SoundDie = BlackLotusVoiceDie
  35448.   SoundDieFire = DieByFireFemale
  35449.   SoundDieToxin = DieByToxinFemale
  35450.   SoundStealthOn = StealthOn
  35451.   SoundStealthOff = StealthOff
  35452.   
  35453.   UnitSpecificSounds
  35454.     VoiceCreate          = BlackLotusVoiceCreate
  35455.     VoiceGarrison = BlackLotusVoiceMove
  35456.     VoiceEnter = BlackLotusVoiceMove
  35457.     VoiceEnterHostile = BlackLotusVoiceMove
  35458.     VoiceStealCashComplete = BlackLotusVoiceCashComplete
  35459.     VoiceDisableVehicleComplete = BlackLotusVoiceDisableComplete
  35460.     VoiceCaptureBuildingComplete = BlackLotusVoiceCaptureComplete
  35461.     VoiceGetHealed      = BlackLotusVoiceMove
  35462.   End
  35463.  
  35464.   ; *** ENGINEERING Parameters ***
  35465.   RadarPriority = UNIT
  35466.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
  35467.  
  35468.   Body = ActiveBody ModuleTag_02
  35469.     MaxHealth       = 100.0
  35470.     InitialHealth   = 100.0
  35471.   End
  35472.  
  35473.   Behavior = CommandButtonHuntUpdate  ModuleTag_03 ; allows use of command button hunt script with this unit. 
  35474.   End
  35475.  
  35476.   Behavior = AIUpdateInterface ModuleTag_04
  35477.     AutoAcquireEnemiesWhenIdle = No
  35478.   End
  35479.   Locomotor = SET_NORMAL CINE_BlackLotusLocomotor
  35480.   Locomotor = SET_FREEFALL FreeFallLocomotor
  35481.   Behavior = PhysicsBehavior ModuleTag_05
  35482.     Mass = 5.0
  35483.   End
  35484.   Behavior = StealthUpdate ModuleTag_07
  35485.     StealthDelay                = 2500 ; msec
  35486.     StealthForbiddenConditions  = USING_ABILITY
  35487.     InnateStealth               = Yes
  35488.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  35489.   End
  35490.  
  35491.  
  35492.   Behavior = SpecialAbility ModuleTag_08
  35493.     SpecialPowerTemplate = SpecialAbilityBlackLotusCaptureBuilding
  35494.     UpdateModuleStartsAttack = Yes
  35495.     InitiateSound         = BlackLotusVoiceHackBuilding
  35496.   End
  35497.   Behavior = SpecialAbilityUpdate ModuleTag_09
  35498.     SpecialPowerTemplate  = SpecialAbilityBlackLotusCaptureBuilding
  35499.     StartAbilityRange     = 150.0
  35500.     UnpackTime            = 6730 ;animation time is 6730 (changing this will scale anim speed)
  35501.     PackTime              = 2800 ;animation time is 5800 (changing this will scale anim speed)
  35502.     PreparationTime       = 6000 ;time to complete hack once prepared (unpacked)
  35503.     SpecialObject         = BinaryDataStream
  35504.     DoCaptureFX           = Yes
  35505.     PackSound             = BlackLotusPack
  35506.     UnpackSound           = BlackLotusUnpack
  35507.     TriggerSound          = BlackLotusTrigger
  35508.     PrepSoundLoop         = BlackLotusPrepLoop
  35509.   End
  35510.   Behavior = SpecialAbility ModuleTag_10
  35511.     SpecialPowerTemplate      = SpecialAbilityBlackLotusDisableVehicleHack
  35512.     UpdateModuleStartsAttack  = Yes
  35513.     InitiateSound           = BlackLotusVoiceHackVehicle
  35514.   End
  35515.   Behavior = SpecialAbilityUpdate ModuleTag_11
  35516.     SpecialPowerTemplate    = SpecialAbilityBlackLotusDisableVehicleHack
  35517.     StartAbilityRange       = 150.0
  35518.     UnpackTime              = 6730 ;animation time is 6730 (changing this will scale anim speed)
  35519.     PackTime                = 2800 ;animation time is 5800 (changing this will scale anim speed)
  35520.     PreparationTime         = 2000 ;time to complete hack once prepared (unpacked)
  35521.     EffectDuration          = 30000 ;duration vehicle is disabled  (30 seconds)
  35522.     DisableFXParticleSystem = DisabledEffectBinaryShower0
  35523.     SpecialObject           = BinaryDataStream
  35524.     PackSound               = BlackLotusPack
  35525.     UnpackSound             = BlackLotusUnpack
  35526.     TriggerSound            = BlackLotusTrigger
  35527.     PrepSoundLoop           = BlackLotusPrepLoop
  35528.   End
  35529.   Behavior = SpecialAbility ModuleTag_12
  35530.     SpecialPowerTemplate      = SpecialAbilityBlackLotusStealCashHack
  35531.     UpdateModuleStartsAttack  = Yes
  35532.     InitiateSound         = BlackLotusVoiceHackCash
  35533.   End
  35534.   Behavior = SpecialAbilityUpdate ModuleTag_13
  35535.     SpecialPowerTemplate  = SpecialAbilityBlackLotusStealCashHack
  35536.     StartAbilityRange     = 150.0
  35537.     UnpackTime            = 6730 ;animation time is 6730 (changing this will scale anim speed)
  35538.     PackTime              = 5800 ;animation time is 5800 (changing this will scale anim speed)
  35539.     PreparationTime       = 6000 ;time to complete hack once prepared (unpacked)
  35540.     EffectValue           = 1000 ;amount of cash stolen
  35541.     SpecialObject         = BinaryDataStream
  35542.     PackSound             = BlackLotusPack
  35543.     UnpackSound           = BlackLotusUnpack
  35544.     TriggerSound          = BlackLotusTrigger
  35545.     PrepSoundLoop         = BlackLotusPrepLoop
  35546.   End
  35547.  
  35548.   Behavior = SquishCollide ModuleTag_14
  35549.     ;nothing
  35550.   End
  35551.  
  35552.  
  35553. ; --- begin Death modules ---
  35554.   Behavior = SlowDeathBehavior ModuleTag_Death01
  35555.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  35556.     SinkDelay           = 3000
  35557.     SinkRate            = 0.5     ; in Dist/Sec
  35558.     DestructionDelay    = 8000
  35559.     FX                  = INITIAL FX_GIDie
  35560.   End
  35561.   Behavior = SlowDeathBehavior ModuleTag_Death02
  35562.     DeathTypes          = NONE +CRUSHED +SPLATTED
  35563.     SinkDelay           = 3000
  35564.     SinkRate            = 0.5     ; in Dist/Sec
  35565.     DestructionDelay    = 8000
  35566.     FX                  = INITIAL FX_GIDieCrushed
  35567.   End
  35568.   Behavior = SlowDeathBehavior ModuleTag_Death03
  35569.     DeathTypes          = NONE +EXPLODED
  35570.     SinkDelay           = 3000
  35571.     SinkRate            = 0.5     ; in Dist/Sec
  35572.     DestructionDelay    = 8000
  35573.     FX                  = INITIAL FX_GIDie
  35574.     FlingForce          = 8
  35575.     FlingForceVariance  = 3
  35576.     FlingPitch          = 60
  35577.     FlingPitchVariance  = 10
  35578.   End
  35579.   Behavior = SlowDeathBehavior ModuleTag_Death04
  35580.     DeathTypes          = NONE +BURNED
  35581.     DestructionDelay    = 0
  35582.     FX                  = INITIAL FX_GIDie
  35583.     OCL                 = INITIAL OCL_FlamingInfantry
  35584.   End
  35585.   Behavior = SlowDeathBehavior ModuleTag_Death05
  35586.     DeathTypes          = NONE +POISONED
  35587.     DestructionDelay    = 0
  35588.     FX                  = INITIAL FX_GIDie
  35589.     OCL                 = INITIAL OCL_ToxicInfantry
  35590.   End
  35591.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  35592.     DeathTypes          = NONE +POISONED_BETA
  35593.     DestructionDelay    = 0
  35594.     FX                  = INITIAL FX_GIDie
  35595.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  35596.   End
  35597. ; --- end Death modules ---
  35598.  
  35599.   Behavior = PoisonedBehavior ModuleTag_17
  35600.     PoisonDamageInterval  = 100  ; Every this many msec I will retake the poison damage dealt me...
  35601.     PoisonDuration        = 3000       ; ... for this long after last hit by poison damage
  35602.   End
  35603.  
  35604.   Geometry = CYLINDER
  35605.   GeometryMajorRadius = 10.0
  35606.   GeometryMinorRadius = 10.0
  35607.   GeometryHeight = 12.0
  35608.   GeometryIsSmall = Yes
  35609.   Shadow = SHADOW_DECAL
  35610.   ShadowSizeX = 14;
  35611.   ShadowSizeY = 14;
  35612.   ShadowTexture = ShadowI;
  35613.   BuildCompletion = APPEARS_AT_RALLY_POINT
  35614.  
  35615. End
  35616.  
  35617. ;------------------------------------------------------------------------------
  35618. ;*************************** Cinematic-only unit ******************************
  35619. Object CINE_AmericaJetStealthFighter
  35620.  
  35621.   ; *** ART Parameters ***
  35622.   SelectPortrait         = SAStealth_L
  35623.   ButtonImage            = SAStealth
  35624.   
  35625.   UpgradeCameo1 = Upgrade_AmericaLaserMissiles
  35626.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  35627.   ;UpgradeCameo3 = NONE
  35628.   ;UpgradeCameo4 = NONE
  35629.   ;UpgradeCameo5 = NONE
  35630.   
  35631.   Draw = W3DModelDraw ModuleTag_01
  35632.  
  35633.     DefaultConditionState
  35634.       Model                           = AVStealth
  35635.       HideSubObject                   = BurnerFX03 BurnerFX04
  35636.       WeaponLaunchBone  = PRIMARY WeaponA
  35637.     End
  35638.     
  35639.     ConditionState        = JETEXHAUST
  35640.       ParticleSysBone     = Wingtip01 JetContrail
  35641.       ParticleSysBone     = Wingtip02 JetContrail
  35642.     End
  35643.  
  35644.     ConditionState        = JETEXHAUST JETAFTERBURNER
  35645.       ; exhaust
  35646.       ParticleSysBone     = Wingtip01 JetContrail
  35647.       ParticleSysBone     = Wingtip02 JetContrail
  35648.       ; afterburners
  35649.       ShowSubObject       = BurnerFX03 BurnerFX04
  35650.       ParticleSysBone     = Engine01 JetLenzflare
  35651.       ParticleSysBone     = Engine02 JetLenzflare
  35652.     End
  35653.  
  35654.     ConditionState        = REALLYDAMAGED
  35655.       Model               = AVStealth_D
  35656.       ; damage
  35657.       ParticleSysBone     = Smoke01 JetSmoke
  35658.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  35659.     End
  35660.  
  35661.     ConditionState        = REALLYDAMAGED JETEXHAUST
  35662.       Model               = AVStealth_D
  35663.       ; damage
  35664.       ParticleSysBone     = Smoke01 JetSmoke
  35665.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  35666.       ; exhaust
  35667.       ParticleSysBone     = Wingtip01 JetContrail
  35668.       ParticleSysBone     = Wingtip02 JetContrail
  35669.     End
  35670.  
  35671.     ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
  35672.       Model               = AVStealth_D
  35673.       ; damage
  35674.       ParticleSysBone     = Smoke01 JetSmoke
  35675.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  35676.       ; exhaust
  35677.       ParticleSysBone     = Wingtip01 JetContrail
  35678.       ParticleSysBone     = Wingtip02 JetContrail
  35679.       ; afterburners
  35680.       ShowSubObject       = BurnerFX03 BurnerFX04
  35681.       ParticleSysBone     = Engine01 JetLenzflare
  35682.       ParticleSysBone     = Engine02 JetLenzflare
  35683.     End
  35684.  
  35685.     ConditionState        = RUBBLE
  35686.       Model               = AVStealth_D1
  35687.       HideSubObject       = None 
  35688.       ShowSubObject       = None
  35689.     End
  35690.  
  35691.     ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
  35692.       Model               = AVStealth_D1
  35693.       ;HideSubObject is needed cause there're inherited from default condition state      
  35694.       HideSubObject       = None 
  35695.       ShowSubObject       = None
  35696.       ParticleSysBone     = Engine01 JetExhaust
  35697.       ParticleSysBone     = Engine02 JetExhaust
  35698.       ParticleSysBone     = Wingtip01 JetContrail
  35699.       ParticleSysBone     = Wingtip02 JetContrail
  35700.     End
  35701.     
  35702.     OkToChangeModelColor = Yes
  35703.  
  35704.   End
  35705.  
  35706.   ; ***DESIGN parameters ***
  35707.   DisplayName           = OBJECT:StealthFighter
  35708.   EditorSorting         = VEHICLE
  35709.   Side                  = America
  35710.   TransportSlotCount    = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  35711.   VisionRange           = 300.0 
  35712.   ShroudClearingRange   = 300.0
  35713.   Prerequisites
  35714.     Object = AmericaAirfield
  35715.     Science = SCIENCE_StealthFighter
  35716.   End
  35717.   WeaponSet
  35718.     Conditions = None 
  35719.     Weapon = PRIMARY CINE_StealthJetMissileWeapon
  35720.   End
  35721.   WeaponSet
  35722.     Conditions = PLAYER_UPGRADE
  35723.     Weapon = PRIMARY StealthJetLaserGuidedMissileWeapon
  35724.   End
  35725.   ArmorSet
  35726.     Conditions      = None
  35727.     Armor           = AirplaneArmor
  35728.     DamageFX        = None
  35729.   End
  35730.  
  35731.   BuildCost           = 1600
  35732.   BuildTime           = 25.0            ;in seconds  
  35733.   ExperienceValue     = 100 100 200 300 ;Experience point value at each level
  35734.   ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
  35735.   IsTrainable         = Yes             ;Can gain experience
  35736.   CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  35737.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  35738.   CommandSet = AmericaJetStealthFighterCommandSet
  35739.  
  35740.   ; *** AUDIO Parameters ***
  35741.   VoiceSelect     = StealthFighterVoiceSelect
  35742.   VoiceMove       = StealthFighterVoiceMove
  35743.   VoiceAttack     = StealthFighterVoiceAttack
  35744.   VoiceAttackAir  = StealthFighterVoiceAttackAir
  35745.   VoiceGuard      = StealthFighterVoiceAirPatrol
  35746.   SoundAmbient    = StealthFighterAmbientLoop
  35747.   SoundAmbientRubble    = NoSound
  35748.   SoundDie        = StealthFighterVoiceFalling
  35749.   SoundStealthOn  = StealthOn
  35750.   SoundStealthOff = StealthOff
  35751.   UnitSpecificSounds
  35752.     VoiceCreate   = StealthFighterVoiceCreate
  35753.     SoundEject    = PilotSoundEject
  35754.     VoiceEject    = PilotVoiceEject
  35755.     Afterburner   = RaptorAfterburner
  35756.     VoiceLowFuel  = AuroraBomberVoiceLowFuel
  35757.     VoiceGarrison = StealthFighterVoiceMove
  35758.   End
  35759.  
  35760.   ; *** ENGINEERING Parameters ***
  35761.   RadarPriority   = LOCAL_UNIT_ONLY
  35762.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  35763.   Body = ActiveBody ModuleTag_02
  35764.     MaxHealth       = 160.0
  35765.     InitialHealth   = 160.0
  35766.   End
  35767.  
  35768.   Behavior                          = JetSlowDeathBehavior ModuleTag_03
  35769.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  35770.     OCLOnGroundDeath                = OCL_StealthDeathFinalBlowUp
  35771.     DestructionDelay                = 99999999; destruction will happen when we
  35772.     RollRate                        = 0.2
  35773.     RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
  35774.     PitchRate                       = 0.0
  35775.     FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  35776.     FXInitialDeath                  = FX_JetDeathInitial
  35777.     ;OCLInitialDeath                = None
  35778.     DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
  35779.     FXSecondary                     = FX_JetDeathSecondary
  35780.     ;OCLSecondary                   = None
  35781.     FXHitGround                     = FX_JetDeathHitGround
  35782.     ;OCLHitGround                   = None
  35783.     DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
  35784.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  35785.     OCLFinalBlowUp                  = OCL_StealthDeathFinalBlowUp
  35786. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  35787.   End
  35788.   Behavior = EjectPilotDie ModuleTag_04
  35789.     GroundCreationList = OCL_EjectPilotOnGround
  35790.     AirCreationList = OCL_EjectPilotViaParachute
  35791.     ExemptStatus = HIJACKED
  35792.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  35793.   End
  35794.  
  35795.   Behavior = PhysicsBehavior ModuleTag_05
  35796.     Mass = 500.0
  35797.   End
  35798.  
  35799.   Behavior = JetAIUpdate ModuleTag_06
  35800.     OutOfAmmoDamagePerSecond = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
  35801.                                     ; note that it's expressed as a percent of max health, not an absolute
  35802.     TakeoffSpeedForMaxLift = 100%   ; smaller numbers give more lift sooner when taking off
  35803.     TakeoffPause           = 500
  35804.     MinHeight              = 5
  35805.     ReturnToBaseIdleTime   = 10000         ; if idle for this long, return to base, even if not out of ammo
  35806.   End
  35807.  
  35808.   Behavior = WeaponSetUpgrade ModuleTag_07
  35809.     TriggeredBy = Upgrade_AmericaLaserMissiles
  35810.   End
  35811.  
  35812.   Behavior = ExperienceScalarUpgrade ModuleTag_08
  35813.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  35814.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  35815.   End
  35816.  
  35817.   Behavior = StealthUpdate ModuleTag_09
  35818.     StealthDelay                          = 1 ; msec
  35819.     StealthForbiddenConditions            = FIRING_PRIMARY
  35820.     ; not currently used... but maybe someday? (srj)
  35821.     ;RevealDistanceFromTarget             = 0.0f
  35822.     FriendlyOpacityMin                    = 50.0%
  35823.     FriendlyOpacityMax                    = 100.0%
  35824.     InnateStealth                         = Yes
  35825.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  35826.   End
  35827.  
  35828.   Locomotor = SET_NORMAL CINE_StealthJetLocomotor
  35829.   Locomotor = SET_TAXIING CINE_BasicJetTaxiLocomotor
  35830.  
  35831.   Behavior = FlammableUpdate ModuleTag_21
  35832.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  35833.     AflameDamageAmount = 3       ; taking this much damage...
  35834.     AflameDamageDelay = 500       ; this often.
  35835.   End
  35836.  
  35837.   Behavior                 = TransitionDamageFX ModuleTag_22
  35838.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  35839.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
  35840.   End
  35841.  
  35842.  
  35843.   Geometry = Cylinder
  35844.   GeometryIsSmall = Yes
  35845.   GeometryMajorRadius = 7.0
  35846.   GeometryMinorRadius = 7.0
  35847.   GeometryHeight = 7.0
  35848.   Shadow = SHADOW_VOLUME
  35849.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  35850.  
  35851. End
  35852.  
  35853. ;------------------------------------------------------------------------------
  35854. ;------------------------------------------------------------------------------
  35855. ;*************************** Cinematic-only unit ******************************
  35856. Object CINE_AmericaJetStealthFighterUSA08
  35857.  
  35858.   ; *** ART Parameters ***
  35859.   SelectPortrait         = SAStealth_L
  35860.   ButtonImage            = SAStealth
  35861.   
  35862.   UpgradeCameo1 = Upgrade_AmericaLaserMissiles
  35863.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  35864.   ;UpgradeCameo3 = NONE
  35865.   ;UpgradeCameo4 = NONE
  35866.   ;UpgradeCameo5 = NONE
  35867.   
  35868.   Draw = W3DModelDraw ModuleTag_01
  35869.  
  35870.     DefaultConditionState
  35871.       Model                           = AVStealth
  35872.       HideSubObject                   = BurnerFX03 BurnerFX04
  35873.       WeaponLaunchBone  = PRIMARY WeaponA
  35874.     End
  35875.     
  35876.     ConditionState        = JETEXHAUST
  35877.       ParticleSysBone     = Wingtip01 JetContrail
  35878.       ParticleSysBone     = Wingtip02 JetContrail
  35879.     End
  35880.  
  35881.     ConditionState        = JETEXHAUST JETAFTERBURNER
  35882.       ; exhaust
  35883.       ParticleSysBone     = Wingtip01 JetContrail
  35884.       ParticleSysBone     = Wingtip02 JetContrail
  35885.       ; afterburners
  35886.       ShowSubObject       = BurnerFX03 BurnerFX04
  35887.       ParticleSysBone     = Engine01 JetLenzflare
  35888.       ParticleSysBone     = Engine02 JetLenzflare
  35889.     End
  35890.  
  35891.     ConditionState        = REALLYDAMAGED
  35892.       Model               = AVStealth_D
  35893.       ; damage
  35894.       ParticleSysBone     = Smoke01 JetSmoke
  35895.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  35896.     End
  35897.  
  35898.     ConditionState        = REALLYDAMAGED JETEXHAUST
  35899.       Model               = AVStealth_D
  35900.       ; damage
  35901.       ParticleSysBone     = Smoke01 JetSmoke
  35902.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  35903.       ; exhaust
  35904.       ParticleSysBone     = Wingtip01 JetContrail
  35905.       ParticleSysBone     = Wingtip02 JetContrail
  35906.     End
  35907.  
  35908.     ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
  35909.       Model               = AVStealth_D
  35910.       ; damage
  35911.       ParticleSysBone     = Smoke01 JetSmoke
  35912.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  35913.       ; exhaust
  35914.       ParticleSysBone     = Wingtip01 JetContrail
  35915.       ParticleSysBone     = Wingtip02 JetContrail
  35916.       ; afterburners
  35917.       ShowSubObject       = BurnerFX03 BurnerFX04
  35918.       ParticleSysBone     = Engine01 JetLenzflare
  35919.       ParticleSysBone     = Engine02 JetLenzflare
  35920.     End
  35921.  
  35922.     ConditionState        = RUBBLE
  35923.       Model               = AVStealth_D1
  35924.       HideSubObject       = None 
  35925.       ShowSubObject       = None
  35926.     End
  35927.  
  35928.     ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
  35929.       Model               = AVStealth_D1
  35930.       ;HideSubObject is needed cause there're inherited from default condition state      
  35931.       HideSubObject       = None 
  35932.       ShowSubObject       = None
  35933.       ParticleSysBone     = Engine01 JetExhaust
  35934.       ParticleSysBone     = Engine02 JetExhaust
  35935.       ParticleSysBone     = Wingtip01 JetContrail
  35936.       ParticleSysBone     = Wingtip02 JetContrail
  35937.     End
  35938.     
  35939.     OkToChangeModelColor = Yes
  35940.  
  35941.   End
  35942.  
  35943.   ; ***DESIGN parameters ***
  35944.   DisplayName           = OBJECT:StealthFighter
  35945.   EditorSorting         = VEHICLE
  35946.   Side                  = America
  35947.   TransportSlotCount    = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  35948.   VisionRange           = 300.0 
  35949.   ShroudClearingRange   = 300.0
  35950.   Prerequisites
  35951.     Object = AmericaAirfield
  35952.     Science = SCIENCE_StealthFighter
  35953.   End
  35954.   WeaponSet
  35955.     Conditions = None 
  35956.     Weapon = PRIMARY CINE_StealthJetMissileWeapon
  35957.   End
  35958.   WeaponSet
  35959.     Conditions = PLAYER_UPGRADE
  35960.     Weapon = PRIMARY StealthJetLaserGuidedMissileWeapon
  35961.   End
  35962.   ArmorSet
  35963.     Conditions      = None
  35964.     Armor           = AirplaneArmor
  35965.     DamageFX        = None
  35966.   End
  35967.  
  35968.   BuildCost           = 1600
  35969.   BuildTime           = 25.0            ;in seconds  
  35970.   ExperienceValue     = 100 100 200 300 ;Experience point value at each level
  35971.   ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
  35972.   IsTrainable         = Yes             ;Can gain experience
  35973.   CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  35974.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  35975.   CommandSet = AmericaJetStealthFighterCommandSet
  35976.  
  35977.   ; *** AUDIO Parameters ***
  35978.   VoiceSelect     = StealthFighterVoiceSelect
  35979.   VoiceMove       = StealthFighterVoiceMove
  35980.   VoiceAttack     = StealthFighterVoiceAttack
  35981.   VoiceAttackAir  = StealthFighterVoiceAttackAir
  35982.   VoiceGuard      = StealthFighterVoiceAirPatrol
  35983.   SoundAmbient    = StealthFighterAmbientLoop
  35984.   SoundAmbientRubble    = NoSound
  35985.   SoundDie        = StealthFighterVoiceFalling
  35986.   SoundStealthOn  = StealthOn
  35987.   SoundStealthOff = StealthOff
  35988.   UnitSpecificSounds
  35989.     VoiceCreate   = StealthFighterVoiceCreate
  35990.     SoundEject    = PilotSoundEject
  35991.     VoiceEject    = PilotVoiceEject
  35992.     Afterburner   = RaptorAfterburner
  35993.     VoiceLowFuel  = AuroraBomberVoiceLowFuel
  35994.     VoiceGarrison = StealthFighterVoiceMove
  35995.   End
  35996.  
  35997.   ; *** ENGINEERING Parameters ***
  35998.   RadarPriority   = LOCAL_UNIT_ONLY
  35999.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  36000.   Body = ActiveBody ModuleTag_02
  36001.     MaxHealth       = 160.0
  36002.     InitialHealth   = 160.0
  36003.   End
  36004.  
  36005.   Behavior                          = JetSlowDeathBehavior ModuleTag_03
  36006.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  36007.     OCLOnGroundDeath                = OCL_StealthDeathFinalBlowUp
  36008.     DestructionDelay                = 99999999; destruction will happen when we
  36009.     RollRate                        = 0.2
  36010.     RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
  36011.     PitchRate                       = 0.0
  36012.     FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  36013.     FXInitialDeath                  = FX_JetDeathInitial
  36014.     ;OCLInitialDeath                = None
  36015.     DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
  36016.     FXSecondary                     = FX_JetDeathSecondary
  36017.     ;OCLSecondary                   = None
  36018.     FXHitGround                     = FX_JetDeathHitGround
  36019.     ;OCLHitGround                   = None
  36020.     DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
  36021.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  36022.     OCLFinalBlowUp                  = OCL_StealthDeathFinalBlowUp
  36023. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  36024.   End
  36025.   Behavior = EjectPilotDie ModuleTag_04
  36026.     GroundCreationList = OCL_EjectPilotOnGround
  36027.     AirCreationList = OCL_EjectPilotViaParachute
  36028.     ExemptStatus = HIJACKED
  36029.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  36030.   End
  36031.  
  36032.   Behavior = PhysicsBehavior ModuleTag_05
  36033.     Mass = 500.0
  36034.   End
  36035.  
  36036.   Behavior = JetAIUpdate ModuleTag_06
  36037.     OutOfAmmoDamagePerSecond = 10%  ; amount of damage to take per SEC (not per frame) when out of ammo
  36038.                                     ; note that it's expressed as a percent of max health, not an absolute
  36039.     TakeoffSpeedForMaxLift = 100%   ; smaller numbers give more lift sooner when taking off
  36040.     TakeoffPause           = 500
  36041.     MinHeight              = 5
  36042.     ReturnToBaseIdleTime   = 10000         ; if idle for this long, return to base, even if not out of ammo
  36043.   End
  36044.  
  36045.   Behavior = WeaponSetUpgrade ModuleTag_07
  36046.     TriggeredBy = Upgrade_AmericaLaserMissiles
  36047.   End
  36048.  
  36049.   Behavior = ExperienceScalarUpgrade ModuleTag_08
  36050.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  36051.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  36052.   End
  36053.  
  36054. ;  Behavior = StealthUpdate ModuleTag_09
  36055. ;    StealthDelay                          = 1 ; msec
  36056. ;    StealthForbiddenConditions            = FIRING_PRIMARY
  36057. ;    ; not currently used... but maybe someday? (srj)
  36058. ;    ;RevealDistanceFromTarget             = 0.0f
  36059. ;    FriendlyOpacityMin                    = 50.0%
  36060. ;    FriendlyOpacityMax                    = 100.0%
  36061. ;    InnateStealth                         = Yes
  36062. ;    OrderIdleEnemiesToAttackMeUponReveal  = Yes
  36063. ;  End
  36064.  
  36065.   Locomotor = SET_NORMAL CINE_StealthJetLocomotor
  36066.   Locomotor = SET_TAXIING CINE_BasicJetTaxiLocomotor
  36067.  
  36068.   Behavior = FlammableUpdate ModuleTag_21
  36069.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  36070.     AflameDamageAmount = 3       ; taking this much damage...
  36071.     AflameDamageDelay = 500       ; this often.
  36072.   End
  36073.  
  36074.   Behavior                 = TransitionDamageFX ModuleTag_22
  36075.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  36076.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
  36077.   End
  36078.  
  36079.  
  36080.   Geometry = Cylinder
  36081.   GeometryIsSmall = Yes
  36082.   GeometryMajorRadius = 7.0
  36083.   GeometryMinorRadius = 7.0
  36084.   GeometryHeight = 7.0
  36085.   Shadow = SHADOW_VOLUME
  36086.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  36087.  
  36088. End
  36089.  
  36090. ;------------------------------------------------------------------------------
  36091. ;***************************** Cinematic-only unit ****************************
  36092. Object CINE_GLAInfantryTerrorist
  36093.  
  36094. ; *** ART Parameters ***
  36095.   SelectPortrait         = SUTerrorist_L
  36096.   ButtonImage            = SUTerrorist
  36097.   
  36098.   ;UpgradeCameo1 = NONE
  36099.   ;UpgradeCameo2 = NONE
  36100.   ;UpgradeCameo3 = NONE
  36101.   ;UpgradeCameo4 = NONE
  36102.   ;UpgradeCameo5 = NONE
  36103.  
  36104.   Draw = W3DModelDraw ModuleTag_01
  36105.     OkToChangeModelColor = Yes
  36106.     DefaultConditionState
  36107.       Model = UITRST_SKN
  36108.       IdleAnimation = UITRST_SKL.UITRST_STA 0 25
  36109.       ;Regular spice animations
  36110.       IdleAnimation = UITRST_SKL.UITRST_IDA
  36111.       IdleAnimation = UITRST_SKL.UITRST_IDB
  36112.       AnimationMode = ONCE
  36113.       TransitionKey = TRANS_Stand
  36114.     End
  36115.  
  36116.     ConditionState = REALLYDAMAGED
  36117.       Animation = UITRST_SKL.UITRST_STA
  36118.       AnimationMode = LOOP
  36119.       TransitionKey = TRANS_Stand
  36120.     End
  36121.  
  36122.     ConditionState = FREEFALL
  36123.       Animation = UITRST_SKL.UITRST_PFL
  36124.       AnimationMode = LOOP
  36125.       TransitionKey = TRANS_Falling
  36126.     End
  36127.     AliasConditionState = FREEFALL REALLYDAMAGED
  36128.     AliasConditionState = FREEFALL DYING
  36129.  
  36130.     ConditionState = PARACHUTING
  36131.       Animation = UITRST_SKL.UITRST_PHG
  36132.       AnimationMode = LOOP
  36133.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  36134.       TransitionKey = TRANS_Chute
  36135.     End
  36136.     AliasConditionState = PARACHUTING REALLYDAMAGED
  36137.     AliasConditionState = PARACHUTING DYING
  36138.  
  36139.     ConditionState = MOVING
  36140.       Animation = UITRST_SKL.UITRST_RNA 23 ; used to be 15
  36141.       AnimationMode = LOOP
  36142.       Flags = RANDOMSTART
  36143.       TransitionKey = None
  36144.       ParticleSysBone   = None InfantryDustTrails
  36145.     End
  36146.     AliasConditionState = MOVING REALLYDAMAGED
  36147.  
  36148.     ConditionState = ATTACKING MOVING
  36149.       Animation = UITRST_SKL.UITRST_RNB 10
  36150.       AnimationMode = LOOP
  36151.       Flags = RANDOMSTART
  36152.       TransitionKey = None
  36153.     End
  36154.     AliasConditionState = ATTACKING MOVING REALLYDAMAGED
  36155.  
  36156.     ConditionState = PREATTACK_A
  36157.       Animation = UITRST_SKL.UITRST_ATA
  36158.       AnimationMode = ONCE
  36159.     End
  36160.     AliasConditionState = PREATTACK_A MOVING
  36161.  
  36162.     ConditionState = DYING
  36163.       Animation = UITRST_SKL.UITRST_DTA
  36164.       Animation = UITRST_SKL.UITRST_DTC
  36165.       AnimationMode = ONCE
  36166.       TransitionKey = TRANS_Dying
  36167.     End
  36168.  
  36169.     TransitionState = TRANS_Dying TRANS_Flailing
  36170.       Animation = UITRST_SKL.UITRST_ADTE1
  36171.       AnimationMode = ONCE
  36172.     End
  36173.  
  36174.     ConditionState = DYING EXPLODED_FLAILING
  36175.       Animation = UITRST_SKL.UITRST_ADTE2
  36176.       AnimationMode = LOOP
  36177.       TransitionKey = TRANS_Flailing
  36178.     End
  36179.  
  36180.     ConditionState = DYING EXPLODED_BOUNCING
  36181.       Animation = UITRST_SKL.UITRST_ADTE3
  36182.       AnimationMode = ONCE
  36183.       TransitionKey = None
  36184.     End
  36185.  
  36186.     ConditionState = SPECIAL_CHEERING
  36187.       Animation = UITRST_SKL.UITRST_CHA
  36188.       AnimationMode = LOOP
  36189.     End
  36190.  
  36191.     TransitionState = TRANS_Falling TRANS_Chute
  36192.       Animation = UITRST_SKL.UITRST_POP
  36193.       AnimationMode = ONCE
  36194.       Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  36195.     End
  36196.  
  36197.     TransitionState = TRANS_Chute TRANS_Stand
  36198.       Animation = UITRST_SKL.UITRST_PTD
  36199.       AnimationMode = ONCE
  36200.     End
  36201.  
  36202.   End
  36203.  
  36204.   ; ***DESIGN parameters ***
  36205.   DisplayName      = OBJECT:Terrorist
  36206.   Side = GLA
  36207.   EditorSorting = INFANTRY
  36208.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  36209.   WeaponSet
  36210.     Conditions = None 
  36211.     ;Kill himself so we can use FireWeaponWhenDead to fire the real weapon -- and use UNRESISTABLE
  36212.     ;damage to do ini logic for type of death to play -- unresistable for success.
  36213.     Weapon = PRIMARY TerroristSuicideWeapon 
  36214.   End
  36215.   ArmorSet
  36216.     Conditions      = None
  36217.     Armor           = HumanArmor
  36218.     DamageFX        = InfantryDamageFX
  36219.   End
  36220.   VisionRange = 150
  36221.   ShroudClearingRange = 200
  36222.   Prerequisites
  36223.     Object = GLABarracks
  36224.   End
  36225.   BuildCost = 200
  36226.   BuildTime = 5.0          ;in seconds    
  36227.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  36228.   CommandSet    = GLAInfantryTerroristCommandSet
  36229.  
  36230.   ; *** AUDIO Parameters ***
  36231.   VoiceSelect = TerroristVoiceSelect
  36232.   VoiceMove = TerroristVoiceMove
  36233.   VoiceAttack = TerroristVoiceAttack
  36234.   SoundDie = TerroristVoiceDie
  36235.   SoundDieFire = DieByFireGLA
  36236.   SoundDieToxin = DieByToxinGLA
  36237.   VoiceFear = TerroristVoiceFear
  36238.   VoiceGuard = TerroristVoiceMove
  36239.   UnitSpecificSounds
  36240.     VoiceGarrison         = TerroristVoiceMove
  36241.     VoiceCreate           = TerroristVoiceCreate
  36242.     VoiceEnter            = TerroristVoiceEnter
  36243.     VoiceEnterHostile     = TerroristVoiceEnterHostile
  36244.     VoiceGetHealed      = TerroristVoiceMove
  36245.   End
  36246.  
  36247.   ; *** ENGINEERING Parameters ***
  36248.   RadarPriority = UNIT
  36249.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
  36250.  
  36251.   Body = ActiveBody ModuleTag_02
  36252.     MaxHealth       = 120.0
  36253.     InitialHealth   = 120.0
  36254.   End
  36255.  
  36256.   ExperienceValue     = 20 20 20 20  ; Experience point value at each level
  36257.  
  36258.   Behavior = AIUpdateInterface ModuleTag_03
  36259.     AutoAcquireEnemiesWhenIdle = Yes
  36260.   End
  36261.   Locomotor = SET_NORMAL CINE_FastHumanLocomotor
  36262.   Behavior = PhysicsBehavior ModuleTag_04
  36263.     Mass = 5.0
  36264.   End
  36265.  
  36266.   ;Kris
  36267.   Behavior = ConvertToCarBombCrateCollide       ModuleTag_06
  36268.     RequiredKindOf    = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
  36269.     ;ForbiddenKindOf  = TRANSPORT DOZER  ; but not to TRANSPORTs or DOZERs!
  36270.     FXList            = FX_MakeCarBombSuccess
  36271.   End
  36272.  
  36273.   Behavior = SquishCollide ModuleTag_07
  36274.     ;nothing
  36275.   End
  36276.  
  36277. ; --- begin Death modules ---
  36278.   Behavior = SlowDeathBehavior ModuleTag_Death01
  36279.     DeathTypes          = ALL -CRUSHED -SPLATTED -SUICIDED -EXPLODED -BURNED -LASERED
  36280.     SinkDelay           = 3000
  36281.     SinkRate            = 0.5     ; in Dist/Sec
  36282.     DestructionDelay    = 8000
  36283.     FX                  = INITIAL FX_GIDie
  36284.   End
  36285.   Behavior = SlowDeathBehavior ModuleTag_Death02
  36286.     DeathTypes          = NONE +POISONED
  36287.     DestructionDelay    = 0
  36288.     FX                  = INITIAL FX_GIDie
  36289.     OCL                 = INITIAL OCL_GLAToxicInfantry
  36290.   End
  36291.   ; If he is killed by "powerful arms", then "detonate" him.
  36292.   Behavior = SlowDeathBehavior ModuleTag_Death03
  36293.     ;DeathTypes         = ****everything else!!!
  36294.     SinkDelay           = 3000
  36295.     SinkRate            = 0.5     ; in Dist/Sec
  36296.     DestructionDelay    = 8000
  36297.     FX                  = INITIAL FX_TerroristExplode
  36298.     FlingForce          = 8
  36299.     FlingForceVariance  = 3
  36300.     FlingPitch          = 60
  36301.     FlingPitchVariance  = 10
  36302.   End
  36303.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_Death04
  36304.     DeathWeapon   = SuicideDynamitePack
  36305.     StartsActive  = Yes                      ; turned on by upgrade
  36306.     DeathTypes = NONE +SUICIDED +CRUSHED +SPLATTED +LASERED +BURNED +EXPLODED
  36307.   End
  36308. ; --- end Death modules ---
  36309.  
  36310.   Behavior = PoisonedBehavior ModuleTag_14
  36311.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  36312.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  36313.   End
  36314.  
  36315.   Geometry = CYLINDER
  36316.   GeometryMajorRadius = 10.0
  36317.   GeometryMinorRadius = 10.0
  36318.   GeometryHeight = 12.0
  36319.   GeometryIsSmall = Yes
  36320.   Shadow = SHADOW_DECAL
  36321.   ShadowSizeX = 14;
  36322.   ShadowSizeY = 14;
  36323.   ShadowTexture = ShadowI;
  36324.   BuildCompletion = APPEARS_AT_RALLY_POINT
  36325.  
  36326. End
  36327.  
  36328. ;------------------------------------------------------------------------------
  36329. ;**************************** Cinematic-only unit *****************************
  36330. ;Also called Toxin Tractor && ToxinTractor
  36331. Object CINE_GLAVehicleToxinTruck
  36332.  
  36333.   ; *** ART Parameters ***
  36334.   SelectPortrait         = SUToxinTractor_L
  36335.   ButtonImage            = SUToxinTractor
  36336.   
  36337.   UpgradeCameo1 = Upgrade_GLAAnthraxBeta
  36338.   UpgradeCameo2 = Upgrade_GLAJunkRepair
  36339.   ;UpgradeCameo3 = NONE
  36340.   ;UpgradeCameo4 = NONE
  36341.   ;UpgradeCameo5 = NONE
  36342.   
  36343.   Draw = W3DTruckDraw ModuleTag_01
  36344.     OkToChangeModelColor = Yes
  36345.     ConditionState = NONE
  36346.       Model = UVToxinTrk
  36347.       Turret = Turret
  36348.       TurretPitch = TurretEL
  36349.       WeaponFireFXBone = PRIMARY WeaponA
  36350.       WeaponLaunchBone = PRIMARY WeaponA
  36351.       WeaponFireFXBone = SECONDARY Spigot
  36352.       WeaponLaunchBone = SECONDARY Spigot
  36353.     End
  36354.     
  36355.     ConditionState = REALLYDAMAGED
  36356.       Model = UVToxinTrk_D
  36357.       Turret = Turret
  36358.       TurretPitch = TurretEL
  36359.       WeaponFireFXBone = PRIMARY WeaponA
  36360.       WeaponLaunchBone = PRIMARY WeaponA
  36361.       WeaponFireFXBone = SECONDARY Spigot
  36362.       WeaponLaunchBone = SECONDARY Spigot
  36363.     End
  36364.     
  36365.     ConditionState = RUBBLE
  36366.       Model = UVToxinTrk_D
  36367.       Turret = Turret
  36368.       TurretPitch = TurretEL
  36369.       WeaponFireFXBone = PRIMARY WeaponA
  36370.       WeaponLaunchBone = PRIMARY WeaponA
  36371.       WeaponFireFXBone = SECONDARY Spigot
  36372.       WeaponLaunchBone = SECONDARY Spigot
  36373.     End
  36374.     
  36375.     TrackMarks = EXTireTrack.tga
  36376.     LeftFrontTireBone = Tire01
  36377.     RightFrontTireBone = Tire02
  36378.     LeftRearTireBone = Tire03
  36379.  
  36380.     RightRearTireBone = Tire04
  36381.     TireRotationMultiplier = 0.2   ; this * speed = rotation.
  36382.     PowerslideRotationAddition = 0   ; This vehicle doesn't powerslide.
  36383.  
  36384.     Dust = RocketBuggyDust
  36385.     DirtSpray = RocketBuggyDirtSpray
  36386.  
  36387.   End
  36388.  
  36389.   ; ***DESIGN parameters ***
  36390.   DisplayName         = OBJECT:ToxinTruck
  36391.   Side                = GLA
  36392.   EditorSorting       = VEHICLE
  36393.   TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  36394.   WeaponSet 
  36395.     Conditions        = None 
  36396.     Weapon            = PRIMARY     ToxinTruckGun
  36397.     Weapon            = SECONDARY   ToxinTruckSprayer
  36398.     AutoChooseSources = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  36399.     AutoChooseSources = SECONDARY   NONE ;Special attack only
  36400.   End
  36401.   WeaponSet
  36402.     Conditions        = PLAYER_UPGRADE 
  36403.     Weapon            = PRIMARY     ToxinTruckGunUpgraded
  36404.     Weapon            = SECONDARY   ToxinTruckSprayerUpgraded
  36405.     AutoChooseSources = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  36406.     AutoChooseSources = SECONDARY   NONE ;Special attack only
  36407.   End
  36408.   ArmorSet
  36409.     Conditions        = None
  36410.     Armor             = ToxinTruckArmor
  36411.     DamageFX          = TruckDamageFX
  36412.   End
  36413.   BuildCost           = 600
  36414.   BuildTime           = 5.0          ;in seconds    
  36415.   VisionRange         = 150
  36416.   ShroudClearingRange = 200
  36417.   Prerequisites
  36418.     Object = GLAArmsDealer
  36419.   End
  36420.  
  36421.   ExperienceValue     = 50 50 100 150    ;Experience point value at each level
  36422.   ExperienceRequired  = 0 100 150 300  ;Experience points needed to gain each level
  36423.   IsTrainable         = Yes             ;Can gain experience
  36424.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  36425.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  36426.   CommandSet          = GLAVehicleToxinTruckCommandSet
  36427.  
  36428.   ; *** AUDIO Parameters ***
  36429.   VoiceSelect         = ToxinTractorVoiceSelect
  36430.   VoiceMove           = ToxinTractorVoiceMove
  36431.   VoiceGuard          = ToxinTractorVoiceMove
  36432.   VoiceAttack         = ToxinTractorVoiceAttack
  36433.   SoundMoveStart      = ToxinTractorMoveStart
  36434.   SoundMoveStartDamaged = ToxinTractorMoveStart
  36435.   SoundDie            = ToxinTractorDie
  36436.  
  36437.   UnitSpecificSounds
  36438.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  36439.     VoiceCreate         = ToxinTractorVoiceCreate
  36440.     TurretMoveStart     = NoSound
  36441.     TurretMoveLoop      = TurretMoveLoop
  36442.    TruckLandingSound    = NoSound
  36443.    TruckPowerslideSound = NoSound
  36444.     VoiceCrush      = ToxinTractorVoiceCrush
  36445.     VoiceEnter           = ToxinTractorVoiceMove
  36446.     VoicePoisonLocation = ToxinTractorVoiceAttackContam
  36447.  
  36448.   End
  36449.  
  36450.   ; *** ENGINEERING Parameters ***
  36451.   RadarPriority         = UNIT
  36452.   KindOf                = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE
  36453.  
  36454.   Body = ActiveBody ModuleTag_02
  36455.     MaxHealth           = 240.0
  36456.     InitialHealth       = 240.0
  36457.   End
  36458.  
  36459.   Behavior = AIUpdateInterface ModuleTag_03
  36460.     AutoAcquireEnemiesWhenIdle = Yes
  36461.     Turret
  36462.       TurretTurnRate            = 180
  36463.       TurretPitchRate           = 180
  36464.       AllowsPitch               = Yes
  36465.       MinPhysicalPitch          = -20 ; If allows pitch, the lowest I can dip down to shoot.  defaults to 0 (horizontal)
  36466.       TurretFireAngleSweep      = PRIMARY 8
  36467.       TurretSweepSpeedModifier  = PRIMARY 0.5    ; Sweep slower than you turn
  36468.       ControlledWeaponSlots     = PRIMARY
  36469.     End
  36470.   End
  36471.   Locomotor             = SET_NORMAL CINE_ToxinTruckLocomotor
  36472.   Behavior              = PhysicsBehavior ModuleTag_04
  36473.     Mass                = 10.0
  36474.   End
  36475.  
  36476.   Behavior                    = SlowDeathBehavior  ModuleTag_05
  36477.     DeathTypes                = ALL -CRUSHED -SPLATTED
  36478.     ProbabilityModifier       = 5
  36479.     ModifierBonusPerOverkillPercent = 20%  ; negative means less likely to pick this in the face of much damage, positive means more likely
  36480.     DestructionDelay          = 0
  36481.     DestructionDelayVariance  = 200
  36482.     OCL                       = INITIAL OCL_ToxinTractorDeathEffect
  36483.     FX                        = FINAL FX_ToxinTruckExplosionOneFinal
  36484.     OCL                       = FINAL OCL_PoisonFieldSmall
  36485.   End
  36486.   Behavior                    = InstantDeathBehavior  ModuleTag_06
  36487.     DeathTypes                = NONE +CRUSHED +SPLATTED
  36488.     FX                        = FX_CarCrush
  36489.     OCL                       = OCL_CrusaderTank_CrushEffect
  36490.   End
  36491.     
  36492.   Behavior = CreateCrateDie ModuleTag_07
  36493.     CrateData   = SalvageCrateData
  36494.     ;CrateData  = EliteTankCrateData
  36495.     ;CrateData  = HeroicTankCrateData
  36496.   End
  36497.  
  36498.   Behavior = WeaponSetUpgrade ModuleTag_08
  36499.     ; the Toxin Tractor gets this upgrade if we either buy the upgrade,
  36500.     ; or if it gets HEROIC status
  36501.     TriggeredBy   = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
  36502.   End
  36503.   
  36504.   Behavior                          = TransitionDamageFX ModuleTag_11
  36505.     ReallyDamagedParticleSystem1  = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  36506.     ReallyDamagedFXList1          = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  36507.   End
  36508.   
  36509.   Behavior = AutoHealBehavior ModuleTag_12
  36510.     HealingAmount   = 2
  36511.     HealingDelay    = 1000 ; msec
  36512.     TriggeredBy     = Upgrade_GLAJunkRepair
  36513.   End
  36514.  
  36515.   Behavior = FlammableUpdate ModuleTag_21
  36516.     AflameDuration          = 5000         ; If I catch fire, I'll burn for this long...
  36517.     AflameDamageAmount      = 3       ; taking this much damage...
  36518.     AflameDamageDelay       = 500       ; this often.
  36519.   End
  36520.  
  36521.   Behavior = FireOCLAfterWeaponCooldownUpdate ModuleTag_13
  36522.     WeaponSlot            = SECONDARY
  36523.     ConflictsWith         = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
  36524.     OCL                   = OCL_PoisonFieldMedium
  36525.     MinShotsToCreateOCL   = 4
  36526.     OCLLifetimePerSecond  = 10000
  36527.     OCLLifetimeMaxCap     = 180000
  36528.   End
  36529.   Behavior = FireOCLAfterWeaponCooldownUpdate ModuleTag_14
  36530.     WeaponSlot            = SECONDARY
  36531.     TriggeredBy           = Upgrade_GLAAnthraxBeta Upgrade_Veterancy_HEROIC
  36532.     OCL                   = OCL_PoisonFieldUpgradedMedium
  36533.     MinShotsToCreateOCL   = 4
  36534.     OCLLifetimePerSecond  = 10000
  36535.     OCLLifetimeMaxCap     = 180000
  36536.   End
  36537.   Geometry = BOX
  36538.   GeometryMajorRadius = 13.0
  36539.   GeometryMinorRadius = 9.0
  36540.   GeometryHeight = 10.0    ; set to make the projectile stream look right 
  36541.   GeometryIsSmall = Yes    
  36542.   Shadow = SHADOW_VOLUME
  36543.  
  36544. End
  36545.  
  36546. ;------------------------------------------------------------------------------
  36547. ;*************************** Cinematic-only unit ******************************
  36548. ;
  36549. ; ??? This unit is used in a mission for "color".
  36550. ; This unit is never human-controllable!
  36551. ;
  36552. Object CINE_AmericaInfantryOfficer
  36553.     ; *** ART Parameters ***
  36554.   Draw = W3DModelDraw ModuleTag_01
  36555.     OkToChangeModelColor = Yes
  36556.  
  36557.     ;NORMAL STANDING
  36558.     DefaultConditionState
  36559.       Model = AIOFCR_SKN
  36560.       IdleAnimation = AIOFCR_SKL.AIOFCR_STA 0 21
  36561.       ;Regular spice animations
  36562.       IdleAnimation = AIOFCR_SKL.AIOFCR_IDA
  36563.       IdleAnimation = AIOFCR_SKL.AIOFCR_IDB
  36564.       AnimationMode = ONCE
  36565.       WeaponFireFXBone = PRIMARY Muzzle
  36566.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  36567.       TransitionKey = TRANS_STAND
  36568.     End
  36569.  
  36570.     ConditionState    = MOVING
  36571.       Animation       = AIOFCR_SKL.AIOFCR_RNA
  36572.       AnimationMode   = LOOP
  36573.       ParticleSysBone     = None InfantryDustTrails
  36574.     End
  36575.  
  36576.     ; NORMAL ATTACK
  36577.     ;--------------------------------------------------------
  36578.     ; Drawing gun
  36579.     ConditionState  = PREATTACK_A
  36580.       Animation     = AIOFCR_SKL.AIOFCR_ATAST
  36581.       AnimationMode = ONCE
  36582.     End
  36583.     AliasConditionState = PREATTACK_A MOVING
  36584.     AliasConditionState = PREATTACK_A FIRING_A
  36585.     AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A
  36586.  
  36587.     ; Firing gun
  36588.     ConditionState  = FIRING_A
  36589.       Animation     = AIOFCR_SKL.AIOFCR_ATALP
  36590.       AnimationMode = LOOP
  36591.       TransitionKey = TRANS_FIRING_A
  36592.     End
  36593.     ConditionState  = BETWEEN_FIRING_SHOTS_A
  36594.       Animation     = AIOFCR_SKL.AIOFCR_ATALP
  36595.       AnimationMode = LOOP
  36596.       TransitionKey = TRANS_FIRING_A
  36597.     End
  36598.     AliasConditionState = RELOADING_A
  36599.     AliasConditionState = MOVING FIRING_A
  36600.     AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  36601.     AliasConditionState = MOVING RELOADING_A
  36602.  
  36603.     ; This transition allows him to put his gun away when he's finished attacking.
  36604.     TransitionState = TRANS_FIRING_A TRANS_STAND
  36605.       Animation     = AIOFCR_SKL.AIOFCR_ATAED
  36606.       AnimationMode = ONCE
  36607.     End
  36608.     ;--------------------------------------------------------
  36609.  
  36610.     ConditionState  = DYING
  36611.       Animation     = AIOFCR_SKL.AIOFCR_DTA
  36612.       Animation     = AIOFCR_SKL.AIOFCR_DTB
  36613.       AnimationMode = ONCE
  36614.       TransitionKey = TRANS_Dying
  36615.     End
  36616.  
  36617.     TransitionState = TRANS_Dying TRANS_Flailing
  36618.       Animation = AIOFCR_SKL.AIOFCR_ADTE1
  36619.       AnimationMode = ONCE
  36620.     End
  36621.  
  36622.     ConditionState = DYING EXPLODED_FLAILING
  36623.       Animation = AIOFCR_SKL.AIOFCR_ADTE2
  36624.       AnimationMode = LOOP
  36625.       TransitionKey = TRANS_Flailing
  36626.     End
  36627.  
  36628.     ConditionState = DYING EXPLODED_BOUNCING
  36629.       Animation = AIOFCR_SKL.AIOFCR_ADTE3
  36630.       AnimationMode = ONCE
  36631.       TransitionKey = None
  36632.     End
  36633.  
  36634.     ConditionState  = SPECIAL_CHEERING
  36635.       Animation     = AIOFCR_SKL.AIOFCR_CHA
  36636.       AnimationMode = LOOP
  36637.     End
  36638.  
  36639.     ;PARACHUTING ANIMATIONS
  36640.  
  36641.     ;@TODO - MISSING ANIMATION FILE
  36642.     ;ConditionState   = FREEFALL
  36643.     ;  Animation      = AIOFCR_SKL.AIOFCR_PFL
  36644.     ;  AnimationMode  = LOOP
  36645.     ;  TransitionKey  = TRANS_Falling
  36646.     ;End
  36647.     ;AliasConditionState = FREEFALL REALLYDAMAGED
  36648.     ;AliasConditionState = FREEFALL DYING
  36649.     ConditionState  = PARACHUTING
  36650.       Animation     = AIOFCR_SKL.AIOFCR_PHG
  36651.       AnimationMode = LOOP
  36652.       Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  36653.       TransitionKey = TRANS_Chute
  36654.  
  36655.     End
  36656.     AliasConditionState = PARACHUTING REALLYDAMAGED
  36657.     AliasConditionState = PARACHUTING DYING
  36658.     TransitionState = TRANS_Falling TRANS_Chute
  36659.       Animation     = AIOFCR_SKL.AIOFCR_POP
  36660.       AnimationMode = ONCE
  36661.       Flags         = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  36662.     End
  36663.     TransitionState = TRANS_Chute TRANS_Stand
  36664.       Animation     = AIOFCR_SKL.AIOFCR_PTD
  36665.       AnimationMode = ONCE
  36666.     End
  36667.  
  36668.   End
  36669.  
  36670.   ; ***DESIGN parameters ***
  36671.   DisplayName      = OBJECT:Officer
  36672.   Side = America
  36673.   EditorSorting = INFANTRY
  36674.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  36675.   WeaponSet
  36676.     Conditions = None 
  36677.     Weapon = PRIMARY AmericaOfficerMachineGun
  36678.   End
  36679.   ArmorSet
  36680.     Conditions      = None
  36681.     Armor           = HumanArmor
  36682.     DamageFX        = InfantryDamageFX
  36683.   End
  36684.   VisionRange = 150
  36685.   ShroudClearingRange = 150
  36686.  
  36687.   BuildCost     = 400
  36688.   BuildTime     = 10.0          ;in seconds      
  36689.  
  36690.   ; *** AUDIO Parameters ***
  36691.   VoiceSelect = RangerVoiceSelect
  36692.   VoiceGroupSelect = BattleCrySound
  36693.   VoiceMove = RangerVoiceMove
  36694.   VoiceAttack = RangerVoiceAttack
  36695.   SoundDie = RangerVoiceDie
  36696.   SoundDieFire = DieByFireUSA
  36697.   SoundDieToxin = DieByToxinChina
  36698.  
  36699.   ; *** ENGINEERING Parameters ***
  36700.   RadarPriority = UNIT
  36701.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
  36702.  
  36703.   Body = ActiveBody ModuleTag_02
  36704.     MaxHealth       = 100.0
  36705.     InitialHealth   = 100.0
  36706.   End
  36707.  
  36708.   Behavior = AIUpdateInterface ModuleTag_03
  36709.     AutoAcquireEnemiesWhenIdle = Yes
  36710.   End
  36711.   Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
  36712.     ScanRate = 1000 ; once a second.
  36713.     ScanRange = 300 ;
  36714.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  36715.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  36716.   End
  36717.  
  36718.   Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
  36719.   Behavior = PhysicsBehavior ModuleTag_05
  36720.     Mass = 5.0
  36721.   End
  36722.  
  36723.   Behavior = SquishCollide ModuleTag_07
  36724.     ;nothing
  36725.   End
  36726.  
  36727. ; --- begin Death modules ---
  36728.   Behavior = SlowDeathBehavior ModuleTag_Death01
  36729.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  36730.     SinkDelay           = 3000
  36731.     SinkRate            = 0.5     ; in Dist/Sec
  36732.     DestructionDelay    = 8000
  36733.     FX                  = INITIAL FX_GIDie
  36734.   End
  36735.   Behavior = SlowDeathBehavior ModuleTag_Death02
  36736.     DeathTypes          = NONE +CRUSHED +SPLATTED
  36737.     SinkDelay           = 3000
  36738.     SinkRate            = 0.5     ; in Dist/Sec
  36739.     DestructionDelay    = 8000
  36740.     FX                  = INITIAL FX_GIDieCrushed
  36741.   End
  36742.   Behavior = SlowDeathBehavior ModuleTag_Death03
  36743.     DeathTypes          = NONE +EXPLODED
  36744.     SinkDelay           = 3000
  36745.     SinkRate            = 0.5     ; in Dist/Sec
  36746.     DestructionDelay    = 8000
  36747.     FX                  = INITIAL FX_GIDie
  36748.     FlingForce          = 8
  36749.     FlingForceVariance  = 3
  36750.     FlingPitch          = 60
  36751.     FlingPitchVariance  = 10
  36752.   End
  36753.   Behavior = SlowDeathBehavior ModuleTag_Death04
  36754.     DeathTypes          = NONE +BURNED
  36755.     DestructionDelay    = 0
  36756.     FX                  = INITIAL FX_GIDie
  36757.     OCL                 = INITIAL OCL_FlamingInfantry
  36758.   End
  36759.   Behavior = SlowDeathBehavior ModuleTag_Death05
  36760.     DeathTypes          = NONE +POISONED
  36761.     DestructionDelay    = 0
  36762.     FX                  = INITIAL FX_GIDie
  36763.     OCL                 = INITIAL OCL_ToxicInfantry
  36764.   End
  36765. ; --- end Death modules ---
  36766.  
  36767.   Behavior = PoisonedBehavior ModuleTag_10
  36768.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  36769.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  36770.   End
  36771.  
  36772.   Geometry = CYLINDER
  36773.   GeometryMajorRadius = 10.0
  36774.   GeometryMinorRadius = 10.0
  36775.   GeometryHeight = 12.0
  36776.   GeometryIsSmall = Yes
  36777.   Shadow = SHADOW_DECAL
  36778.   ShadowSizeX = 14;
  36779.   ShadowSizeY = 14;
  36780.   ShadowTexture = ShadowI;
  36781.   BuildCompletion = APPEARS_AT_RALLY_POINT
  36782.  
  36783. End
  36784.  
  36785. ;------------------------------------------------------------------------------
  36786. ;************************ Cinematic-only unit *********************************
  36787. Object CINE_ChinaAmbassador
  36788.  
  36789.     ; *** ART Parameters ***
  36790.   Draw = W3DModelDraw ModuleTag_01
  36791.     OkToChangeModelColor = Yes
  36792.  
  36793.     DefaultConditionState
  36794.       Model = NIAMBSDR_SKN
  36795.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  36796.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  36797.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  36798.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  36799.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  36800.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  36801.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_STA
  36802.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDA
  36803.       IdleAnimation = NIAMBSDR_SKL.NIAMBSDR_IDB
  36804.       AnimationMode = ONCE
  36805.       TransitionKey = TRANS_Stand
  36806.     End
  36807.         
  36808.     ConditionState = MOVING
  36809.       Animation = NIAMBSDR_SKL.NIAMBSDR_RNA ;***was using WKA but it doesn't exist so I changed it to kill the assert -- Kris 
  36810.       AnimationMode = LOOP
  36811.       Flags = RANDOMSTART
  36812.     End
  36813.  
  36814.     ConditionState = MOVING PANICKING
  36815.       Animation = NIAMBSDR_SKL.NIAMBSDR_RNA 
  36816.       AnimationMode = LOOP
  36817.       Flags = RANDOMSTART
  36818.     End
  36819.  
  36820.     ConditionState = DYING
  36821.       Animation = NIAMBSDR_SKL.NIAMBSDR_DTA
  36822.       Animation = NIAMBSDR_SKL.NIAMBSDR_DTB
  36823.       AnimationMode = ONCE
  36824.       TransitionKey = TRANS_Dying
  36825.     End
  36826.  
  36827.     ;TransitionState = TRANS_Dying TRANS_Flailing
  36828.     ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD1
  36829.     ;  AnimationMode = ONCE
  36830.     ;End
  36831.  
  36832.     ;ConditionState = DYING EXPLODED_FLAILING
  36833.     ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD2
  36834.     ;  AnimationMode = LOOP
  36835.     ;  TransitionKey = TRANS_Flailing
  36836.     ;End
  36837.  
  36838.     ;ConditionState = DYING EXPLODED_BOUNCING
  36839.     ;  Animation = NIAMBSDR_SKL.NIAMBSDR_ADTD3
  36840.     ;  AnimationMode = ONCE
  36841.     ;  TransitionKey = None
  36842.     ;End
  36843.   End
  36844.  
  36845.   ; ***DESIGN parameters ***
  36846.   Buildable           = No
  36847.   DisplayName         = OBJECT:Ambassador
  36848.   Side                = China
  36849.   EditorSorting       = INFANTRY
  36850.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  36851.   WeaponSet
  36852.     ; no weapons
  36853.   End
  36854.   ArmorSet
  36855.     Conditions      = None
  36856.     Armor           = HumanArmor
  36857.     DamageFX        = InfantryDamageFX
  36858.   End
  36859.   VisionRange = 150
  36860.   ShroudClearingRange = 150
  36861.  
  36862.   ExperienceValue = 50 100 150 400    ;Experience point value at each level
  36863.   ExperienceRequired = 0 150 450 900  ;Experience points needed to gain each level
  36864.   IsTrainable = Yes             ;Can gain experience
  36865.  
  36866.   ; *** AUDIO Parameters ***
  36867.   SoundDie = RedGuardVoiceDie
  36868.  
  36869.   ; *** ENGINEERING Parameters ***
  36870.   RadarPriority = UNIT
  36871.   KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE
  36872.  
  36873.   Body = ActiveBody ModuleTag_02
  36874.     MaxHealth       = 50.0
  36875.     InitialHealth   = 50.0
  36876.   End
  36877.  
  36878.   Behavior = AIUpdateInterface ModuleTag_03
  36879.     AutoAcquireEnemiesWhenIdle = Yes
  36880.   End
  36881.   Locomotor = SET_NORMAL CINE_BasicHumanLocomotor
  36882.   Behavior = PhysicsBehavior ModuleTag_04
  36883.     Mass = 5.0
  36884.   End
  36885.   Behavior = SlowDeathBehavior ModuleTag_05
  36886.     SinkDelay = 3000
  36887.     SinkRate = 0.5     ; in Dist/Sec
  36888.     DestructionDelay = 8000
  36889.   End
  36890.  
  36891.   Behavior = SquishCollide ModuleTag_06
  36892.     ;nothing
  36893.   End
  36894.  
  36895.   Behavior = FXListDie ModuleTag_07
  36896.     DeathTypes = ALL -CRUSHED -SPLATTED
  36897.     DeathFX = FX_GIDie
  36898.   End
  36899.   Behavior = FXListDie ModuleTag_08
  36900.     DeathTypes = NONE +CRUSHED +SPLATTED
  36901.     DeathFX = FX_GIDieCrushed
  36902.   End
  36903.  
  36904.   Behavior = PoisonedBehavior ModuleTag_09
  36905.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  36906.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  36907.   End
  36908.  
  36909.   Geometry = CYLINDER
  36910.   GeometryMajorRadius = 10.0
  36911.   GeometryMinorRadius = 10.0
  36912.   GeometryHeight = 12.0
  36913.   GeometryIsSmall = Yes
  36914.   Shadow = SHADOW_DECAL
  36915.   ShadowSizeX = 14
  36916.   ShadowSizeY = 14
  36917.   ShadowTexture = ShadowI
  36918.   BuildCompletion = APPEARS_AT_RALLY_POINT
  36919.  
  36920. End
  36921.  
  36922. ;------------------------------------------------------------------------------
  36923. ;************************* Cinematic-only unit ********************************
  36924. Object CINE_GLAInfantryWorker
  36925.  
  36926.   ; *** ART Parameters ***
  36927.   SelectPortrait         = SUWorker_L
  36928.   ButtonImage            = SUWorker
  36929.   
  36930.   ;UpgradeCameo1 = NONE
  36931.   ;UpgradeCameo2 = NONE
  36932.   ;UpgradeCameo3 = NONE
  36933.   ;UpgradeCameo4 = NONE
  36934.   ;UpgradeCameo5 = NONE
  36935.  
  36936.   Draw = W3DModelDraw ModuleTag_01
  36937.     OkToChangeModelColor = Yes
  36938.  
  36939.     DefaultConditionState
  36940.       HideSubObject = BOX MINED_SKIN
  36941.       Model         = UIWRKR_SKN
  36942.       IdleAnimation = UIWRKR_SKL.UIWRKR_STA 0 9
  36943.       IdleAnimation = UIWRKR_SKL.UIWRKR_IDA
  36944.       AnimationMode = ONCE
  36945.       TransitionKey = TRANS_Stand
  36946.     End
  36947.  
  36948.     ConditionState  = MOVING
  36949.       Animation     = UIWRKR_SKL.UIWRKR_RNA 16
  36950.       AnimationMode = LOOP
  36951.       Flags         = RANDOMSTART
  36952.       TransitionKey = TRANS_Stand
  36953.       ParticleSysBone = None InfantryDustTrails
  36954.     End
  36955.     ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
  36956.     ; since we flip the bit once we get pretty close to the target. but it looks
  36957.     ; funky to do the construction animation while moving. 
  36958.     ; so just use the normal move animation in that case.
  36959.     AliasConditionState = ACTIVELY_CONSTRUCTING MOVING
  36960.  
  36961.     ConditionState = ATTACKING
  36962.       ShowSubObject = MINED_SKIN
  36963.       Animation = UIWRKR_SKL.UIWRKR_MS
  36964.       AnimationMode = LOOP
  36965.       Flags = RANDOMSTART
  36966.       TransitionKey = TRANS_MetalDetector
  36967.     End
  36968.  
  36969.     ConditionState = MOVING ATTACKING
  36970.       ShowSubObject = MINED_SKIN
  36971.       Animation = UIWRKR_SKL.UIWRKR_MSW 50
  36972.       AnimationMode = LOOP
  36973.       Flags = RANDOMSTART
  36974.       TransitionKey = TRANS_MetalDetector
  36975.       ParticleSysBone = None InfantryDustTrails
  36976.     End
  36977.  
  36978.     TransitionState = TRANS_Stand TRANS_MetalDetector
  36979.       ShowSubObject = MINED_SKIN
  36980.       Animation     = UIWRKR_SKL.UIWRKR_TRB1
  36981.       AnimationMode = ONCE
  36982.       AnimationSpeedFactorRange = 2 2
  36983.     End
  36984.  
  36985.     TransitionState = TRANS_MetalDetector TRANS_Stand
  36986.       ShowSubObject = MINED_SKIN
  36987.       Animation     = UIWRKR_SKL.UIWRKR_TRB2
  36988.       AnimationMode = ONCE
  36989.       AnimationSpeedFactorRange = 2 2
  36990.     End
  36991.  
  36992.     ConditionState = MOVING CARRYING
  36993.       ShowSubObject = BOX
  36994.       Animation = UIWRKR_SKL.UIWRKR_CARY 12
  36995.       AnimationMode = LOOP
  36996.       Flags = RANDOMSTART
  36997.       TransitionKey = TRANS_Carry
  36998.       ParticleSysBone = None InfantryDustTrails
  36999.     End
  37000.     ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
  37001.     ; since we flip the bit once we get pretty close to the target. but it looks
  37002.     ; funky to do the construction animation while moving. 
  37003.     ; so just use the normal move animation in that case.
  37004.     AliasConditionState = ACTIVELY_CONSTRUCTING MOVING CARRYING
  37005.  
  37006.     ConditionState = CARRYING
  37007.       ShowSubObject = BOX
  37008.       Animation = UIWRKR_SKL.UIWRKR_CARST 30 
  37009.       AnimationMode = LOOP
  37010.       Flags = RANDOMSTART
  37011.       TransitionKey = TRANS_Carry
  37012.     End
  37013.  
  37014.     ConditionState = DYING
  37015.       Animation = UIWRKR_SKL.UIWRKR_DTA
  37016.       AnimationMode = ONCE
  37017.       TransitionKey = TRANS_Dying
  37018.     End
  37019.     AliasConditionState = DYING CARRYING
  37020.  
  37021.     TransitionState = TRANS_Dying TRANS_Flailing
  37022.       Animation = UIWRKR_SKL.UIWRKR_ADTE1
  37023.       AnimationMode = ONCE
  37024.     End
  37025.  
  37026.     ConditionState = DYING EXPLODED_FLAILING
  37027.       Animation = UIWRKR_SKL.UIWRKR_ADTE2
  37028.       AnimationMode = LOOP
  37029.       TransitionKey = TRANS_Flailing
  37030.     End
  37031.  
  37032.     ConditionState = DYING EXPLODED_BOUNCING
  37033.       Animation = UIWRKR_SKL.UIWRKR_ADTE3
  37034.       AnimationMode = ONCE
  37035.       TransitionKey = None
  37036.     End
  37037.  
  37038.     ConditionState  = SPECIAL_CHEERING
  37039.       Animation     = UIWRKR_SKL.UIWRKR_CHA
  37040.       AnimationMode = ONCE
  37041.     End
  37042.     
  37043.     ConditionState  = ACTIVELY_CONSTRUCTING
  37044.       Animation     = UIWRKR_SKL.UIWRKR_BDA
  37045.       AnimationMode = LOOP
  37046.       TransitionKey = TRANS_Constructing
  37047.     End
  37048.     AliasConditionState = ACTIVELY_CONSTRUCTING CARRYING
  37049.  
  37050.     ; --------------------
  37051.  
  37052.     TransitionState = TRANS_Stand TRANS_Carry
  37053.       ShowSubObject = BOX
  37054.       Animation     = UIWRKR_SKL.UIWRKR_PIK
  37055.       AnimationMode = ONCE
  37056.     End
  37057.  
  37058.     TransitionState = TRANS_Carry TRANS_Stand
  37059.       ShowSubObject = BOX
  37060.       Animation     = UIWRKR_SKL.UIWRKR_PIK
  37061.       AnimationMode = ONCE_BACKWARDS
  37062.       Flags         = START_FRAME_LAST
  37063.     End
  37064.     
  37065.     TransitionState = TRANS_Stand TRANS_Constructing
  37066.       Animation     = UIWRKR_SKL.UIWRKR_TRA1
  37067.       AnimationMode = ONCE
  37068.     End
  37069.  
  37070.     TransitionState = TRANS_Constructing TRANS_Stand
  37071.       Animation     = UIWRKR_SKL.UIWRKR_TRA2
  37072.       AnimationMode = ONCE
  37073.     End
  37074.   End
  37075.  
  37076.   ; ***DESIGN parameters ***
  37077.   DisplayName = OBJECT:Worker
  37078.   Side = GLA
  37079.   EditorSorting = INFANTRY
  37080.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  37081.  
  37082.  
  37083.   WeaponSet
  37084.     Conditions = None 
  37085.     Weapon = PRIMARY None
  37086.   End
  37087.   WeaponSet
  37088.     Conditions = MINE_CLEARING_DETAIL 
  37089.     Weapon = PRIMARY WorkerMineDisarmingWeapon
  37090.   End
  37091.  
  37092.  
  37093.   ArmorSet
  37094.     Conditions      = None
  37095.     Armor           = HumanArmor
  37096.     DamageFX        = InfantryDamageFX
  37097.   End
  37098.   VisionRange = 100
  37099.   ShroudClearingRange = 200
  37100.  ;Prerequisites
  37101.  ;  Object = GLABarracks GLASupplyStash ;commented out, or else you can't build from Con Yard as Dozer.
  37102.  ;End
  37103.   BuildCost = 200
  37104.   BuildTime = 5.0          ;in seconds    
  37105.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  37106.   CommandSet = GLAWorkerCommandSet
  37107.  
  37108.   ; *** AUDIO Parameters ***
  37109.   VoiceSelect = WorkerVoiceSelect
  37110.   VoiceMove = WorkerVoiceMove
  37111.   VoiceAttack = WorkerVoiceMove
  37112.   SoundDie = WorkerVoiceDie
  37113.   SoundDieFire = DieByFireGLA
  37114.   SoundDieToxin = DieByToxinChina
  37115.   VoiceGuard = WorkerVoiceMove
  37116.   VoiceFear = WorkerVoiceFear
  37117.   VoiceTaskComplete = WorkerVoiceBuildComplete
  37118.   UnitSpecificSounds
  37119.     VoiceEnter = WorkerVoiceMove
  37120.     VoiceEnterHostile = WorkerVoiceMove
  37121.     VoiceGarrison     = WorkerVoiceGarrison
  37122.     VoiceCreate       = WorkerVoiceCreate
  37123.     VoiceSupply       = WorkerVoiceSupply
  37124.     VoiceNoBuild      = WorkerVoiceBuildNot
  37125.     VoiceRepair       = WorkerVoiceRepair
  37126.     VoiceDisarm       = WorkerVoiceClearMine
  37127.     VoiceBuildResponse = WorkerVoiceBuild
  37128.     VoiceGetHealed      = WorkerVoiceMove
  37129.  
  37130.   End
  37131.  
  37132.   ; *** ENGINEERING Parameters ***
  37133.   RadarPriority = UNIT
  37134.   KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER DOZER HARVESTER SCORE
  37135.  
  37136.   Body = ActiveBody ModuleTag_02
  37137.     MaxHealth       = 100.0
  37138.     InitialHealth   = 100.0
  37139.   End
  37140.  
  37141.   Behavior = WorkerAIUpdate ModuleTag_03
  37142.     RepairHealthPercentPerSecond  = 2%    ; % of max health to repair each second
  37143.     BoredTime                     = 5000  ; in milliseconds
  37144.     BoredRange                    = 150   ; when bored, we look this far away to do something 
  37145.     MaxBoxes                      = 1
  37146.     SupplyCenterActionDelay       = 150 ;400 ; ms for whole thing (one transaction)
  37147.     SupplyWarehouseActionDelay    = 150 ;400 ;ms per box (many small transactions)
  37148.     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)
  37149.     SuppliesDepletedVoice = WorkerVoiceSuppliesDepleted
  37150.     ; the only "enemies" that workers can acquire are mines, to be disarmed...
  37151.     AutoAcquireEnemiesWhenIdle    = Yes
  37152.   End
  37153.   Locomotor = SET_NORMAL CINE_FastHumanLocomotor
  37154.   Behavior = PhysicsBehavior ModuleTag_04
  37155.     Mass = 5.0
  37156.   End
  37157.  
  37158.   Behavior = SquishCollide ModuleTag_06
  37159.     ;nothing
  37160.   End
  37161.  
  37162. ; --- begin Death modules ---
  37163.   Behavior = SlowDeathBehavior ModuleTag_Death01
  37164.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED
  37165.     SinkDelay           = 3000
  37166.     SinkRate            = 0.5     ; in Dist/Sec
  37167.     DestructionDelay    = 8000
  37168.     FX                  = INITIAL FX_GIDie
  37169.   End
  37170.   Behavior = SlowDeathBehavior ModuleTag_Death02
  37171.     DeathTypes          = NONE +CRUSHED +SPLATTED
  37172.     SinkDelay           = 3000
  37173.     SinkRate            = 0.5     ; in Dist/Sec
  37174.     DestructionDelay    = 8000
  37175.     FX                  = INITIAL FX_GIDieCrushed
  37176.   End
  37177.   Behavior = SlowDeathBehavior ModuleTag_Death03
  37178.     DeathTypes          = NONE +EXPLODED
  37179.     SinkDelay           = 3000
  37180.     SinkRate            = 0.5     ; in Dist/Sec
  37181.     DestructionDelay    = 8000
  37182.     FX                  = INITIAL FX_GIDie
  37183.     FlingForce          = 8
  37184.     FlingForceVariance  = 3
  37185.     FlingPitch          = 60
  37186.     FlingPitchVariance  = 10
  37187.   End
  37188.   Behavior = SlowDeathBehavior ModuleTag_Death04
  37189.     DeathTypes          = NONE +BURNED
  37190.     DestructionDelay    = 0
  37191.     FX                  = INITIAL FX_GIDie
  37192.     OCL                 = INITIAL OCL_FlamingInfantry
  37193.   End
  37194.   Behavior = SlowDeathBehavior ModuleTag_Death05
  37195.     DeathTypes          = NONE +POISONED
  37196.     DestructionDelay    = 0
  37197.     FX                  = INITIAL FX_GIDie
  37198.     OCL                 = INITIAL OCL_ToxicInfantry
  37199.   End
  37200. ; --- end Death modules ---
  37201.  
  37202.   Behavior = StealthDetectorUpdate ModuleTag_12
  37203.     DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
  37204.     ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
  37205.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  37206.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  37207.     ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
  37208.   End
  37209.  
  37210.   Behavior = PoisonedBehavior ModuleTag_13
  37211.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  37212.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  37213.   End
  37214.  
  37215.   Geometry = CYLINDER
  37216.   GeometryMajorRadius = 10.0
  37217.   GeometryMinorRadius = 10.0
  37218.   GeometryHeight = 12.0
  37219.   GeometryIsSmall = Yes
  37220.   Shadow = SHADOW_DECAL
  37221.   ShadowSizeX = 14;
  37222.   ShadowSizeY = 14;
  37223.   ShadowTexture = ShadowI;
  37224.   BuildCompletion = APPEARS_AT_RALLY_POINT
  37225.  
  37226. End
  37227. ;------------------------------------------------------------------------------
  37228. ;--- Being used to spawn a Cinematic Pilot for the USA02 intro.
  37229. Object CINE_AmericaVehicleComanche02
  37230.  
  37231.   ; *** ART Parameters ***
  37232.   SelectPortrait         = SACCommanche_L
  37233.   ButtonImage            = SACCommanche
  37234.   
  37235.   UpgradeCameo1 = Upgrade_ComancheRocketPods
  37236.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  37237.   ;UpgradeCameo3 = NONE
  37238.   ;UpgradeCameo4 = NONE
  37239.   ;UpgradeCameo5 = NONE
  37240.   
  37241.   Draw = W3DModelDraw ModuleTag_01
  37242.  
  37243.     DefaultConditionState
  37244.       Model                           = AVComanche
  37245.       HideSubObject                   = MissileUpgrade
  37246.       Animation                       = AVComanche.AVComanche
  37247.       AnimationMode                   = LOOP
  37248.       WeaponMuzzleFlash               = PRIMARY TurretFX
  37249.       WeaponFireFXBone                = PRIMARY Muzzle
  37250.       WeaponFireFXBone                = SECONDARY Muzzle
  37251.       WeaponLaunchBone  = SECONDARY Muzzle
  37252.     End
  37253.  
  37254.     ConditionState = REALLYDAMAGED
  37255.       Model                           = AVComanche_d
  37256.       Animation                       = AVComanche_d.AVComanche_d
  37257.       AnimationMode                   = LOOP
  37258.     End
  37259.  
  37260.     ConditionState = WEAPONSET_PLAYER_UPGRADE
  37261.       ShowSubObject                   = MissileUpgrade
  37262.       Animation                       = AVComanche.AVComanche
  37263.       AnimationMode                   = LOOP
  37264.       WeaponFireFXBone                = TERTIARY WeaponB
  37265.       WeaponLaunchBone  = TERTIARY WeaponB
  37266.     End
  37267.  
  37268.     ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED
  37269.       Model                           = AVComanche_d
  37270.       ShowSubObject                   = MissileUpgrade
  37271.       Animation                       = AVComanche_d.AVComanche_d
  37272.       AnimationMode                   = LOOP
  37273.       WeaponFireFXBone                = TERTIARY WeaponB
  37274.       WeaponLaunchBone  = TERTIARY WeaponB
  37275.     End
  37276.  
  37277.     ConditionState = RUBBLE
  37278.       Model                           = AVComanche_d
  37279.       Animation                       = AVComanche_d.AVComanche_d
  37280.       AnimationMode                   = LOOP
  37281.     End
  37282.  
  37283.     ConditionState = RUBBLE SPECIAL_DAMAGED
  37284.       Model                           = AVComanche_d
  37285.       HideSubObject                   = AVComanche_Prop
  37286.     End
  37287.  
  37288.     OkToChangeModelColor = Yes
  37289.   End
  37290.  
  37291.   ; ***DESIGN parameters ***
  37292.   DisplayName         = OBJECT:Comanche
  37293.   EditorSorting       = VEHICLE
  37294.   Side                = America
  37295.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  37296.   VisionRange         = 400.0 
  37297.   ShroudClearingRange = 600
  37298.   Prerequisites
  37299.     Object            = AmericaAirfield
  37300.   End
  37301.  
  37302.   WeaponSet
  37303.     Conditions          = None 
  37304.     ; -----
  37305.     Weapon              = PRIMARY     Comanche20mmCannonWeapon
  37306.     PreferredAgainst    = PRIMARY     INFANTRY
  37307.     AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  37308.     ; -----
  37309.     Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
  37310.     PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
  37311.     AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
  37312.     ; -----
  37313.     Weapon              = TERTIARY    NONE
  37314.   End
  37315.   WeaponSet
  37316.     Conditions          = PLAYER_UPGRADE 
  37317.     ; -----
  37318.     Weapon              = PRIMARY     Comanche20mmCannonWeapon
  37319.     PreferredAgainst    = PRIMARY     INFANTRY
  37320.     AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
  37321.     ; -----
  37322.     Weapon              = SECONDARY   ComancheAntiTankMissileWeapon
  37323.     PreferredAgainst    = SECONDARY   VEHICLE STRUCTURE
  37324.     AutoChooseSources   = SECONDARY   FROM_PLAYER FROM_SCRIPT FROM_AI
  37325.     ; -----
  37326.     Weapon              = TERTIARY    ComancheRocketPodWeapon
  37327.     AutoChooseSources   = TERTIARY    NONE
  37328.   End
  37329.   ArmorSet
  37330.     Conditions      = None
  37331.     Armor           = ComancheArmor
  37332.     DamageFX        = None
  37333.   End
  37334.   BuildCost           = 1500
  37335.   BuildTime           = 20              ; in seconds  
  37336.   ExperienceValue     = 50 50 100 200   ; Experience point value at each level
  37337.   ExperienceRequired  = 0 100 200 400   ; Experience points needed to gain each level
  37338.   IsTrainable         = Yes             ; Can gain experience
  37339.   CommandSet          = AmericaVehicleComancheCommandSet
  37340.  
  37341.   ; *** AUDIO Parameters ***
  37342.   VoiceSelect     = ComancheVoiceSelect
  37343.   VoiceMove       = ComancheVoiceMove
  37344.   VoiceGuard      = ComancheVoiceMove
  37345.   VoiceAttack     = ComancheVoiceAttack
  37346.   SoundAmbient    = ComancheAmbientLoop
  37347.   SoundAmbientRubble    = NoSound
  37348.   SoundDie        = ComancheVoiceFalling
  37349.   UnitSpecificSounds
  37350.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  37351.     VoiceCreate   = ComancheVoiceCreate
  37352.     SoundEject    = PilotSoundEject
  37353.     VoiceEject    = PilotVoiceEject
  37354.     Afterburner   = RaptorAfterburner
  37355.     VoiceGarrison = ComancheVoiceMove
  37356.     TurretMoveStart = NoSound
  37357.     TurretMoveLoop  = NoSound
  37358.   End
  37359.  
  37360.  
  37361.   ; *** ENGINEERING Parameters ***
  37362.   RadarPriority   = UNIT
  37363.   KindOf          = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD
  37364.  
  37365.   Behavior = WeaponSetUpgrade ModuleTag_02
  37366.     TriggeredBy = Upgrade_ComancheRocketPods
  37367.   End
  37368.   Behavior = ExperienceScalarUpgrade ModuleTag_03
  37369.     TriggeredBy = Upgrade_AmericaAdvancedTraining
  37370.     AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
  37371.   End
  37372.  
  37373.   Body = ActiveBody ModuleTag_04
  37374.     MaxHealth       = 220.0
  37375.     InitialHealth   = 220.0
  37376.   End
  37377.  
  37378.   Behavior = FXListDie ModuleTag_05
  37379.     DeathFX = FX_HelicopterStartDeath
  37380.   End
  37381.  
  37382.   Behavior = JetAIUpdate ModuleTag_06
  37383.     MinHeight                     = 5
  37384.     NeedsRunway                   = No
  37385.     KeepsParkingSpaceWhenAirborne = No
  37386.     AutoAcquireEnemiesWhenIdle    = Yes
  37387.     ; note that comanches do not return to base when idle
  37388.     
  37389.     ; this is a bit of a trick... normally, units cannot move-and-fire at
  37390.     ; the same time. we need the comanche to be able to. so we give it
  37391.     ; a "turret" (invisible) and put the two main weapons on it, but with
  37392.     ; no turn rate. voila!
  37393.     Turret
  37394.       TurretTurnRate = 0      ; this "turret" does not turn
  37395.       TurretPitchRate = 0     ; nor does it pitch
  37396.       ControlledWeaponSlots = PRIMARY SECONDARY
  37397.     End
  37398.  
  37399.   End
  37400.   Locomotor = SET_NORMAL  ComancheLocomotor
  37401.   Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor
  37402.  
  37403.   Behavior = PhysicsBehavior ModuleTag_07
  37404.     Mass = 50.0
  37405.   End
  37406.   Behavior = HelicopterSlowDeathBehavior ModuleTag_08
  37407.     DestructionDelay                = 99999999        ; the destruction delay
  37408.     SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
  37409.     SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
  37410.     SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
  37411.     MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
  37412.     SoundDeathLoop                  = ComancheDamagedLoop
  37413.     MinSelfSpin                     = 100                     ; in degrees per second
  37414.     MaxSelfSpin                     = 300                     ; in degrees per second
  37415.     SelfSpinUpdateDelay             = 100             ; in milliseconds
  37416.     SelfSpinUpdateAmount            = 10             ; in degrees   
  37417.     FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
  37418.     MinBladeFlyOffDelay             = 1500            ; in milliseconds
  37419.     MaxBladeFlyOffDelay             = 1500            ; in milliseconds
  37420.     AttachParticle                  = SootySmokeTrail
  37421.     AttachParticleBone              = Propeller02
  37422.     BladeObjectName                 = ComancheBlades
  37423.     BladeBoneName                   = Propeller01    
  37424.     ; Most things that eject pilots do so immediately upon death,
  37425.     ; via use of EjectPilotDie, but Helicopters are a special case...
  37426.     ; they need to do so after their blades are ejected. 
  37427.     OCLEjectPilot                   = OCL_CINE_EjectPilotViaParachute
  37428.     FXBlade                         = FX_HelicopterBladeExplosion
  37429.     OCLBlade                        = OCL_HelicopterBladeExplosion
  37430.     FXHitGround                     = FX_HelicopterHitGround
  37431.     OCLHitGround                    = OCL_HelicopterHitGround
  37432.     FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
  37433.     OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
  37434.     DelayFromGroundToFinalDeath     = 1500
  37435.     FinalRubbleObject               = ComancheRubbleHull
  37436.   End
  37437.  
  37438.   Behavior = TransitionDamageFX ModuleTag_09
  37439.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown
  37440.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition
  37441.   End
  37442.  
  37443.   Behavior = FlammableUpdate ModuleTag_21
  37444.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  37445.     AflameDamageAmount = 3       ; taking this much damage...
  37446.     AflameDamageDelay = 500       ; this often.
  37447.   End
  37448.  
  37449.   Geometry = BOX
  37450.   GeometryMajorRadius = 20.0
  37451.   GeometryMinorRadius = 3.0
  37452.   GeometryHeight = 25.0     
  37453.   GeometryIsSmall = No
  37454.   Shadow = SHADOW_VOLUME    
  37455.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  37456.  
  37457. End
  37458.  
  37459. ;------------------------------------------------------------------------------
  37460. ;------------------------------------------------------------------------------
  37461. ; This pilot is being used for USA02, he surrenders as soon as he hits the ground.
  37462. Object CINE_AmericaInfantryPilot
  37463.  
  37464.   ; *** ART Parameters ***
  37465.   SelectPortrait         = SAPilot_L
  37466.   ButtonImage            = SAPilot
  37467.   
  37468.   ;UpgradeCameo1 = NONE
  37469.   ;UpgradeCameo2 = NONE
  37470.   ;UpgradeCameo3 = NONE
  37471.   ;UpgradeCameo4 = NONE
  37472.   ;UpgradeCameo5 = NONE
  37473.   
  37474.   Draw = W3DModelDraw ModuleTag_01
  37475.     OkToChangeModelColor = Yes
  37476.  
  37477.     DefaultConditionState
  37478.       Model = AIRPlt_SKN
  37479.       IdleAnimation = AIRPlt_SKL.AIRPlt_SST 0 20 
  37480.       AnimationMode = ONCE
  37481.       TransitionKey = TRANS_Stand
  37482.     End
  37483.     ;AliasConditionState = REALLYDAMAGED
  37484.  
  37485.     ConditionState = FREEFALL
  37486.       Animation = AIRPlt_SKL.AIRPLT_PFL
  37487.       AnimationMode = ONCE
  37488.       TransitionKey = TRANS_Falling
  37489.     End
  37490.     ;AliasConditionState = FREEFALL REALLYDAMAGED
  37491.     AliasConditionState = FREEFALL DYING
  37492.  
  37493.     ConditionState = PARACHUTING
  37494.       Animation = AIRPlt_SKL.AIRPlt_PHG
  37495.       AnimationMode = LOOP
  37496.       TransitionKey = TRANS_Chute
  37497.       WaitForStateToFinishIfPossible = TRANS_Falling
  37498.     End
  37499.     AliasConditionState = PARACHUTING REALLYDAMAGED
  37500.     AliasConditionState = PARACHUTING DYING
  37501.  
  37502.     ConditionState = MOVING
  37503.       Animation = AIRPlt_SKL.AIRPlt_RNA 
  37504.       AnimationMode = LOOP
  37505.       TransitionKey = TRANS_Move
  37506.       ParticleSysBone     = None InfantryDustTrails
  37507.     End
  37508.     ;AliasConditionState = MOVING REALLYDAMAGED
  37509.  
  37510.     ConditionState = DYING
  37511.       Animation = AIRPlt_SKL.AIRPlt_DTA 
  37512.       Animation = AIRPlt_SKL.AIRPlt_DTB 
  37513.       AnimationMode = ONCE
  37514.       TransitionKey = TRANS_Dying
  37515.     End
  37516.     
  37517.     TransitionState = TRANS_Move TRANS_Stand
  37518.       Animation = AIRPlt_SKL.AIRPlt_SUR
  37519.       AnimationMode = ONCE
  37520.     End
  37521.     
  37522.     TransitionState = TRANS_Dying TRANS_Flailing
  37523.       Animation = AIRPlt_SKL.AIRPlt_ADTE1
  37524.       AnimationMode = ONCE
  37525.     End
  37526.  
  37527.     ConditionState = DYING EXPLODED_FLAILING
  37528.       Animation = AIRPlt_SKL.AIRPlt_ADTE2
  37529.       AnimationMode = LOOP
  37530.       TransitionKey = TRANS_Flailing
  37531.     End
  37532.  
  37533.     ConditionState = DYING EXPLODED_BOUNCING
  37534.       Animation = AIRPlt_SKL.AIRPlt_ADTE3
  37535.       AnimationMode = ONCE
  37536.       TransitionKey = None
  37537.     End
  37538.  
  37539.     ConditionState = SPECIAL_CHEERING
  37540.       Animation = AIRPLT_SKL.AIRPLT_CHA
  37541.       AnimationMode = LOOP
  37542.     End
  37543.  
  37544.     ;@TODO -- MISSING ANIMATION FILE
  37545.     ;TransitionState = TRANS_Falling TRANS_Chute
  37546.     ;  Animation = AIRPLT_SKL.AIRPLT_POP
  37547.     ;  AnimationMode = ONCE
  37548.     ;  Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
  37549.     ;End
  37550.     
  37551.     TransitionState = TRANS_Chute TRANS_Stand
  37552.       Animation = AIRPlt_SKL.AIRPlt_SUR
  37553.       AnimationMode = ONCE
  37554.     End
  37555.  
  37556.   End
  37557.  
  37558.   ; ***DESIGN parameters ***
  37559.   DisplayName = OBJECT:Pilot
  37560.   Side = America
  37561.   EditorSorting = INFANTRY
  37562.   TransportSlotCount = 1               ;how many "slots" we take in a transport (0 == not transportable)
  37563.   ExperienceValue    = 10 10 10 10 ;Experience point value at each level
  37564.   ExperienceRequired =  0 1 2 3 ;Experience points needed to gain each level
  37565.   IsTrainable     = Yes  ;Can gain experience
  37566.   CommandSet = AmericaInfantryPilotCommandSet
  37567.  
  37568.   ArmorSet
  37569.     Conditions      = None
  37570.     Armor           = HumanArmor
  37571.     DamageFX        = InfantryDamageFX
  37572.   End
  37573.  
  37574.   VisionRange = 150
  37575.   ShroudClearingRange = 300
  37576.   CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  37577.  
  37578.   ; *** AUDIO Parameters ***
  37579.   VoiceSelect = PilotVoiceSelect
  37580.   VoiceMove = PilotVoiceMove
  37581.   VoiceAttack = PilotVoiceMove
  37582.   SoundDie = PilotVoiceDie
  37583.   SoundDieFire = DieByFireUSA
  37584.   SoundDieToxin = DieByToxinUSA
  37585.   VoiceGarrison = PilotVoiceGarrison
  37586.   VoiceFear = PilotVoiceFear
  37587.   UnitSpecificSounds
  37588.     VoiceEnter = PilotVoiceEnter
  37589.     VoiceEnterHostile     = PilotVoiceEnter
  37590.     VoiceGetHealed      = PilotVoiceMove
  37591.   End
  37592.  
  37593.   ; *** ENGINEERING Parameters ***
  37594.   RadarPriority = UNIT
  37595.   KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY NO_GARRISON SCORE
  37596.  
  37597.   Behavior = VeterancyGainCreate ModuleTag_02
  37598.     ; omit the "ScienceRequired" so that this upgrade always occurs.
  37599.     ; Pilots should never (repeat, never) be less than VETERAN status.
  37600.     StartingLevel = VETERAN
  37601.   End
  37602.  
  37603.   Behavior = VeterancyCrateCollide       ModuleTag_03
  37604.     RequiredKindOf = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
  37605.     ForbiddenKindOf = DOZER       ; but not to TRANSPORTs or DOZERs!
  37606.     EffectRange = 0               ; 0=="affect only the thing you collide with"
  37607.     AddsOwnerVeterancy = Yes      ; we add our own veterancy to the target (rather than just +1 level)
  37608.     IsPilot = Yes                 ; set the pilot flag because it's different than the veterancy crate and has extra checking
  37609.   End
  37610.  
  37611.   Body = ActiveBody ModuleTag_04
  37612.     MaxHealth       = 100.0
  37613.     InitialHealth   = 100.0
  37614.   End
  37615.  
  37616.   Behavior = AIUpdateInterface ModuleTag_05
  37617.     AutoAcquireEnemiesWhenIdle = Yes
  37618.   End
  37619.  
  37620.   Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
  37621.     ScanRate = 1000 ; once a second.
  37622.     ScanRange = 300 ;
  37623.     NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
  37624.     AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
  37625.   End
  37626.  
  37627.   Behavior = PilotFindVehicleUpdate   ModuleTag_07 ; This update will have the unit go to a vehicle. jba 
  37628.     ScanRate = 1000 ; once a second.
  37629.     ScanRange = 300 ;
  37630.     MinHealth = 0.5 ;  don't enter a vehicl less than 50% healthy.
  37631.   End
  37632.  
  37633.   Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
  37634.   Locomotor = SET_NORMAL_UPGRADED BasicHumanLocomotorPlus25
  37635.  
  37636.   Behavior = PhysicsBehavior ModuleTag_08
  37637.     Mass = 5.0
  37638.   End
  37639.  
  37640.   Behavior = LocomotorSetUpgrade ModuleTag_10
  37641.     TriggeredBy = Upgrade_Veterancy_HEROIC
  37642.   End
  37643.  
  37644.   Behavior = SquishCollide ModuleTag_11
  37645.     ;nothing
  37646.   End
  37647.  
  37648.  
  37649. ; --- begin Death modules ---
  37650.   Behavior = SlowDeathBehavior ModuleTag_Death01
  37651.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  37652.     SinkDelay           = 3000
  37653.     SinkRate            = 0.5     ; in Dist/Sec
  37654.     DestructionDelay    = 8000
  37655.     FX                  = INITIAL FX_GIDie
  37656.   End
  37657.   Behavior = SlowDeathBehavior ModuleTag_Death02
  37658.     DeathTypes          = NONE +CRUSHED +SPLATTED
  37659.     SinkDelay           = 3000
  37660.     SinkRate            = 0.5     ; in Dist/Sec
  37661.     DestructionDelay    = 8000
  37662.     FX                  = INITIAL FX_GIDieCrushed
  37663.   End
  37664.   Behavior = SlowDeathBehavior ModuleTag_Death03
  37665.     DeathTypes          = NONE +EXPLODED
  37666.     SinkDelay           = 3000
  37667.     SinkRate            = 0.5     ; in Dist/Sec
  37668.     DestructionDelay    = 8000
  37669.     FX                  = INITIAL FX_GIDie
  37670.     FlingForce          = 8
  37671.     FlingForceVariance  = 3
  37672.     FlingPitch          = 60
  37673.     FlingPitchVariance  = 10
  37674.   End
  37675.   Behavior = SlowDeathBehavior ModuleTag_Death04
  37676.     DeathTypes          = NONE +BURNED
  37677.     DestructionDelay    = 0
  37678.     FX                  = INITIAL FX_GIDie
  37679.     OCL                 = INITIAL OCL_FlamingInfantry
  37680.   End
  37681.   Behavior = SlowDeathBehavior ModuleTag_Death05
  37682.     DeathTypes          = NONE +POISONED
  37683.     DestructionDelay    = 0
  37684.     FX                  = INITIAL FX_GIDie
  37685.     OCL                 = INITIAL OCL_ToxicInfantry
  37686.   End
  37687.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  37688.     DeathTypes          = NONE +POISONED_BETA
  37689.     DestructionDelay    = 0
  37690.     FX                  = INITIAL FX_GIDie
  37691.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  37692.   End
  37693. ; --- end Death modules ---
  37694.  
  37695.   Behavior = PoisonedBehavior ModuleTag_14
  37696.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  37697.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  37698.   End
  37699.  
  37700.   Geometry = CYLINDER
  37701.   GeometryMajorRadius = 10.0
  37702.   GeometryMinorRadius = 10.0
  37703.   GeometryHeight = 12.0
  37704.   GeometryIsSmall = Yes
  37705.   Shadow = SHADOW_DECAL
  37706.   ShadowSizeX = 14;
  37707.   ShadowSizeY = 14;
  37708.   ShadowTexture = ShadowI;
  37709.   BuildCompletion = APPEARS_AT_RALLY_POINT
  37710.  
  37711. End
  37712.  
  37713. ;------------------------------------------------------------------------------
  37714.  
  37715.  
  37716. ; Thunder Storm
  37717.  
  37718.  
  37719. ;------------------------------------------------------------------------------
  37720. Object EMPShell
  37721.  
  37722.   ; *** ART Parameters ***
  37723.   Draw = W3DModelDraw ModuleTag_01
  37724.     ConditionState = NONE
  37725.       Model = AVTankShel
  37726.     End
  37727.   End
  37728.  
  37729.   ; ***DESIGN parameters ***
  37730.   DisplayName       = OBJECT:TankShell
  37731.   EditorSorting     = SYSTEM
  37732.   ArmorSet
  37733.     Armor = ProjectileArmor
  37734.   End
  37735.   VisionRange = 0.0
  37736.  
  37737.   ; *** ENGINEERING Parameters ***
  37738.   KindOf = PROJECTILE
  37739.   Body = ActiveBody ModuleTag_02
  37740.     MaxHealth       = 1.0
  37741.     InitialHealth   = 1.0
  37742.   End
  37743.  
  37744.   Behavior = DestroyDie ModuleTag_03
  37745.     ;nothing
  37746.   End
  37747.  
  37748.   Behavior = DumbProjectileBehavior ModuleTag_06
  37749.     DetonateCallsKill = Yes
  37750.     ; To tweak a Bezier path, please see GS
  37751.     FirstHeight = 10  ; Height of Bezier control points above highest intervening terrain
  37752.     SecondHeight = 10
  37753.     FirstPercentIndent = 50% ; Percentage of shot distance control points are placed
  37754.     SecondPercentIndent = 90%
  37755.     FlightPathAdjustDistPerSecond   = 100 ; Can allow a max speed this can attempt to follow a target. Units are their velocity we can tag.
  37756.   End
  37757.  
  37758.  Behavior = PhysicsBehavior ModuleTag_07
  37759.     Mass = 0.01 ; can't be zero, but we want it tiny so that it travels nearly straight
  37760.   End
  37761.  
  37762.   Geometry = Sphere
  37763.   GeometryIsSmall = Yes
  37764.   GeometryMajorRadius = 0.5
  37765.  
  37766. End
  37767.  
  37768. ;------------------------------------------------------------------------------
  37769. Object ChinaTankEMP
  37770.  
  37771.   ; *** ART Parameters ***
  37772.   SelectPortrait         = NvEMP
  37773.   ButtonImage            = NvEMP
  37774.   
  37775.   UpgradeCameo1 = Upgrade_ChinaEMPStealth
  37776.   ;UpgradeCameo2 = Upgrade_ChinaUraniumShells
  37777.   ;UpgradeCameo3 = Upgrade_ChinaNuclearTanks
  37778.   ;UpgradeCameo4 = NONE
  37779.   ;UpgradeCameo5 = NONE
  37780.  
  37781.  
  37782.   Draw = W3DTankDraw ModuleTag_01
  37783.     OkToChangeModelColor = Yes
  37784.     DefaultConditionState
  37785.       Model               = NvEMPTank
  37786. ;      WeaponFireFXBone    = PRIMARY WEAPONA01
  37787. ;      WeaponRecoilBone    = PRIMARY BARREL
  37788. ;      WeaponMuzzleFlash   = PRIMARY WEAPONA01
  37789.       WeaponLaunchBone = PRIMARY EMP01
  37790.       ParticleSysBone = EMP01 EMPSparks
  37791.       ParticleSysBone = EMP01 EMPSparks
  37792.       ParticleSysBone = EMP01 EMPSparks
  37793.     End
  37794.     ConditionState = REALLYDAMAGED
  37795.       Model               = NvEMPTank_D
  37796.       WeaponLaunchBone = PRIMARY EMP01
  37797.       ParticleSysBone = EMP01 EMPSparks
  37798.       ParticleSysBone = EMP01 EMPSparks
  37799.       ParticleSysBone = EMP01 EMPSparks
  37800.     End
  37801.     ConditionState = RUBBLE
  37802.       Model               = NvEMPTank_D
  37803.       WeaponLaunchBone = PRIMARY EMP01
  37804.       ParticleSysBone = EMP01 EMPSparks
  37805.       ParticleSysBone = EMP01 EMPSparks
  37806.       ParticleSysBone = EMP01 EMPSparks
  37807.     End
  37808.  
  37809.     TrackMarks              = EXTnkTrack.tga
  37810.   End
  37811.  
  37812.   ; ***DESIGN parameters ***
  37813.   DisplayName      = OBJECT:EMP
  37814.   Side = China
  37815.   EditorSorting   = VEHICLE
  37816.   TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  37817.   WeaponSet
  37818.     Conditions = None 
  37819.     Weapon     = PRIMARY MobileEMP
  37820.     AutoChooseSources   = PRIMARY    NONE
  37821.   End
  37822.   ArmorSet
  37823.     Conditions      = None
  37824.     Armor           = TankArmor
  37825.     DamageFX        = TankDamageFX
  37826.   End
  37827.   BuildCost       = 1500
  37828.   BuildTime       = 13.0          ;in seconds    
  37829.   VisionRange     = 150
  37830.   ShroudClearingRange = 300
  37831.   Prerequisites
  37832.     Object = ChinaPropagandaCenter
  37833.   End
  37834.  
  37835.   MaxSimultaneousOfType = 1
  37836.  
  37837.   ExperienceValue = 100 100 200 400    ;Experience point value at each level
  37838.   ExperienceRequired = 0 200 300 600 ;Experience points needed to gain each level
  37839.   IsTrainable = Yes             ;Can gain experience
  37840.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  37841.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  37842.   CommandSet       = ChinaVehicleEMPCommandSet
  37843.  
  37844.   ; *** AUDIO Parameters ***
  37845.   VoiceSelect = BattleMasterTankVoiceSelect
  37846.   VoiceMove = BattleMasterTankVoiceMove
  37847.   VoiceGuard = BattleMasterTankVoiceMove
  37848.   VoiceAttack = BattleMasterTankVoiceAttack
  37849.   SoundMoveStart = BattleMasterTankMoveStart
  37850.   SoundMoveStartDamaged = BattleMasterTankMoveStart
  37851.   SoundStealthOn = StealthOn
  37852.   SoundStealthOff = StealthOff
  37853.  
  37854.   UnitSpecificSounds
  37855.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  37856.     VoiceCreate          = BattleMasterTankVoiceCreate
  37857.     TurretMoveStart = NoSound
  37858.     TurretMoveLoop = TurretMoveLoop
  37859.     VoiceCrush = BattleMasterTankVoiceCrush
  37860.     VoiceEnter = BattleMasterTankVoiceMove
  37861.   End
  37862.  
  37863.   ; *** ENGINEERING Parameters ***
  37864.   RadarPriority = UNIT
  37865.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  37866.  
  37867.   Body = ActiveBody ModuleTag_02
  37868.     MaxHealth       = 1000.0
  37869.     InitialHealth   = 1000.0
  37870.   End
  37871.  
  37872.   Behavior = AIUpdateInterface ModuleTag_03
  37873.     AutoAcquireEnemiesWhenIdle = Yes
  37874.   End
  37875.  
  37876.   Locomotor = SET_NORMAL EMPLocomotor
  37877.  
  37878.   Behavior = PhysicsBehavior ModuleTag_05
  37879.     Mass = 60.0
  37880.   End
  37881.  
  37882.   ; A crushing defeat
  37883.   Behavior = DestroyDie ModuleTag_08
  37884.     DeathTypes = NONE +CRUSHED +SPLATTED
  37885.   End
  37886.   Behavior = FXListDie ModuleTag_09
  37887.     DeathTypes = NONE +CRUSHED +SPLATTED
  37888.     DeathFX = FX_CarCrush
  37889.   End
  37890.   Behavior = CreateObjectDie ModuleTag_10
  37891.     DeathTypes = NONE +CRUSHED +SPLATTED
  37892.     CreationList = OCL_EMPDebris
  37893.   End
  37894.   Behavior = CreateCrateDie ModuleTag_11
  37895.     CrateData = SalvageCrateData
  37896.     ;CrateData = EliteTankCrateData
  37897.     ;CrateData = HeroicTankCrateData
  37898.   End
  37899.  
  37900.  
  37901.   Behavior = SlowDeathBehavior ModuleTag_12
  37902.     DeathTypes = ALL -CRUSHED -SPLATTED
  37903.     ProbabilityModifier = 25
  37904.     DestructionDelay = 200
  37905.     DestructionDelayVariance = 100
  37906.     OCL = FINAL    OCL_EMPDebris
  37907.     FX  = FINAL    FX_BattleMasterExplosionOneFinal
  37908.   End
  37909.  
  37910.   Behavior = TransitionDamageFX ModuleTag_13
  37911.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  37912.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  37913.   End
  37914.  
  37915.   Behavior = FlammableUpdate ModuleTag_21
  37916.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  37917.     AflameDamageAmount = 3       ; taking this much damage...
  37918.     AflameDamageDelay = 500       ; this often.
  37919.   End
  37920.  
  37921.   Behavior = StealthUpdate ModuleTag_98
  37922.     StealthDelay                = 2500 ; msec
  37923.     StealthForbiddenConditions  = ATTACKING
  37924.     MoveThresholdSpeed          = 3
  37925.     InnateStealth               = No ;Requires upgrade first
  37926.     OrderIdleEnemiesToAttackMeUponReveal  = Yes
  37927.   End
  37928.  
  37929.   Behavior = StealthUpgrade ModuleTag_99
  37930.     TriggeredBy = Upgrade_ChinaEMPStealth
  37931.   End
  37932.  
  37933.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_97
  37934.     DeathWeapon   = EMPShock
  37935.     StartsActive  = Yes
  37936.   End
  37937.  
  37938.   Geometry = BOX
  37939.   GeometryMajorRadius = 13.0
  37940.   GeometryMinorRadius = 9.0
  37941.   GeometryHeight = 10     
  37942.   GeometryIsSmall = Yes
  37943.   Shadow = SHADOW_VOLUME    
  37944.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  37945.  
  37946. End
  37947.  
  37948. ;---------------------------------------------------------------------------
  37949. Object DeadEMPHulk
  37950.  
  37951.   ; *** ART Parameters ***
  37952.   Draw = W3DModelDraw ModuleTag_01
  37953.     ConditionState = NONE
  37954.       Model = NvEMPTank_D1
  37955.       ParticleSysBone = EMP01 EMPSparks
  37956.       ParticleSysBone = EMP01 EMPSparks
  37957.       ParticleSysBone = EMP01 EMPSparks
  37958.     End
  37959.   End
  37960.  
  37961.   ; ***DESIGN parameters ***
  37962.   EditorSorting   = DEBRIS
  37963.  
  37964.   ; *** ENGINEERING Parameters ***
  37965.   KindOf =  NO_COLLIDE HULK
  37966.  
  37967.   Behavior = PhysicsBehavior ModuleTag_03
  37968.     Mass = 100.0
  37969.     AllowBouncing = Yes
  37970.     KillWhenRestingOnGround = Yes
  37971.   End
  37972.   Behavior = LifetimeUpdate ModuleTag_04
  37973.     MinLifetime = 1500   ; min lifetime in msec
  37974.     MaxLifetime = 1600   ; max lifetime in msec
  37975.   End
  37976.  
  37977.   Behavior = SlowDeathBehavior ModuleTag_05
  37978.     SinkDelay         = 1500
  37979.     SinkRate          = 2     ; in Dist/Sec
  37980.     DestructionDelay  = 8000
  37981.   End
  37982. End
  37983.  
  37984. ;------------------------------------------------------------------------------
  37985. ;This is the MIG as it's crashing
  37986. ;------------------------------------------------------------------------------
  37987. Object ChinaJetFlankerHulk
  37988.   ; *** ART Parameters ***
  37989.   Draw                = W3DModelDraw ModuleTag_01
  37990.     DefaultConditionState
  37991.       Model           = NVFlanker_D2
  37992.     End
  37993.   End
  37994.  
  37995.   ; ***DESIGN parameters ***
  37996.   EditorSorting       = DEBRIS
  37997.  
  37998.   ; *** ENGINEERING Parameters ***
  37999.   KindOf              =  NO_COLLIDE HULK
  38000.  
  38001.   Behavior                  = PhysicsBehavior ModuleTag_03
  38002.     Mass                    = 2.0
  38003.     AllowBouncing           = No
  38004.     KillWhenRestingOnGround = Yes
  38005.   End
  38006.  
  38007.   Behavior = LifetimeUpdate ModuleTag_04
  38008.     MinLifetime = 1500   ; min lifetime in msec
  38009.     MaxLifetime = 1600   ; max lifetime in msec
  38010.   End
  38011.  
  38012.   Behavior = SlowDeathBehavior ModuleTag_05
  38013.     SinkDelay        = 1500
  38014.     SinkRate            = 2     ; in Dist/Sec
  38015.     DestructionDelay = 8000
  38016.   End
  38017.  
  38018. End
  38019.  
  38020. ;------------------------------------------------------------------------------
  38021. Object ChinaJetSu30Flanker
  38022.  
  38023.   ; *** ART Parameters ***
  38024.   SelectPortrait         = su30icon
  38025.   ButtonImage            = su30icon
  38026.   
  38027.   UpgradeCameo1 = Upgrade_ChinaAircraftArmor
  38028.   UpgradeCameo2 = Upgrade_ChinaFlankerWeapon
  38029.   ;UpgradeCameo3 = NONE
  38030.   ;UpgradeCameo4 = NONE
  38031.   ;UpgradeCameo5 = NONE
  38032.   
  38033.   Draw = W3DModelDraw ModuleTag_01
  38034.  
  38035.     OkToChangeModelColor = Yes
  38036.  
  38037.     DefaultConditionState
  38038.       Model               = NvFlanker
  38039.       HideSubObject       = BurnerFX01 BurnerFX02
  38040.       WeaponLaunchBone    = PRIMARY WeaponA
  38041.     End
  38042.  
  38043.     ConditionState        = JETEXHAUST
  38044.       ParticleSysBone     = Wingtip01 JetContrail
  38045.       ParticleSysBone     = Wingtip02 JetContrail
  38046.     End
  38047.  
  38048.     ConditionState       = JETEXHAUST JETAFTERBURNER
  38049.       ShowSubObject      = BurnerFX01 BurnerFX02
  38050.       ParticleSysBone     = Exhaust01 JetExhaust
  38051.       ParticleSysBone     = Exhaust02 JetExhaust
  38052.       ParticleSysBone     = Wingtip01 JetContrail
  38053.       ParticleSysBone     = Wingtip02 JetContrail
  38054.     End
  38055.  
  38056.     ConditionState        = REALLYDAMAGED
  38057.       Model               = NvFlanker_D
  38058.       ParticleSysBone     = Wingtip01 JetContrail
  38059.       ParticleSysBone     = Wingtip02 JetContrail
  38060.     End
  38061.  
  38062.     ConditionState        = RUBBLE
  38063.       Model               = NvFlanker_D
  38064.     End
  38065.  
  38066.     ConditionState        = REALLYDAMAGED JETEXHAUST
  38067.       Model               = NvFlanker_D
  38068.       ParticleSysBone     = Wingtip01 JetContrail
  38069.       ParticleSysBone     = Wingtip02 JetContrail
  38070.     End
  38071.  
  38072.     ConditionState        = REALLYDAMAGED JETEXHAUST JETAFTERBURNER
  38073.       Model               = NvFlanker_D
  38074.       ShowSubObject       = BurnerFX01 BurnerFX02
  38075.       ParticleSysBone     = Engine01 JetExhaust
  38076.       ParticleSysBone     = Engine02 JetExhaust
  38077.       ParticleSysBone     = Wingtip01 JetContrail
  38078.       ParticleSysBone     = Wingtip02 JetContrail
  38079.     End
  38080.  
  38081.     ConditionState        = RUBBLE JETEXHAUST JETAFTERBURNER
  38082.       Model               = NvFlanker_D
  38083.       ;HideSubObject is needed cause there're inherited from default condition state      
  38084.       HideSubObject       = None 
  38085.       ShowSubObject       = None
  38086.       ParticleSysBone     = Engine01 JetExhaust
  38087.       ParticleSysBone     = Engine02 JetExhaust
  38088.       ParticleSysBone     = Wingtip01 JetContrail
  38089.       ParticleSysBone     = Wingtip02 JetContrail
  38090.     End
  38091.  
  38092.   End
  38093.  
  38094.   ; ***DESIGN parameters ***
  38095.   DisplayName             = OBJECT:SU30FLANKER
  38096.   EditorSorting           = VEHICLE
  38097.   Side                    = China
  38098.   TransportSlotCount      = 0          ;how many "slots" we take in a transport (0 == not transportable)
  38099.   VisionRange             = 200.0 
  38100.   ShroudClearingRange     = 300.0
  38101.  
  38102.   Prerequisites
  38103.     Object                = ChinaAirfield
  38104.     Object                = ChinaPropagandaCenter
  38105.   End
  38106.  
  38107.   WeaponSet
  38108.     Conditions        = None 
  38109.     Weapon            = PRIMARY     SuMissileWeapon
  38110.     AutoChooseSources   = PRIMARY    NONE
  38111.   End
  38112.   WeaponSet
  38113.     Conditions            = PLAYER_UPGRADE 
  38114.     Weapon                = PRIMARY SuMissileWeaponUpgraded
  38115.     AutoChooseSources   = PRIMARY    NONE
  38116.   End
  38117.  
  38118.   ArmorSet
  38119.     Conditions           = None
  38120.     Armor                = AirplaneArmor
  38121.     DamageFX             = None
  38122.   End
  38123.  
  38124.   BuildCost               = 2000
  38125.   BuildTime               = 20   
  38126.   ExperienceValue         = 50 50 100 150   ;Experience point value at each level
  38127.   ExperienceRequired      = 0 100 200 400  ;Experience points needed to gain each level
  38128.   IsTrainable = Yes             ;Can gain experience
  38129.   CrusherLevel           = 1  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  38130.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  38131.   CommandSet             = ChinaJetFlankerCommandSet
  38132.  
  38133.   ; *** AUDIO Parameters ***
  38134.   VoiceSelect             = MigVoiceSelect
  38135.   VoiceMove               = MigVoiceMove
  38136.   VoiceAttack             = MigVoiceAttack
  38137.   VoiceAttackAir          = MigVoiceAttackAir
  38138.   VoiceGuard              = MigVoiceAirPatrol
  38139.   SoundAmbient            = MigAmbientLoop
  38140.   SoundDie                = MigVoiceFalling
  38141.   UnitSpecificSounds
  38142.     VoiceCreate           = MigVoiceCreate
  38143.     Afterburner           = RaptorAfterburner
  38144.     VoiceGarrison         = MigVoiceMove
  38145.   End
  38146.  
  38147.   ; *** ENGINEERING Parameters ***
  38148.   RadarPriority          = UNIT
  38149.   KindOf                 = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT
  38150.   Body                   = ActiveBody ModuleTag_02
  38151.     MaxHealth            = 170.0
  38152.     InitialHealth        = 170.0
  38153.   End
  38154.  
  38155.   Behavior = WeaponSetUpgrade ModuleTag_99
  38156.     TriggeredBy = Upgrade_ChinaFlankerWeapon
  38157.   End
  38158.  
  38159.   Behavior                          = JetSlowDeathBehavior ModuleTag_03
  38160.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  38161.     OCLOnGroundDeath                = OCL_FlankerDeathFinalBlowUp
  38162.     DestructionDelay                = 99999999  ; destruction will happen when we
  38163.     RollRate                        = 0.2
  38164.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  38165.     PitchRate                       = 0.0
  38166.     FallHowFast                     = 100.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  38167.     FXInitialDeath                  = FX_JetDeathInitial
  38168.     OCLInitialDeath                 = OCL_MIGDeathInitial
  38169.     DelaySecondaryFromInitialDeath  = 500       ; in milliseconds
  38170.     FXSecondary                     = FX_JetDeathSecondary
  38171.     OCLSecondary                    = OCL_MIGDeathSecondary
  38172.     FXHitGround                     = FX_JetDeathHitGround
  38173.     OCLHitGround                    = OCL_MIGDeathHitGround
  38174.     DelayFinalBlowUpFromHitGround   = 200       ; in milliseconds
  38175.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  38176.     OCLFinalBlowUp                  = OCL_FlankerDeathFinalBlowUp
  38177.   End
  38178.  
  38179.   Behavior = PhysicsBehavior ModuleTag_05
  38180.     Mass = 500.0
  38181.   End
  38182.  
  38183.   Behavior = JetAIUpdate ModuleTag_06
  38184.     OutOfAmmoDamagePerSecond  = 10%     ; amount of damage to take per SEC (not per frame) when out of ammo
  38185.                                         ; note that it's expressed as a percent of max health, not an absolute
  38186.     TakeoffSpeedForMaxLift    = 100%    ; smaller numbers give more lift sooner when taking off
  38187.     TakeoffPause              = 500
  38188.     MinHeight                 = 5
  38189.     ReturnToBaseIdleTime      = 10000         ; if idle for this long, return to base, even if not out of ammo
  38190.   End
  38191.  
  38192.   Locomotor = SET_NORMAL FlankerLocomotor
  38193.   Locomotor = SET_TAXIING BasicJetTaxiLocomotor
  38194.  
  38195.   Behavior = FlammableUpdate ModuleTag_08
  38196.     AflameDuration = 5000        ; If I catch fire, I'll burn for this long...
  38197.     AflameDamageAmount = 3       ; taking this much damage...
  38198.     AflameDamageDelay = 500      ; this often.
  38199.   End
  38200.  
  38201.   Behavior                       = TransitionDamageFX ModuleTag_09
  38202.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01
  38203.     ReallyDamagedFXList1         = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition
  38204.   End
  38205.  
  38206.   Behavior        = MaxHealthUpgrade ModuleTag_10
  38207.     TriggeredBy   = Upgrade_ChinaAircraftArmor
  38208.     AddMaxHealth  = 40.0
  38209.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  38210.   End
  38211.  
  38212.  
  38213.  
  38214.   Geometry                 = Box
  38215.   GeometryIsSmall          = Yes
  38216.   GeometryMajorRadius      = 14.0
  38217.   GeometryMinorRadius      = 7.0
  38218.   GeometryHeight           = 5.0
  38219.   Shadow                   = SHADOW_VOLUME
  38220.   
  38221.   Shadow = SHADOW_VOLUME
  38222.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  38223.  
  38224. End
  38225.  
  38226. ;------------------------------------------------------------------------------
  38227. Object FlankerMissile
  38228.  
  38229.   ; *** ART Parameters ***
  38230.   Draw = W3DModelDraw ModuleTag_01
  38231.     OkToChangeModelColor = Yes
  38232.     DefaultConditionState
  38233.       Model = flankerbomb
  38234.     End
  38235.   End
  38236.  
  38237.   ; ***DESIGN parameters ***
  38238.   DisplayName       = OBJECT:Missile
  38239.   EditorSorting     = SYSTEM
  38240.   VisionRange = 0.0
  38241.   TransportSlotCount  = 1  
  38242.  
  38243.   ; *** ENGINEERING Parameters ***
  38244.   KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
  38245.   Body = ActiveBody ModuleTag_02
  38246.     MaxHealth       = 150.0
  38247.     InitialHealth   = 150.0
  38248.   End
  38249.  
  38250. ; ---- begin Projectile death behaviors
  38251.   Behavior = InstantDeathBehavior DeathModuleTag_01
  38252.     DeathTypes = NONE +DETONATED
  38253.     ; we detonated normally.
  38254.     ; no FX, just quiet destroy ourselves
  38255.   End
  38256.   Behavior = InstantDeathBehavior DeathModuleTag_02
  38257.     DeathTypes = NONE +LASERED
  38258.     ; shot down by laser.
  38259.     FX         = FX_GenericMissileDisintegrate
  38260.     OCL        = OCL_GenericMissileDisintegrate
  38261.   End
  38262.   Behavior = InstantDeathBehavior DeathModuleTag_03
  38263.     DeathTypes = ALL -LASERED -DETONATED
  38264.     ; shot down by nonlaser.
  38265.     FX         = FX_GenericMissileDeath
  38266.   End
  38267. ; ---- end Projectile death behaviors
  38268.  
  38269.   Behavior = PhysicsBehavior ModuleTag_07
  38270.     Mass = 1
  38271.   End
  38272.   Behavior = MissileAIUpdate ModuleTag_08
  38273.     TryToFollowTarget     = No 
  38274.     FuelLifetime          = 10000
  38275.     InitialVelocity       = 75                ; in dist/sec
  38276.     IgnitionDelay         = 30
  38277.     IgnitionFX            = FX_JetMissileIgnition
  38278.   End
  38279.   Locomotor = SET_NORMAL RaptorJetMissileLocomotor
  38280.  
  38281.   Geometry = Sphere
  38282.   GeometryIsSmall = Yes
  38283.   GeometryMajorRadius = 1.0
  38284.  
  38285. End
  38286.  
  38287. ;------------------------------------------------------------------------------
  38288. Object ChinaJetNapalmBomber
  38289.  
  38290.   ; *** ART Parameters ***
  38291.   Draw = W3DModelDraw ModuleTag_01
  38292.     DefaultConditionState
  38293.       Model           = NVCargoPln
  38294.       Animation       = NVCargoPln.NVCargoPln
  38295.       AnimationMode   = LOOP
  38296.       ParticleSysBone = Propeller01 JetBlackTrailThin
  38297.       ParticleSysBone = Propeller02 JetBlackTrailThin
  38298.       ParticleSysBone = Propeller03 JetBlackTrailThin
  38299.       ParticleSysBone = Propeller04 JetBlackTrailThin
  38300.       ParticleSysBone = WingTip01 JetContrailThin
  38301.       ParticleSysBone = WingTip02 JetContrailThin
  38302.     End
  38303.     ConditionState = DAMAGED
  38304.       Model           = NVCargoPln_D
  38305.       Animation       = NVCargoPln_D.NVCargoPln_D
  38306.       AnimationMode   = MANUAL
  38307.       Flags           = START_FRAME_FIRST
  38308.       ParticleSysBone = Smoke01 JetFireLarge
  38309.       ParticleSysBone = Smoke03 JetFireLarge
  38310.       ParticleSysBone = Propeller01 JetBlackTrailThin
  38311.       ParticleSysBone = Propeller02 JetBlackTrailThin
  38312.       ParticleSysBone = Propeller03 JetBlackTrailThin
  38313.       ParticleSysBone = Propeller04 JetBlackTrailThin
  38314.       ParticleSysBone = Smoke01 JetSmokeLarge
  38315.       ParticleSysBone = Smoke03 JetSmokeLarge
  38316.       ParticleSysBone = WingTip01 JetContrailThin
  38317.       ParticleSysBone = WingTip02 JetContrailThin
  38318.     End
  38319.     ConditionState = REALLYDAMAGED
  38320.       Model           = NVCargoPln_D
  38321.       Animation       = NVCargoPln_D.NVCargoPln_D
  38322.       AnimationMode   = MANUAL
  38323.       Flags           = START_FRAME_FIRST
  38324.       ParticleSysBone = Smoke01 JetFireLarge
  38325.       ParticleSysBone = Smoke03 JetFireLarge
  38326.       ParticleSysBone = Smoke04 JetFireLarge
  38327.       ParticleSysBone = Propeller03 JetBlackTrailThin
  38328.       ParticleSysBone = Propeller04 JetBlackTrailThin
  38329.       ParticleSysBone = Smoke01 JetSmokeLarge
  38330.       ParticleSysBone = Smoke03 JetSmokeLarge
  38331.       ParticleSysBone = Smoke04 JetSmokeLarge
  38332.       ParticleSysBone = WingTip01 JetContrailThin
  38333.       ParticleSysBone = WingTip02 JetContrailThin
  38334.     End
  38335.     ConditionState = RUBBLE
  38336.       Model           = NVCargoPln_D1
  38337.       ParticleSysBone = Smoke01 JetFireLarge
  38338.       ParticleSysBone = Smoke06 JetFireLarge
  38339.       ParticleSysBone = Smoke03 JetFireLarge
  38340.       ParticleSysBone = Smoke04 JetFireLarge
  38341.       ParticleSysBone = Smoke01 JetSmokeLarge
  38342.       ParticleSysBone = Smoke06 JetSmokeLarge
  38343.       ParticleSysBone = Smoke03 JetSmokeLarge
  38344.       ParticleSysBone = Smoke04 JetSmokeLarge
  38345.     End
  38346.     
  38347.     OkToChangeModelColor = Yes
  38348.   End
  38349.  
  38350.   Draw = W3DModelDraw ModuleTag_02
  38351.     DefaultConditionState
  38352.       Model           = NVCargoPln_A2
  38353.       Animation       = NVCargoPln_A2.NVCargoPln_A2
  38354.       AnimationMode   = MANUAL
  38355.       Flags           = START_FRAME_FIRST
  38356.     End
  38357.     ConditionState = DOOR_1_OPENING
  38358.       Model           = NVCargoPln_A2
  38359.       Animation       = NVCargoPln_A2.NVCargoPln_A2
  38360.       AnimationMode   = ONCE
  38361.       Flags           = START_FRAME_FIRST
  38362.     End
  38363.     ConditionState = DOOR_1_CLOSING
  38364.       Model           = NVCargoPln_A2
  38365.       Animation       = NVCargoPln_A2.NVCargoPln_A2
  38366.       AnimationMode   = ONCE_BACKWARDS
  38367.       Flags           = START_FRAME_LAST
  38368.     End
  38369.   End
  38370.  
  38371.   ; ***DESIGN parameters ***
  38372.   DisplayName         = OBJECT:NapalmBomber
  38373.   EditorSorting       = SYSTEM
  38374.   Side                = China
  38375.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  38376.   VisionRange         = 300.0 
  38377.   ShroudClearingRange = 300
  38378.   Prerequisites
  38379.     Object = ChinaAirfield
  38380.   End
  38381.   WeaponSet
  38382.     Conditions        = None 
  38383.     Weapon            = PRIMARY     NapalmBombWeapon
  38384.     Weapon          = SECONDARY   NapalmcarpetbombWeapon
  38385.   End
  38386.   ArmorSet
  38387.     Conditions      = None
  38388.     Armor           = AirplaneArmor
  38389.     DamageFX        = None
  38390.   End
  38391.  
  38392.   CommandSet        = Command_ScriptedTransportDrops
  38393.  
  38394.   ; *** AUDIO Parameters ***
  38395.   SoundAmbient = C130AmbientLoop
  38396.   SoundAmbientRubble    = NoSound
  38397.  
  38398.   ; *** ENGINEERING Parameters ***
  38399.   RadarPriority = UNIT 
  38400.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE AIRCRAFT IGNORED_IN_GUI
  38401.  
  38402.   Body = ActiveBody ModuleTag_02
  38403.     MaxHealth       = 240.0
  38404.     InitialHealth   = 240.0
  38405.   End
  38406.  
  38407.   Behavior = SpecialPowerCompletionDie ModuleTag_03
  38408.     SpecialPowerTemplate = SPECIALWEAPON_NapalmBombs
  38409.   End
  38410.  
  38411.   Behavior = SpecialPowerCompletionDie ModuleTag_99
  38412.     SpecialPowerTemplate = SPECIALWEAPON_Napalmcarpet
  38413.   End
  38414.  
  38415.   Behavior                          = JetSlowDeathBehavior ModuleTag_04
  38416.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  38417.     OCLOnGroundDeath                = OCL_RaptorDeathFinalBlowUp
  38418.     DestructionDelay                = 99999999; destruction will happen when we
  38419.     RollRate                        = 0.2
  38420.     RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
  38421.     PitchRate                       = 0.0
  38422.     FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  38423.     FXInitialDeath                  = FX_JetDeathInitial
  38424.     OCLInitialDeath                 = OCL_RaptorDeathInitial
  38425.     DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
  38426.     FXSecondary                     = FX_JetDeathSecondary
  38427.     OCLSecondary                    = OCL_RaptorDeathSecondary
  38428.     FXHitGround                     = FX_JetDeathHitGround
  38429.     OCLHitGround                    = OCL_RaptorDeathHitGround
  38430.     DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
  38431.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  38432.     OCLFinalBlowUp                  = OCL_RaptorDeathFinalBlowUp
  38433. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  38434.   End
  38435.  
  38436.   Behavior = DeliverPayloadAIUpdate ModuleTag_06
  38437.     DoorDelay = 0
  38438.   End
  38439.   Locomotor = SET_NORMAL B52Locomotor
  38440.  
  38441.   Behavior = TransportContain ModuleTag_08
  38442.     Slots = 100                     ; hey, it's a BIG transport
  38443.     ScatterNearbyOnExit = No
  38444.     OrientLikeContainerOnExit = Yes
  38445.     KeepContainerVelocityOnExit = Yes
  38446.     ExitPitchRate = 30
  38447.     ExitBone = WeaponA
  38448.     AllowInsideKindOf  = PROJECTILE
  38449.     DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
  38450.     NumberOfExitPaths = 0
  38451.     DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
  38452.   End
  38453.  
  38454.   Behavior = PhysicsBehavior ModuleTag_09
  38455.     Mass = 500.0
  38456.   End
  38457.  
  38458.   Behavior = FlammableUpdate ModuleTag_21
  38459.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  38460.     AflameDamageAmount = 3       ; taking this much damage...
  38461.     AflameDamageDelay = 500       ; this often.
  38462.   End
  38463.  
  38464.  
  38465.   Geometry = Cylinder
  38466.   GeometryIsSmall = Yes
  38467.   GeometryMajorRadius = 7.0
  38468.   GeometryMinorRadius = 7.0
  38469.   GeometryHeight = 7.0
  38470.   
  38471.   Shadow = SHADOW_VOLUME
  38472.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  38473.  
  38474. End
  38475.  
  38476. ;------------------------------------------------------------------------------
  38477. Object AmericaJetRaptorStriker
  38478.  
  38479.   ; *** ART Parameters ***
  38480.   Draw = W3DModelDraw ModuleTag_01
  38481.  
  38482.     DefaultConditionState
  38483.       Model = AVRaptor
  38484.       WeaponLaunchBone    = PRIMARY WeaponA
  38485.       ParticleSysBone     = Exhaust01 JetExhaust
  38486.       ParticleSysBone     = Wingtip01 JetContrail
  38487.       ParticleSysBone     = Wingtip02 JetContrail
  38488.       ParticleSysBone     = Engine01 JetLenzflare
  38489.       ParticleSysBone     = Engine02 JetLenzflare
  38490.       ;ParticleSysBone    = Exhaust02 JetExhaust
  38491.       HideSubObject       = BurnerFX01 BurnerFX02
  38492.     End
  38493.     ConditionState        = JETEXHAUST
  38494.       ; exhaust
  38495.       ParticleSysBone     = Wingtip01 JetContrail
  38496.       ParticleSysBone     = Wingtip02 JetContrail
  38497.     End
  38498.     ConditionState = REALLYDAMAGED
  38499.       Model = AVRaptor_D
  38500.       ParticleSysBone     = Smoke01 JetSmoke
  38501.       ParticleSysBone     = Engine01 JetEngineDamagedSmoke
  38502.     End
  38503.     AliasConditionState = RUBBLE
  38504.  
  38505.     OkToChangeModelColor = Yes
  38506.   End
  38507.  
  38508.   ; ***DESIGN parameters ***
  38509.   DisplayName         = OBJECT:Raptor
  38510.   EditorSorting       = SYSTEM
  38511.   Side                = America
  38512.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  38513.   VisionRange         = 300.0 
  38514.   ShroudClearingRange = 300
  38515.   Prerequisites
  38516.     Object = AmericaAirfield
  38517.   End
  38518.   WeaponSet
  38519.     Conditions        = None 
  38520.     Weapon            = PRIMARY     RaptorJetMissileWeapon
  38521.   End
  38522.   WeaponSet
  38523.     Conditions            = PLAYER_UPGRADE 
  38524.     Weapon                = PRIMARY RaptorJetLaserGuidedMissileWeapon
  38525.   End
  38526.   ArmorSet
  38527.     Conditions      = None
  38528.     Armor           = AirplaneArmor
  38529.     DamageFX        = None
  38530.   End
  38531.   CommandSet        = AmericaJetRaptorCommandSet
  38532.  
  38533.   ; *** AUDIO Parameters ***
  38534.   SoundAmbient = RaptorAmbientLoop
  38535.   SoundAmbientRubble    = NoSound
  38536.  
  38537.   ; *** ENGINEERING Parameters ***
  38538.   RadarPriority = UNIT 
  38539.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE AIRCRAFT IGNORED_IN_GUI
  38540.  
  38541.   Body = ActiveBody ModuleTag_02
  38542.     MaxHealth       = 160.0
  38543.     InitialHealth   = 160.0
  38544.   End
  38545.  
  38546.   Behavior = SpecialPowerCompletionDie ModuleTag_03
  38547.     SpecialPowerTemplate = SpecialPowerRaptorAttack
  38548.   End
  38549.  
  38550.   Behavior                          = JetSlowDeathBehavior ModuleTag_04
  38551.     FXOnGroundDeath                 = FX_JetOnGroundDeath
  38552.     OCLOnGroundDeath                = OCL_RaptorDeathFinalBlowUp
  38553.     DestructionDelay                = 99999999; destruction will happen when we
  38554.     RollRate                        = 0.2
  38555.     RollRateDelta                   = 100% ;each frame, rollrate = rollrate * rollrateDelta
  38556.     PitchRate                       = 0.0
  38557.     FallHowFast                     = 110.0%  ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  38558.     FXInitialDeath                  = FX_JetDeathInitial
  38559.     OCLInitialDeath                 = OCL_RaptorDeathInitial
  38560.     DelaySecondaryFromInitialDeath  = 500  ; in milliseconds
  38561.     FXSecondary                     = FX_JetDeathSecondary
  38562.     OCLSecondary                    = OCL_RaptorDeathSecondary
  38563.     FXHitGround                     = FX_JetDeathHitGround
  38564.     OCLHitGround                    = OCL_RaptorDeathHitGround
  38565.     DelayFinalBlowUpFromHitGround   = 200 ; in milliseconds
  38566.     FXFinalBlowUp                   = FX_JetDeathFinalBlowUp
  38567.     OCLFinalBlowUp                  = OCL_RaptorDeathFinalBlowUp
  38568. ;   DeathLoopSound                  = MICAL NEEDS TO MAKE ME
  38569.   End
  38570.  
  38571.   Behavior = DeliverPayloadAIUpdate ModuleTag_06
  38572.     DoorDelay = 0
  38573.   End
  38574.   Locomotor = SET_NORMAL RaptorJetLocomotor
  38575.  
  38576.   Behavior = WeaponSetUpgrade ModuleTag_07
  38577.     TriggeredBy = Upgrade_AmericaLaserMissiles
  38578.   End
  38579.  
  38580.   Behavior = TransportContain ModuleTag_08
  38581.     Slots = 100                     ; hey, it's a BIG transport
  38582.     ScatterNearbyOnExit = No
  38583.     OrientLikeContainerOnExit = Yes
  38584.     KeepContainerVelocityOnExit = Yes
  38585.     ExitPitchRate = 30
  38586.     ExitBone = WeaponA
  38587.     AllowInsideKindOf  = PROJECTILE
  38588.     DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
  38589.     NumberOfExitPaths = 0
  38590.     DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
  38591.   End
  38592.  
  38593.   Behavior = PhysicsBehavior ModuleTag_09
  38594.     Mass = 500.0
  38595.   End
  38596.  
  38597.   Behavior = FlammableUpdate ModuleTag_21
  38598.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  38599.     AflameDamageAmount = 3       ; taking this much damage...
  38600.     AflameDamageDelay = 500       ; this often.
  38601.   End
  38602.  
  38603.  
  38604.   Geometry = Cylinder
  38605.   GeometryIsSmall = Yes
  38606.   GeometryMajorRadius = 7.0
  38607.   GeometryMinorRadius = 7.0
  38608.   GeometryHeight = 7.0
  38609.   
  38610.   Shadow = SHADOW_VOLUME
  38611.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  38612.  
  38613. End
  38614.  
  38615. ;------------------------------------------------------------------------------
  38616. Object NapalmBombWeapon
  38617.  
  38618.   ; *** ART Parameters ***
  38619.   Draw = W3DModelDraw ModuleTag_01
  38620.     OkToChangeModelColor = Yes
  38621.     DefaultConditionState
  38622.       Model = EXCarptBmb
  38623.       ParticleSysBone = NONE ArtilleryBarrageTrail
  38624.       ParticleSysBone = NONE ArtilleryBarrageTrailRing
  38625.     End
  38626.   End
  38627.  
  38628.   ; ***DESIGN parameters ***
  38629.   DisplayName         = OBJECT:Missile
  38630.   EditorSorting       = SYSTEM
  38631.   VisionRange         = 0.0  ; Projectiles can't see, but superweapons *may need to*
  38632.   TransportSlotCount  = 1    ; since Napalm Strike carries us as payload, not weapon
  38633.   ArmorSet
  38634.     Conditions      = None
  38635.     Armor           = ProjectileArmor
  38636.     DamageFX        = None
  38637.   End
  38638.  
  38639.   ; *** ENGINEERING Parameters ***
  38640.   KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
  38641.   Body = ActiveBody ModuleTag_02
  38642.     MaxHealth       = 100.0
  38643.     InitialHealth   = 100.0
  38644.   End
  38645.  
  38646.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
  38647.     DeathWeapon   = NapalmBombWeapon
  38648.   End
  38649.  
  38650. ; ---- begin Projectile death behaviors
  38651.   Behavior = InstantDeathBehavior DeathModuleTag_01
  38652.     DeathTypes = NONE +DETONATED
  38653.     ; we detonated normally.
  38654.     ; no FX, just quiet destroy ourselves
  38655.   End
  38656.   Behavior = InstantDeathBehavior DeathModuleTag_02
  38657.     DeathTypes = NONE +LASERED
  38658.     ; shot down by laser.
  38659. ;    FX         = FX_GenericMissileDisintegrate
  38660.     OCL        = OCL_GenericMissileDisintegrate
  38661.   End
  38662.   Behavior = InstantDeathBehavior DeathModuleTag_03
  38663.     DeathTypes = ALL -LASERED -DETONATED
  38664.     ; shot down by nonlaser.
  38665. ;    FX         = FX_GenericMissileDeath
  38666.   End
  38667. ; ---- end Projectile death behaviors
  38668.  
  38669.   Behavior = PhysicsBehavior ModuleTag_06
  38670.     Mass = 1
  38671.   End
  38672.   Behavior = MissileAIUpdate ModuleTag_07
  38673.     TryToFollowTarget   = Yes 
  38674.     FuelLifetime        = 10000
  38675.     InitialVelocity     = 75                ; in dist/sec
  38676.     IgnitionDelay       = 30
  38677. ;    IgnitionFX          = FX_NapalmMissileIgnition
  38678.   End
  38679.   Locomotor = SET_NORMAL AuroraBombLocomotor   ; yes, that's right.
  38680.  
  38681.   Geometry = Sphere
  38682.   GeometryIsSmall = Yes
  38683.   GeometryMajorRadius = 1.0
  38684.  
  38685. End
  38686.  
  38687. ;------------------------------------------------------------------------------
  38688. Object Napalmcarpetbomb
  38689.  
  38690.   ; *** ART Parameters ***
  38691.   Draw = W3DModelDraw ModuleTag_01
  38692.     OkToChangeModelColor = Yes
  38693.     DefaultConditionState
  38694.       Model = EXCarptBmb
  38695.       ParticleSysBone = NONE ArtilleryBarrageTrail
  38696.       ParticleSysBone = NONE ArtilleryBarrageTrailRing
  38697.     End
  38698.   End
  38699.  
  38700.   ; ***DESIGN parameters ***
  38701.   DisplayName         = OBJECT:Missile
  38702.   EditorSorting       = SYSTEM
  38703.   VisionRange         = 0.0  ; Projectiles can't see, but superweapons *may need to*
  38704.   TransportSlotCount  = 1    ; since Napalm Strike carries us as payload, not weapon
  38705.   ArmorSet
  38706.     Conditions      = None
  38707.     Armor           = ProjectileArmor
  38708.     DamageFX        = None
  38709.   End
  38710.  
  38711.   ; *** ENGINEERING Parameters ***
  38712.   KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE
  38713.   Body = ActiveBody ModuleTag_02
  38714.     MaxHealth       = 100.0
  38715.     InitialHealth   = 100.0
  38716.   End
  38717.  
  38718.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_09
  38719.     DeathWeapon   = NapalmcarpetbombWeapon
  38720.     StartsActive  = Yes                      ; turned on by upgrade
  38721.     ConflictsWith = Upgrade_ChinaBlackNapalm
  38722.   End
  38723.  
  38724.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_10
  38725.     DeathWeapon   = BlackNapalmcarpetbombWeapon
  38726.     StartsActive  = No                      ; turned on by upgrade
  38727.     TriggeredBy   = Upgrade_ChinaBlackNapalm
  38728.   End
  38729.  
  38730.   Behavior = HeightDieUpdate ModuleTag_08
  38731.     TargetHeight = 5.0
  38732.     TargetHeightIncludesStructures = No
  38733.   End
  38734.  
  38735. ; ---- begin Projectile death behaviors
  38736.   Behavior = InstantDeathBehavior DeathModuleTag_01
  38737.     DeathTypes = NONE +DETONATED
  38738.     ; we detonated normally.
  38739.     ; no FX, just quiet destroy ourselves
  38740.   End
  38741.   Behavior = InstantDeathBehavior DeathModuleTag_02
  38742.     DeathTypes = NONE +LASERED
  38743.     ; shot down by laser.
  38744. ;    FX         = FX_GenericMissileDisintegrate
  38745.     OCL        = OCL_GenericMissileDisintegrate
  38746.   End
  38747.   Behavior = InstantDeathBehavior DeathModuleTag_03
  38748.     DeathTypes = ALL -LASERED -DETONATED
  38749.     ; shot down by nonlaser.
  38750. ;    FX         = FX_GenericMissileDeath
  38751.   End
  38752. ; ---- end Projectile death behaviors
  38753.  
  38754.   Behavior = PhysicsBehavior ModuleTag_06
  38755.     Mass = 1
  38756.   End
  38757.   Behavior = MissileAIUpdate ModuleTag_07
  38758.     TryToFollowTarget   = Yes 
  38759.     FuelLifetime        = 10000
  38760.     InitialVelocity     = 75                ; in dist/sec
  38761.     IgnitionDelay       = 30
  38762. ;    IgnitionFX          = FX_NapalmMissileIgnition
  38763.   End
  38764.   Locomotor = SET_NORMAL AuroraBombLocomotor   ; yes, that's right.
  38765.  
  38766.   Geometry = Sphere
  38767.   GeometryIsSmall = Yes
  38768.   GeometryMajorRadius = 1.0
  38769.  
  38770. End
  38771.  
  38772. ;------------------------------------------------------------------------------
  38773. Object SandStorm
  38774.  
  38775.   ; *** ART Parameters ***
  38776.   Draw = W3DModelDraw ModuleTag_01
  38777.     ConditionState = NONE
  38778.       Model = AVTankShel
  38779.     End
  38780.   End
  38781.  
  38782.   ; ***DESIGN parameters ***
  38783.   DisplayName       = OBJECT:TankShell
  38784.   EditorSorting     = SYSTEM
  38785.   ArmorSet
  38786.     Armor = ProjectileArmor
  38787.   End
  38788.   VisionRange = 0.0
  38789.  
  38790.   ; *** ENGINEERING Parameters ***
  38791.   KindOf = PROJECTILE
  38792.   Body = ActiveBody ModuleTag_02
  38793.     MaxHealth       = 100.0
  38794.     InitialHealth   = 100.0
  38795.   End
  38796.  
  38797.   Behavior = DestroyDie ModuleTag_03
  38798.     ;nothing
  38799.   End
  38800.  
  38801.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
  38802.     DeathWeapon   = SandStormShellWeapon 
  38803.     StartsActive  = Yes
  38804.   End
  38805.  
  38806.   Behavior = LifetimeUpdate ModuleTag_09
  38807.     MinLifetime = 15   ; min lifetime in msec
  38808.     MaxLifetime = 16   ; max lifetime in msec
  38809.   End
  38810.  
  38811.  Behavior = PhysicsBehavior ModuleTag_07
  38812.     Mass = 0.01 ; can't be zero, but we want it tiny so that it travels nearly straight
  38813.   End
  38814.  
  38815.   Geometry = Sphere
  38816.   GeometryIsSmall = Yes
  38817.   GeometryMajorRadius = 1.0
  38818.  
  38819. End
  38820.  
  38821. ;------------------------------------------------------------------------------
  38822. Object Stickstoff
  38823.  
  38824.   ; *** ART Parameters ***
  38825.   Draw = W3DModelDraw ModuleTag_01
  38826.     ConditionState = NONE
  38827.       Model = AVTankShel
  38828.     End
  38829.   End
  38830.  
  38831.   ; ***DESIGN parameters ***
  38832.   DisplayName       = OBJECT:TankShell
  38833.   EditorSorting     = SYSTEM
  38834.   ArmorSet
  38835.     Armor = ProjectileArmor
  38836.   End
  38837.   VisionRange = 0.0
  38838.  
  38839.   ; *** ENGINEERING Parameters ***
  38840.   KindOf = PROJECTILE
  38841.   Body = ActiveBody ModuleTag_02
  38842.     MaxHealth       = 100.0
  38843.     InitialHealth   = 100.0
  38844.   End
  38845.  
  38846.   Behavior = DestroyDie ModuleTag_03
  38847.     ;nothing
  38848.   End
  38849.  
  38850.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_08
  38851.     DeathWeapon   = StickstoffShellWeapon 
  38852.     StartsActive  = Yes
  38853.   End
  38854.  
  38855.   Behavior = LifetimeUpdate ModuleTag_09
  38856.     MinLifetime = 15   ; min lifetime in msec
  38857.     MaxLifetime = 16   ; max lifetime in msec
  38858.   End
  38859.  
  38860.  Behavior = PhysicsBehavior ModuleTag_07
  38861.     Mass = 0.01 ; can't be zero, but we want it tiny so that it travels nearly straight
  38862.   End
  38863.  
  38864.   Geometry = Sphere
  38865.   GeometryIsSmall = Yes
  38866.   GeometryMajorRadius = 1.0
  38867.  
  38868. End
  38869.  
  38870.  
  38871. ;------------------------------------------------------------------------------
  38872. Object GLAInfantryStinger
  38873.  
  38874.   ; *** ART Parameters ***
  38875.   SelectPortrait         = GLAStinger
  38876.   ButtonImage            = GLAStinger
  38877.   
  38878.   UpgradeCameo1          = Upgrade_GLAAPRockets
  38879.   ;UpgradeCameo2 = NONE
  38880.   ;UpgradeCameo3 = NONE
  38881.   ;UpgradeCameo4 = NONE
  38882.   ;UpgradeCameo5 = NONE
  38883.  
  38884.   Draw = W3DModelDraw ModuleTag_01
  38885.     OkToChangeModelColor = Yes
  38886.  
  38887.     DefaultConditionState
  38888.       Model = UISmsd_SKN
  38889.       IdleAnimation = UISmsd_SKL.UISmsd_STA 0 45
  38890.       IdleAnimation = UISmsd_SKL.UISmsd_IDA 
  38891.       IdleAnimation = UISmsd_SKL.UISmsd_IDB 
  38892.       IdleAnimation = UISmsd_SKL.UISmsd_IDC 
  38893.       IdleAnimation = UISmsd_SKL.UISmsd_IDD 
  38894.       AnimationMode = ONCE
  38895.       WeaponMuzzleFlash = PRIMARY MuzzleFX
  38896.       WeaponFireFXBone = PRIMARY Exhaust
  38897.       WeaponLaunchBone = PRIMARY Muzzle
  38898.       WeaponFireFXBone = SECONDARY Exhaust
  38899.       WeaponLaunchBone = SECONDARY Muzzle
  38900.     End
  38901.  
  38902.     ConditionState = MOVING
  38903.       Animation = UISmsd_SKL.UISmsd_WKB 25
  38904.       AnimationMode = LOOP
  38905.       ParticleSysBone   = None InfantryDustTrails
  38906.     End
  38907.  
  38908.     ConditionState = DYING
  38909.       Animation = UISmsd_SKL.UISmsd_DTA 
  38910.       Animation = UISmsd_SKL.UISmsd_DTB 
  38911.       AnimationMode = ONCE
  38912.       TransitionKey = TRANS_Dying
  38913.     End
  38914.  
  38915.     TransitionState = TRANS_Dying TRANS_Flailing
  38916.       Animation = UISmsd_SKL.UISmsd_ADTF1
  38917.       Animation = UISmsd_SKL.UISmsd_ADTG21
  38918.       AnimationMode = ONCE
  38919.     End
  38920.  
  38921.     ConditionState = DYING EXPLODED_FLAILING
  38922.       Animation = UISmsd_SKL.UISmsd_ADTF2
  38923.       Animation = UISmsd_SKL.UISmsd_ADTG22
  38924.       AnimationMode = LOOP
  38925.       TransitionKey = TRANS_Flailing
  38926.     End
  38927.  
  38928.     ConditionState = DYING EXPLODED_BOUNCING
  38929.       Animation = UISmsd_SKL.UISmsd_ADTF3
  38930.       Animation = UISmsd_SKL.UISmsd_ADTG23
  38931.       AnimationMode = ONCE
  38932.       TransitionKey = None
  38933.     End
  38934.  
  38935.     ConditionState = FIRING_A 
  38936.       Animation = UISmsd_SKL.UISmsd_ATA
  38937.       AnimationMode = ONCE
  38938.       TransitionKey = TRANS_START_FIRING
  38939.     End
  38940.     ; AliasConditionState is a new keyword that says,
  38941.     ; "give me another ConditionState exactly like the previous
  38942.     ; one, except with different conditions". Useful when you
  38943.     ; have several states that are the same with only different condition bits.
  38944.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  38945.     AliasConditionState = MOVING FIRING_A
  38946.     AliasConditionState = MOVING RELOADING_A
  38947.  
  38948.     ConditionState = FIRING_B
  38949.       Animation = UISmsd_SKL.UISmsd_ATB
  38950.       AnimationMode = ONCE
  38951.       TransitionKey = TRANS_START_FIRINGB
  38952.     End
  38953.     ; AliasConditionState is a new keyword that says,
  38954.     ; "give me another ConditionState exactly like the previous
  38955.     ; one, except with different conditions". Useful when you
  38956.     ; have several states that are the same with only different condition bits.
  38957.     ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.).
  38958.     AliasConditionState = MOVING FIRING_B
  38959.     AliasConditionState = MOVING RELOADING_B
  38960.  
  38961.     ConditionState = SPECIAL_CHEERING
  38962.       Animation = UISMSD_SKL.UISMSD_CHA
  38963.       AnimationMode = LOOP
  38964.     End
  38965.  
  38966.   End
  38967.  
  38968.   ; ***DESIGN parameters ***
  38969.   DisplayName      = OBJECT:StingerSoldier
  38970.   Side = GLA
  38971.   EditorSorting = INFANTRY
  38972.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  38973.   WeaponSet
  38974.     Conditions = None 
  38975.     Weapon              = PRIMARY   InfStingerMissileWeapon
  38976.     AutoChooseSources   = PRIMARY   FROM_PLAYER FROM_AI FROM_SCRIPT
  38977.   End
  38978.   ArmorSet
  38979.     Conditions      = None
  38980.     Armor           = HumanArmor
  38981.     DamageFX        = InfantryDamageFX
  38982.   End
  38983.   VisionRange = 150
  38984.   ShroudClearingRange = 400
  38985.   Prerequisites
  38986.     Object = GLABarracks
  38987.   End
  38988.   BuildCost = 550
  38989.   BuildTime = 7.0          ;in seconds  
  38990.  
  38991.   ExperienceValue = 20 20 40 60    ;Experience point value at each level
  38992.   ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
  38993.   IsTrainable = Yes             ;Can gain experience
  38994.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  38995.   CommandSet      = GLAInfantryTunnelDefenderCommandSet
  38996.  
  38997.   ; *** AUDIO Parameters ***
  38998.   VoiceSelect = StingerSoldierVoiceSelect
  38999.   VoiceMove = StingerSoldierVoiceMove
  39000.   VoiceAttack = StingerSoldierVoiceAttack
  39001.   SoundDie = StingerSoldierVoiceDie
  39002.   SoundDieFire = DieByFireGLA
  39003.   SoundDieToxin = DieByToxinGLA
  39004.   VoiceGuard = RPGTrooperVoiceMove
  39005.   VoiceFear = RPGTrooperVoiceFear
  39006.   UnitSpecificSounds
  39007.     VoiceCreate          = RPGTrooperVoiceCreate
  39008.     VoiceGarrison = RPGTrooperVoiceGarrison
  39009.     VoiceEnter = RPGTrooperVoiceMove
  39010.     VoiceEnterHostile = RPGTrooperVoiceMove
  39011.     VoiceGetHealed      = RPGTrooperVoiceMove
  39012.   End
  39013.  
  39014.  
  39015.   ; *** ENGINEERING Parameters ***
  39016.   RadarPriority = UNIT
  39017.   KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
  39018.  
  39019.   Body = ActiveBody ModuleTag_02
  39020.     MaxHealth       = 100.0
  39021.     InitialHealth   = 100.0
  39022.   End
  39023.  
  39024.   Behavior = AIUpdateInterface ModuleTag_03
  39025.     AutoAcquireEnemiesWhenIdle = Yes
  39026.   End
  39027.   Locomotor = SET_NORMAL MissileDefenderLocomotor
  39028.  
  39029.   Behavior = PhysicsBehavior ModuleTag_04
  39030.     Mass = 5.0
  39031.   End
  39032.  
  39033.   Behavior = SquishCollide ModuleTag_06
  39034.     ;nothing
  39035.   End
  39036.  
  39037. ; --- begin Death modules ---
  39038.   Behavior = SlowDeathBehavior ModuleTag_Death01
  39039.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  39040.     SinkDelay           = 3000
  39041.     SinkRate            = 0.5     ; in Dist/Sec
  39042.     DestructionDelay    = 8000
  39043.     FX                  = INITIAL FX_GIDie
  39044.   End
  39045.   Behavior = SlowDeathBehavior ModuleTag_Death02
  39046.     DeathTypes          = NONE +CRUSHED +SPLATTED
  39047.     SinkDelay           = 3000
  39048.     SinkRate            = 0.5     ; in Dist/Sec
  39049.     DestructionDelay    = 8000
  39050.     FX                  = INITIAL FX_GIDieCrushed
  39051.   End
  39052.   Behavior = SlowDeathBehavior ModuleTag_Death03
  39053.     DeathTypes          = NONE +EXPLODED
  39054.     SinkDelay           = 3000
  39055.     SinkRate            = 0.5     ; in Dist/Sec
  39056.     DestructionDelay    = 8000
  39057.     FX                  = INITIAL FX_GIDie
  39058.     FlingForce          = 8
  39059.     FlingForceVariance  = 3
  39060.     FlingPitch          = 60
  39061.     FlingPitchVariance  = 10
  39062.   End
  39063.   Behavior = SlowDeathBehavior ModuleTag_Death04
  39064.     DeathTypes          = NONE +BURNED
  39065.     DestructionDelay    = 0
  39066.     FX                  = INITIAL FX_GIDie
  39067.     OCL                 = INITIAL OCL_FlamingInfantry
  39068.   End
  39069.   Behavior = SlowDeathBehavior ModuleTag_Death05
  39070.     DeathTypes          = NONE +POISONED
  39071.     DestructionDelay    = 0
  39072.     FX                  = INITIAL FX_GIDie
  39073.     OCL                 = INITIAL OCL_ToxicInfantry
  39074.   End
  39075.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  39076.     DeathTypes          = NONE +POISONED_BETA
  39077.     DestructionDelay    = 0
  39078.     FX                  = INITIAL FX_GIDie
  39079.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  39080.   End
  39081. ; --- end Death modules ---
  39082.  
  39083.   Behavior = PoisonedBehavior ModuleTag_12
  39084.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  39085.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  39086.   End
  39087.  
  39088.   Geometry = CYLINDER
  39089.   GeometryMajorRadius = 10.0
  39090.   GeometryMinorRadius = 10.0
  39091.   GeometryHeight = 12.0
  39092.   GeometryIsSmall = Yes
  39093.   Shadow = SHADOW_DECAL
  39094.   ShadowSizeX = 14;
  39095.   ShadowSizeY = 14;
  39096.   ShadowTexture = ShadowI;
  39097.   BuildCompletion = APPEARS_AT_RALLY_POINT
  39098.  
  39099. End
  39100.  
  39101. ;------------------------------------------------------------------------------
  39102. Object Stickstoffbombe
  39103.  
  39104.   ; *** ART Parameters ***
  39105.   Draw = W3DModelDraw ModuleTag_01
  39106.     OkToChangeModelColor = Yes
  39107.     DefaultConditionState
  39108.       Model = AVBomber_B
  39109.     End
  39110.   End
  39111.  
  39112.   ; ***DESIGN parameters ***
  39113.   DisplayName         = OBJECT:AnthraxBomb
  39114.   Side                = GLA
  39115.   EditorSorting       = SYSTEM
  39116.   TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  39117.   VisionRange         = 300.0  
  39118.   ShroudClearingRange = 0
  39119.   ArmorSet
  39120.     Conditions      = None
  39121.     Armor           = ProjectileArmor
  39122.     DamageFX        = None
  39123.   End
  39124.  
  39125.   ; *** AUDIO Parameters ***
  39126.   SoundFallingFromPlane = DaisyCutterWeapon
  39127.     
  39128.   ; *** ENGINEERING Parameters ***
  39129.   KindOf            = PROJECTILE
  39130.   Body = ActiveBody ModuleTag_02
  39131.     MaxHealth       = 100.0
  39132.     InitialHealth   = 100.0
  39133.   End
  39134.   
  39135.   Behavior = AIUpdateInterface ModuleTag_03
  39136.   End
  39137.   Locomotor = SET_NORMAL None
  39138.  
  39139.   Behavior = PhysicsBehavior ModuleTag_04
  39140.     Mass                  = 75.0
  39141.     AerodynamicFriction   = 1  ; this is now friction-per-sec
  39142.     ForwardFriction       = 33     ; this is now friction-per-sec
  39143.     CenterOfMassOffset    = 2  ; Default of 0 means nothing tips as it falls.  Positive tips forward, negative tips back
  39144.   End
  39145.  
  39146.   Behavior = FireWeaponWhenDeadBehavior ModuleTag_05
  39147.     DeathWeapon   = StickstoffShellWeapon 
  39148.     StartsActive  = Yes
  39149.   End
  39150.  
  39151.   Behavior = HeightDieUpdate ModuleTag_06
  39152.     TargetHeight = 40.0
  39153.     TargetHeightIncludesStructures = No
  39154.   End
  39155.  
  39156.   Behavior = SpecialPowerCompletionDie ModuleTag_07
  39157.     SpecialPowerTemplate = SuperweaponStickstoff
  39158.   End
  39159.   Behavior = DestroyDie ModuleTag_08
  39160.     ;nothing
  39161.   End
  39162.  
  39163.   ;Geometry = Sphere
  39164.   ;GeometryIsSmall = Yes
  39165.   ;GeometryMajorRadius = 12.0
  39166.  
  39167. End
  39168.  
  39169. ;------------------------------------------------------------------------------
  39170. Object GLAJetCargoPlane2
  39171.  
  39172.   ; *** ART Parameters ***
  39173.   Draw = W3DModelDraw ModuleTag_01
  39174.     DefaultConditionState
  39175.       Model           = UVCargoPln
  39176.       Animation       = UVCargoPln.UVCargoPln
  39177.       AnimationMode   = LOOP
  39178.       ParticleSysBone = Engine01 JetBlackTrail
  39179.       ParticleSysBone = Engine02 JetBlackTrail
  39180.       ParticleSysBone = Engine03 JetBlackTrail
  39181.       ParticleSysBone = Engine04 JetBlackTrail      
  39182.     End
  39183.     ConditionState = DAMAGED
  39184.       Model           = UVCargoPln_D
  39185.       Animation       = UVCargoPln_D.UVCargoPln_D
  39186.       AnimationMode   = MANUAL
  39187.       Flags           = START_FRAME_FIRST
  39188.       ParticleSysBone = Smoke01 JetFireLarge
  39189.       ParticleSysBone = Smoke02 JetFireLarge
  39190.       ParticleSysBone = Propeller03 JetBlackTrailThin
  39191.       ParticleSysBone = Propeller04 JetBlackTrailThin
  39192.       ParticleSysBone = Smoke01 JetSmokeLarge
  39193.       ParticleSysBone = Smoke02 JetSmokeLarge
  39194.       ParticleSysBone = Smoke03 JetSmokeLarge
  39195.     End
  39196.     ConditionState = REALLYDAMAGED
  39197.       Model           = UVCargoPln_D
  39198.       Animation       = UVCargoPln_D.UVCargoPln_D
  39199.       AnimationMode   = MANUAL
  39200.       Flags           = START_FRAME_FIRST
  39201.       ParticleSysBone = Smoke01 JetFireLarge
  39202.       ParticleSysBone = Smoke02 JetFireLarge
  39203.       ParticleSysBone = Propeller03 JetBlackTrailThin
  39204.       ParticleSysBone = Propeller04 JetBlackTrailThin
  39205.       ParticleSysBone = Smoke01 JetSmokeLarge
  39206.       ParticleSysBone = Smoke02 JetSmokeLarge
  39207.       ParticleSysBone = Smoke03 JetSmokeLarge
  39208.     End
  39209.     ConditionState = RUBBLE
  39210.       Model           = UVCargoPln_D1
  39211.       ParticleSysBone = Smoke01 JetFireLarge
  39212.       ParticleSysBone = Smoke02 JetFireLarge
  39213.       ParticleSysBone = Smoke03 JetFireLarge
  39214.       ParticleSysBone = Smoke04 JetFireLarge
  39215.       ParticleSysBone = Smoke01 JetSmokeLarge
  39216.       ParticleSysBone = Smoke02 JetSmokeLarge
  39217.       ParticleSysBone = Smoke03 JetSmokeLarge
  39218.       ParticleSysBone = Smoke04 JetSmokeLarge
  39219.     End
  39220.     
  39221.     OkToChangeModelColor = Yes
  39222.   End
  39223.  
  39224.   Draw = W3DModelDraw ModuleTag_02
  39225.     DefaultConditionState
  39226.       Model           = UVCargoPln_A2
  39227.       Animation       = UVCargoPln_A2.UVCargoPln_A2
  39228.       AnimationMode   = MANUAL
  39229.       Flags           = START_FRAME_FIRST
  39230.     End
  39231.     ConditionState = DOOR_1_OPENING
  39232.       Model           = UVCargoPln_A2
  39233.       Animation       = UVCargoPln_A2.UVCargoPln_A2
  39234.       AnimationMode   = ONCE
  39235.       Flags           = START_FRAME_FIRST
  39236.     End
  39237.     ConditionState = DOOR_1_CLOSING
  39238.       Model           = UVCargoPln_A2
  39239.       Animation       = UVCargoPln_A2.UVCargoPln_A2
  39240.       AnimationMode   = ONCE_BACKWARDS
  39241.       Flags           = START_FRAME_LAST
  39242.     End
  39243.   End
  39244.   
  39245.   ; ***DESIGN parameters ***
  39246.   DisplayName         = OBJECT:CargoPlane
  39247.   EditorSorting       = VEHICLE
  39248.   Side                = GLA
  39249.   TransportSlotCount  = 0                 ;how many "slots" we take in a transport (0 == not transportable)
  39250.   VisionRange         = 0.0 
  39251.   ArmorSet
  39252.     Conditions      = None
  39253.     Armor           = AirplaneArmor
  39254.     DamageFX        = None
  39255.   End
  39256.   CommandSet          = Command_ScriptedTransportDrops
  39257.  
  39258.   ; *** AUDIO Parameters ***
  39259.   SoundAmbient = C130AmbientLoop
  39260.   SoundAmbientRubble    = NoSound
  39261.  
  39262.   ; *** ENGINEERING Parameters ***
  39263.   RadarPriority = UNIT
  39264.   KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT FORCEATTACKABLE IGNORED_IN_GUI
  39265.   Body = ActiveBody ModuleTag_03
  39266.     MaxHealth       = 1000.0
  39267.     InitialHealth   = 1000.0
  39268.   End
  39269.  
  39270.   ExperienceValue     = 40 40 40 40  ; Experience point value at each level
  39271.  
  39272.   Behavior = PhysicsBehavior ModuleTag_04
  39273.     Mass = 500.0
  39274.   End
  39275.  
  39276.   Behavior = DeliverPayloadAIUpdate ModuleTag_05
  39277.     DoorDelay = 500
  39278.     MaxAttempts = 4
  39279.     DropOffset = X:0 Y:0 Z:-10
  39280.     DropDelay = 300 ;500 ; time in between each item dropped (if more than one)
  39281.     PutInContainer = AmericaParachute
  39282.     DeliveryDistance = 150
  39283.   End
  39284.   Locomotor = SET_NORMAL B52Locomotor
  39285.  
  39286.   Behavior = TransportContain ModuleTag_06
  39287.     Slots = 100                     ; hey, it's a BIG transport
  39288.     ScatterNearbyOnExit = No
  39289.     OrientLikeContainerOnExit = Yes
  39290.     KeepContainerVelocityOnExit = Yes
  39291.     ExitPitchRate = 30
  39292.     ExitBone = WeaponA01
  39293.     AllowInsideKindOf  = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE FORCEATTACKABLE
  39294.     DoorOpenTime = 0                ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em
  39295.     NumberOfExitPaths = 0
  39296.     DestroyRidersWhoAreNotFreeToExit = Yes  ; 'destroy' as opposed to 'kill'
  39297.   End
  39298.  
  39299.   ;SCRIPTED SUPPORT: These special powers are triggered directly 
  39300.   ;from the transport without creating a transport. This is done 
  39301.   ;via new code support and CreateLocation USE_OWNER_OBJECT -- 
  39302.   ;which also prevents creating the payload transport.
  39303.   Behavior    = OCLSpecialPower ModuleTag_07
  39304.     SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@
  39305.     OCL                  = SUPERWEAPON_DaisyCutter
  39306.     CreateLocation       = USE_OWNER_OBJECT
  39307.   End
  39308.   Behavior    = OCLSpecialPower ModuleTag_08
  39309.     SpecialPowerTemplate = SuperweaponParadropAmerica
  39310.     UpgradeOCL           = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3
  39311.     UpgradeOCL           = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2
  39312.     OCL                  = SUPERWEAPON_Paradrop1
  39313.     CreateLocation       = USE_OWNER_OBJECT
  39314.   End 
  39315.   Behavior    = OCLSpecialPower ModuleTag_09
  39316.     SpecialPowerTemplate = SuperweaponCarpetBomb
  39317.     OCL                  = SUPERWEAPON_CarpetBomb
  39318.     CreateLocation       = USE_OWNER_OBJECT
  39319.   End 
  39320.  
  39321.   Behavior                          = JetSlowDeathBehavior ModuleTag_10
  39322.     DestructionDelay                = 2000 
  39323.     RollRate                        = 0.0
  39324.     RollRateDelta                   = 100%      ;each frame, rollrate = rollrate * rollrateDelta
  39325.     PitchRate                       = 0
  39326.     FallHowFast                     = 25.0%    ;Bigger is faster (can be over 100%,it's a fraction of gravity)
  39327.     FXInitialDeath                  = FX_JetBigDeathInitial
  39328.     OCLInitialDeath                 = OCL_AmericaJetCargoDeathStart
  39329.     DelaySecondaryFromInitialDeath  = 2000       ; in milliseconds     This guy won't hit the ground, so this time equals the above time
  39330.     OCLSecondary                    = OCL_AmericaJetCargoHulkDeath
  39331.     FXSecondary                     = FX_BigPlaneDeath
  39332.   End
  39333.  
  39334.   ClientUpdate         = AnimatedParticleSysBoneClientUpdate ModuleTag_11
  39335.   End
  39336.  
  39337.   Behavior = TransitionDamageFX ModuleTag_12
  39338.     DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  39339.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition
  39340.   End
  39341.  
  39342.   Geometry = Box
  39343.   GeometryIsSmall = No
  39344.   GeometryMajorRadius = 40.0
  39345.   GeometryMinorRadius = 10.0
  39346.   GeometryHeight = 10.0
  39347.   Shadow = SHADOW_VOLUME
  39348.   ShadowSizeX = 89  ; minimum elevation angle above horizon. Used to limit shadow length
  39349.  
  39350. End
  39351.  
  39352. ;------------------------------------------------------------------------------
  39353. Object AmericaTankLeclerc
  39354.  
  39355.   ; *** ART Parameters ***
  39356.   SelectPortrait         = Leclercicon
  39357.   ButtonImage            = Leclercicon
  39358.   
  39359.   UpgradeCameo1 = Upgrade_AmericaBattleDrone
  39360.   UpgradeCameo2 = Upgrade_AmericaScoutDrone
  39361.   UpgradeCameo3 = Upgrade_AmericaAdvancedTraining
  39362.   UpgradeCameo4 = Upgrade_AmericaCompositeArmor
  39363.   ;UpgradeCameo5 = NONE
  39364.   
  39365.   Draw = W3DTankDraw ModuleTag_01
  39366.     DefaultConditionState
  39367.       Model               = AvLeclerc
  39368.       Turret              = Turret
  39369.       WeaponFireFXBone    = PRIMARY WEAPONA01
  39370.       WeaponRecoilBone    = PRIMARY BARREL
  39371.       WeaponMuzzleFlash   = PRIMARY TURRETFX
  39372.       WeaponLaunchBone    = PRIMARY WEAPONA01
  39373.     End
  39374.     ConditionState       = REALLYDAMAGED
  39375.       Model              = AvLeclerc_D
  39376.     End
  39377.     ConditionState       = RUBBLE
  39378.       Model              = AvLeclerc_D
  39379.     End
  39380.  
  39381.     TrackMarks           = EXTnkTrack.tga
  39382.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  39383.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  39384.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  39385.     OkToChangeModelColor = Yes
  39386.   End
  39387.  
  39388.   ; ***DESIGN parameters ***
  39389.   DisplayName      = OBJECT:Leclerc
  39390.   Side                   = America
  39391.   EditorSorting          = VEHICLE
  39392.   TransportSlotCount     = 3
  39393.   WeaponSet
  39394.     Conditions           = None 
  39395.     Weapon               = PRIMARY LeclercTankGun
  39396.     ; Uncomment this when we want the crusader to have a machine too again
  39397.     ;Weapon               = SECONDARY CrusaderMachineGun
  39398.   End
  39399.   ArmorSet
  39400.     Conditions           = None
  39401.     Armor                = TankArmor
  39402.     DamageFX             = TankDamageFX
  39403.   End
  39404.   ;ArmorSet
  39405.   ;  Conditions           = PLAYER_UPGRADE
  39406.   ;  Armor                = UpgradedTankArmor
  39407.   ;  DamageFX             = TankDamageFX
  39408.   ;End
  39409.   BuildCost              = 1100
  39410.   BuildTime              = 16.0          ;in seconds    
  39411.   VisionRange            = 150
  39412.   ShroudClearingRange = 300
  39413.   Prerequisites
  39414.     Science = SCIENCE_Rank2
  39415.     Object = AmericaWarFactory
  39416.   End
  39417.   ExperienceValue        = 100 100 200 400 ;Experience point value at each level
  39418.   ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level
  39419.   IsTrainable            = Yes  ;Can gain experience
  39420.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  39421.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  39422.   CommandSet             = AmericaTankCrusaderCommandSet
  39423.   
  39424.   ; *** AUDIO Parameters ***
  39425.   VoiceSelect           = CrusaderTankVoiceSelect
  39426.   VoiceMove             = CrusaderTankVoiceMove
  39427.   VoiceGuard            = CrusaderTankVoiceMove
  39428.   VoiceAttack           = CrusaderTankVoiceAttack
  39429.   SoundMoveStart        = CrusaderTankMoveStart
  39430.   SoundMoveStartDamaged = CrusaderTankMoveStart
  39431.   UnitSpecificSounds
  39432.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  39433.     VoiceCreate         = CrusaderTankVoiceCreate
  39434.     VoiceEnter             = CrusaderTankVoiceMove
  39435.     TurretMoveStart     = NoSound
  39436.     TurretMoveLoop      = TurretMoveLoop
  39437.     SoundEject          = PilotSoundEject
  39438.     VoiceEject          = PilotVoiceEject
  39439.     VoiceCrush          = CrusaderTankVoiceCrush
  39440.   End
  39441.  
  39442.   ; *** ENGINEERING Parameters ***
  39443.   RadarPriority          = UNIT
  39444.   KindOf                 = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  39445.   
  39446.   Body                   = ActiveBody ModuleTag_02
  39447.     MaxHealth       = 480
  39448.     InitialHealth   = 480
  39449.   End
  39450.  
  39451.   Behavior = AIUpdateInterface ModuleTag_03
  39452.     Turret
  39453.       TurretTurnRate       = 200 ;60   // turn rate, in degrees per sec
  39454.       ControlledWeaponSlots= PRIMARY
  39455.     End
  39456.     AutoAcquireEnemiesWhenIdle = Yes
  39457.   End
  39458.   Locomotor            = SET_NORMAL CrusaderLocomotor
  39459.   Behavior = PhysicsBehavior ModuleTag_04
  39460.     Mass                 = 50.0
  39461.   End
  39462.  
  39463.   Behavior = ObjectCreationUpgrade ModuleTag_05
  39464.     UpgradeObject = OCL_AmericanBattleDrone
  39465.     TriggeredBy   = Upgrade_AmericaBattleDrone
  39466.     ConflictsWith = Upgrade_AmericaScoutDrone
  39467.   End
  39468.   Behavior = ObjectCreationUpgrade ModuleTag_06
  39469.     UpgradeObject = OCL_AmericanScoutDrone
  39470.     TriggeredBy   = Upgrade_AmericaScoutDrone
  39471.     ConflictsWith = Upgrade_AmericaBattleDrone
  39472.   End
  39473.   Behavior = ProductionUpdate ModuleTag_07
  39474.     MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  39475.   End
  39476.  
  39477.   Behavior = ExperienceScalarUpgrade ModuleTag_08
  39478.     TriggeredBy   = Upgrade_AmericaAdvancedTraining
  39479.     AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
  39480.   End
  39481.   Behavior = MaxHealthUpgrade ModuleTag_09
  39482.     TriggeredBy   = Upgrade_AmericaCompositeArmor
  39483.     AddMaxHealth  = 100.0
  39484.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  39485.   End
  39486.  
  39487.   ; Turret fly off death
  39488.   Behavior = SlowDeathBehavior ModuleTag_10
  39489.     DeathTypes = ALL -CRUSHED -SPLATTED
  39490.     ProbabilityModifier  = 50
  39491.     DestructionDelay  = 500
  39492.     DestructionDelayVariance  = 100
  39493.     FX  = INITIAL  FX_GenericTankDeathEffect
  39494.     OCL = MIDPOINT OCL_LeclercTankDeathEffect
  39495.     FX  = FINAL    FX_GenericTankDeathExplosion
  39496.     OCL = FINAL    OCL_LeclercTurret
  39497.   End
  39498.  
  39499.   ; Catch fire, and explode death
  39500.   Behavior = SlowDeathBehavior ModuleTag_11
  39501.     DeathTypes = ALL -CRUSHED -SPLATTED
  39502.     ProbabilityModifier  = 50
  39503.     DestructionDelay  = 2000
  39504.     DestructionDelayVariance  = 300
  39505.     FX  = INITIAL  FX_CrusaderCatchFire
  39506.     OCL = FINAL    OCL_LeclercTankDeathEffect 
  39507.     FX  = FINAL    FX_GenericTankDeathExplosion
  39508.   End
  39509.  
  39510.   Behavior                 = TransitionDamageFX ModuleTag_12
  39511.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
  39512.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  39513.   End
  39514.  
  39515.   Behavior = DestroyDie ModuleTag_13
  39516.     DeathTypes = NONE +CRUSHED +SPLATTED
  39517.   End
  39518.  
  39519.   ; A crushing defeat
  39520.   Behavior = FXListDie ModuleTag_14
  39521.     DeathTypes = NONE +CRUSHED +SPLATTED
  39522.     DeathFX = FX_CarCrush
  39523.   End
  39524.  
  39525.   Behavior = CreateObjectDie ModuleTag_15
  39526.     DeathTypes = NONE +CRUSHED +SPLATTED
  39527.     CreationList = OCL_LeclercTank_CrushEffect
  39528.   End
  39529.  
  39530.   Behavior                    = CreateCrateDie ModuleTag_CratesChange
  39531.    CrateData             = SalvageCrateData
  39532.    ;CrateData             = EliteTankCrateData
  39533.    ;CrateData             = HeroicTankCrateData
  39534.   End
  39535.  
  39536.   Behavior = EjectPilotDie ModuleTag_17
  39537.     GroundCreationList = OCL_EjectPilotOnGround
  39538.     AirCreationList = OCL_EjectPilotViaParachute
  39539.     ExemptStatus = HIJACKED
  39540.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  39541.   End
  39542.  
  39543.   Behavior = MaxHealthUpgrade ModuleTag_18
  39544.     TriggeredBy   = Upgrade_AmericaCompositeArmor
  39545.     AddMaxHealth  = 100.0
  39546.     ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  39547.   End
  39548.  
  39549.   Behavior = FlammableUpdate ModuleTag_21
  39550.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  39551.     AflameDamageAmount = 3       ; taking this much damage...
  39552.     AflameDamageDelay = 500       ; this often.
  39553.   End
  39554.  
  39555.   Geometry               = BOX
  39556.   GeometryMajorRadius    = 15.0
  39557.   GeometryMinorRadius    = 10.0
  39558.   GeometryHeight         = 10.0     
  39559.   GeometryIsSmall        = Yes    
  39560.   Shadow = SHADOW_VOLUME
  39561.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length
  39562.  
  39563. End
  39564.  
  39565. ;------------------------------------------------------------------------------
  39566. Object AmericaTankPatriot
  39567.  
  39568.   ; *** ART Parameters ***
  39569.   SelectPortrait         = patriottankicon
  39570.   ButtonImage            = patriottankicon
  39571.   
  39572.   UpgradeCameo1 = Upgrade_AmericaScoutDrone
  39573.   UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  39574.   ;UpgradeCameo3 = Upgrade_AmericaBattleDrone
  39575.   ;UpgradeCameo4 = NONE
  39576.   ;UpgradeCameo5 = NONE
  39577.   
  39578.   Draw                      = W3DTankDraw ModuleTag_01
  39579.     OkToChangeModelColor    = Yes
  39580.     
  39581.     DefaultConditionState        
  39582.       Model               = Patriottank
  39583.       Turret              = TURRET
  39584.       TurretPitch         = TURRETEL
  39585.       WeaponLaunchBone  = PRIMARY   WEAPONA
  39586.       WeaponFireFXBone  = PRIMARY   WEAPONA
  39587.       WeaponLaunchBone  = SECONDARY   WEAPONA
  39588.       WeaponFireFXBone  = SECONDARY   WEAPONA
  39589.       WeaponLaunchBone  = TERTIARY   WEAPONA
  39590.       WeaponFireFXBone  = TERTIARY   WEAPONA
  39591.     End
  39592.  
  39593.     ConditionState        = REALLYDAMAGED RUBBLE         
  39594.       Model               = Patriottank_d
  39595.     End
  39596.  
  39597.     TrackMarks              = EXTnkTrack.tga
  39598.     TreadAnimationRate      = 2.0  ; amount of tread texture to move per second
  39599.     TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
  39600.     TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  39601.   End
  39602.  
  39603.   ; ***DESIGN parameters ***
  39604.   DisplayName               = OBJECT:Patriottank
  39605.   Side                      = America
  39606.   EditorSorting             = VEHICLE
  39607.   TransportSlotCount        = 3            ;how many "slots" we take in a transport (0 == not transportable)
  39608.  
  39609.   WeaponSet
  39610.     Conditions              = None 
  39611.     Weapon                  = PRIMARY   PatriottankWeapon
  39612.     PreferredAgainst        = PRIMARY   VEHICLE INFANTRY
  39613.     Weapon                  = SECONDARY PatriottankWeaponAir
  39614.     PreferredAgainst        = SECONDARY AIRCRAFT
  39615.   End
  39616.  
  39617.   WeaponSet
  39618.     Conditions              = PLAYER_UPGRADE
  39619.     Weapon                  = PRIMARY   PatriottankWeaponLaser
  39620.     PreferredAgainst        = PRIMARY   INFANTRY VEHICLE
  39621.     Weapon                  = SECONDARY PatriottankWeaponAirLaser
  39622.     PreferredAgainst        = SECONDARY AIRCRAFT
  39623.   End
  39624.  
  39625.   ArmorSet
  39626.     Conditions    = None
  39627.     Armor         = AntiAirVehicle
  39628.     DamageFX      = TankDamageFX
  39629.   End
  39630.   BuildCost       = 1500
  39631.   BuildTime       = 16.0          ;in seconds    
  39632.   VisionRange     = 150
  39633.   ShroudClearingRange = 250
  39634.   Prerequisites
  39635.     Object        = AmericaWarFactory
  39636.     Object        = AmericaStrategyCenter
  39637.     Object        = AmericaPatriotBattery
  39638.   End
  39639.  
  39640.   ExperienceValue = 50 50 100 150  ;Experience point value at each level
  39641.   ExperienceRequired = 0 100 150 300  ;Experience points needed to gain each level
  39642.   IsTrainable = Yes             ;Can gain experience
  39643.   CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  39644.   CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  39645.  
  39646.   CommandSet      = AmericaVehiclePatriottankCommandSet
  39647.  
  39648.   Behavior = AIUpdateInterface ModuleTag_20
  39649.     AutoAcquireEnemiesWhenIdle = Yes
  39650.     MoodAttackCheckRate        = 250
  39651.   End
  39652.  
  39653.   ; *** AUDIO Parameters ***
  39654.   VoiceSelect     = GattlingTankVoiceSelect
  39655.   VoiceMove       = GattlingTankVoiceMove
  39656.   VoiceGuard      = GattlingTankVoiceMove
  39657.   VoiceAttack     = GattlingTankVoiceAttack
  39658.   SoundMoveStart  = GattlingTankMoveStart
  39659.   SoundMoveStartDamaged = GattlingTankMoveStart
  39660.  
  39661.   UnitSpecificSounds
  39662.     ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
  39663.     VoiceCreate     = GattlingTankVoiceCreate
  39664.     TurretMoveStart = NoSound
  39665.     TurretMoveLoop  = TurretMoveLoopLoud
  39666.     VoiceCrush      = GattlingTankVoiceCrush
  39667.     VoiceEnter      = GattlingTankVoiceMove
  39668.     VoiceRapidFire  = GattlingTankVoiceRapid
  39669.   End
  39670.  
  39671.   ; *** ENGINEERING Parameters ***
  39672.   RadarPriority     = UNIT
  39673.   KindOf            = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  39674.   
  39675.   Body              = ActiveBody ModuleTag_02
  39676.     MaxHealth       = 290.0
  39677.     InitialHealth   = 290.0
  39678.   End
  39679.   Behavior = AIUpdateInterface ModuleTag_03
  39680.     Turret
  39681.       ControlledWeaponSlots = PRIMARY SECONDARY
  39682.       TurretTurnRate      = 180   // turn rate, in degrees per sec
  39683.       TurretPitchRate     = 180
  39684.       AllowsPitch         = Yes
  39685.       FiresWhileTurning   = Yes
  39686.       NaturalTurretPitch  = 35
  39687.       GroundUnitPitch     = 30
  39688.       MinPhysicalPitch    = -20
  39689.       MinIdleScanInterval = 250    ; in milliseconds
  39690.       MaxIdleScanInterval = 250    ; in milliseconds
  39691.       MinIdleScanAngle    = 0       ; in degrees off the natural turret angle
  39692.       MaxIdleScanAngle    = 360     ; in degrees off the natural turret angle
  39693.     End
  39694.     AutoAcquireEnemiesWhenIdle = Yes
  39695.   End
  39696.   Locomotor       = SET_NORMAL PatriottankLocomotor
  39697.   Behavior          = PhysicsBehavior ModuleTag_04
  39698.     Mass            = 40.0
  39699.   End
  39700.  
  39701. ;  Behavior               = DestroyDie 
  39702. ;    ;nothing
  39703. ;  End
  39704.     
  39705.   ; Just explode death
  39706.   Behavior = SlowDeathBehavior ModuleTag_05
  39707.     ProbabilityModifier = 19
  39708.     DestructionDelay = 200
  39709.     DestructionDelayVariance = 100
  39710.  
  39711.     SinkRate = 0.5     ; in Dist/Sec
  39712.  
  39713.     OCL = FINAL    OCL_AmericaTankPatriotDebris
  39714.     FX  = FINAL    FX_GattlingExplosionOneFinal
  39715.   End
  39716.  
  39717.   Behavior = ObjectCreationUpgrade ModuleTag_97
  39718.     UpgradeObject = OCL_AmericanScoutDrone
  39719.     TriggeredBy   = Upgrade_AmericaScoutDrone
  39720.     ConflictsWith = Upgrade_AmericaBattleDrone
  39721.   End
  39722.   Behavior = ProductionUpdate ModuleTag_07
  39723.     MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  39724.   End
  39725.  
  39726.   Behavior = ExperienceScalarUpgrade ModuleTag_08
  39727.     TriggeredBy   = Upgrade_AmericaAdvancedTraining
  39728.     AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
  39729.   End
  39730.  
  39731.   Behavior = TransitionDamageFX ModuleTag_07
  39732.     ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
  39733.     ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
  39734.   End
  39735.  
  39736.   Behavior = FlammableUpdate ModuleTag_21
  39737.     AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
  39738.     AflameDamageAmount = 3       ; taking this much damage...
  39739.     AflameDamageDelay = 500       ; this often.
  39740.   End
  39741.  
  39742.   Behavior = EjectPilotDie ModuleTag_17
  39743.     GroundCreationList = OCL_EjectPilotOnGround
  39744.     AirCreationList = OCL_EjectPilotViaParachute
  39745.     ExemptStatus = HIJACKED
  39746.     VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  39747.   End
  39748.  
  39749.   Behavior = WeaponSetUpgrade ModuleTag_99
  39750.     TriggeredBy = Upgrade_Veterancy_HEROIC
  39751.   End
  39752.  
  39753.   Geometry            = BOX
  39754.   GeometryMajorRadius = 15.0
  39755.   GeometryMinorRadius = 10.0
  39756.  
  39757.   GeometryHeight      = 15.0     
  39758.   GeometryIsSmall     = Yes
  39759.   Shadow              = SHADOW_VOLUME
  39760.   ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length    
  39761.  
  39762. End
  39763.  
  39764. ;------------------------------------------------------------------------------
  39765. Object AmericaSpecialTomahawk
  39766.  
  39767.   ; *** ART Parameters ***
  39768.   Draw = W3DModelDraw ModuleTag_01
  39769.     OkToChangeModelColor = Yes
  39770.     ConditionState = NONE
  39771.       Model = AVTomahawk_M2
  39772.       ParticleSysBone = NONE ArtilleryBarrageTrail
  39773.       ParticleSysBone = NONE ArtilleryBarrageTrailRing
  39774.       ParticleSysBone = ENGINE01 JetLenzflare
  39775.       ParticleSysBone = EFFECT01 JetContrail
  39776. ;      ParticleSysBone = EFFECT02 JetContrail
  39777.       ParticleSysBone = EFFECT03 JetContrail
  39778. ;      ParticleSysBone = EFFECT04 JetContrail
  39779.     End
  39780.   End
  39781.  
  39782.   ; ***DESIGN parameters ***
  39783.   DisplayName      = OBJECT:TomahawkMissile
  39784.   EditorSorting   = SYSTEM
  39785.   VisionRange = 0.0  
  39786.   ArmorSet
  39787.     Conditions      = None
  39788.     ;*Be careful with this type, use in conjunction with KindOf = BALLISTIC_MISSILE to restrict targeting
  39789.     ;*to select weapons, because ballistic missile armor is weak! Weapons capable of targeting must have
  39790.     ;*AntiBallisticMissile = Yes set in the Weapon.ini.
  39791.     Armor           = BallisticMissileArmor 
  39792.     DamageFX        = None
  39793.   End
  39794.  
  39795.   ; *** ENGINEERING Parameters ***
  39796.   KindOf = PROJECTILE BALLISTIC_MISSILE 
  39797.   Body = ActiveBody ModuleTag_02
  39798.     MaxHealth       = 200.0
  39799.     InitialHealth   = 100.0
  39800.   End
  39801.  
  39802. ; ---- begin Projectile death behaviors
  39803.   Behavior = InstantDeathBehavior DeathModuleTag_01
  39804.     DeathTypes = NONE +DETONATED
  39805.     ; we detonated normally.
  39806.     FX          = WeaponFX_TomahawkMissileDetonation
  39807.   End
  39808.   Behavior = InstantDeathBehavior DeathModuleTag_02
  39809.     DeathTypes = NONE +LASERED
  39810.     ; shot down by laser.
  39811.     FX         = FX_GenericMissileDisintegrate
  39812.     OCL        = OCL_GenericMissileDisintegrate
  39813.   End
  39814.   Behavior = InstantDeathBehavior DeathModuleTag_03
  39815.     DeathTypes = ALL -LASERED -DETONATED
  39816.     ; shot down by nonlaser.
  39817.     FX         = FX_GenericMissileDeath
  39818.   End
  39819. ; ---- end Projectile death behaviors
  39820.     
  39821.   Behavior = PhysicsBehavior ModuleTag_06
  39822.     Mass = 1
  39823.   End
  39824.  
  39825.   Behavior = MissileAIUpdate ModuleTag_07
  39826.     TryToFollowTarget = Yes 
  39827.     FuelLifetime = 4000
  39828.     IgnitionDelay = 0
  39829.     IgnitionFX = FX_TomahawkIgnition
  39830.     InitialVelocity = 50                ; in dist/sec
  39831.     DistanceToTravelBeforeTurning = 80
  39832.     DistanceToTargetBeforeDiving = 100 ; When I hit this close to target, I ignore PreferredHeight. 
  39833.     ; Note, if this is too small, the missile will turn too late to hit.  And, since we have a 2D 
  39834.     ; heart, being over the target counts as "there", so we'll give up and just go straight.
  39835.  
  39836.     DistanceToTargetForLock = 10 ; Short lock on, as it looks better flying.  jba.
  39837.   End
  39838.   Locomotor = SET_NORMAL TomahawkMissileLocomotor
  39839.  
  39840.   Geometry = Cylinder ; Since collision extents can't tilt, this is a little fake
  39841.   GeometryMajorRadius = 8.0
  39842.   GeometryHeight = 4.0
  39843.   GeometryIsSmall = Yes    
  39844.  
  39845.   Shadow = SHADOW_DECAL
  39846. End
  39847.  
  39848. ;------------------------------------------------------------------------------
  39849. Object GLAInfantryWorker
  39850.  
  39851.   ; *** ART Parameters ***
  39852.   SelectPortrait         = SUWorker_L
  39853.   ButtonImage            = SUWorker
  39854.   
  39855.   ;UpgradeCameo1 = NONE
  39856.   ;UpgradeCameo2 = NONE
  39857.   ;UpgradeCameo3 = NONE
  39858.   ;UpgradeCameo4 = NONE
  39859.   ;UpgradeCameo5 = NONE
  39860.  
  39861.   Draw = W3DModelDraw ModuleTag_01
  39862.     OkToChangeModelColor = Yes
  39863.  
  39864.     DefaultConditionState
  39865.       Model         = UIWRKR_SKN
  39866.       IdleAnimation = UIWRKR_SKL.UIWRKR_STA 0 9
  39867.       IdleAnimation = UIWRKR_SKL.UIWRKR_IDA
  39868.       AnimationMode = ONCE
  39869.       TransitionKey = TRANS_Stand
  39870.     End
  39871.  
  39872.     ConditionState  = MOVING
  39873.       Animation     = UIWRKR_SKL.UIWRKR_RNA 16
  39874.       AnimationMode = LOOP
  39875.       Flags         = RANDOMSTART
  39876.       TransitionKey = TRANS_Moving
  39877.       ParticleSysBone = None InfantryDustTrails
  39878.     End
  39879.     ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
  39880.     ; since we flip the bit once we get pretty close to the target. but it looks
  39881.     ; funky to do the construction animation while moving. 
  39882.     ; so just use the normal move animation in that case.
  39883.     AliasConditionState = ACTIVELY_CONSTRUCTING MOVING
  39884.  
  39885.     ConditionState = ATTACKING
  39886.       ShowSubObject = MINED_SKIN
  39887.       Animation = UIWRKR_SKL.UIWRKR_MS
  39888.       AnimationMode = LOOP
  39889.       Flags = RANDOMSTART
  39890.       TransitionKey = TRANS_MetalDetector_Standing
  39891.     End
  39892.  
  39893.     ConditionState = MOVING ATTACKING
  39894.       ShowSubObject = MINED_SKIN
  39895.       Animation = UIWRKR_SKL.UIWRKR_MSW 50
  39896.       AnimationMode = LOOP
  39897.       Flags = RANDOMSTART
  39898.       TransitionKey = TRANS_MetalDetector_Moving
  39899.       ParticleSysBone = None InfantryDustTrails
  39900.     End
  39901.     AliasConditionState = MOVING ATTACKING CARRYING
  39902.  
  39903.     TransitionState = TRANS_Stand TRANS_MetalDetector_Standing    ;STANDING -> ATTACKING
  39904.       ShowSubObject = MINED_SKIN
  39905.       Animation     = UIWRKR_SKL.UIWRKR_TRB1;take out standing
  39906.       AnimationMode = ONCE
  39907.     End
  39908.     TransitionState = TRANS_MetalDetector_Standing TRANS_Stand    ;ATTACKING -> STANDING
  39909.       ShowSubObject = MINED_SKIN
  39910.       Animation     = UIWRKR_SKL.UIWRKR_TRB2;put away standing
  39911.       AnimationMode = ONCE
  39912.     End
  39913.  
  39914.     TransitionState = TRANS_Carry TRANS_MetalDetector_Standing    ;CARRYING -> ATTACKING
  39915.       ShowSubObject = MINED_SKIN
  39916.       Animation     = UIWRKR_SKL.UIWRKR_TRB1;take out standing
  39917.       AnimationMode = ONCE
  39918.     End
  39919.     TransitionState = TRANS_MetalDetector_Standing TRANS_Carry    ;ATTACKING -> CARRYING
  39920.       ShowSubObject = MINED_SKIN
  39921.       Animation     = UIWRKR_SKL.UIWRKR_TRB2;put away standing
  39922.       AnimationMode = ONCE
  39923.     End
  39924.     TransitionState = TRANS_Carry TRANS_MetalDetector_Moving      ;CARRYING -> MOVING ATTACKING
  39925.       ShowSubObject = MINED_SKIN
  39926.       Animation     = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
  39927.       AnimationMode = ONCE
  39928.       AnimationSpeedFactorRange = 2.0 2.0
  39929.     End
  39930.  
  39931.     TransitionState = TRANS_MetalDetector_Moving TRANS_Stand      ;MOVING ATTACKING -> STANDING
  39932.       ShowSubObject = MINED_SKIN
  39933.       Animation     = UIWRKR_SKL.UIWRKR_TRB2;put away moving
  39934.       AnimationMode = ONCE
  39935.     End
  39936.     TransitionState = TRANS_Stand TRANS_MetalDetector_Moving      ;STANDING -> MOVING ATTACKING
  39937.       ShowSubObject = MINED_SKIN
  39938.       Animation     = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
  39939.       AnimationMode = ONCE
  39940.       AnimationSpeedFactorRange = 2.0 2.0
  39941.     End
  39942.  
  39943.     TransitionState = TRANS_Moving TRANS_MetalDetector_Standing   ;MOVING -> ATTACKING [STANDING]
  39944.       ShowSubObject = MINED_SKIN
  39945.       Animation     = UIWRKR_SKL.UIWRKR_TRB1;take out standing
  39946.       AnimationMode = ONCE
  39947.     End
  39948.     TransitionState = TRANS_MetalDetector_Standing TRANS_Moving   ;ATTACKING [STANDING] -> MOVING
  39949.       ShowSubObject = MINED_SKIN
  39950.       Animation     = UIWRKR_SKL.UIWRKR_TRC2;put away moving [NEW NON-SKATING ANIMATION]
  39951.       AnimationMode = ONCE
  39952.       AnimationSpeedFactorRange = 2.0 2.0
  39953.     End
  39954.  
  39955.     TransitionState = TRANS_Moving TRANS_MetalDetector_Moving     ;MOVING -> MOVING ATTACKING
  39956.       ShowSubObject = MINED_SKIN
  39957.       Animation     = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
  39958.       AnimationMode = ONCE
  39959.       AnimationSpeedFactorRange = 2.0 2.0
  39960.     End
  39961.     TransitionState = TRANS_MetalDetector_Moving TRANS_Moving     ;MOVING ATTACKING -> MOVING
  39962.       ShowSubObject = MINED_SKIN
  39963.       Animation     = UIWRKR_SKL.UIWRKR_TRC2;put away moving [NEW NON-SKATING ANIMATION]
  39964.       AnimationMode = ONCE
  39965.       AnimationSpeedFactorRange = 2.0 2.0
  39966.     End
  39967.  
  39968.  
  39969.     ConditionState = MOVING CARRYING
  39970.       ShowSubObject = BOX
  39971.       Animation = UIWRKR_SKL.UIWRKR_CARY 12
  39972.       AnimationMode = LOOP
  39973.       Flags = RANDOMSTART
  39974.       TransitionKey = TRANS_Carry
  39975.       ParticleSysBone = None InfantryDustTrails
  39976.     End
  39977.     ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
  39978.     ; since we flip the bit once we get pretty close to the target. but it looks
  39979.     ; funky to do the construction animation while moving. 
  39980.     ; so just use the normal move animation in that case.
  39981.     AliasConditionState = ACTIVELY_CONSTRUCTING MOVING CARRYING
  39982.  
  39983.     ConditionState = CARRYING
  39984.       ShowSubObject = BOX
  39985.       Animation = UIWRKR_SKL.UIWRKR_CARST 30 
  39986.       AnimationMode = LOOP
  39987.       Flags = RANDOMSTART
  39988.       TransitionKey = TRANS_Carry
  39989.     End
  39990.  
  39991.     ConditionState = DYING
  39992.       Animation = UIWRKR_SKL.UIWRKR_DTA
  39993.       AnimationMode = ONCE
  39994.       TransitionKey = TRANS_Dying
  39995.     End
  39996.     AliasConditionState = DYING CARRYING
  39997.  
  39998.     TransitionState = TRANS_Dying TRANS_Flailing
  39999.       Animation = UIWRKR_SKL.UIWRKR_ADTE1
  40000.       AnimationMode = ONCE
  40001.     End
  40002.  
  40003.     ConditionState = DYING EXPLODED_FLAILING
  40004.       Animation = UIWRKR_SKL.UIWRKR_ADTE2
  40005.       AnimationMode = LOOP
  40006.       TransitionKey = TRANS_Flailing
  40007.     End
  40008.  
  40009.     ConditionState = DYING EXPLODED_BOUNCING
  40010.       Animation = UIWRKR_SKL.UIWRKR_ADTE3
  40011.       AnimationMode = ONCE
  40012.       TransitionKey = None
  40013.     End
  40014.  
  40015.     ConditionState  = SPECIAL_CHEERING
  40016.       Animation     = UIWRKR_SKL.UIWRKR_CHA
  40017.       AnimationMode = ONCE
  40018.     End
  40019.     
  40020.     ConditionState  = ACTIVELY_CONSTRUCTING
  40021.       Animation     = UIWRKR_SKL.UIWRKR_BDA
  40022.       AnimationMode = LOOP
  40023.       TransitionKey = TRANS_Constructing
  40024.     End
  40025.     AliasConditionState = ACTIVELY_CONSTRUCTING CARRYING
  40026.  
  40027.     ; --------------------
  40028.  
  40029.     TransitionState = TRANS_Stand TRANS_Carry
  40030.       ShowSubObject = BOX
  40031.       Animation     = UIWRKR_SKL.UIWRKR_PIK
  40032.       AnimationMode = ONCE
  40033.     End
  40034.  
  40035.     TransitionState = TRANS_Carry TRANS_Stand
  40036.       ShowSubObject = BOX
  40037.       Animation     = UIWRKR_SKL.UIWRKR_PIK
  40038.       AnimationMode = ONCE_BACKWARDS
  40039.       Flags         = START_FRAME_LAST
  40040.     End
  40041.     
  40042.     TransitionState = TRANS_Stand TRANS_Constructing
  40043.       Animation     = UIWRKR_SKL.UIWRKR_TRA1
  40044.       AnimationMode = ONCE
  40045.     End
  40046.  
  40047.     TransitionState = TRANS_Constructing TRANS_Stand
  40048.       Animation     = UIWRKR_SKL.UIWRKR_TRA2
  40049.       AnimationMode = ONCE
  40050.     End
  40051.   End
  40052.  
  40053.   ; ***DESIGN parameters ***
  40054.   DisplayName = OBJECT:Worker
  40055.   Side = GLA
  40056.   EditorSorting = INFANTRY
  40057.   TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  40058.  
  40059.  
  40060.   WeaponSet
  40061.     Conditions = None 
  40062.     Weapon = PRIMARY None
  40063.   End
  40064.   WeaponSet
  40065.     Conditions = MINE_CLEARING_DETAIL 
  40066.     Weapon = PRIMARY WorkerMineDisarmingWeapon
  40067.   End
  40068.  
  40069.  
  40070.   ArmorSet
  40071.     Conditions      = None
  40072.     Armor           = HumanArmor
  40073.     DamageFX        = InfantryDamageFX
  40074.   End
  40075.   VisionRange = 100
  40076.   ShroudClearingRange = 200
  40077.  ;Prerequisites
  40078.  ;  Object = GLABarracks GLASupplyStash ;commented out, or else you can't build from Con Yard as Dozer.
  40079.  ;End
  40080.   BuildCost = 200
  40081.   BuildTime = 5.0          ;in seconds    
  40082.   CrushableLevel         = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  40083.   CommandSet = GLAWorkerCommandSet
  40084.  
  40085.   ; *** AUDIO Parameters ***
  40086.   VoiceSelect = WorkerVoiceSelect
  40087.   VoiceMove = WorkerVoiceMove
  40088.   VoiceAttack = WorkerVoiceMove
  40089.   SoundDie = WorkerVoiceDie
  40090.   SoundDieFire = DieByFireGLA
  40091.   SoundDieToxin = DieByToxinChina
  40092.   VoiceGuard = WorkerVoiceMove
  40093.   VoiceFear = WorkerVoiceFear
  40094.   VoiceTaskComplete = WorkerVoiceBuildComplete
  40095.   UnitSpecificSounds
  40096.     VoiceEnter = WorkerVoiceMove
  40097.     VoiceEnterHostile = WorkerVoiceMove
  40098.     VoiceGarrison     = WorkerVoiceGarrison
  40099.     VoiceCreate       = WorkerVoiceCreate
  40100.     VoiceSupply       = WorkerVoiceSupply
  40101.     VoiceNoBuild      = WorkerVoiceBuildNot
  40102.     VoiceRepair       = WorkerVoiceRepair
  40103.     VoiceDisarm       = WorkerVoiceClearMine
  40104.     VoiceBuildResponse = WorkerVoiceBuild
  40105.     VoiceGetHealed      = WorkerVoiceMove
  40106.  
  40107.   End
  40108.  
  40109.   ; *** ENGINEERING Parameters ***
  40110.   RadarPriority = UNIT
  40111.   KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER DOZER HARVESTER SCORE
  40112.  
  40113.   Body = ActiveBody ModuleTag_02
  40114.     MaxHealth       = 140.0
  40115.     InitialHealth   = 140.0
  40116.   End
  40117.  
  40118.   Behavior = WorkerAIUpdate ModuleTag_03
  40119.     RepairHealthPercentPerSecond  = 2%    ; % of max health to repair each second
  40120.     BoredTime                     = 5000  ; in milliseconds
  40121.     BoredRange                    = 150   ; when bored, we look this far away to do something 
  40122.     MaxBoxes                      = 1
  40123.     SupplyCenterActionDelay       = 150 ;400 ; ms for whole thing (one transaction)
  40124.     SupplyWarehouseActionDelay    = 150 ;400 ;ms per box (many small transactions)
  40125.     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)
  40126.     SuppliesDepletedVoice = WorkerVoiceSuppliesDepleted
  40127.     ; the only "enemies" that workers can acquire are mines, to be disarmed...
  40128.     AutoAcquireEnemiesWhenIdle    = Yes
  40129.   End
  40130.   Locomotor = SET_NORMAL FastHumanLocomotor
  40131.   Behavior = PhysicsBehavior ModuleTag_04
  40132.     Mass = 5.0
  40133.   End
  40134.  
  40135.   Behavior = SquishCollide ModuleTag_06
  40136.     ;nothing
  40137.   End
  40138.  
  40139. ; --- begin Death modules ---
  40140.   Behavior = SlowDeathBehavior ModuleTag_Death01
  40141.     DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
  40142.     SinkDelay           = 3000
  40143.     SinkRate            = 0.5     ; in Dist/Sec
  40144.     DestructionDelay    = 8000
  40145.     FX                  = INITIAL FX_GIDie
  40146.   End
  40147.   Behavior = SlowDeathBehavior ModuleTag_Death02
  40148.     DeathTypes          = NONE +CRUSHED +SPLATTED
  40149.     SinkDelay           = 3000
  40150.     SinkRate            = 0.5     ; in Dist/Sec
  40151.     DestructionDelay    = 8000
  40152.     FX                  = INITIAL FX_GIDieCrushed
  40153.   End
  40154.   Behavior = SlowDeathBehavior ModuleTag_Death03
  40155.     DeathTypes          = NONE +EXPLODED
  40156.     SinkDelay           = 3000
  40157.     SinkRate            = 0.5     ; in Dist/Sec
  40158.     DestructionDelay    = 8000
  40159.     FX                  = INITIAL FX_GIDie
  40160.     FlingForce          = 8
  40161.     FlingForceVariance  = 3
  40162.     FlingPitch          = 60
  40163.     FlingPitchVariance  = 10
  40164.   End
  40165.   Behavior = SlowDeathBehavior ModuleTag_Death04
  40166.     DeathTypes          = NONE +BURNED
  40167.     DestructionDelay    = 0
  40168.     FX                  = INITIAL FX_GIDie
  40169.     OCL                 = INITIAL OCL_FlamingInfantry
  40170.   End
  40171.   Behavior = SlowDeathBehavior ModuleTag_Death05
  40172.     DeathTypes          = NONE +POISONED
  40173.     DestructionDelay    = 0
  40174.     FX                  = INITIAL FX_GIDie
  40175.     OCL                 = INITIAL OCL_ToxicInfantry
  40176.   End
  40177.   Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
  40178.     DeathTypes          = NONE +POISONED_BETA
  40179.     DestructionDelay    = 0
  40180.     FX                  = INITIAL FX_GIDie
  40181.     OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  40182.   End
  40183. ; --- end Death modules ---
  40184.  
  40185.   Behavior = StealthDetectorUpdate ModuleTag_12
  40186.     DetectionRate         = 500   ; how often to rescan for stealthed things in my sight (msec)
  40187.     ;DetectionRange       = ??? ;Dustin, enable this for independant balancing!
  40188.     CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
  40189.     CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
  40190.     ExtraRequiredKindOf   = MINE  ; we can only detect MINES, not other stealthed things
  40191.   End
  40192.  
  40193.   Behavior = PoisonedBehavior ModuleTag_13
  40194.     PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
  40195.     PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  40196.   End
  40197.  
  40198.     Behavior = CommandSetUpgrade ModuleTag_95
  40199.         CommandSet = GLAWorkerCommandSet2
  40200.         TriggeredBy = Upgrade_MenuAuswahl1
  40201.         ConflictsWith = Upgrade_MenuAuswahl2
  40202.     End
  40203.     Behavior = CommandSetUpgrade ModuleTag_96
  40204.         CommandSet = GLAWorkerCommandSet
  40205.         TriggeredBy = Upgrade_MenuAuswahl2
  40206.         ConflictsWith = Upgrade_MenuAuswahl1
  40207.     End
  40208.     Behavior = ObjectCreationUpgrade ModuleTag_97
  40209.         UpgradeObject = OCL_DozerHelp1
  40210.         TriggeredBy = Upgrade_MenuAuswahl1
  40211.         ConflictsWith = Upgrade_MenuAuswahl2
  40212.     End
  40213.     Behavior = ObjectCreationUpgrade ModuleTag_98
  40214.         UpgradeObject = OCL_DozerHelp2
  40215.         TriggeredBy = Upgrade_MenuAuswahl2
  40216.         ConflictsWith = Upgrade_MenuAuswahl1
  40217.     End
  40218.  
  40219.     Behavior = ProductionUpdate ModuleTag_99
  40220.         MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  40221.     End
  40222.  
  40223.   Geometry = CYLINDER
  40224.   GeometryMajorRadius = 10.0
  40225.   GeometryMinorRadius = 10.0
  40226.   GeometryHeight = 12.0
  40227.   GeometryIsSmall = Yes
  40228.   Shadow = SHADOW_DECAL
  40229.   ShadowSizeX = 14;
  40230.   ShadowSizeY = 14;
  40231.   ShadowTexture = ShadowI;
  40232.   BuildCompletion = APPEARS_AT_RALLY_POINT
  40233.  
  40234. End
  40235.