[ Index ] WAROFGENERALS

PHP Cross Reference of WAROFGENERALS MODS SOURCES

title

Body

[close]

/Command and conquer Heure H/Light of five stars/INI/Object/ -> AmericaInfantry.ini (source)

   1  
   2  ;------------------------------------------------------------------------------
   3  Object AmericaInfantryColonelBurton
   4  
   5    ; *** ART Parameters ***
   6    SelectPortrait         = SABurton_L
   7    ButtonImage            = SABurton
   8    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
   9    UpgradeCameo2 = Upgrade_AmericaChemicalSuits
  10  
  11    Draw = W3DModelDraw ModuleTag_01
  12    OkToChangeModelColor = Yes
  13  
  14      ; idle
  15      DefaultConditionState
  16        Model               = AIHERO_SKN
  17        IdleAnimation       = AIHERO_SKL.AIHERO_STA 0 25
  18        IdleAnimation       = AIHERO_SKL.AIHERO_IDA
  19        IdleAnimation       = AIHERO_SKL.AIHERO_IDB
  20        AnimationMode       = ONCE
  21        TransitionKey       = TRANS_Stand
  22        WeaponFireFXBone    = PRIMARY Muzzle
  23        WeaponMuzzleFlash   = PRIMARY MuzzleFX
  24        WeaponMuzzleFlash   = SECONDARY NONE
  25        HideSubObject     = MUZZLEFX01
  26      End
  27   
  28      
  29      ; injured idle
  30      ConditionState        = REALLYDAMAGED
  31        IdleAnimation       = AIHERO_SKL.AIHERO_ISTA 0 30
  32        IdleAnimation       = AIHERO_SKL.AIHERO_IIDA
  33        IdleAnimation       = AIHERO_SKL.AIHERO_IIDB
  34        AnimationMode       = ONCE
  35        TransitionKey       = TRANS_StandInjured
  36      End
  37  
  38  
  39      TransitionState     = TRANS_Stand TRANS_StandInjured
  40        Animation         = AIHERO_SKL.AIHERO_ISTAHIT
  41        AnimationMode     = ONCE
  42      End
  43      
  44      ; moving
  45      ConditionState        = MOVING
  46        Animation           = AIHERO_SKL.AIHERO_RNA 26
  47        AnimationMode       = LOOP
  48        Flags               = RANDOMSTART
  49        TransitionKey       = TRANS_Walking
  50        ParticleSysBone     = None InfantryDustTrails
  51        HideSubObject     = MUZZLEFX01
  52      End
  53      AliasConditionState = MOVING FIRING_A
  54      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
  55      AliasConditionState = MOVING RELOADING_A
  56      AliasConditionState = MOVING FIRING_B
  57      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B
  58      AliasConditionState = MOVING RELOADING_B
  59  
  60      ; injured moving
  61      ConditionState     = MOVING REALLYDAMAGED
  62        Animation        = AIHERO_SKL.AIHERO_IRNA 26
  63        AnimationMode    = LOOP
  64        Flags            = RANDOMSTART
  65        TransitionKey    = TRANS_WalkingInjured
  66        ParticleSysBone  = None InfantryDustTrails
  67        HideSubObject     = MUZZLEFX01
  68      End
  69      AliasConditionState = MOVING FIRING_A REALLYDAMAGED
  70      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
  71      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
  72      AliasConditionState = MOVING FIRING_B REALLYDAMAGED
  73      AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
  74      AliasConditionState = MOVING RELOADING_B REALLYDAMAGED
  75  
  76      ; Firing animation
  77      ConditionState      = FIRING_A
  78        Animation         = AIHERO_SKL.AIHERO_ATA
  79        AnimationMode     = ONCE
  80        AnimationSpeedFactorRange = 1.5 1.5
  81        TransitionKey     = TRANS_FiringA
  82      End
  83  
  84      ConditionState      = BETWEEN_FIRING_SHOTS_A
  85        Animation         = AIHERO_SKL.AIHERO_ATA
  86        AnimationMode     = MANUAL
  87        Flags             = START_FRAME_LAST
  88        WaitForStateToFinishIfPossible = TRANS_FiringA
  89      End
  90      AliasConditionState = RELOADING_A
  91  
  92      ; Injured Firing animation
  93      ConditionState      = FIRING_A REALLYDAMAGED
  94        Animation         = AIHERO_SKL.AIHERO_IATA
  95        AnimationMode     = ONCE
  96        AnimationSpeedFactorRange = 1.5 1.5
  97        TransitionKey     = TRANS_FiringAInjured
  98      End
  99  
 100      ConditionState      = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
 101        Animation         = AIHERO_SKL.AIHERO_IATA
 102        AnimationMode     = MANUAL
 103        Flags             = START_FRAME_LAST
 104        WaitForStateToFinishIfPossible = TRANS_FiringAInjured
 105      End
 106      AliasConditionState = RELOADING_A REALLYDAMAGED
 107  
 108      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
 109        Animation         = AIHERO_SKL.AIHERO_IATAHIT
 110        AnimationMode     = ONCE
 111      End
 112  
 113      ; Placing charge animation
 114      ConditionState      = UNPACKING
 115        Animation         = AIHERO_SKL.AIHERO_ATB1
 116        AnimationMode     = ONCE
 117      End
 118      AliasConditionState = MOVING UNPACKING
 119  
 120      ; Injured Placing charge animation
 121      ConditionState      = UNPACKING REALLYDAMAGED
 122        Animation         = AIHERO_SKL.AIHERO_IATB1
 123        AnimationMode     = ONCE
 124      End
 125      AliasConditionState = MOVING UNPACKING REALLYDAMAGED
 126  
 127      ; Stab animations
 128      ConditionState      = PREATTACK_B 
 129        Animation         = AIHERO_SKL.AIHERO_ATC
 130        AnimationMode     = ONCE
 131        TransitionKey     = TRANS_Stabbing
 132        HideSubObject     = MUZZLEFX01
 133      End
 134      AliasConditionState = PREATTACK_B MOVING
 135      AliasConditionState = PREATTACK_B FIRING_B
 136      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
 137  
 138      ConditionState      = FIRING_B
 139        Animation         = AIHERO_SKL.AIHERO_ATC
 140        AnimationMode     = MANUAL
 141        Flags             = START_FRAME_LAST
 142        TransitionKey     = TRANS_Stabbing
 143        HideSubObject     = MUZZLEFX01
 144      End
 145      AliasConditionState = BETWEEN_FIRING_SHOTS_B
 146      AliasConditionState = RELOADING_B
 147  
 148      TransitionState     = TRANS_Stabbing TRANS_Stand
 149        Animation         = AIHERO_SKL.AIHERO_ATC2
 150        AnimationMode     = ONCE
 151      End
 152  
 153      ; Injured Stab animations
 154      ConditionState      = PREATTACK_B REALLYDAMAGED 
 155        Animation         = AIHERO_SKL.AIHERO_IATC1
 156        AnimationMode     = ONCE
 157        TransitionKey     = TRANS_StabbingInjured
 158        HideSubObject     = MUZZLEFX01
 159      End
 160      AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
 161      AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
 162      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
 163  
 164      ConditionState      = FIRING_B REALLYDAMAGED
 165        Animation         = AIHERO_SKL.AIHERO_IATC2
 166        AnimationMode     = MANUAL
 167        Flags             = START_FRAME_LAST
 168        TransitionKey     = TRANS_StabbingInjured
 169        HideSubObject     = MUZZLEFX01
 170      End
 171      AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
 172      AliasConditionState = RELOADING_B REALLYDAMAGED
 173  
 174      TransitionState     = TRANS_StabbingInjured TRANS_StandInjured
 175        Animation         = AIHERO_SKL.AIHERO_IATC2
 176        AnimationMode     = ONCE
 177      End
 178  
 179      ; cheering
 180      ConditionState      = SPECIAL_CHEERING
 181        Animation         = AIHERO_SKL.AIHERO_CHA
 182        AnimationMode     = ONCE
 183      End
 184      
 185      ; injured cheering
 186      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
 187        Animation         = AIHERO_SKL.AIHERO_ICHA
 188        AnimationMode     = ONCE
 189      End
 190      
 191      ; climbing
 192      ConditionState      = CLIMBING
 193        Animation         = AIHERO_SKL.AIHERO_CLMID
 194        AnimationMode     = LOOP
 195        TransitionKey     = TRANS_Climbing
 196      End
 197      AliasConditionState = RAPPELLING
 198      AliasConditionState = CLIMBING REALLYDAMAGED
 199      AliasConditionState = RAPPELLING REALLYDAMAGED
 200  
 201      ConditionState      = CLIMBING MOVING
 202        Animation         = AIHERO_SKL.AIHERO_CLMUP
 203        AnimationMode     = LOOP
 204        TransitionKey     = TRANS_Climbing
 205      End
 206      AliasConditionState = CLIMBING MOVING REALLYDAMAGED
 207  
 208      ConditionState      = RAPPELLING MOVING
 209        Animation         = AIHERO_SKL.AIHERO_CLMUP
 210        AnimationMode     = LOOP_BACKWARDS
 211        TransitionKey     = TRANS_Climbing
 212      End
 213      AliasConditionState = RAPPELLING MOVING REALLYDAMAGED
 214  
 215  ; these transitions don't really work well with our code. leave 'em out.
 216  ;    TransitionState     = TRANS_Climbing TRANS_Stand
 217  ;      Animation         = AIHERO_SKL.AIHERO_CLMST
 218  ;      AnimationMode     = ONCE
 219  ;    End
 220  ;
 221  ;    TransitionState     = TRANS_Stand TRANS_Climbing
 222  ;      Animation         = AIHERO_SKL.AIHERO_CLMST
 223  ;      AnimationMode     = ONCE_BACKWARDS
 224  ;    End
 225  
 226      ; dying anims
 227      ConditionState      = DYING
 228        Animation         = AIHERO_SKL.AIHERO_DTA
 229        Animation         = AIHERO_SKL.AIHERO_DTB
 230        Animation         = AIHero_SKL.AIHero_IDTA
 231        Animation         = AIHero_SKL.AIHero_IDTB
 232        AnimationMode     = ONCE
 233        TransitionKey     = TRANS_Dying
 234      End
 235      AliasConditionState = RAPPELLING DYING
 236      AliasConditionState = CLIMBING DYING
 237  
 238      TransitionState     = TRANS_Dying TRANS_Flailing
 239        Animation         = AIHERO_SKL.AIHERO_ADTG21
 240        AnimationMode     = ONCE
 241      End
 242  
 243      ConditionState      = DYING EXPLODED_FLAILING
 244        Animation         = AIHERO_SKL.AIHERO_ADTG22
 245        AnimationMode     = LOOP
 246        TransitionKey     = TRANS_Flailing
 247      End
 248  
 249      ConditionState      = DYING EXPLODED_BOUNCING
 250        Animation         = AIHERO_SKL.AIHERO_ADTG23
 251        AnimationMode     = ONCE
 252        TransitionKey     = None
 253      End
 254  
 255      ; misc anims
 256      ConditionState      = FREEFALL
 257        Animation         = AIHERO_SKL.AIHERO_PFL
 258        AnimationMode     = LOOP
 259        TransitionKey     = TRANS_Falling
 260      End
 261      AliasConditionState = FREEFALL REALLYDAMAGED
 262      AliasConditionState = FREEFALL DYING
 263  
 264      ConditionState      = PARACHUTING
 265        Animation         = AIHERO_SKL.AIHERO_PHG
 266        AnimationMode     = LOOP
 267        TransitionKey     = TRANS_Chute
 268      End
 269      AliasConditionState = PARACHUTING REALLYDAMAGED
 270      AliasConditionState = PARACHUTING DYING
 271  
 272      TransitionState     = TRANS_Falling TRANS_Chute
 273        Animation         = AIHERO_SKL.AIHERO_POP
 274        AnimationMode     = ONCE
 275        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
 276      End
 277  
 278      TransitionState     = TRANS_Chute TRANS_Stand
 279        Animation         = AIHERO_SKL.AIHERO_PTD
 280        AnimationMode     = ONCE
 281      End
 282  
 283      TransitionState     = TRANS_Chute TRANS_StandInjured
 284        Animation         = AIHERO_SKL.AIHERO_PTD
 285        AnimationMode     = ONCE
 286      End
 287  
 288    End
 289  
 290    ; ***DESIGN parameters ***
 291    DisplayName         = OBJECT:ColonelBurton
 292    Side                = America
 293    EditorSorting       = INFANTRY
 294    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
 295    VisionRange         = 150
 296    ShroudClearingRange = 500
 297    Prerequisites
 298      Object = AmericaBarracks
 299      Object = AmericaStrategyCenter
 300    End
 301    BuildCost = 1500
 302    BuildTime = 20.0          ;in seconds  
 303  
 304    ExperienceValue     = 50 100 100 150  ; Experience point value at each level
 305    ExperienceRequired  = 0 200 300 600   ; Experience points needed to gain each level
 306    IsTrainable         = Yes             ; Can gain experience
 307    CrushableLevel      = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
 308    CommandSet          = AmericaInfantryColonelBurtonCommandSet
 309    MaxSimultaneousOfType = 1
 310  
 311    WeaponSet
 312      Conditions          = None 
 313      Weapon              = PRIMARY     ColonelBurtonSniperRifleWeapon
 314      Weapon              = SECONDARY   ColonelBurtonKnifeWeapon
 315      AutoChooseSources   = PRIMARY     FROM_PLAYER FROM_SCRIPT FROM_AI
 316      AutoChooseSources   = SECONDARY   NONE
 317    End
 318    ArmorSet
 319      Conditions      = None
 320      Armor           = HumanArmor
 321      DamageFX        = InfantryDamageFX
 322    End
 323    ArmorSet
 324      Conditions      = PLAYER_UPGRADE
 325      Armor           = ChemSuitHumanArmor
 326      DamageFX        = InfantryDamageFX
 327    End
 328  
 329  
 330    ; *** AUDIO Parameters ***
 331    VoiceSelect = ColonelBurtonVoiceSelect
 332    VoiceMove = ColonelBurtonVoiceMove
 333    VoiceAttack = ColonelBurtonVoiceAttack
 334    VoiceFear = ColonelBurtonVoiceFear
 335    VoiceGuard = ColonelBurtonVoiceMove
 336    SoundStealthOn = StealthOn
 337    SoundStealthOff = StealthOff
 338    
 339    UnitSpecificSounds
 340      VoiceMelee = ColonelBurtonVoiceAttackKnife
 341      VoiceCreate           = ColonelBurtonVoiceCreate
 342      VoiceGarrison         = ColonelBurtonVoiceGarrison
 343      VoiceEnter            = ColonelBurtonVoiceMove
 344      VoiceEnterHostile     = ColonelBurtonVoiceMove
 345      VoiceGetHealed        = ColonelBurtonVoiceMove
 346    End
 347  
 348    ; *** ENGINEERING Parameters ***
 349    RadarPriority = UNIT
 350    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE HERO CANNOT_RETALIATE
 351  
 352    Body = ActiveBody ModuleTag_02
 353      MaxHealth       = 200.0
 354      InitialHealth   = 200.0
 355    End
 356  
 357    Behavior = AIUpdateInterface ModuleTag_03
 358      AutoAcquireEnemiesWhenIdle = Yes
 359    End
 360  
 361    Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
 362    End
 363  
 364    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
 365      ScanRate = 1000 ; once a second.
 366      ScanRange = 300 ;
 367      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
 368      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
 369    End
 370  
 371    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor ColonelBurtonCliffLocomotor
 372  
 373    Behavior = PhysicsBehavior ModuleTag_06
 374      Mass = 5.0
 375    End
 376    Behavior                = ArmorUpgrade ModuleTag_Armor01
 377      TriggeredBy           = Upgrade_AmericaChemicalSuits
 378    End
 379  
 380    Behavior = StealthUpdate ModuleTag_07
 381      StealthDelay                = 2000 ; msec
 382      StealthForbiddenConditions  = FIRING_PRIMARY
 383      HintDetectableConditions    = IS_FIRING_WEAPON 
 384      FriendlyOpacityMin          = 50.0%
 385      FriendlyOpacityMax          = 100.0%
 386      InnateStealth               = Yes
 387      OrderIdleEnemiesToAttackMeUponReveal  = Yes
 388      EnemyDetectionEvaEvent      = EnemyColonelBurtonDetected
 389      OwnDetectionEvaEvent        = OwnColonelBurtonDetected
 390    End
 391  
 392    Behavior = SpecialAbility ModuleTag_08
 393      SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
 394      UpdateModuleStartsAttack = Yes
 395      InitiateSound             = ColonelBurtonVoicePlantRemoteCharge
 396    End
 397    Behavior = SpecialAbilityUpdate ModuleTag_09
 398      SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
 399      StartAbilityRange = 0.0
 400      PreparationTime = 0
 401      SpecialObject = RemoteC4Charge
 402      MaxSpecialObjects = 8
 403      SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
 404      AlwaysValidateSpecialObjects = Yes      ;Coupled with the above setting, this one is necessary for code optimization.
 405      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
 406      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
 407      UnpackTime              = 5500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
 408      PackTime                = 0
 409      SkipPackingWithNoTarget = Yes           ;When yes, the packing/unpacking will be ignored when detonating charges.
 410      FlipOwnerAfterUnpacking = Yes
 411      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
 412      UnpackSound               = ColonelBurtonPlantCharge
 413      LoseStealthOnTrigger      = Yes
 414      PreTriggerUnstealthTime   = 5000 ; in milliseconds
 415    End
 416  
 417    Behavior = SpecialAbility ModuleTag_10
 418      SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
 419      UpdateModuleStartsAttack = Yes
 420      InitiateSound             = ColonelBurtonVoicePlantTimedCharge
 421    End
 422    Behavior = SpecialAbilityUpdate ModuleTag_11
 423      SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
 424      StartAbilityRange = 0.0
 425      PreparationTime = 0
 426      SpecialObject = TimedC4Charge
 427      MaxSpecialObjects = 10
 428      SpecialObjectsPersistWhenOwnerDies = Yes 
 429      SpecialObjectsPersistent = Yes          ;Charges are persistent till lifetime expires or owner detonates them.
 430      UniqueSpecialObjectTargets = Yes        ;This prevents multiple charges placed on the same object.
 431      UnpackTime              = 5500          ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
 432      FlipOwnerAfterUnpacking = Yes
 433      FleeRangeAfterCompletion = 100.0         ;Runs away after finishing ability
 434      UnpackSound               = ColonelBurtonPlantCharge
 435      LoseStealthOnTrigger      = Yes
 436      PreTriggerUnstealthTime   = 5000 ; in milliseconds
 437  
 438    End
 439   
 440    Behavior = ExperienceScalarUpgrade ModuleTag_12
 441      TriggeredBy   = Upgrade_AmericaAdvancedTraining
 442      AddXPScalar   = 1.0 ;Increases experience gained by an additional 100%
 443    End
 444   
 445    ;Hero units can't be squished!
 446    ;Behavior = SquishCollide ModuleTag_13
 447    ;  ;nothing
 448    ;End
 449  
 450  
 451  ; --- begin Death modules ---
 452    Behavior = SlowDeathBehavior ModuleTag_Death01
 453      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
 454      SinkDelay           = 3000
 455      SinkRate            = 0.5     ; in Dist/Sec
 456      DestructionDelay    = 8000
 457      FX                  = INITIAL FX_ColonelBurtonDie
 458    End
 459    Behavior = SlowDeathBehavior ModuleTag_Death02
 460      DeathTypes          = NONE +CRUSHED +SPLATTED
 461      SinkDelay           = 3000
 462      SinkRate            = 0.5     ; in Dist/Sec
 463      DestructionDelay    = 8000
 464      FX                  = INITIAL FX_GIDieCrushed
 465    End
 466    Behavior = SlowDeathBehavior ModuleTag_Death03
 467      DeathTypes          = NONE +EXPLODED
 468      SinkDelay           = 3000
 469      SinkRate            = 0.5     ; in Dist/Sec
 470      DestructionDelay    = 8000
 471      FX                  = INITIAL FX_ColonelBurtonDie
 472      FlingForce          = 8
 473      FlingForceVariance  = 3
 474      FlingPitch          = 60
 475      FlingPitchVariance  = 10
 476    End
 477    Behavior = SlowDeathBehavior ModuleTag_Death04
 478      DeathTypes          = NONE +BURNED
 479      DestructionDelay    = 0
 480      FX                  = INITIAL FX_DieByFireUSA
 481      OCL                 = INITIAL OCL_FlamingInfantry
 482    End
 483    Behavior = SlowDeathBehavior ModuleTag_Death05
 484      DeathTypes          = NONE +POISONED
 485      DestructionDelay    = 0
 486      FX                  = INITIAL FX_DieByToxinUSA
 487      OCL                 = INITIAL OCL_ToxicInfantry
 488    End
 489      Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
 490      DeathTypes          = NONE +POISONED_BETA
 491      DestructionDelay    = 0
 492      FX                  = INITIAL FX_DieByToxinUSA
 493      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
 494    End
 495  
 496    Behavior = SlowDeathBehavior ModuleTag_Death07
 497      DeathTypes          = NONE +POISONED_GAMMA
 498      DestructionDelay    = 0
 499      FX                  = INITIAL FX_DieByToxinUSA
 500      OCL                 = INITIAL OCL_ToxicInfantryGamma
 501    End
 502  ; --- end Death modules ---
 503  
 504    Behavior = PoisonedBehavior ModuleTag_18
 505      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
 506      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
 507    End
 508   
 509    Geometry = CYLINDER
 510    GeometryMajorRadius = 10.0
 511    GeometryMinorRadius = 10.0
 512    GeometryHeight = 12.0
 513    GeometryIsSmall = Yes
 514    Shadow = SHADOW_DECAL
 515    ShadowSizeX = 14
 516    ShadowSizeY = 14
 517    ShadowTexture = ShadowI
 518    BuildCompletion = APPEARS_AT_RALLY_POINT
 519  
 520  End
 521  
 522  
 523  
 524  
 525  
 526  ;------------------------------------------------------------------------------
 527  Object AmericaInfantryRanger
 528  
 529    ; *** ART Parameters ***
 530    SelectPortrait          = SARanger_L
 531    ButtonImage            = SARanger
 532    
 533    UpgradeCameo1 = Upgrade_AmericaRangerFlashBangGrenade
 534    UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
 535    UpgradeCameo3 = Upgrade_InfantryCaptureBuilding
 536    UpgradeCameo4 = Upgrade_AmericaChemicalSuits
 537    ;UpgradeCameo5 = NONE
 538    
 539    Draw = W3DModelDraw ModuleTag_01
 540  
 541      OkToChangeModelColor = Yes
 542  
 543      ; this says "we don't use these condition states at all, so completely
 544      ; ignore them for purposes of matchmaking"... this is useful to help
 545      ; reduce the number of AliasConditionState clauses you must add in
 546      ; order to avoid ambiguity in some cases.
 547      IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
 548  
 549      ; --- Idle
 550      DefaultConditionState
 551        Model             = AIRngr_SKN
 552        IdleAnimation     = AIRngr_SKL.AIRngr_STA 0 35
 553        IdleAnimation     = AIRngr_SKL.AIRngr_IDA
 554        IdleAnimation     = AIRngr_SKL.AIRngr_IDB
 555        AnimationMode     = ONCE
 556        WeaponFireFXBone  = PRIMARY Muzzle
 557        WeaponMuzzleFlash = PRIMARY MuzzleFX
 558        WeaponFireFXBone  = SECONDARY Muzzle
 559        WeaponLaunchBone  = SECONDARY Muzzle
 560        TransitionKey     = TRANS_Stand
 561  
 562      End
 563  
 564      ConditionState      = REALLYDAMAGED
 565        IdleAnimation     = AIRngr_SKL.AIRngr_STB 0 35
 566        IdleAnimation     = AIRngr_SKL.AIRngr_IDC
 567        IdleAnimation     = AIRngr_SKL.AIRngr_IDD
 568        AnimationMode     = ONCE
 569        TransitionKey     = TRANS_StandInjured
 570      End
 571  
 572      TransitionState     = TRANS_Stand TRANS_StandInjured
 573        Animation         = AIRngr_SKL.AIRngr_SA2SB
 574        AnimationMode     = ONCE
 575      End
 576  
 577      ; --- attacking (Machine Gun)
 578      ConditionState      = USING_WEAPON_A
 579        Animation         = AIRngr_SKL.AIRngr_ATA
 580        AnimationMode     = LOOP
 581        TransitionKey     = TRANS_FiringA
 582      End
 583  
 584      ConditionState      = USING_WEAPON_A REALLYDAMAGED
 585        Animation         = AIRngr_SKL.AIRngr_ATA2
 586        AnimationMode     = LOOP
 587        TransitionKey     = TRANS_FiringAInjured
 588      End
 589  
 590      TransitionState     = TRANS_FiringA TRANS_FiringAInjured
 591        Animation         = AIRngr_SKL.AIRngr_A2WAA
 592        AnimationMode     = ONCE
 593      End
 594  
 595      TransitionState     = TRANS_Stand TRANS_FiringA
 596        Animation         = AIRngr_SKL.AIRngr_ATAST
 597        AnimationMode     = ONCE
 598        AnimationSpeedFactorRange = 4 4
 599      End
 600  
 601      TransitionState     = TRANS_FiringA TRANS_Stand
 602        Animation         = AIRngr_SKL.AIRngr_ATAED
 603        AnimationMode     = ONCE
 604        AnimationSpeedFactorRange = 4 4
 605      End
 606  
 607      TransitionState     = TRANS_StandInjured TRANS_FiringAInjured
 608        Animation         = AIRngr_SKL.AIRngr_S2WAA
 609        AnimationMode     = ONCE
 610        AnimationSpeedFactorRange = 4 4
 611      End
 612  
 613      TransitionState     = TRANS_FiringAInjured TRANS_StandInjured
 614        Animation         = AIRngr_SKL.AIRngr_WAA2S
 615        AnimationMode     = ONCE
 616        AnimationSpeedFactorRange = 4 4
 617      End
 618      
 619      TransitionState     = TRANS_Stand TRANS_Move
 620        Animation         = AIRngr_SKL.AIRngr_STA2RNA
 621        AnimationMode     = ONCE
 622      End
 623  
 624      ; --- attacking (Grenade Launcher)
 625      ConditionState      = PREATTACK_B 
 626        Animation         = AIRngr_SKL.AIRngr_ATBA
 627        AnimationMode     = ONCE
 628        TransitionKey     = TRANS_FiringB
 629      End
 630      AliasConditionState = PREATTACK_B MOVING
 631      AliasConditionState = PREATTACK_B FIRING_B
 632      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
 633  
 634      ConditionState      = FIRING_B
 635        Animation         = AIRngr_SKL.AIRngr_ATBB
 636        AnimationMode     = ONCE
 637        TransitionKey     = TRANS_FiringB
 638      End
 639  
 640      ConditionState      = BETWEEN_FIRING_SHOTS_B
 641        Animation         = AIRngr_SKL.AIRngr_ATBB
 642        AnimationMode     = MANUAL
 643        Flags             = START_FRAME_LAST
 644        TransitionKey     = TRANS_FiringB
 645        WaitForStateToFinishIfPossible = TRANS_FiringB
 646      End
 647      AliasConditionState = RELOADING_B
 648  
 649      TransitionState     = TRANS_Stand TRANS_FiringB
 650        Animation         = AIRngr_SKL.AIRngr_ATBST1
 651        AnimationMode     = ONCE
 652      End
 653  
 654      TransitionState     = TRANS_FiringB TRANS_Stand
 655        Animation         = AIRngr_SKL.AIRngr_ATBST2
 656        AnimationMode     = ONCE
 657      End
 658  
 659      ConditionState      = PREATTACK_B REALLYDAMAGED
 660        Animation         = AIRngr_SKL.AIRngr_ATB2A
 661        AnimationMode     = ONCE
 662        TransitionKey     = TRANS_FiringBInjured
 663      End
 664      AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
 665      AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
 666      AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
 667  
 668      ConditionState      = FIRING_B REALLYDAMAGED
 669        Animation         = AIRngr_SKL.AIRngr_ATB2B
 670        AnimationMode     = ONCE
 671        TransitionKey     = TRANS_FiringBInjured
 672      End
 673  
 674      ConditionState      = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
 675        Animation         = AIRngr_SKL.AIRngr_ATB2B
 676        AnimationMode     = MANUAL
 677        Flags             = START_FRAME_LAST
 678        TransitionKey     = TRANS_FiringBInjured
 679        WaitForStateToFinishIfPossible = TRANS_FiringBInjured
 680      End
 681      AliasConditionState = RELOADING_B REALLYDAMAGED
 682  
 683      TransitionState     = TRANS_StandInjured TRANS_FiringBInjured
 684        Animation         = AIRngr_SKL.AIRngr_ATB2ST1
 685        AnimationMode     = ONCE
 686      End
 687  
 688      TransitionState     = TRANS_FiringBInjured TRANS_StandInjured
 689        Animation         = AIRngr_SKL.AIRngr_ATB2ST2
 690        AnimationMode     = ONCE
 691      End
 692  
 693      ; -- cross-attack transitions
 694  
 695      TransitionState     = TRANS_FiringA TRANS_FiringB
 696        Animation         = AIRngr_SKL.AIRngr_ATA2AB
 697        AnimationMode     = ONCE
 698        AnimationSpeedFactorRange = 4 4
 699      End
 700  
 701      TransitionState     = TRANS_FiringB TRANS_FiringA
 702        Animation         = AIRngr_SKL.AIRngr_ATA2AB
 703        AnimationMode     = ONCE_BACKWARDS
 704        AnimationSpeedFactorRange = 4 4
 705      End
 706  
 707  
 708      ; --- moving
 709      ConditionState      = MOVING
 710        Animation         = AIRngr_SKL.AIRngr_RNA 30
 711        AnimationMode     = LOOP
 712        Flags             = RANDOMSTART
 713        TransitionKey     = TRANS_Move
 714        ParticleSysBone   = None InfantryDustTrails
 715      End
 716      AliasConditionState = MOVING ATTACKING
 717  
 718      ConditionState      = MOVING REALLYDAMAGED
 719        Animation         = AIRngr_SKL.AIRngr_RNB 30
 720        AnimationMode     = LOOP
 721        Flags             = RANDOMSTART
 722        TransitionKey     = TRANS_Move
 723      End
 724      AliasConditionState = MOVING REALLYDAMAGED ATTACKING
 725      
 726      ; --- dying anims
 727      ConditionState      = DYING
 728        Animation         = AIRngr_SKL.AIRngr_DTA
 729        Animation         = AIRngr_SKL.AIRngr_DTB
 730        AnimationMode     = ONCE
 731        TransitionKey     = None
 732      End
 733  
 734      TransitionState     = TRANS_Dying TRANS_Flailing
 735        Animation         = AIRngr_SKL.AIRngr_ADTF1
 736        AnimationMode     = ONCE
 737      End
 738  
 739      ConditionState      = DYING EXPLODED_FLAILING
 740        Animation         = AIRngr_SKL.AIRngr_ADTF2
 741        AnimationMode     = LOOP
 742        TransitionKey     = TRANS_Flailing
 743      End
 744  
 745      ConditionState      = DYING EXPLODED_BOUNCING
 746        Animation         = AIRngr_SKL.AIRngr_ADTF3
 747        AnimationMode     = ONCE
 748        TransitionKey     = None
 749      End
 750      AliasConditionState = DYING SPLATTED
 751  
 752      ; --- cheering
 753      ConditionState      = SPECIAL_CHEERING
 754        Animation         = AIRngr_SKL.AIRngr_CHA
 755        AnimationMode     = LOOP
 756      End
 757  
 758      ConditionState      = SPECIAL_CHEERING REALLYDAMAGED
 759        Animation         = AIRngr_SKL.AIRngr_CHB
 760        AnimationMode     = LOOP
 761      End
 762  
 763      ; ----- PARACHUTING ANIMATIONS
 764      ConditionState      = FREEFALL
 765        Animation         = AIRngr_SKL.AIRngr_PFL
 766        AnimationMode     = LOOP
 767        TransitionKey     = TRANS_Falling
 768      End
 769      AliasConditionState = FREEFALL REALLYDAMAGED
 770      AliasConditionState = FREEFALL DYING
 771      ConditionState      = PARACHUTING
 772        Animation         = AIRngr_SKL.AIRngr_PHG
 773        AnimationMode     = LOOP
 774        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
 775        TransitionKey     = TRANS_Chute
 776      End
 777      AliasConditionState = PARACHUTING REALLYDAMAGED
 778      AliasConditionState = PARACHUTING DYING
 779      TransitionState     = TRANS_Falling TRANS_Chute
 780        Animation         = AIRngr_SKL.AIRngr_POP
 781        AnimationMode     = ONCE
 782        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
 783      End
 784      TransitionState     = TRANS_Chute TRANS_Stand
 785        Animation         = AIRngr_SKL.AIRngr_PTD
 786        AnimationMode     = ONCE
 787      End
 788      TransitionState     = TRANS_Chute TRANS_StandInjured
 789        Animation         = AIRngr_SKL.AIRngr_PTD
 790        AnimationMode     = ONCE
 791      End
 792  
 793      ; ------- Bldg-capture
 794  
 795      ConditionState      = UNPACKING
 796        Model             = AIRngr_F_SKN
 797        Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
 798        AnimationMode     = ONCE
 799      End
 800      AliasConditionState = UNPACKING REALLYDAMAGED
 801  
 802  
 803      ConditionState      = RAISING_FLAG
 804        Model             = AIRngr_F_SKN
 805        Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
 806        AnimationMode     = ONCE
 807        TransitionKey     = TRANS_Raising
 808      End
 809      AliasConditionState = RAISING_FLAG REALLYDAMAGED
 810  
 811      ConditionState      = PACKING
 812        Model             = AIRngr_F_SKN
 813        Animation         = AIRngr_F_SKL.AIRngr_F_FDP1
 814        AnimationMode     = ONCE_BACKWARDS
 815        Flags             = START_FRAME_LAST
 816        TransitionKey     = TRANS_Packing
 817      End
 818      AliasConditionState = PACKING REALLYDAMAGED
 819  
 820      TransitionState     = TRANS_Raising TRANS_Packing
 821        Model             = AIRngr_F_SKN
 822        Animation         = AIRngr_F_SKL.AIRngr_F_FDP2
 823        AnimationMode     = ONCE_BACKWARDS
 824        Flags             = START_FRAME_LAST
 825      End
 826  
 827      ; --- RAPPELLING ANIMATIONS
 828      ConditionState      = RAPPELLING
 829        Animation         = AIRngr_SKL.AIRngr_RPL1 ;30
 830        AnimationMode     = LOOP
 831        Flags             = RANDOMSTART
 832        TransitionKey     = TRANS_Rappelling
 833      End
 834      AliasConditionState = MOVING RAPPELLING
 835  
 836      TransitionState     = TRANS_Rappelling TRANS_Stand
 837        Animation         = AIRngr_SKL.AIRngr_RPL2
 838        AnimationMode     = ONCE
 839      End
 840  
 841      TransitionState     = TRANS_Rappelling TRANS_StandInjured
 842        Animation         = AIRngr_SKL.AIRngr_RPL2
 843        AnimationMode     = ONCE
 844      End
 845  
 846    End
 847  
 848    ; ***DESIGN parameters ***
 849    DisplayName         = OBJECT:Ranger
 850    Side                = America
 851    EditorSorting       = INFANTRY
 852    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
 853    
 854    WeaponSet
 855      Conditions = None 
 856      Weapon = PRIMARY RangerAdvancedCombatRifle
 857    End
 858    WeaponSet
 859      Conditions = PLAYER_UPGRADE 
 860      Weapon = PRIMARY RangerAdvancedCombatRifle
 861      Weapon = SECONDARY RangerFlashBangGrenadeWeapon
 862      AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI DEFAULT_SWITCH_WEAPON
 863      AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
 864      WeaponLockSharedAcrossSets = Yes ; This set is so similar to the default set that it can hold the weapon lock
 865    End
 866    ArmorSet
 867      Conditions      = None
 868      Armor           = HumanArmor
 869      DamageFX        = InfantryDamageFX
 870    End
 871    ArmorSet
 872      Conditions            = PLAYER_UPGRADE
 873      Armor                 = ChemSuitHumanArmor
 874      DamageFX              = None
 875    End
 876    VisionRange = 100
 877    ShroudClearingRange = 400
 878    Prerequisites
 879      Object = AmericaBarracks
 880    End
 881    BuildCost = 225
 882    BuildTime = 5.0          ;in seconds  
 883    
 884    ExperienceValue = 20 20 40 60    ;Experience point value at each level
 885    ExperienceRequired = 0 40 60 120  ;Experience points needed to gain each level
 886    IsTrainable = Yes             ;Can gain experience
 887    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
 888    CommandSet          = AmericaInfantryRangerCommandSet
 889  
 890    ; *** AUDIO Parameters ***
 891    VoiceSelect = RangerVoiceSelect
 892    VoiceMove = RangerVoiceMove
 893    VoiceGuard = RangerVoiceMove
 894    VoiceAttack = RangerVoiceAttack
 895    VoiceFear = RangerVoiceFear
 896    VoiceTaskComplete = RangerVoiceCaptureComplete
 897  
 898    UnitSpecificSounds
 899      VoiceEnter = RangerVoiceMove
 900      VoiceEnterHostile = RangerVoiceMove
 901      VoiceGarrison = RangerVoiceGarrison
 902      VoiceCreate         = RangerVoiceCreate
 903      VoiceSubdue         = RangerVoiceSubdue
 904      VoiceClearBuilding  = RangerVoiceClearBuilding
 905      VoiceGetHealed      = RangerVoiceMove
 906      VoicePrimaryWeaponMode = RangerVoiceModeGun
 907      VoiceSecondaryWeaponMode = RangerVoiceModeFlashBang
 908    End
 909  
 910    UnitSpecificFX
 911      ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
 912      CombatDropKillFX = FX_RangerCombatDropKill
 913    End
 914  
 915    ; *** ENGINEERING Parameters ***
 916    RadarPriority = UNIT
 917    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY CAN_RAPPEL SCORE
 918  
 919    Behavior = CommandButtonHuntUpdate ModuleTag_02
 920    End
 921  
 922    Body = ActiveBody ModuleTag_03
 923      MaxHealth       = 180.0
 924      InitialHealth   = 180.0
 925    End
 926  
 927    Behavior = ExperienceScalarUpgrade ModuleTag_04
 928      TriggeredBy = Upgrade_AmericaAdvancedTraining
 929      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
 930    End
 931  
 932    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
 933      ScanRate = 1000 ; once a second.
 934      ScanRange = 300 ;
 935      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
 936      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
 937    End
 938  
 939    Behavior = AIUpdateInterface ModuleTag_06
 940      AutoAcquireEnemiesWhenIdle = Yes
 941    End
 942    Locomotor = SET_NORMAL BasicHumanLocomotor
 943  
 944    Behavior = PhysicsBehavior ModuleTag_07
 945      Mass = 5.0
 946    End
 947  
 948    Behavior = ProductionUpdate ModuleTag_08
 949      ; nothing
 950    End
 951  
 952    Behavior = CommandButtonHuntUpdate  ModuleTag_09 ; allows use of command button hunt script with this unit. 
 953    End
 954  
 955    Behavior = WeaponSetUpgrade ModuleTag_10
 956      TriggeredBy = Upgrade_AmericaRangerFlashBangGrenade
 957    End
 958    
 959  
 960  ; --- begin Death modules ---
 961    Behavior = SlowDeathBehavior ModuleTag_Death01
 962      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
 963      SinkDelay           = 3000
 964      SinkRate            = 0.5     ; in Dist/Sec
 965      DestructionDelay    = 8000
 966      FX                  = INITIAL FX_RangerDie
 967    End
 968    Behavior = SlowDeathBehavior ModuleTag_Death02
 969      DeathTypes          = NONE +CRUSHED +SPLATTED
 970      SinkDelay           = 3000
 971      SinkRate            = 0.5     ; in Dist/Sec
 972      DestructionDelay    = 8000
 973      FX                  = INITIAL FX_GIDieCrushed
 974    End
 975    Behavior = SlowDeathBehavior ModuleTag_Death03
 976      DeathTypes          = NONE +EXPLODED
 977      SinkDelay           = 3000
 978      SinkRate            = 0.5     ; in Dist/Sec
 979      DestructionDelay    = 8000
 980      FX                  = INITIAL FX_RangerDie
 981      FlingForce          = 8
 982      FlingForceVariance  = 3
 983      FlingPitch          = 60
 984      FlingPitchVariance  = 10
 985    End
 986    Behavior = SlowDeathBehavior ModuleTag_Death04
 987      DeathTypes          = NONE +BURNED
 988      DestructionDelay    = 0
 989      FX                  = INITIAL FX_DieByFireUSA
 990      OCL                 = INITIAL OCL_FlamingInfantry
 991    End
 992    Behavior = SlowDeathBehavior ModuleTag_Death05
 993      DeathTypes          = NONE +POISONED
 994      DestructionDelay    = 0
 995      FX                  = INITIAL FX_DieByToxinUSA
 996      OCL                 = INITIAL OCL_ToxicInfantry
 997    End
 998    
 999    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
1000      DeathTypes          = NONE +POISONED_BETA
1001      DestructionDelay    = 0
1002      FX                  = INITIAL FX_DieByToxinUSA
1003      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
1004    End
1005  
1006    Behavior = SlowDeathBehavior ModuleTag_Death07
1007      DeathTypes          = NONE +POISONED_GAMMA
1008      DestructionDelay    = 0
1009      FX                  = INITIAL FX_DieByToxinUSA
1010      OCL                 = INITIAL OCL_ToxicInfantryGamma
1011    End
1012  ; --- end Death modules ---
1013  
1014    Behavior = SquishCollide ModuleTag_12
1015      ;nothing
1016    End
1017    Behavior                = ArmorUpgrade ModuleTag_Armor01
1018      TriggeredBy           = Upgrade_AmericaChemicalSuits
1019    End
1020  
1021    Behavior = PoisonedBehavior ModuleTag_17
1022      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
1023      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
1024    End
1025   
1026    Behavior = SpecialAbility ModuleTag_18
1027      SpecialPowerTemplate      = SpecialAbilityRangerCaptureBuilding
1028      UpdateModuleStartsAttack  = Yes
1029      StartsPaused              = Yes ; Unpaused by upgrade module
1030      InitiateSound         = RangerVoiceCapture
1031    End
1032    Behavior = SpecialAbilityUpdate ModuleTag_19
1033      SpecialPowerTemplate  = SpecialAbilityRangerCaptureBuilding
1034      StartAbilityRange  = 5.0
1035      UnpackTime            = 3000  ; (changing this will scale anim speed)
1036      PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
1037      PackTime              = 2000  ; (changing this will scale anim speed)
1038      DoCaptureFX           = Yes
1039      AwardXPForTriggering  = 15
1040      ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
1041    End
1042  
1043    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_20
1044      SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
1045      TriggeredBy = Upgrade_InfantryCaptureBuilding
1046    End
1047  
1048    Behavior = LockWeaponCreate ModuleTag_21
1049      SlotToLock = PRIMARY ; Prevents indeterminate state plus two unpickable weapons equaling no attack.
1050    End
1051  
1052    Geometry = CYLINDER
1053    GeometryMajorRadius = 7.0
1054    GeometryMinorRadius = 7.0
1055    GeometryHeight = 13.0
1056  
1057    GeometryIsSmall = Yes
1058    Shadow = SHADOW_DECAL
1059    ShadowSizeX = 14;
1060    ShadowSizeY = 14;
1061    ShadowTexture = ShadowI;
1062    BuildCompletion = APPEARS_AT_RALLY_POINT
1063  
1064  End
1065  
1066  
1067  
1068  
1069  
1070  
1071  
1072  
1073  ;------------------------------------------------------------------------------
1074  Object AmericaInfantryMissileDefender
1075  
1076    ; *** ART Parameters ***
1077    SelectPortrait         = SAMissleDefender_L
1078    ButtonImage            = SAMissleDefender
1079    
1080    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
1081    UpgradeCameo2 = Upgrade_AmericaChemicalSuits
1082    ;UpgradeCameo3 = NONE
1083    ;UpgradeCameo4 = NONE
1084    ;UpgradeCameo5 = NONE
1085    
1086    Draw = W3DModelDraw ModuleTag_01
1087      OkToChangeModelColor = Yes
1088  
1089      ;***NOTE***
1090      ;A little history -- the MissileDefender now uses the assets of the TankHunter. 
1091      ;The TH uses assets of the GLA tunnel defender, and the TD uses assets of the NEW
1092      ;MD. It was a design/art/code decision because the new missile defender animations
1093      ;don't suit that of a mobile/offensive unit with packing and unpacking.
1094  
1095      DefaultConditionState
1096        Model             = NITHNT_SKN
1097        IdleAnimation     = NITHNT_SKL.NITHNT_STA 0 30
1098        IdleAnimation     = NITHNT_SKL.NITHNT_IDA
1099        IdleAnimation     = NITHNT_SKL.NITHNT_IDB
1100        AnimationMode     = ONCE
1101        AnimationSpeedFactorRange = 0.8 1.2
1102        TransitionKey     = TRANS_Stand
1103        WeaponMuzzleFlash = PRIMARY MuzzleFX
1104        WeaponFireFXBone  = PRIMARY Muzzle
1105        WeaponLaunchBone  = PRIMARY Muzzle
1106        WeaponLaunchBone  = SECONDARY Muzzle
1107  
1108      End
1109      AliasConditionState = REALLYDAMAGED
1110  
1111      ConditionState      = FIRING_A 
1112        Animation         = NITHNT_SKL.NITHNT_ATA 
1113        AnimationMode     = ONCE
1114        TransitionKey     = TRANS_START_FIRING
1115      End
1116      AliasConditionState = FIRING_A REALLYDAMAGED
1117  
1118      ConditionState      = BETWEEN_FIRING_SHOTS_A
1119        Animation         = NITHNT_SKL.NITHNT_STA
1120        AnimationMode     = ONCE
1121        ; this is basically a trick: this guy has a nontrivial animation for firing,
1122        ; and a long recycle time between shots. we want him to finish his fire animation
1123        ; (unless he's ordered to do something else), so this is just a handy trick that
1124        ; says, "if the previous state had this transition key, allow it to finish before
1125        ; switching to us, if possible".
1126        WaitForStateToFinishIfPossible = TRANS_START_FIRING
1127      End
1128      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
1129  
1130      ConditionState      = MOVING
1131        Animation         = NITHNT_SKL.NITHNT_RNA 20
1132        AnimationMode     = LOOP
1133        Flags             = RANDOMSTART
1134        TransitionKey     = None
1135        ParticleSysBone   = None InfantryDustTrails
1136      End
1137      AliasConditionState = MOVING REALLYDAMAGED
1138  
1139      ConditionState      = RELOADING_A
1140        Animation         = NITHNT_SKL.NITHNT_ATA 10
1141        AnimationMode     = ONCE
1142        ;WeaponLaunchBone = PRIMARY WeaponA
1143      End
1144      AliasConditionState = MOVING RELOADING_A
1145      AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
1146  
1147      ConditionState      = DYING
1148        Animation         = NITHNT_SKL.NITHNT_DTA
1149        Animation         = NITHNT_SKL.NITHNT_DTB
1150        AnimationSpeedFactorRange = 0.9 1.25
1151        AnimationMode     = ONCE
1152        TransitionKey     = TRANS_Dying
1153      End
1154  
1155      TransitionState     = TRANS_Dying TRANS_Flailing
1156        Animation         = NITHNT_SKL.NITHNT_ADTA1
1157        AnimationMode     = ONCE
1158      End
1159  
1160      ConditionState      = DYING EXPLODED_FLAILING
1161        Animation         = NITHNT_SKL.NITHNT_ADTA2
1162        AnimationMode     = LOOP
1163        TransitionKey     = TRANS_Flailing
1164      End
1165  
1166      ConditionState      = DYING EXPLODED_BOUNCING
1167        Animation         = NITHNT_SKL.NITHNT_ADTA3
1168        AnimationMode     = ONCE
1169        TransitionKey     = None
1170      End
1171  
1172      ;PARACHUTING ANIMATIONS
1173      ConditionState      = FREEFALL
1174        Animation         = NITHNT_SKL.NITHNT_PFL
1175        AnimationMode     = LOOP
1176        TransitionKey     = TRANS_Falling
1177      End
1178      AliasConditionState = FREEFALL REALLYDAMAGED
1179      AliasConditionState = FREEFALL DYING
1180  
1181      ConditionState      = PARACHUTING
1182        Animation         = NITHNT_SKL.NITHNT_PHG
1183        AnimationMode     = LOOP
1184        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
1185        TransitionKey     = TRANS_Chute
1186      End
1187      AliasConditionState = PARACHUTING REALLYDAMAGED
1188      AliasConditionState = PARACHUTING DYING
1189  
1190      TransitionState     = TRANS_Falling TRANS_Chute
1191        Animation         = NITHNT_SKL.NITHNT_POP
1192        AnimationMode     = ONCE
1193        Flags             = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
1194      End
1195  
1196      TransitionState     = TRANS_Chute TRANS_Stand
1197        Animation         = NITHNT_SKL.NITHNT_PTD
1198        AnimationMode     = ONCE
1199      End
1200  
1201    End
1202  
1203    ; ***DESIGN parameters ***
1204    DisplayName         = OBJECT:MissileTeam
1205    Side                = America
1206    EditorSorting       = INFANTRY
1207    TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
1208    
1209    WeaponSet
1210      Conditions = None 
1211      Weapon = PRIMARY    MissileDefenderMissileWeapon 
1212      Weapon = SECONDARY  MissileDefenderLaserGuidedMissileWeapon ;Controlled by special ability
1213      AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
1214      AutoChooseSources = SECONDARY NONE
1215    End
1216    ArmorSet
1217      Conditions      = None
1218      Armor           = HumanArmor
1219      DamageFX        = InfantryDamageFX
1220    End
1221    ArmorSet
1222      Conditions      = PLAYER_UPGRADE
1223      Armor           = ChemSuitHumanArmor
1224      DamageFX        = InfantryDamageFX
1225    End
1226  
1227    VisionRange = 150
1228    ShroudClearingRange = 400
1229    Prerequisites
1230      Object = AmericaBarracks
1231  
1232    End
1233    BuildCost = 300
1234    BuildTime = 5.0          ;in seconds  
1235    
1236    ExperienceValue = 20 20 40 60    ;Experience point value at each level
1237    ExperienceRequired = 0 100 200 400  ;Experience points needed to gain each level
1238    IsTrainable = Yes             ;Can gain experience
1239    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
1240    CommandSet          = AmericaInfantryMissileDefenderCommandSet
1241  
1242    ; *** AUDIO Parameters ***
1243    VoiceSelect = MissileDefenderVoiceSelect
1244    VoiceMove = MissileDefenderVoiceMove
1245    VoiceGuard = MissileDefenderVoiceMove
1246    VoiceAttack = MissileDefenderVoiceAttack
1247    VoiceAttackAir = MissileDefenderVoiceAttack
1248    VoiceFear = MissileDefenderVoiceFear
1249    
1250    UnitSpecificSounds
1251    VoiceGarrison = MissileDefenderVoiceGarrison
1252      VoiceCreate          = MissileDefenderVoiceCreate
1253      VoiceEnter = MissileDefenderVoiceMove
1254      VoiceGetHealed      = MissileDefenderVoiceMove
1255    End
1256  
1257    ; *** ENGINEERING Parameters ***
1258    RadarPriority = UNIT
1259    KindOf = PRELOAD SELECTABLE CAN_ATTACK  ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
1260  
1261  
1262    Body = ActiveBody ModuleTag_02
1263      MaxHealth       = 100.0
1264      InitialHealth   = 100.0
1265    End
1266  
1267    Behavior                = ArmorUpgrade ModuleTag_Armor01
1268      TriggeredBy           = Upgrade_AmericaChemicalSuits
1269    End
1270  
1271    Behavior = ExperienceScalarUpgrade ModuleTag_03
1272      TriggeredBy = Upgrade_AmericaAdvancedTraining
1273      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
1274    End
1275  
1276    Behavior = AIUpdateInterface ModuleTag_04
1277      AutoAcquireEnemiesWhenIdle = Yes
1278    End
1279  
1280    Behavior = AutoFindHealingUpdate   ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba 
1281      ScanRate = 1000 ; once a second.
1282      ScanRange = 300 ;
1283      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
1284      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
1285    End
1286  
1287    Locomotor = SET_NORMAL MissileDefenderLocomotor
1288  
1289    Behavior = PhysicsBehavior ModuleTag_06
1290      Mass = 5.0
1291    End
1292  
1293    Behavior = SpecialAbility ModuleTag_08
1294      SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles
1295      UpdateModuleStartsAttack = Yes
1296      InitiateSound = MissileDefenderVoiceAttackLaser
1297    End
1298    Behavior = SpecialAbilityUpdate ModuleTag_09
1299      SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles
1300      StartAbilityRange = 200.0
1301      AbilityAbortRange = 250.0 ;If the target moves outside this range, abort.
1302      PreparationTime = 1000
1303      PersistentPrepTime = 500
1304      SpecialObject = LaserBeam
1305      SpecialObjectAttachToBone = Muzzle01
1306    End
1307    ;Added by JMC on 7/12/03 so that the skirmish AI can tell the missile defenders to hunt using
1308    ;the laser guided missiles.
1309    Behavior = CommandButtonHuntUpdate  ModuleTag_CBHunt ; allows use of command button hunt script with this unit. 
1310    End
1311  
1312    Behavior = SquishCollide ModuleTag_10
1313      ;nothing
1314    End
1315  
1316  
1317  ; --- begin Death modules ---
1318    Behavior = SlowDeathBehavior ModuleTag_Death01
1319      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
1320      SinkDelay           = 3000
1321      SinkRate            = 0.5     ; in Dist/Sec
1322      DestructionDelay    = 8000
1323      FX                  = INITIAL FX_MissileDefenderDie
1324    End
1325    Behavior = SlowDeathBehavior ModuleTag_Death02
1326      DeathTypes          = NONE +CRUSHED +SPLATTED
1327      SinkDelay           = 3000
1328      SinkRate            = 0.5     ; in Dist/Sec
1329      DestructionDelay    = 8000
1330      FX                  = INITIAL FX_GIDieCrushed
1331    End
1332    Behavior = SlowDeathBehavior ModuleTag_Death03
1333      DeathTypes          = NONE +EXPLODED
1334      SinkDelay           = 3000
1335      SinkRate            = 0.5     ; in Dist/Sec
1336      DestructionDelay    = 8000
1337      FX                  = INITIAL FX_MissileDefenderDie
1338      FlingForce          = 8
1339      FlingForceVariance  = 3
1340      FlingPitch          = 60
1341      FlingPitchVariance  = 10
1342    End
1343    Behavior = SlowDeathBehavior ModuleTag_Death04
1344      DeathTypes          = NONE +BURNED
1345      DestructionDelay    = 0
1346      FX                  = INITIAL FX_DieByFireUSA
1347      OCL                 = INITIAL OCL_FlamingInfantry
1348    End
1349    Behavior = SlowDeathBehavior ModuleTag_Death05
1350      DeathTypes          = NONE +POISONED
1351      DestructionDelay    = 0
1352      FX                  = INITIAL FX_DieByToxinUSA
1353      OCL                 = INITIAL OCL_ToxicInfantry
1354    End
1355    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
1356      DeathTypes          = NONE +POISONED_BETA
1357      DestructionDelay    = 0
1358      FX                  = INITIAL FX_DieByToxinUSA
1359      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
1360    End
1361  
1362    Behavior = SlowDeathBehavior ModuleTag_Death07
1363      DeathTypes          = NONE +POISONED_GAMMA
1364      DestructionDelay    = 0
1365      FX                  = INITIAL FX_DieByToxinUSA
1366      OCL                 = INITIAL OCL_ToxicInfantryGamma
1367    End
1368  ; --- end Death modules ---
1369  
1370    Behavior = PoisonedBehavior ModuleTag_13
1371      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
1372      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
1373    End
1374   
1375    Geometry = CYLINDER
1376    GeometryMajorRadius = 7.0
1377    GeometryMinorRadius = 7.0
1378    GeometryHeight = 12.0
1379    GeometryIsSmall = Yes
1380    Shadow = SHADOW_DECAL
1381    ShadowSizeX = 14;
1382    ShadowSizeY = 14;
1383    ShadowTexture = ShadowI;
1384    BuildCompletion = APPEARS_AT_RALLY_POINT
1385  
1386  End
1387  
1388  ;------------------------------------------------------------------------------
1389  ; @todo -- this entire unit is "first pass only" and needs lots of specialization
1390  Object AmericaInfantryPilot
1391  
1392    ; *** ART Parameters ***
1393    SelectPortrait         = SAPilot_L
1394    ButtonImage            = SAPilot
1395    
1396    ;UpgradeCameo1 = NONE
1397    ;UpgradeCameo2 = NONE
1398    ;UpgradeCameo3 = NONE
1399    ;UpgradeCameo4 = NONE
1400    ;UpgradeCameo5 = NONE
1401    
1402    Draw = W3DModelDraw ModuleTag_01
1403      OkToChangeModelColor = Yes
1404  
1405      DefaultConditionState
1406        Model = AIRPlt_SKN
1407        IdleAnimation = AIRPlt_SKL.AIRPlt_STA 0 20
1408        IdleAnimation = AIRPlt_SKL.AIRPlt_IDA 
1409        IdleAnimation = AIRPlt_SKL.AIRPlt_IDB 
1410        AnimationMode = ONCE
1411        TransitionKey = TRANS_Stand
1412      End
1413  
1414      ConditionState = FREEFALL
1415        Animation = AIRPlt_SKL.AIRPLT_PFL
1416        AnimationMode = ONCE
1417        TransitionKey = TRANS_Falling
1418      End
1419      AliasConditionState = FREEFALL DYING
1420  
1421      ConditionState = PARACHUTING
1422        Animation = AIRPlt_SKL.AIRPlt_PHG
1423        AnimationMode = LOOP
1424        TransitionKey = TRANS_Chute
1425        WaitForStateToFinishIfPossible = TRANS_Falling
1426      End
1427      AliasConditionState = PARACHUTING DYING
1428  
1429      ConditionState = MOVING
1430        Animation = AIRPlt_SKL.AIRPlt_RNA 
1431        AnimationMode = LOOP
1432        TransitionKey = TRANS_Stand
1433        ParticleSysBone     = None InfantryDustTrails
1434      End
1435      
1436  
1437      ConditionState = DYING
1438        Animation = AIRPlt_SKL.AIRPlt_DTA 
1439        Animation = AIRPlt_SKL.AIRPlt_DTB 
1440        AnimationMode = ONCE
1441        TransitionKey = TRANS_Dying
1442      End
1443  
1444      TransitionState = TRANS_Dying TRANS_Flailing
1445        Animation = AIRPlt_SKL.AIRPlt_ADTE1
1446        AnimationMode = ONCE
1447      End
1448  
1449      ConditionState = DYING EXPLODED_FLAILING
1450        Animation = AIRPlt_SKL.AIRPlt_ADTE2
1451        AnimationMode = LOOP
1452        TransitionKey = TRANS_Flailing
1453      End
1454  
1455      ConditionState = DYING EXPLODED_BOUNCING
1456        Animation = AIRPlt_SKL.AIRPlt_ADTE3
1457        AnimationMode = ONCE
1458        TransitionKey = None
1459      End
1460  
1461      ConditionState = SPECIAL_CHEERING
1462        Animation = AIRPLT_SKL.AIRPLT_CHA
1463        AnimationMode = LOOP
1464      End
1465  
1466      ;@TODO -- MISSING ANIMATION FILE
1467      ;TransitionState = TRANS_Falling TRANS_Chute
1468      ;  Animation = AIRPLT_SKL.AIRPLT_POP
1469      ;  AnimationMode = ONCE
1470      ;  Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  ; our bone positions should come from the last frame, rather than the first
1471      ;End
1472      
1473      TransitionState = TRANS_Chute TRANS_Stand
1474        Animation = AIRPlt_SKL.AIRPlt_PTD
1475        AnimationMode = ONCE
1476      End
1477  
1478    End
1479  
1480    ; ***DESIGN parameters ***
1481    DisplayName = OBJECT:Pilot
1482    Side = America
1483    EditorSorting = INFANTRY
1484    TransportSlotCount = 1               ;how many "slots" we take in a transport (0 == not transportable)
1485    ExperienceValue    = 10 10 10 10 ;Experience point value at each level
1486    ExperienceRequired =  0 1 2 3 ;Experience points needed to gain each level
1487    IsTrainable     = Yes  ;Can gain experience
1488    CommandSet = AmericaInfantryPilotCommandSet
1489  
1490    ArmorSet
1491      Conditions      = None
1492      Armor           = HumanArmor
1493      DamageFX        = InfantryDamageFX
1494    End
1495  
1496    VisionRange = 150
1497    ShroudClearingRange = 300
1498    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
1499  
1500    ; *** AUDIO Parameters ***
1501    VoiceSelect = PilotVoiceSelect
1502    VoiceMove = PilotVoiceMove
1503    VoiceAttack = PilotVoiceMove
1504    VoiceGarrison = PilotVoiceMove 
1505    VoiceFear = PilotVoiceFear
1506    UnitSpecificSounds
1507      VoiceEnter = PilotVoiceEnter
1508      VoiceEnterHostile     = PilotVoiceEnter
1509      VoiceGetHealed      = PilotVoiceMove
1510    End
1511  
1512    ; *** ENGINEERING Parameters ***
1513    RadarPriority = UNIT
1514    KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY NO_GARRISON SCORE IGNORES_SELECT_ALL
1515  
1516    Behavior = VeterancyGainCreate ModuleTag_02
1517      ; omit the "ScienceRequired" so that this upgrade always occurs.
1518      ; Pilots should never (repeat, never) be less than VETERAN status.
1519      StartingLevel = VETERAN
1520    End
1521  
1522    Behavior = VeterancyCrateCollide       ModuleTag_03
1523      RequiredKindOf = VEHICLE      ; we only give our bonus to VEHICLEs we collide with
1524      ForbiddenKindOf = DOZER       ; but not to TRANSPORTs or DOZERs!
1525      EffectRange = 0               ; 0=="affect only the thing you collide with"
1526      AddsOwnerVeterancy = Yes      ; we add our own veterancy to the target (rather than just +1 level)
1527      IsPilot = Yes                 ; set the pilot flag because it's different than the veterancy crate and has extra checking
1528    End
1529  
1530    Body = ActiveBody ModuleTag_04
1531      MaxHealth       = 100.0
1532      InitialHealth   = 100.0
1533    End
1534  
1535    Behavior = AIUpdateInterface ModuleTag_05
1536      AutoAcquireEnemiesWhenIdle = Yes
1537    End
1538  
1539    Behavior = AutoFindHealingUpdate   ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba 
1540      ScanRate = 1000 ; once a second.
1541      ScanRange = 300 ;
1542      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
1543      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
1544    End
1545  
1546    Behavior = PilotFindVehicleUpdate   ModuleTag_07 ; This update will have the unit go to a vehicle. jba 
1547      ScanRate = 1000 ; once a second.
1548      ScanRange = 300 ;
1549      MinHealth = 0.5 ;  don't enter a vehicle less than 50% healthy.
1550    End
1551  
1552    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
1553    Locomotor = SET_NORMAL_UPGRADED BasicHumanLocomotorPlus25
1554  
1555    Behavior = PhysicsBehavior ModuleTag_08
1556      Mass = 5.0
1557    End
1558  
1559    Behavior = LocomotorSetUpgrade ModuleTag_10
1560      TriggeredBy = Upgrade_Veterancy_HEROIC
1561    End
1562  
1563    Behavior = SquishCollide ModuleTag_11
1564      ;nothing
1565    End
1566  
1567  
1568  ; --- begin Death modules ---
1569    Behavior = SlowDeathBehavior ModuleTag_Death01
1570      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
1571      SinkDelay           = 3000
1572      SinkRate            = 0.5     ; in Dist/Sec
1573      DestructionDelay    = 8000
1574      FX                  = INITIAL FX_PilotDie
1575    End
1576    Behavior = SlowDeathBehavior ModuleTag_Death02
1577      DeathTypes          = NONE +CRUSHED +SPLATTED
1578      SinkDelay           = 3000
1579      SinkRate            = 0.5     ; in Dist/Sec
1580      DestructionDelay    = 8000
1581      FX                  = INITIAL FX_GIDieCrushed
1582    End
1583    Behavior = SlowDeathBehavior ModuleTag_Death03
1584      DeathTypes          = NONE +EXPLODED
1585      SinkDelay           = 3000
1586      SinkRate            = 0.5     ; in Dist/Sec
1587      DestructionDelay    = 8000
1588      FX                  = INITIAL FX_PilotDie
1589      FlingForce          = 8
1590      FlingForceVariance  = 3
1591      FlingPitch          = 60
1592      FlingPitchVariance  = 10
1593    End
1594    Behavior = SlowDeathBehavior ModuleTag_Death04
1595      DeathTypes          = NONE +BURNED
1596      DestructionDelay    = 0
1597      FX                  = INITIAL FX_DieByFireUSA
1598      OCL                 = INITIAL OCL_FlamingInfantry
1599    End
1600    Behavior = SlowDeathBehavior ModuleTag_Death05
1601      DeathTypes          = NONE +POISONED
1602      DestructionDelay    = 0
1603      FX                  = INITIAL FX_DieByToxinUSA
1604      OCL                 = INITIAL OCL_ToxicInfantry
1605    End
1606    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
1607      DeathTypes          = NONE +POISONED_BETA
1608      DestructionDelay    = 0
1609      FX                  = INITIAL FX_DieByToxinUSA
1610      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
1611    End
1612  
1613    Behavior = SlowDeathBehavior ModuleTag_Death07
1614      DeathTypes          = NONE +POISONED_GAMMA
1615      DestructionDelay    = 0
1616      FX                  = INITIAL FX_DieByToxinUSA
1617      OCL                 = INITIAL OCL_ToxicInfantryGamma
1618    End
1619  ; --- end Death modules ---
1620  
1621    Behavior = PoisonedBehavior ModuleTag_14
1622      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
1623      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
1624    End
1625   
1626    Geometry = CYLINDER
1627    GeometryMajorRadius = 10.0
1628    GeometryMinorRadius = 10.0
1629    GeometryHeight = 12.0
1630    GeometryIsSmall = Yes
1631    Shadow = SHADOW_DECAL
1632    ShadowSizeX = 14;
1633    ShadowSizeY = 14;
1634    ShadowTexture = ShadowI;
1635    BuildCompletion = APPEARS_AT_RALLY_POINT
1636  
1637  End
1638  
1639  ;------------------------------------------------------------------------------
1640  Object AmericaInfantryPathfinder
1641  
1642      ; *** ART Parameters ***
1643    SelectPortrait         = SAPathfinder1_L
1644    ButtonImage            = SAPathfinder1
1645    
1646    UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
1647    UpgradeCameo2 = Upgrade_AmericaChemicalSuits
1648    ;UpgradeCameo3 = NONE
1649    ;UpgradeCameo4 = NONE
1650    ;UpgradeCameo5 = NONE
1651    
1652    Draw = W3DModelDraw ModuleTag_01
1653  
1654      OkToChangeModelColor = Yes
1655  
1656      DefaultConditionState
1657        Model = AIPFDR_SKN
1658        IdleAnimation = AIPFDR_SKL.AIPFDR_STA 
1659        IdleAnimation = AIPFDR_SKL.AIPFDR_IDA
1660        AnimationMode = ONCE
1661        WeaponFireFXBone = PRIMARY Muzzle
1662        WeaponMuzzleFlash = PRIMARY MuzzleFX
1663        TransitionKey = TRANS_Standing
1664      End
1665      AliasConditionState = REALLYDAMAGED
1666  
1667      ConditionState = MOVING
1668        Animation = AIPFDR_SKL.AIPFDR_RNA 25
1669        AnimationMode = LOOP
1670        Flags = RANDOMSTART
1671        TransitionKey = TRANS_Standing
1672        ParticleSysBone   = None InfantryDustTrails
1673      End
1674      AliasConditionState = MOVING REALLYDAMAGED
1675  
1676      ConditionState  = FIRING_A 
1677        Animation     = AIPFDR_SKL.AIPFDR_ATB                 ; recoil in standing position
1678        AnimationMode = ONCE
1679        TransitionKey = TRANS_FiringA
1680      End
1681      AliasConditionState = FIRING_A MOVING
1682      AliasConditionState = FIRING_A MOVING REALLYDAMAGED
1683      AliasConditionState = FIRING_A REALLYDAMAGED
1684  
1685      ConditionState  = BETWEEN_FIRING_SHOTS_A
1686        Animation     = AIPFDR_SKL.AIPFDR_ATBST               ; motionless in standing position
1687        AnimationMode = ONCE
1688        WaitForStateToFinishIfPossible = TRANS_FiringA
1689      End
1690      AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
1691      AliasConditionState = RELOADING_A
1692      AliasConditionState = RELOADING_A REALLYDAMAGED
1693  
1694      ConditionState = DYING
1695        Animation = AIPFDR_SKL.AIPFDR_DTA
1696        AnimationMode = ONCE
1697        TransitionKey = TRANS_Dying
1698      End
1699      
1700      TransitionState = TRANS_Dying TRANS_Flailing
1701        Animation = AIPFDR_SKL.AIPFDR_ADTA1
1702        AnimationMode = ONCE
1703      End
1704  
1705      ConditionState = DYING EXPLODED_FLAILING
1706        Animation = AIPFDR_SKL.AIPFDR_ADTA2
1707        AnimationMode = LOOP
1708        TransitionKey = TRANS_Flailing
1709      End
1710  
1711      ConditionState = DYING EXPLODED_BOUNCING
1712        Animation = AIPFDR_SKL.AIPFDR_ADTA3
1713        AnimationMode = ONCE
1714        TransitionKey = None
1715      End
1716  
1717      ConditionState = FREEFALL
1718        Animation = AIPFDR_SKL.AIPFDR_PFL
1719        AnimationMode = LOOP
1720        TransitionKey = TRANS_Falling
1721      End
1722      AliasConditionState = FREEFALL DYING
1723  
1724      ConditionState = PARACHUTING
1725        Animation = AIPFDR_SKL.AIPFDR_PHG
1726        AnimationMode = LOOP
1727        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
1728        ;our bone positions should come from the last frame, rather than the first
1729        TransitionKey = TRANS_Chute
1730      End
1731      AliasConditionState = PARACHUTING DYING
1732  
1733  
1734      TransitionState = TRANS_Falling TRANS_Chute
1735        Animation = AIPFDR_SKL.AIPFDR_POP
1736        AnimationMode = ONCE
1737        Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME  
1738        ;our bone positions should come from the last frame, rather than the first
1739      End
1740  
1741      TransitionState = TRANS_Chute TRANS_Standing
1742        Animation = AIPFDR_SKL.AIPFDR_PTD
1743        AnimationMode = ONCE
1744      End
1745    End
1746  
1747    
1748    ; ***DESIGN parameters ***
1749    DisplayName      = OBJECT:Pathfinder
1750    Side = America
1751    EditorSorting = INFANTRY
1752    TransportSlotCount = 1                 ;how many "slots" we take in a transport (0 == not transportable)
1753    
1754    WeaponSet
1755      Conditions = None 
1756      Weapon = PRIMARY USAPathfinderSniperRifle
1757    End
1758    ArmorSet
1759      Conditions      = None
1760      Armor           = HumanArmor
1761      DamageFX        = InfantryDamageFX
1762    End
1763    ArmorSet
1764      Conditions      = PLAYER_UPGRADE
1765      Armor           = ChemSuitHumanArmor
1766      DamageFX        = InfantryDamageFX
1767    End
1768  
1769    VisionRange = 200
1770    ShroudClearingRange = 400
1771    Prerequisites
1772      Object = AmericaBarracks
1773      Science = SCIENCE_Pathfinder
1774    End
1775    BuildCost = 600
1776    BuildTime = 10.0          ;in seconds  
1777    
1778    ExperienceValue = 40 40 60 80    ;Experience point value at each level
1779    ExperienceRequired = 0 50 100 200  ;Experience points needed to gain each level
1780    IsTrainable = Yes             ;Can gain experience
1781    CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
1782    CommandSet      = AmericaInfantryPathfinderCommandSet
1783  
1784    ; *** AUDIO Parameters ***
1785    VoiceSelect = PathfinderVoiceSelect
1786    VoiceMove = PathfinderVoiceMove
1787    VoiceGuard = PathfinderVoiceMove
1788    VoiceAttack = PathfinderVoiceAttack
1789    VoiceFear = PathfinderVoiceFear
1790    SoundStealthOn = StealthOn
1791    SoundStealthOff = StealthOff
1792    VoiceFear = PathfinderVoiceFear
1793    
1794    UnitSpecificSounds
1795      VoiceCreate          = PathfinderVoiceCreate
1796      VoiceGarrison = PathfinderVoiceGarrison
1797      VoiceEnter = PathfinderVoiceMove
1798      VoiceEnterHostile =  PathfinderVoiceMove
1799      VoiceGetHealed      = PathfinderVoiceMove
1800    End
1801  
1802    ; *** ENGINEERING Parameters ***
1803    Behavior                = ArmorUpgrade ModuleTag_Armor01
1804      TriggeredBy           = Upgrade_AmericaChemicalSuits
1805    End
1806    RadarPriority = UNIT
1807    KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY STEALTH_GARRISON SCORE CANNOT_RETALIATE
1808  
1809    Body = ActiveBody ModuleTag_02
1810      MaxHealth       = 120.0
1811      InitialHealth   = 120.0
1812    End
1813  
1814    Behavior = AIUpdateInterface ModuleTag_03
1815      AutoAcquireEnemiesWhenIdle = Yes Stealthed
1816      MoodAttackCheckRate        = 250
1817    End
1818  
1819    Behavior = AutoFindHealingUpdate   ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba 
1820      ScanRate = 1000 ; once a second.
1821      ScanRange = 300 ;
1822      NeverHeal = 0.85 ;  don't heal if we are > 85% healthy.
1823      AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
1824    End
1825  
1826    Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor
1827  
1828    Behavior = ExperienceScalarUpgrade ModuleTag_05
1829      TriggeredBy = Upgrade_AmericaAdvancedTraining
1830      AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
1831    End
1832  
1833    Behavior = PhysicsBehavior ModuleTag_06
1834      Mass = 5.0
1835    End
1836    Behavior = StealthDetectorUpdate ModuleTag_08
1837      DetectionRate   = 500   ; how often to rescan for stealthed things in my sight (msec)
1838      ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
1839      CanDetectWhileGarrisoned  = No ;Garrisoned means being in a structure that you units can shoot out of.
1840      CanDetectWhileContained   = No ;Contained means being in a transport or tunnel network.
1841    End
1842    Behavior = StealthUpdate ModuleTag_09
1843      StealthDelay                = 0           ; msec
1844      StealthForbiddenConditions  = MOVING ; stays stealthy while attacking
1845      FriendlyOpacityMin          = 30.0%
1846      FriendlyOpacityMax          = 80.0%
1847      PulseFrequency              = 500   ; msec
1848      MoveThresholdSpeed          = 3
1849      InnateStealth               = Yes
1850      OrderIdleEnemiesToAttackMeUponReveal  = Yes
1851    End
1852   
1853    Behavior = SquishCollide ModuleTag_10
1854      ;nothing
1855    End
1856  
1857  
1858  ; --- begin Death modules ---
1859    Behavior = SlowDeathBehavior ModuleTag_Death01
1860      DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
1861      SinkDelay           = 3000
1862      SinkRate            = 0.5     ; in Dist/Sec
1863      DestructionDelay    = 8000
1864      FX                  = INITIAL FX_PathfinderDie
1865    End
1866    Behavior = SlowDeathBehavior ModuleTag_Death02
1867      DeathTypes          = NONE +CRUSHED +SPLATTED
1868      SinkDelay           = 3000
1869      SinkRate            = 0.5     ; in Dist/Sec
1870      DestructionDelay    = 8000
1871      FX                  = INITIAL FX_GIDieCrushed
1872    End
1873    Behavior = SlowDeathBehavior ModuleTag_Death03
1874      DeathTypes          = NONE +EXPLODED
1875      SinkDelay           = 3000
1876      SinkRate            = 0.5     ; in Dist/Sec
1877      DestructionDelay    = 8000
1878      FX                  = INITIAL FX_PathfinderDie
1879      FlingForce          = 8
1880      FlingForceVariance  = 3
1881      FlingPitch          = 60
1882      FlingPitchVariance  = 10
1883    End
1884    Behavior = SlowDeathBehavior ModuleTag_Death04
1885      DeathTypes          = NONE +BURNED
1886      DestructionDelay    = 0
1887      FX                  = INITIAL FX_DieByFireUSA
1888      OCL                 = INITIAL OCL_FlamingInfantry
1889    End
1890    Behavior = SlowDeathBehavior ModuleTag_Death05
1891      DeathTypes          = NONE +POISONED
1892      DestructionDelay    = 0
1893      FX                  = INITIAL FX_DieByToxinUSA
1894      OCL                 = INITIAL OCL_ToxicInfantry
1895    End
1896    Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
1897      DeathTypes          = NONE +POISONED_BETA
1898      DestructionDelay    = 0
1899      FX                  = INITIAL FX_DieByToxinUSA
1900      OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
1901    End
1902  
1903    Behavior = SlowDeathBehavior ModuleTag_Death07
1904      DeathTypes          = NONE +POISONED_GAMMA
1905      DestructionDelay    = 0
1906      FX                  = INITIAL FX_DieByToxinUSA
1907      OCL                 = INITIAL OCL_ToxicInfantryGamma
1908    End
1909  ; --- end Death modules ---
1910  
1911    Behavior = PoisonedBehavior ModuleTag_13
1912      PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
1913      PoisonDuration = 3000       ; ... for this long after last hit by poison damage
1914    End
1915   
1916    Geometry = CYLINDER
1917    GeometryMajorRadius = 10.0
1918    GeometryMinorRadius = 10.0
1919    GeometryHeight = 12.0
1920    GeometryIsSmall = Yes
1921    Shadow = SHADOW_DECAL
1922    ShadowSizeX = 14;
1923    ShadowSizeY = 14;
1924    ShadowTexture = ShadowI;
1925    BuildCompletion = APPEARS_AT_RALLY_POINT
1926  
1927  End


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