Gameanater
  • Gameanater
  • 55.5% (Neutral)
  • General Topic Starter
11 years ago
Per request of Mr. Zemlinsky, I am posting the beta of Project Fai. My modding project to improve China's Infantry General.

Features:
-- Elite Sniper: Attacks aircraft, extremely fast rate of fire, can attack vehicles with a shorter weapon. No Horde Bonus.
-- Rocket Fanatic: A great unit for anti-air and tanks. Fires a good 3 rockets at once. Horde Bonus!
-- Red Guard Squad: Creates a group of vanilla Red Guards. Patriotism!
-- Mini Gunners trained two at a time now

I'm probably going to get rid of the Dragon Trooper infantry. It'll be too much work and too little payoff to get him working exactly the way I want him too.

Leave comments/suggestions/hate in the replies! 😄   Project Fai beta.zip (168kb) downloaded 4 time(s).
Any old friends still on here can add me on discord @jcdenton2187. I'm far more likely to respond there.
Sponsor
JoshZemlinsky
11 years ago
Interesting, will check it out at some point 😄
Rrtaya_tsamsiyu
11 years ago
i could look at the dragon trooper if you want me to

comments/suggestions/hate
...you said to leave that in the reply, so i did. lol.
one soul at a time
Gameanater
  • Gameanater
  • 55.5% (Neutral)
  • General Topic Starter
11 years ago
Well okay, here's his code:




Object Infa_ChinaInfantryFlamethrower

  ; *** ART Parameters ***
  SelectPortrait         = SUToxinRebel_L
  ButtonImage            = SUToxinRebel

  UpgradeCameo1 = Upgrade_ChinaBlackNapalm
  UpgradeCameo2 = Upgrade_InfantryCaptureBuilding
  ;UpgradeCameo3 = Upgrade_GLACamouflage


  Draw = W3DModelDraw ModuleTag_01

    OkToChangeModelColor = Yes
  ParticlesAttachedToAnimatedBones = Yes


    
    ; this says "we don't use these condition states at all, so completely
    ; ignore them for purposes of matchmaking"... this is useful to help
    ; reduce the number of AliasConditionState clauses you must add in
    ; order to avoid ambiguity in some cases.
    IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A

    ; ---- standing
    DefaultConditionState
      Model               = UIRGrdTOX_SKN
      IdleAnimation       = UIRGrd_SKL.UIRGrd_STN 0 35
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDA 
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDB 
      AnimationMode       = ONCE
      WeaponFireFXBone    = PRIMARY Muzzle01
      WeaponLaunchBone    = PRIMARY Muzzle01
      HideSubObject       = MuzzleFX01
      TransitionKey       = TRANS_Standing
;;;   ParticleSysBone     = MUZZLE01 WaterSpray
    End

    ConditionState        = REALLYDAMAGED
      IdleAnimation       = UIRGrd_SKL.UIRGrd_STB 0 35
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDC
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDD 
      AnimationMode       = ONCE
      TransitionKey       = TRANS_StandingHurt
    End

    ; ---- moving
    ConditionState        = MOVING
      Animation           = UIRGrd_SKL.UIRGrd_RNA 15
      AnimationMode       = LOOP
      TransitionKey       = TRANS_Walking
      ParticleSysBone     = None InfantryDustTrails
    End
    AliasConditionState   = MOVING ATTACKING

    ConditionState        = MOVING REALLYDAMAGED
      Animation           = UIRGrd_SKL.UIRGrd_RNB 25
      AnimationMode       = LOOP
      TransitionKey       = TRANS_WalkingHurt
      ParticleSysBone     = None InfantryDustTrails
    End
    AliasConditionState   = MOVING ATTACKING REALLYDAMAGED
    
    ; ---- dying 
    ConditionState        = DYING
      Animation           = UIRGrd_SKL.UIRGrd_DTA 
      Animation           = UIRGrd_SKL.UIRGrd_DTB 
      AnimationMode       = ONCE
      TransitionKey       = TRANS_Dying
    End

    TransitionState = TRANS_Dying TRANS_Flailing
      Animation = UIRGrd_SKL.UIRGrd_ADTE1
      AnimationMode = ONCE
    End

    ConditionState = DYING EXPLODED_FLAILING
      Animation = UIRGrd_SKL.UIRGrd_ADTE2
      AnimationMode = LOOP
      TransitionKey = TRANS_Flailing
    End

    ConditionState = DYING EXPLODED_BOUNCING
      Animation = UIRGrd_SKL.UIRGrd_ADTE3
      AnimationMode = ONCE
      TransitionKey = None
    End
    
    ConditionState = SPECIAL_CHEERING
      Animation = UIRGrd_SKL.UIRGrd_IDB
    End

    ; ---- firing
    ConditionState = USING_WEAPON_A
      Animation = UIRGrd_SKL.UIRGrd_ATA
      AnimationMode = LOOP
      TransitionKey = TRANS_Firing
    End

    ConditionState = USING_WEAPON_A REALLYDAMAGED
      Animation = UIRGrd_SKL.UIRGrd_ATA2
      AnimationMode = LOOP
      TransitionKey = TRANS_FiringHurt
    End

    TransitionState = TRANS_Standing TRANS_Firing
      Animation = UIRGrd_SKL.UIRGrd_ATAST
      AnimationMode = ONCE
    End

    TransitionState = TRANS_Firing TRANS_Standing
      Animation = UIRGrd_SKL.UIRGrd_ATAED
      AnimationMode = ONCE
    End

    TransitionState = TRANS_StandingHurt TRANS_FiringHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE_BACKWARDS
    End

    TransitionState = TRANS_FiringHurt TRANS_StandingHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE
    End

    TransitionState = TRANS_Standing TRANS_StandingHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE
    End

    

    ; ------- Bldg-capture

    ConditionState = UNPACKING
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
      AnimationMode     = ONCE
    End
    AliasConditionState = UNPACKING REALLYDAMAGED

    ConditionState = RAISING_FLAG
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
      AnimationMode     = ONCE
      TransitionKey     = TRANS_Raising
    End
    AliasConditionState = RAISING_FLAG REALLYDAMAGED

    ConditionState = PACKING
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
      AnimationMode     = ONCE_BACKWARDS
      Flags             = START_FRAME_LAST
      TransitionKey     = TRANS_Packing
    End
    AliasConditionState = PACKING REALLYDAMAGED

    TransitionState = TRANS_Raising TRANS_Packing
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
      AnimationMode     = ONCE_BACKWARDS
      Flags             = START_FRAME_LAST
    End

  End

  ; ***DESIGN parameters ***
  DisplayName         = OBJECT:Dragon_Trooper
  Side                = ChinaInfantryGeneral
  EditorSorting       = INFANTRY
  TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
 
 WeaponSet
    Conditions        = None
    Weapon            = PRIMARY     DragonTankFlameWeaponUpgraded
  End
  WeaponSet
    Conditions        = PLAYER_UPGRADE 
    Weapon            = PRIMARY     DragonTankFlameWeaponUpgraded
  End

  ArmorSet
    Conditions      = None
    Armor           = DragonTankArmor
    DamageFX        = InfantryDamageFX
  End
  VisionRange         = 150
  ShroudClearingRange = 300
  Prerequisites
    Object = Infa_ChinaBarracks
  End
  BuildCost = 200
  BuildTime = 7.0          ;in seconds  

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

  ; *** AUDIO Parameters ***
  VoiceSelect = DragonTankVoiceSelect         ;was DragonTankVoiceFirestorm
  VoiceMove = DragonTankVoiceMove
  VoiceGuard = DragonTankVoiceMove
  VoiceAttack = DragonTankVoiceAttack
  SoundStealthOn = StealthOn
  SoundStealthOff = StealthOff
  VoiceFear = RedGuardVoiceFear
  VoiceTaskComplete = RedGuardVoiceCaptureComplete
  UnitSpecificSounds
    VoiceCreate = DragonTankVoiceCreate
    VoiceSubdue = RebelVoiceSubdue
    VoiceGarrison = DragonTankVoiceMove
    VoiceEnter = DragonTankVoiceMove
    VoiceEnterHostile = DragonTankVoiceMove
    VoiceGetHealed      = DragonTankVoiceMove
  End

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

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 120.0
    InitialHealth   = 120.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
  End

  Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
  End

  Locomotor = SET_NORMAL BasicHumanLocomotor

  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5.0
  End
  Behavior = StealthUpdate ModuleTag_07
    StealthDelay                = 2500 ; msec
    StealthForbiddenConditions  = ATTACKING USING_ABILITY
    MoveThresholdSpeed          = 3
    InnateStealth               = No ;Requires upgrade first
    OrderIdleEnemiesToAttackMeUponReveal  = Yes
  End
  ;Behavior = WeaponSetUpgrade ModuleTag_08
  ;  TriggeredBy   = China_Upgrade_BlackNapalm
  ;End

  ;Behavior = WeaponBonusUpgrade ModuleTag_09
  ;  TriggeredBy = Upgrade_GLAAPBullets
  ;End
  ;Behavior = StealthUpgrade ModuleTag_10
  ;  TriggeredBy = Upgrade_GLACamouflage
  ;End

 
  Behavior = SquishCollide ModuleTag_11
    ;nothing
  End

    ClientUpdate        = AnimatedParticleSysBoneClientUpdate ModuleTag_12 
  End
  

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

; --- end Death modules ---

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

  Behavior = SpecialAbility ModuleTag_17
    SpecialPowerTemplate      = SpecialAbilityRebelCaptureBuilding
    UpdateModuleStartsAttack  = Yes
    StartsPaused              = Yes
    InitiateSound         = RebelVoiceCapture
  End
  Behavior = SpecialAbilityUpdate ModuleTag_18
    SpecialPowerTemplate  = SpecialAbilityRebelCaptureBuilding
    StartAbilityRange  = 5.0
    UnpackTime            = 3000  ; (changing this will scale anim speed)
    PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
    PackTime              = 2000  ; (changing this will scale anim speed)
    DoCaptureFX           = Yes
    AwardXPForTriggering  = 12
    ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  End

  Behavior = UnpauseSpecialPowerUpgrade ModuleTag_19
    SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding
    TriggeredBy = Upgrade_InfantryCaptureBuilding
  End

 
  Geometry = CYLINDER
  GeometryMajorRadius = 10.0
  GeometryMinorRadius = 10.0
  GeometryHeight = 12.0
  GeometryIsSmall = Yes
  Shadow = SHADOW_DECAL
  ShadowSizeX = 14;
  ShadowSizeY = 14;
  ShadowTexture = ShadowI;
  BuildCompletion = APPEARS_AT_RALLY_POINT

End



File name: INFA_FlamethrowerInfantry.ini

I used the only armor I knew of that was completely immune to fire, but that now means he is ridiculously hard for infantry to kill. The Ranger prolly can't use Flash-Bangs on him because of the DragonTankArmor.

His weapon also works horribly while garrisoned or in a Helix. It often shoots right through the target if it's an infantrymen. And in the Helix his fire just shoots straight forward in the air when ordered to attack ground units. And it does damage to aircraft but of course he can't attack them unless force-firing on the ground. I also couldn't get Black Napalm to do anything for him so I replaced his standard weapon with the Dragon Tank's upgraded weapon.

I'll likely delete him. A Dragon Trooper is rather redundant to a Dragon Tank, which Fai has already.


Any old friends still on here can add me on discord @jcdenton2187. I'm far more likely to respond there.
Gameanater
  • Gameanater
  • 55.5% (Neutral)
  • General Topic Starter
11 years ago
Well that was weird. For some reason putting the SPOILER thing with the code, it removed the spaces before each line...


Object Infa_ChinaInfantryFlamethrower

  ; *** ART Parameters ***
  SelectPortrait         = SUToxinRebel_L
  ButtonImage            = SUToxinRebel

  UpgradeCameo1 = Upgrade_ChinaBlackNapalm
  UpgradeCameo2 = Upgrade_InfantryCaptureBuilding
  ;UpgradeCameo3 = Upgrade_GLACamouflage


  Draw = W3DModelDraw ModuleTag_01

    OkToChangeModelColor = Yes
  ParticlesAttachedToAnimatedBones = Yes


    
    ; this says "we don't use these condition states at all, so completely
    ; ignore them for purposes of matchmaking"... this is useful to help
    ; reduce the number of AliasConditionState clauses you must add in
    ; order to avoid ambiguity in some cases.
    IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A

    ; ---- standing
    DefaultConditionState
      Model               = UIRGrdTOX_SKN
      IdleAnimation       = UIRGrd_SKL.UIRGrd_STN 0 35
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDA 
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDB 
      AnimationMode       = ONCE
      WeaponFireFXBone    = PRIMARY Muzzle01
      WeaponLaunchBone    = PRIMARY Muzzle01
      HideSubObject       = MuzzleFX01
      TransitionKey       = TRANS_Standing
;;;   ParticleSysBone     = MUZZLE01 WaterSpray
    End

    ConditionState        = REALLYDAMAGED
      IdleAnimation       = UIRGrd_SKL.UIRGrd_STB 0 35
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDC
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDD 
      AnimationMode       = ONCE
      TransitionKey       = TRANS_StandingHurt
    End

    ; ---- moving
    ConditionState        = MOVING
      Animation           = UIRGrd_SKL.UIRGrd_RNA 15
      AnimationMode       = LOOP
      TransitionKey       = TRANS_Walking
      ParticleSysBone     = None InfantryDustTrails
    End
    AliasConditionState   = MOVING ATTACKING

    ConditionState        = MOVING REALLYDAMAGED
      Animation           = UIRGrd_SKL.UIRGrd_RNB 25
      AnimationMode       = LOOP
      TransitionKey       = TRANS_WalkingHurt
      ParticleSysBone     = None InfantryDustTrails
    End
    AliasConditionState   = MOVING ATTACKING REALLYDAMAGED
    
    ; ---- dying 
    ConditionState        = DYING
      Animation           = UIRGrd_SKL.UIRGrd_DTA 
      Animation           = UIRGrd_SKL.UIRGrd_DTB 
      AnimationMode       = ONCE
      TransitionKey       = TRANS_Dying
    End

    TransitionState = TRANS_Dying TRANS_Flailing
      Animation = UIRGrd_SKL.UIRGrd_ADTE1
      AnimationMode = ONCE
    End

    ConditionState = DYING EXPLODED_FLAILING
      Animation = UIRGrd_SKL.UIRGrd_ADTE2
      AnimationMode = LOOP
      TransitionKey = TRANS_Flailing
    End

    ConditionState = DYING EXPLODED_BOUNCING
      Animation = UIRGrd_SKL.UIRGrd_ADTE3
      AnimationMode = ONCE
      TransitionKey = None
    End
    
    ConditionState = SPECIAL_CHEERING
      Animation = UIRGrd_SKL.UIRGrd_IDB
    End

    ; ---- firing
    ConditionState = USING_WEAPON_A
      Animation = UIRGrd_SKL.UIRGrd_ATA
      AnimationMode = LOOP
      TransitionKey = TRANS_Firing
    End

    ConditionState = USING_WEAPON_A REALLYDAMAGED
      Animation = UIRGrd_SKL.UIRGrd_ATA2
      AnimationMode = LOOP
      TransitionKey = TRANS_FiringHurt
    End

    TransitionState = TRANS_Standing TRANS_Firing
      Animation = UIRGrd_SKL.UIRGrd_ATAST
      AnimationMode = ONCE
    End

    TransitionState = TRANS_Firing TRANS_Standing
      Animation = UIRGrd_SKL.UIRGrd_ATAED
      AnimationMode = ONCE
    End

    TransitionState = TRANS_StandingHurt TRANS_FiringHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE_BACKWARDS
    End

    TransitionState = TRANS_FiringHurt TRANS_StandingHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE
    End

    TransitionState = TRANS_Standing TRANS_StandingHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE
    End

    

    ; ------- Bldg-capture

    ConditionState = UNPACKING
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
      AnimationMode     = ONCE
    End
    AliasConditionState = UNPACKING REALLYDAMAGED

    ConditionState = RAISING_FLAG
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
      AnimationMode     = ONCE
      TransitionKey     = TRANS_Raising
    End
    AliasConditionState = RAISING_FLAG REALLYDAMAGED

    ConditionState = PACKING
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
      AnimationMode     = ONCE_BACKWARDS
      Flags             = START_FRAME_LAST
      TransitionKey     = TRANS_Packing
    End
    AliasConditionState = PACKING REALLYDAMAGED

    TransitionState = TRANS_Raising TRANS_Packing
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
      AnimationMode     = ONCE_BACKWARDS
      Flags             = START_FRAME_LAST
    End

  End

  ; ***DESIGN parameters ***
  DisplayName         = OBJECT:Dragon_Trooper
  Side                = ChinaInfantryGeneral
  EditorSorting       = INFANTRY
  TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
 
 WeaponSet
    Conditions        = None
    Weapon            = PRIMARY     DragonTankFlameWeaponUpgraded
  End
  WeaponSet
    Conditions        = PLAYER_UPGRADE 
    Weapon            = PRIMARY     DragonTankFlameWeaponUpgraded
  End

  ArmorSet
    Conditions      = None
    Armor           = DragonTankArmor
    DamageFX        = InfantryDamageFX
  End
  VisionRange         = 150
  ShroudClearingRange = 300
  Prerequisites
    Object = Infa_ChinaBarracks
  End
  BuildCost = 200
  BuildTime = 7.0          ;in seconds  

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

  ; *** AUDIO Parameters ***
  VoiceSelect = DragonTankVoiceSelect         ;was DragonTankVoiceFirestorm
  VoiceMove = DragonTankVoiceMove
  VoiceGuard = DragonTankVoiceMove
  VoiceAttack = DragonTankVoiceAttack
  SoundStealthOn = StealthOn
  SoundStealthOff = StealthOff
  VoiceFear = RedGuardVoiceFear
  VoiceTaskComplete = RedGuardVoiceCaptureComplete
  UnitSpecificSounds
    VoiceCreate = DragonTankVoiceCreate
    VoiceSubdue = RebelVoiceSubdue
    VoiceGarrison = DragonTankVoiceMove
    VoiceEnter = DragonTankVoiceMove
    VoiceEnterHostile = DragonTankVoiceMove
    VoiceGetHealed      = DragonTankVoiceMove
  End

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

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 120.0
    InitialHealth   = 120.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
  End

  Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
  End

  Locomotor = SET_NORMAL BasicHumanLocomotor

  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5.0
  End
  Behavior = StealthUpdate ModuleTag_07
    StealthDelay                = 2500 ; msec
    StealthForbiddenConditions  = ATTACKING USING_ABILITY
    MoveThresholdSpeed          = 3
    InnateStealth               = No ;Requires upgrade first
    OrderIdleEnemiesToAttackMeUponReveal  = Yes
  End
  ;Behavior = WeaponSetUpgrade ModuleTag_08
  ;  TriggeredBy   = China_Upgrade_BlackNapalm
  ;End

  ;Behavior = WeaponBonusUpgrade ModuleTag_09
  ;  TriggeredBy = Upgrade_GLAAPBullets
  ;End
  ;Behavior = StealthUpgrade ModuleTag_10
  ;  TriggeredBy = Upgrade_GLACamouflage
  ;End

 
  Behavior = SquishCollide ModuleTag_11
    ;nothing
  End

    ClientUpdate        = AnimatedParticleSysBoneClientUpdate ModuleTag_12 
  End
  

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

; --- end Death modules ---

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

  Behavior = SpecialAbility ModuleTag_17
    SpecialPowerTemplate      = SpecialAbilityRebelCaptureBuilding
    UpdateModuleStartsAttack  = Yes
    StartsPaused              = Yes
    InitiateSound         = RebelVoiceCapture
  End
  Behavior = SpecialAbilityUpdate ModuleTag_18
    SpecialPowerTemplate  = SpecialAbilityRebelCaptureBuilding
    StartAbilityRange  = 5.0
    UnpackTime            = 3000  ; (changing this will scale anim speed)
    PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
    PackTime              = 2000  ; (changing this will scale anim speed)
    DoCaptureFX           = Yes
    AwardXPForTriggering  = 12
    ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  End

  Behavior = UnpauseSpecialPowerUpgrade ModuleTag_19
    SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding
    TriggeredBy = Upgrade_InfantryCaptureBuilding
  End

 
  Geometry = CYLINDER
  GeometryMajorRadius = 10.0
  GeometryMinorRadius = 10.0
  GeometryHeight = 12.0
  GeometryIsSmall = Yes
  Shadow = SHADOW_DECAL
  ShadowSizeX = 14;
  ShadowSizeY = 14;
  ShadowTexture = ShadowI;
  BuildCompletion = APPEARS_AT_RALLY_POINT

End


OH COME ON, IT'S STILL DOING IT! Didn't the whole [code] thing work properly before??
Any old friends still on here can add me on discord @jcdenton2187. I'm far more likely to respond there.
Annihilationzh
11 years ago
Fixed.

Well that was weird. For some reason putting the SPOILER thing with the code, it removed the spaces before each line...


Object Infa_ChinaInfantryFlamethrower

  ; *** ART Parameters ***
  SelectPortrait         = SUToxinRebel_L
  ButtonImage            = SUToxinRebel

  UpgradeCameo1 = Upgrade_ChinaBlackNapalm
  UpgradeCameo2 = Upgrade_InfantryCaptureBuilding
  ;UpgradeCameo3 = Upgrade_GLACamouflage


  Draw = W3DModelDraw ModuleTag_01

    OkToChangeModelColor = Yes
  ParticlesAttachedToAnimatedBones = Yes


    
    ; this says "we don't use these condition states at all, so completely
    ; ignore them for purposes of matchmaking"... this is useful to help
    ; reduce the number of AliasConditionState clauses you must add in
    ; order to avoid ambiguity in some cases.
    IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A

    ; ---- standing
    DefaultConditionState
      Model               = UIRGrdTOX_SKN
      IdleAnimation       = UIRGrd_SKL.UIRGrd_STN 0 35
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDA 
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDB 
      AnimationMode       = ONCE
      WeaponFireFXBone    = PRIMARY Muzzle01
      WeaponLaunchBone    = PRIMARY Muzzle01
      HideSubObject       = MuzzleFX01
      TransitionKey       = TRANS_Standing
;;;   ParticleSysBone     = MUZZLE01 WaterSpray
    End

    ConditionState        = REALLYDAMAGED
      IdleAnimation       = UIRGrd_SKL.UIRGrd_STB 0 35
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDC
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDD 
      AnimationMode       = ONCE
      TransitionKey       = TRANS_StandingHurt
    End

    ; ---- moving
    ConditionState        = MOVING
      Animation           = UIRGrd_SKL.UIRGrd_RNA 15
      AnimationMode       = LOOP
      TransitionKey       = TRANS_Walking
      ParticleSysBone     = None InfantryDustTrails
    End
    AliasConditionState   = MOVING ATTACKING

    ConditionState        = MOVING REALLYDAMAGED
      Animation           = UIRGrd_SKL.UIRGrd_RNB 25
      AnimationMode       = LOOP
      TransitionKey       = TRANS_WalkingHurt
      ParticleSysBone     = None InfantryDustTrails
    End
    AliasConditionState   = MOVING ATTACKING REALLYDAMAGED
    
    ; ---- dying 
    ConditionState        = DYING
      Animation           = UIRGrd_SKL.UIRGrd_DTA 
      Animation           = UIRGrd_SKL.UIRGrd_DTB 
      AnimationMode       = ONCE
      TransitionKey       = TRANS_Dying
    End

    TransitionState = TRANS_Dying TRANS_Flailing
      Animation = UIRGrd_SKL.UIRGrd_ADTE1
      AnimationMode = ONCE
    End

    ConditionState = DYING EXPLODED_FLAILING
      Animation = UIRGrd_SKL.UIRGrd_ADTE2
      AnimationMode = LOOP
      TransitionKey = TRANS_Flailing
    End

    ConditionState = DYING EXPLODED_BOUNCING
      Animation = UIRGrd_SKL.UIRGrd_ADTE3
      AnimationMode = ONCE
      TransitionKey = None
    End
    
    ConditionState = SPECIAL_CHEERING
      Animation = UIRGrd_SKL.UIRGrd_IDB
    End

    ; ---- firing
    ConditionState = USING_WEAPON_A
      Animation = UIRGrd_SKL.UIRGrd_ATA
      AnimationMode = LOOP
      TransitionKey = TRANS_Firing
    End

    ConditionState = USING_WEAPON_A REALLYDAMAGED
      Animation = UIRGrd_SKL.UIRGrd_ATA2
      AnimationMode = LOOP
      TransitionKey = TRANS_FiringHurt
    End

    TransitionState = TRANS_Standing TRANS_Firing
      Animation = UIRGrd_SKL.UIRGrd_ATAST
      AnimationMode = ONCE
    End

    TransitionState = TRANS_Firing TRANS_Standing
      Animation = UIRGrd_SKL.UIRGrd_ATAED
      AnimationMode = ONCE
    End

    TransitionState = TRANS_StandingHurt TRANS_FiringHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE_BACKWARDS
    End

    TransitionState = TRANS_FiringHurt TRANS_StandingHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE
    End

    TransitionState = TRANS_Standing TRANS_StandingHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE
    End

    

    ; ------- Bldg-capture

    ConditionState = UNPACKING
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
      AnimationMode     = ONCE
    End
    AliasConditionState = UNPACKING REALLYDAMAGED

    ConditionState = RAISING_FLAG
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
      AnimationMode     = ONCE
      TransitionKey     = TRANS_Raising
    End
    AliasConditionState = RAISING_FLAG REALLYDAMAGED

    ConditionState = PACKING
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
      AnimationMode     = ONCE_BACKWARDS
      Flags             = START_FRAME_LAST
      TransitionKey     = TRANS_Packing
    End
    AliasConditionState = PACKING REALLYDAMAGED

    TransitionState = TRANS_Raising TRANS_Packing
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
      AnimationMode     = ONCE_BACKWARDS
      Flags             = START_FRAME_LAST
    End

  End

  ; ***DESIGN parameters ***
  DisplayName         = OBJECT:Dragon_Trooper
  Side                = ChinaInfantryGeneral
  EditorSorting       = INFANTRY
  TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
 
 WeaponSet
    Conditions        = None
    Weapon            = PRIMARY     DragonTankFlameWeaponUpgraded
  End
  WeaponSet
    Conditions        = PLAYER_UPGRADE 
    Weapon            = PRIMARY     DragonTankFlameWeaponUpgraded
  End

  ArmorSet
    Conditions      = None
    Armor           = DragonTankArmor
    DamageFX        = InfantryDamageFX
  End
  VisionRange         = 150
  ShroudClearingRange = 300
  Prerequisites
    Object = Infa_ChinaBarracks
  End
  BuildCost = 200
  BuildTime = 7.0          ;in seconds  

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

  ; *** AUDIO Parameters ***
  VoiceSelect = DragonTankVoiceSelect         ;was DragonTankVoiceFirestorm
  VoiceMove = DragonTankVoiceMove
  VoiceGuard = DragonTankVoiceMove
  VoiceAttack = DragonTankVoiceAttack
  SoundStealthOn = StealthOn
  SoundStealthOff = StealthOff
  VoiceFear = RedGuardVoiceFear
  VoiceTaskComplete = RedGuardVoiceCaptureComplete
  UnitSpecificSounds
    VoiceCreate = DragonTankVoiceCreate
    VoiceSubdue = RebelVoiceSubdue
    VoiceGarrison = DragonTankVoiceMove
    VoiceEnter = DragonTankVoiceMove
    VoiceEnterHostile = DragonTankVoiceMove
    VoiceGetHealed      = DragonTankVoiceMove
  End

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

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 120.0
    InitialHealth   = 120.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
  End

  Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit. 
  End

  Locomotor = SET_NORMAL BasicHumanLocomotor

  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5.0
  End
  Behavior = StealthUpdate ModuleTag_07
    StealthDelay                = 2500 ; msec
    StealthForbiddenConditions  = ATTACKING USING_ABILITY
    MoveThresholdSpeed          = 3
    InnateStealth               = No ;Requires upgrade first
    OrderIdleEnemiesToAttackMeUponReveal  = Yes
  End
  ;Behavior = WeaponSetUpgrade ModuleTag_08
  ;  TriggeredBy   = China_Upgrade_BlackNapalm
  ;End

  ;Behavior = WeaponBonusUpgrade ModuleTag_09
  ;  TriggeredBy = Upgrade_GLAAPBullets
  ;End
  ;Behavior = StealthUpgrade ModuleTag_10
  ;  TriggeredBy = Upgrade_GLACamouflage
  ;End

 
  Behavior = SquishCollide ModuleTag_11
    ;nothing
  End

    ClientUpdate        = AnimatedParticleSysBoneClientUpdate ModuleTag_12 
  End
  

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

; --- end Death modules ---

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

  Behavior = SpecialAbility ModuleTag_17
    SpecialPowerTemplate      = SpecialAbilityRebelCaptureBuilding
    UpdateModuleStartsAttack  = Yes
    StartsPaused              = Yes
    InitiateSound         = RebelVoiceCapture
  End
  Behavior = SpecialAbilityUpdate ModuleTag_18
    SpecialPowerTemplate  = SpecialAbilityRebelCaptureBuilding
    StartAbilityRange  = 5.0
    UnpackTime            = 3000  ; (changing this will scale anim speed)
    PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
    PackTime              = 2000  ; (changing this will scale anim speed)
    DoCaptureFX           = Yes
    AwardXPForTriggering  = 12
    ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  End

  Behavior = UnpauseSpecialPowerUpgrade ModuleTag_19
    SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding
    TriggeredBy = Upgrade_InfantryCaptureBuilding
  End

 
  Geometry = CYLINDER
  GeometryMajorRadius = 10.0
  GeometryMinorRadius = 10.0
  GeometryHeight = 12.0
  GeometryIsSmall = Yes
  Shadow = SHADOW_DECAL
  ShadowSizeX = 14;
  ShadowSizeY = 14;
  ShadowTexture = ShadowI;
  BuildCompletion = APPEARS_AT_RALLY_POINT

End


OH COME ON, IT'S STILL DOING IT! Didn't the whole [code] thing work properly before??

Originally Posted by: Gameanater 


If you need help, post in the forum. You'll get help a lot faster than if you send me a PM.

I reject all buddy requests. I don't think 'buddy' needs to be made official. It's not like you're marrying me.
Gameanater
  • Gameanater
  • 55.5% (Neutral)
  • General Topic Starter
11 years ago
Thank you! 😁

What'd I do wrong?
Any old friends still on here can add me on discord @jcdenton2187. I'm far more likely to respond there.
Rrtaya_tsamsiyu
11 years ago
here, try this;

Object Infa_ChinaInfantryFlamethrower
 
  ; *** ART Parameters ***
  SelectPortrait         = SUToxinRebel_L
  ButtonImage            = SUToxinRebel
 
  UpgradeCameo1 = Upgrade_ChinaBlackNapalm
  UpgradeCameo2 = Upgrade_InfantryCaptureBuilding
  ;UpgradeCameo3 = Upgrade_GLACamouflage
 
 
  Draw = W3DModelDraw ModuleTag_01
 
    OkToChangeModelColor = Yes
  ParticlesAttachedToAnimatedBones = Yes
 
 
     
    ; this says "we don't use these condition states at all, so completely
    ; ignore them for purposes of matchmaking"... this is useful to help
    ; reduce the number of AliasConditionState clauses you must add in
    ; order to avoid ambiguity in some cases.
    IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
 
    ; ---- standing
    DefaultConditionState
      Model               = UIRGrdTOX_SKN
      IdleAnimation       = UIRGrd_SKL.UIRGrd_STN 0 35
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDA
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDB
      AnimationMode       = ONCE
      WeaponFireFXBone    = PRIMARY Muzzle01
      WeaponLaunchBone    = PRIMARY Muzzle01
      HideSubObject       = MuzzleFX01
      TransitionKey       = TRANS_Standing
      Turret              = PRIMARY Muzzle01
;;;   ParticleSysBone     = MUZZLE01 WaterSpray
    End
 
    ConditionState        = REALLYDAMAGED
      IdleAnimation       = UIRGrd_SKL.UIRGrd_STB 0 35
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDC
      IdleAnimation       = UIRGrd_SKL.UIRGrd_IDD
      AnimationMode       = ONCE
      TransitionKey       = TRANS_StandingHurt
    End
 
    ; ---- moving
    ConditionState        = MOVING
      Animation           = UIRGrd_SKL.UIRGrd_RNA 15
      AnimationMode       = LOOP
      TransitionKey       = TRANS_Walking
      ParticleSysBone     = None InfantryDustTrails
    End
    AliasConditionState   = MOVING ATTACKING
 
    ConditionState        = MOVING REALLYDAMAGED
      Animation           = UIRGrd_SKL.UIRGrd_RNB 25
      AnimationMode       = LOOP
      TransitionKey       = TRANS_WalkingHurt
      ParticleSysBone     = None InfantryDustTrails
    End
    AliasConditionState   = MOVING ATTACKING REALLYDAMAGED
     
    ; ---- dying
    ConditionState        = DYING
      Animation           = UIRGrd_SKL.UIRGrd_DTA
      Animation           = UIRGrd_SKL.UIRGrd_DTB
      AnimationMode       = ONCE
      TransitionKey       = TRANS_Dying
    End
 
    TransitionState = TRANS_Dying TRANS_Flailing
      Animation = UIRGrd_SKL.UIRGrd_ADTE1
      AnimationMode = ONCE
    End
 
    ConditionState = DYING EXPLODED_FLAILING
      Animation = UIRGrd_SKL.UIRGrd_ADTE2
      AnimationMode = LOOP
      TransitionKey = TRANS_Flailing
    End
 
    ConditionState = DYING EXPLODED_BOUNCING
      Animation = UIRGrd_SKL.UIRGrd_ADTE3
      AnimationMode = ONCE
      TransitionKey = None
    End
     
    ConditionState = SPECIAL_CHEERING
      Animation = UIRGrd_SKL.UIRGrd_IDB
    End
 
    ; ---- firing
    ConditionState = USING_WEAPON_A
      Animation = UIRGrd_SKL.UIRGrd_ATA
      AnimationMode = LOOP
      TransitionKey = TRANS_Firing
    End
 
    ConditionState = USING_WEAPON_A REALLYDAMAGED
      Animation = UIRGrd_SKL.UIRGrd_ATA2
      AnimationMode = LOOP
      TransitionKey = TRANS_FiringHurt
    End
 
    TransitionState = TRANS_Standing TRANS_Firing
      Animation = UIRGrd_SKL.UIRGrd_ATAST
      AnimationMode = ONCE
    End
 
    TransitionState = TRANS_Firing TRANS_Standing
      Animation = UIRGrd_SKL.UIRGrd_ATAED
      AnimationMode = ONCE
    End
 
    TransitionState = TRANS_StandingHurt TRANS_FiringHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE_BACKWARDS
    End
 
    TransitionState = TRANS_FiringHurt TRANS_StandingHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE
    End
 
    TransitionState = TRANS_Standing TRANS_StandingHurt
      Animation = UIRGrd_SKL.UIRGrd_ATA2ED
      AnimationMode = ONCE
    End
 
     
 
    ; ------- Bldg-capture
 
    ConditionState = UNPACKING
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
      AnimationMode     = ONCE
    End
    AliasConditionState = UNPACKING REALLYDAMAGED
 
    ConditionState = RAISING_FLAG
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
      AnimationMode     = ONCE
      TransitionKey     = TRANS_Raising
    End
    AliasConditionState = RAISING_FLAG REALLYDAMAGED
 
    ConditionState = PACKING
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP1
      AnimationMode     = ONCE_BACKWARDS
      Flags             = START_FRAME_LAST
      TransitionKey     = TRANS_Packing
    End
    AliasConditionState = PACKING REALLYDAMAGED
 
    TransitionState = TRANS_Raising TRANS_Packing
      Model             = UIRGrd_F_SKN
      Animation         = UIRGrd_F_SKL.UIRGrd_F_FDP2
      AnimationMode     = ONCE_BACKWARDS
      Flags             = START_FRAME_LAST
    End
 
  End
 
  ; ***DESIGN parameters ***
  DisplayName         = OBJECT:Dragon_Trooper
  Side                = ChinaInfantryGeneral
  EditorSorting       = INFANTRY
  TransportSlotCount  = 1                 ;how many "slots" we take in a transport (0 == not transportable)
  
 WeaponSet
    Conditions        = None
    Weapon            = PRIMARY     DragonTankFlameWeaponUpgraded
  End
  WeaponSet
    Conditions        = PLAYER_UPGRADE
    Weapon            = PRIMARY     DragonTankFlameWeaponUpgraded
  End
 
  ArmorSet
    Conditions      = None
    Armor           = DragonTankArmor
    DamageFX        = InfantryDamageFX
  End
  VisionRange         = 150
  ShroudClearingRange = 300
  Prerequisites
    Object = Infa_ChinaBarracks
  End
  BuildCost = 200
  BuildTime = 7.0          ;in seconds 
 
  ExperienceValue     = 15 15 30 40     ;Experience point value at each level
  ExperienceRequired  = 0 40 60 120     ;Experience points needed to gain each level
  IsTrainable         = Yes             ;Can gain experience
  CrushableLevel      = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet          = Chem_GLAInfantryRebelCommandSet
 
  ; *** AUDIO Parameters ***
  VoiceSelect = DragonTankVoiceSelect         ;was DragonTankVoiceFirestorm
  VoiceMove = DragonTankVoiceMove
  VoiceGuard = DragonTankVoiceMove
  VoiceAttack = DragonTankVoiceAttack
  SoundStealthOn = StealthOn
  SoundStealthOff = StealthOff
  VoiceFear = RedGuardVoiceFear
  VoiceTaskComplete = RedGuardVoiceCaptureComplete
  UnitSpecificSounds
    VoiceCreate = DragonTankVoiceCreate
    VoiceSubdue = RebelVoiceSubdue
    VoiceGarrison = DragonTankVoiceMove
    VoiceEnter = DragonTankVoiceMove
    VoiceEnterHostile = DragonTankVoiceMove
    VoiceGetHealed      = DragonTankVoiceMove
  End
 
  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE
 
  Body = ActiveBody ModuleTag_02
    MaxHealth       = 120.0
    InitialHealth   = 120.0
  End
 
  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
    Turret
      TurretTurnRate = 0
      TurretPitchRate = 120
      AllowsPitch = Yes
      MinPhysicalPitch = -15

      TurretFireAngleSweep = PRIMARY 10
      TurretSweepSpeedModifier = PRIMARY 0.5    ; Sweep slower than you turn (aim for 30 for art)
      ControlledWeaponSlots = PRIMARY
    End
  End
 
  Behavior = CommandButtonHuntUpdate  ModuleTag_04 ; allows use of command button hunt script with this unit.
  End
 
  Locomotor = SET_NORMAL BasicHumanLocomotor
 
  Behavior = PhysicsBehavior ModuleTag_05
    Mass = 5.0
  End
  Behavior = StealthUpdate ModuleTag_07
    StealthDelay                = 2500 ; msec
    StealthForbiddenConditions  = ATTACKING USING_ABILITY
    MoveThresholdSpeed          = 3
    InnateStealth               = No ;Requires upgrade first
    OrderIdleEnemiesToAttackMeUponReveal  = Yes
  End
  ;Behavior = WeaponSetUpgrade ModuleTag_08
  ;  TriggeredBy   = China_Upgrade_BlackNapalm
  ;End
 
  ;Behavior = WeaponBonusUpgrade ModuleTag_09
  ;  TriggeredBy = Upgrade_GLAAPBullets
  ;End
  ;Behavior = StealthUpgrade ModuleTag_10
  ;  TriggeredBy = Upgrade_GLACamouflage
  ;End
 
  
  Behavior = SquishCollide ModuleTag_11
    ;nothing
  End
 
    ClientUpdate        = AnimatedParticleSysBoneClientUpdate ModuleTag_12
  End
   
 
; --- begin Death modules ---
  Behavior = SlowDeathBehavior ModuleTag_Death01
    DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RebelDie
  End
  Behavior = SlowDeathBehavior ModuleTag_Death02
    DeathTypes          = NONE +CRUSHED +SPLATTED
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_GIDieCrushed
  End
  Behavior = SlowDeathBehavior ModuleTag_Death03
    DeathTypes          = NONE +EXPLODED
    SinkDelay           = 3000
    SinkRate            = 0.5     ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RebelDie
    FlingForce          = 8
    FlingForceVariance  = 3
    FlingPitch          = 60
    FlingPitchVariance  = 10
  End
  Behavior = SlowDeathBehavior ModuleTag_Death04
    DeathTypes          = NONE +BURNED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByFireGLA
    OCL                 = INITIAL OCL_FlamingInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death05
    DeathTypes          = NONE +POISONED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
    DeathTypes          = NONE +POISONED_BETA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
  End
  Behavior = SlowDeathBehavior ModuleTag_Death07
    DeathTypes          = NONE +POISONED_GAMMA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinGLA
    OCL                 = INITIAL OCL_ToxicInfantryGamma
  End
 
; --- end Death modules ---
 
  Behavior = PoisonedBehavior ModuleTag_16
    PoisonDamageInterval = 100  ; Every this many msec I will retake the poison damage dealt me...
    PoisonDuration = 3000       ; ... for this long after last hit by poison damage
  End
 
  Behavior = SpecialAbility ModuleTag_17
    SpecialPowerTemplate      = SpecialAbilityRebelCaptureBuilding
    UpdateModuleStartsAttack  = Yes
    StartsPaused              = Yes
    InitiateSound         = RebelVoiceCapture
  End
  Behavior = SpecialAbilityUpdate ModuleTag_18
    SpecialPowerTemplate  = SpecialAbilityRebelCaptureBuilding
    StartAbilityRange  = 5.0
    UnpackTime            = 3000  ; (changing this will scale anim speed)
    PreparationTime       = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
    PackTime              = 2000  ; (changing this will scale anim speed)
    DoCaptureFX           = Yes
    AwardXPForTriggering  = 12
    ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  End
 
  Behavior = UnpauseSpecialPowerUpgrade ModuleTag_19
    SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding
    TriggeredBy = Upgrade_InfantryCaptureBuilding
  End
 
  
  Geometry = CYLINDER
  GeometryMajorRadius = 10.0
  GeometryMinorRadius = 10.0
  GeometryHeight = 12.0
  GeometryIsSmall = Yes
  Shadow = SHADOW_DECAL
  ShadowSizeX = 14;
  ShadowSizeY = 14;
  ShadowTexture = ShadowI;
  BuildCompletion = APPEARS_AT_RALLY_POINT
 
End


i just added a turret for the weapon to fire from, that's the only thing i saw different from my guy right off hand. FYI, mine will fire past the target for a second then fire at it's position, so if this fixes yours it might do that.

Also, for the armor i would advise using HazMatHumanArmor. Not invincible to fire, but then again it would be odd for a regular human to be invincible to fire even with protection.
Hazmat is not resistant to flash bangs.
Only option other than regular, hazmat or dragon tank [or any other default armor] would be to make custom armor.

Fire weapon fx don't like to play nice, lol.
one soul at a time
Gameanater
  • Gameanater
  • 55.5% (Neutral)
  • General Topic Starter
11 years ago
Thank you, RT! 😁 I'll try it soon as possible.
Any old friends still on here can add me on discord @jcdenton2187. I'm far more likely to respond there.
Gameanater
  • Gameanater
  • 55.5% (Neutral)
  • General Topic Starter
11 years ago
Thank you for trying to help, RT, but unfortunately there's something in your code that's causing my game to not work... I get a "serious error" whenever I try to play with the new version of the Dragon Trooper. Once I switched back to my original code the game started up without any problems.... 😞

I'm just gunna comment out the part in the CommandSets that allow Dragon Troopers to be built. Oh well.
Any old friends still on here can add me on discord @jcdenton2187. I'm far more likely to respond there.
Rrtaya_tsamsiyu
11 years ago
huh. ran it and it worked ok for me.. looked weird though, he was firing his regular gun and both the ranger and toxin trooper models were there, as the same unit lol. You're welcome though, sorry it didn't work.
one soul at a time
Gameanater
  • Gameanater
  • 55.5% (Neutral)
  • General Topic Starter
11 years ago
Dang... I wish I could see that... XDD
Any old friends still on here can add me on discord @jcdenton2187. I'm far more likely to respond there.
Gameanater
  • Gameanater
  • 55.5% (Neutral)
  • General Topic Starter
11 years ago
Look what I've done! 😁

Those aren't Tank Hunters, btw. Those are Rocket Fanatics!

  sshot113.bmp (3,601kb) downloaded 13 time(s).
Any old friends still on here can add me on discord @jcdenton2187. I'm far more likely to respond there.
JoshZemlinsky
11 years ago
For your first mod, you've done a pretty good job!

It was jaw dropping for me to launch regular ZH for once to try your mod... So empty.. It feels kinda weird.
Not your mod of course, just the factions over all.
Gameanater
  • Gameanater
  • 55.5% (Neutral)
  • General Topic Starter
11 years ago
Thank you! 😃 And it's really not even finished yet! lol

I know what you mean... Regular Zero hour IS kinda bland...

But, chances are I'll go beyond the whole Project Fai thing and just mod each faction!!! lol... Modding's really fun...

I turned Fai into a ridiculously overpowered and fun faction to play as now, if I do say so myself. xD

What map you play on? And, if ya don't mind me asking, what'd you think of the new units I have?
Any old friends still on here can add me on discord @jcdenton2187. I'm far more likely to respond there.
Gameanater
  • Gameanater
  • 55.5% (Neutral)
  • General Topic Starter
11 years ago
Beta 2

--Removed the ability to train the Dragon Trooper
-- Changed Elite Sniper's primary weapon

That's really it. lol

  Project Fai beta 2.zip (167kb) downloaded 1 time(s).
Any old friends still on here can add me on discord @jcdenton2187. I'm far more likely to respond there.