zzc
  • zzc
  • 50.25% (Neutral)
  • Major Topic Starter
9 years ago
Trying to make the overlord have a ready made bunker instead of having to upgrade it.



;------------------------------------------------------------------------------
Object ChinaTankOverlordBattleBunker2

  ; *** ART Parameters ***
  SelectPortrait         = SNBunker_L
  ButtonImage            = SNBunker
  
  ;UpgradeCameo1 = Upgrade_Nationalism
  UpgradeCameo1 = Upgrade_ChinaUraniumShells
  UpgradeCameo2 = Upgrade_ChinaNuclearTanks
  ;UpgradeCameo4 = NONE
  UpgradeCameo5 = Upgrade_ChinaOverlordBattleBunker
  
  Draw                    = W3DDependencyModelDraw ModuleTag_01
    OkToChangeModelColor  = Yes
    AttachToBoneInContainer = FIREPOINT01

    ConditionState = NONE
      Model         = NVOvrlrd_B
    End
    ConditionState = REALLYDAMAGED
      Model         = NVOvrlrd_BD
      ParticleSysBone = Smoke01 SmolderingSmoke
      ParticleSysBone = Smoke02 SmolderingSmoke
      ParticleSysBone = Flame01 SmolderingFire
      ParticleSysBone = Flame01 SmolderingFlameCore
      ParticleSysBone = Spark01 LiveWireSparks
    End
    ; night
    ConditionState = NIGHT
      Model         = NVOvrlrd_B
    End 
    ConditionState = NIGHT REALLYDAMAGED
      Model         = NVOvrlrd_BD
      ParticleSysBone = Smoke01 SmolderingSmoke
      ParticleSysBone = Smoke02 SmolderingSmoke
      ParticleSysBone = Flame01 SmolderingFire
      ParticleSysBone = Flame01 SmolderingFlameCore
      ParticleSysBone = Spark01 LiveWireSparks
    End
  End

  PlacementViewAngle = -45

  ; ***DESIGN parameters ***
  Side             = China
  EditorSorting    = SYSTEM
  TransportSlotCount = 1
  
  ArmorSet
    Conditions     = None
    Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
  End
  VisionRange     = 200

  ; *** AUDIO Parameters ***
  UnitSpecificSounds
    TurretMoveStart = NoSound
    TurretMoveLoop  = NoSound ;TurretMoveLoop
    VoiceUnload     = OverlordTankVoiceUnload
  End

  ; *** ENGINEERING Parameters ***
  KindOf            = PRELOAD PORTABLE_STRUCTURE CLICK_THROUGH IGNORED_IN_GUI
    Body            = StructureBody ModuleTag_02
    MaxHealth       = 100.0
    InitialHealth   = 100.0
  End

  Behavior = TransportContain ModuleTag_03
    Slots                 = 10
    PassengersAllowedToFire = Yes
    AllowInsideKindOf  = INFANTRY
    EnterSound      = GarrisonEnter
    ExitSound       = GarrisonExit
    DamagePercentToUnits  = 50%
  End

  Behavior             = DestroyDie ModuleTag_04
    ;nothing
  End

  Geometry            = BOX
  GeometryMajorRadius = 6.0
  GeometryMinorRadius = 6.0
  GeometryHeight      = 10.0
  GeometryIsSmall     = No      
  Shadow              = SHADOW_VOLUME
  ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length

End

;------------------------------------------------------------------------------
Object ChinaTankOverlord2

  ; *** ART Parameters ***
  SelectPortrait         = SNOverlord_L
  ButtonImage            = SNOverlord
  
  UpgradeCameo1 = Upgrade_ChinaUraniumShells
  UpgradeCameo2 = Upgrade_ChinaNuclearTanks
  ;UpgradeCameo3 = Upgrade_ChinaOverlordBattleBunker
  UpgradeCameo4 = Upgrade_AmericaAdvancedTraining
  UpgradeCameo5 = Upgrade_AmericaCompositeArmor
  
  
  Draw = W3DOverlordTankDraw ModuleTag_01
    ConditionState        = NONE
      Model               = NVOvrlrd
      Animation           = NVOvrlrd.NVOvrlrd
      AnimationMode       = LOOP
      Turret              = Turret01
      WeaponFireFXBone    = PRIMARY Muzzle
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MuzzleFX
      WeaponLaunchBone = PRIMARY Muzzle
    End
    ConditionState        = REALLYDAMAGED
      Model               = NVOvrlrd_d
      Animation           = NVOvrlrd_d.NVOvrlrd_d
      AnimationMode       = LOOP
      Turret              = Turret01
      WeaponFireFXBone    = PRIMARY Muzzle
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MuzzleFX
      WeaponLaunchBone = PRIMARY Muzzle
    End

    ConditionState        = RUBBLE
      Model               = NVOvrlrd_d
      Turret              = Turret01
      WeaponFireFXBone    = PRIMARY Muzzle
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MuzzleFX
      WeaponLaunchBone = PRIMARY Muzzle
    End

    TrackMarks           = EXTnkTrack.tga
    OkToChangeModelColor = Yes
    TreadAnimationRate = 2.0;  amount of tread texture to move per second
    TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
    TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  End

  ; ***DESIGN parameters ***
  DisplayName         = OBJECT:Overlord
  Side                = China
  EditorSorting       = VEHICLE
  TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions        = None 
    Weapon            = PRIMARY Nuke_OverlordTankGun2
  End
  ArmorSet
    Conditions        = None
    Armor             = UpgradedTankArmor
    DamageFX          = TankDamageFX
  End
  BuildCost       = 4500
  BuildTime       = 10.0          ;in seconds    
  VisionRange     = 300
  ShroudClearingRange = 350
  Prerequisites
    Object = AmericaWarFactory2
    Object = AmericaDetentionCamp2
  End

  ExperienceValue = 200 200 400 600   ;Experience point value at each level
  ExperienceRequired = 0 400 600 1200  ;Experience points needed to gain each level
  IsTrainable = Yes             ;Can gain experience
  CrusherLevel           = 3  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet = ChinaTankOverlordBattleBunkerCommandSet2

  ; *** AUDIO Parameters ***
  VoiceSelect = OverlordTankVoiceSelect
  SoundMoveStart = OverlordTankMoveStart
  SoundMoveStartDamaged = OverlordTankMoveStart
  VoiceMove = OverlordTankVoiceMove
  VoiceGuard = OverlordTankVoiceMove
  VoiceAttack = OverlordTankVoiceAttack

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    VoiceCreate          = OverlordTankVoiceCreate
    TurretMoveStart = NoSound
    TurretMoveLoop = OverlordTankTurretMoveLoop
    VoiceCrush = OverlordTankVoiceCrush
    VoiceEnter = OverlordTankVoiceMove
    VoiceUnload     = OverlordTankVoiceUnload
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE HUGE_VEHICLE
  
  Body = ActiveBody ModuleTag_02
    MaxHealth       = 1100.0
    InitialHealth   = 1100.0

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

  Behavior = TransportAIUpdate ModuleTag_03
    Turret
      TurretTurnRate = 60 ;30 ;15   // turn rate, in degrees per sec
      ControlledWeaponSlots = PRIMARY
    End
    AutoAcquireEnemiesWhenIdle = Yes
  End

  Locomotor = SET_NORMAL NuclearBattleMasterLocomotor
  Locomotor = SET_NORMAL_UPGRADED FastNuke_FusionOverlordLocomotor

  Behavior = LocomotorSetUpgrade ModuleTag_05
    TriggeredBy = Upgrade_ChinaNuclearTanks
  End

  Behavior = OverlordContain ModuleTag_06 ; Like Transport, but when full, passes transport queries along to first passenger (redirects like tunnel) 
    Slots                 = 1
    DamagePercentToUnits        = 100%
    AllowInsideKindOf     = PORTABLE_STRUCTURE
    PassengersAllowedToFire = Yes
    PayloadTemplateName = ChinaTankOverlordBattleBunker2
    ;PassengersInTurret = Yes ; My passengers ride in my turret, that's where the Firepoint bones are

  End

  Behavior = WeaponBonusUpgrade ModuleTag_07
    TriggeredBy = Upgrade_ChinaUraniumShells
  End

  Behavior        = MaxHealthUpgrade ModuleTag_08
    TriggeredBy   = Upgrade_AmericaCompositeArmor
    AddMaxHealth  = 2200.0
    ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  End

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

  Behavior = HordeUpdate ModuleTag_10
    RubOffRadius = 150    ; if I am this close to a real hordesman, I will get to be an honorary hordesman
    UpdateRate = 1000     ; how often to recheck horde status (msec)
    Radius = 75           ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
    KindOf = VEHICLE      ; what KindOf's must match to count towards horde-ness
    AlliesOnly = Yes      ; do we only count allies towards horde status? 
    Count = 5             ; how many units must be within Radius to grant us horde-ness
    Action = HORDE        ; when horde-ing, grant us the HORDE bonus
  End

  Behavior = PhysicsBehavior ModuleTag_14
    Mass = 50.0
  End



  ; Smoke for a bit then explode
;  Behavior = SlowDeathBehavior
;;    ProbabilityModifier = 25
;    DestructionDelay = 1500
;    DestructionDelayVariance = 500
;    FX  = INITIAL   FX_OverlordSmoke
;    OCL = FINAL     OCL_ChinaTankOverlordDebris
;    FX  = FINAL     FX_GenericTankDeathExplosion
;  End
  
  ; Catch fire, and explode death
;  Behavior = SlowDeathBehavior
;;    ProbabilityModifier = 25
;    DestructionDelay = 2000
;    DestructionDelayVariance = 300
;    FX  = INITIAL  FX_CrusaderCatchFire
;    OCL = FINAL    OCL_ChinaTankOverlordDebris
;    FX  = FINAL    FX_GenericTankDeathExplosion 
;  End

  ; Just explode death
  Behavior = SlowDeathBehavior ModuleTag_16
    ProbabilityModifier = 25
    DestructionDelay = 200
    DestructionDelayVariance = 100
    OCL = FINAL    OCL_ChinaTankOverlordDebris
    FX  = FINAL    FX_OverlordExplosionOneFinal
  End
  Behavior = CreateCrateDie ModuleTag_17
    CrateData = SalvageCrateData
    ;CrateData = EliteTankCrateData
    ;CrateData = HeroicTankCrateData
  End

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

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

  Geometry = BOX
  GeometryMajorRadius = 26.0
  GeometryMinorRadius = 13.0
  GeometryHeight = 15.0     
  GeometryIsSmall = No
  Shadow = SHADOW_VOLUME     
  ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length

End


wb no error but game crashes with empty log
Sponsor
zzc
  • zzc
  • 50.25% (Neutral)
  • Major Topic Starter
9 years ago
Found it

The Gattling Avenger needs MOAR firepower!

Originally Posted by: Gameanater 



I'm not sure I get the joke.



In case anyone's wondering, you may absolutely use these in your mod(s). In fact, you don't even need to give me credit. It takes like 5-8 minutes to make these.


But, I noticed a couple mistakes in my original code, so I went in and fixed them.

-- Gattling Avenger has Chain Guns upgrade cameo in place of Advanced Training.
-- Bunker Avenger has 50 more HP and uses TankArmor instead of AvengerArmor.
-- Bunker Avenger can also be ordered to attack aircraft. This is for its passengers.

Code:

;------------------------------------------------------------------------------
Object ChinaTankGattlingAvenger

  ; *** ART Parameters ***
  SelectPortrait         = SAAvnger_L
  ButtonImage            = SAAvnger
  
  UpgradeCameo1 = Upgrade_AmericaBattleDrone
  UpgradeCameo2 = Upgrade_AmericaScoutDrone
  UpgradeCameo3 = Upgrade_AmericaHellfireDrone
  UpgradeCameo4 = Upgrade_ChinaChainGuns

  Draw = W3DOverlordTruckDraw ModuleTag_01
    OkToChangeModelColor  = Yes
    ExtraPublicBone = TurretFX03
    ExtraPublicBone = LazerSpot01
    ExtraPublicBone = LazerSpot02
    DefaultConditionState
      Model               = AVAVNGER
       HideSubObject = TURRET01
   End
    
    ConditionState        = REALLYDAMAGED
      Model               = AVAVNGER_D
      HideSubObject = TURRET01
    End
    
    ConditionState        = RUBBLE
      Model               = AVAVNGER_D1
    End
    
    ;When a bombtruck disguises as an avenger, show the turret!
    ConditionState        = DISGUISED
      Model               = AVAVNGER
      ShowSubObject       = TURRET01
    End
    ConditionState        = REALLYDAMAGED DISGUISED
      Model               = AVAVNGER_D
      ShowSubObject       = TURRET01  ;Hide controlled turret
    End

    TrackMarks = EXTireTrack.tga
    Dust = RocketBuggyDust
    DirtSpray = RocketBuggyDirtSpray
    PowerslideSpray = RocketBuggyDirtPowerSlide

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

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Avenger
  Side = China
  EditorSorting   = VEHICLE
  TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions = None 
    Weapon = PRIMARY AvengerTargetDesignator
    Weapon = SECONDARY AvengerAirLaserDummy
  End
  ArmorSet
    Conditions      = None
    Armor           = AvengerArmor
    DamageFX        = TankDamageFX
  End
  BuildCost       = 1500
  BuildTime       = 10.0          ;in seconds    
  VisionRange     = 150
  ShroudClearingRange = 300
  Prerequisites
;    Object = Lazr_AmericaWarFactory
;    Object = Lazr_AmericaStrategyCenter
  End

  ExperienceValue        = 100 100 200 400 ;Experience point value at each level
  ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level

  IsTrainable     = Yes
  CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet      = Lazr_AmericaTankAvengerCommandSet
    
  ; *** AUDIO Parameters ***
  VoiceSelect = AvengerVoiceSelect
  VoiceMove = AvengerVoiceMove
  VoiceGuard = AvengerVoiceMove
  VoiceAttack = AvengerVoicePaint
  VoiceAttackAir = AvengerVoiceAttack
  SoundMoveStart = HumveeMoveStart
  SoundMoveStartDamaged = HumveeMoveStart

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    VoiceCreate     = AvengerVoiceCreate
    TurretMoveLoop = NoSound
    SoundEject = PilotSoundEject
    VoiceEject = PilotVoiceEject
    VoiceCrush = NoSound
    VoiceEnter = AvengerVoiceMove
  End
  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  
  Body = ActiveBody ModuleTag_02
    MaxHealth       = 300.0
    InitialHealth   = 300.0

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

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Locomotor = SET_NORMAL AvengerLocomotor
  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 50.0
  End
  
  ; Turret fly off death
  Behavior = SlowDeathBehavior ModuleTag_05
    DeathTypes = ALL -CRUSHED -SPLATTED
    ProbabilityModifier = 50
;    ModifierBonusPerOverkillPercent = 30%  ; negative means less likely to pick this in the face of much damage, positive means more likely
    DestructionDelay = 500
    DestructionDelayVariance = 100
    FX  = INITIAL  FX_GenericTankDeathEffect
    FX  = FINAL    FX_GenericTankDeathExplosion
    OCL = FINAL    OCL_AvengerTankDeathEffect
  End
  
  ; Catch fire, and explode death
  Behavior = SlowDeathBehavior ModuleTag_06
    DeathTypes = ALL -CRUSHED -SPLATTED
    ProbabilityModifier = 50
    DestructionDelay = 2000
    DestructionDelayVariance = 300
    FX  = INITIAL  FX_CrusaderCatchFire
    OCL = FINAL    OCL_AvengerTankDeathEffect
    FX  = FINAL    FX_GenericTankDeathExplosion 
  End

  Behavior = PointDefenseLaserUpdate ModuleTag_Laser_One
    WeaponTemplate        = AvengerPointDefenseLaserOne
    PrimaryTargetTypes    = BALLISTIC_MISSILE SMALL_MISSILE
    ScanRate              = 0
    ScanRange             = 200.0
    PredictTargetVelocityFactor = 1.0
  End

  Behavior = PointDefenseLaserUpdate ModuleTag_Laser_Two
    WeaponTemplate        = AvengerPointDefenseLaserTwo
    PrimaryTargetTypes    = BALLISTIC_MISSILE SMALL_MISSILE
    ScanRate              = 100
    ScanRange             = 200.0
    PredictTargetVelocityFactor = 1.0
  End

  Behavior = OverlordContain ModuleTag_OverlordContain
    Slots                 = 1
    DamagePercentToUnits  = 100%
    AllowInsideKindOf     = PORTABLE_STRUCTURE
    PassengersAllowedToFire = Yes
    PayloadTemplateName        = ChinaTankOverlordGattlingCannon
    ExperienceSinkForRider = Yes ; I get the Exp for things my turret friend kills
  End

  Behavior = ObjectCreationUpgrade ModuleTag_08
    UpgradeObject = Lazr_OCL_AmericanBattleDrone
    TriggeredBy   = Upgrade_AmericaBattleDrone
    ConflictsWith = Upgrade_AmericaScoutDrone Upgrade_AmericaHellfireDrone
  End
  Behavior = ObjectCreationUpgrade ModuleTag_09
    UpgradeObject = OCL_AmericanScoutDrone
    TriggeredBy   = Upgrade_AmericaScoutDrone
    ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaHellfireDrone
  End 
  Behavior = ObjectCreationUpgrade ModuleTag_19
    UpgradeObject = OCL_AmericanHellfireDrone
    TriggeredBy   = Upgrade_AmericaHellfireDrone
    ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaScoutDrone
  End

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

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

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

  Behavior = FXListDie ModuleTag_13
    DeathTypes = NONE +CRUSHED +SPLATTED
    DeathFX = FX_CarCrush
  End
  Behavior = CreateObjectDie ModuleTag_14
    DeathTypes = NONE +CRUSHED +SPLATTED
    CreationList = OCL_CrusaderTank_CrushEffect
  End
  Behavior = DestroyDie ModuleTag_15
    DeathTypes = NONE +CRUSHED +SPLATTED
  End
  Behavior = CreateCrateDie ModuleTag_16
    CrateData = SalvageCrateData
    ;CrateData = EliteTankCrateData
    ;CrateData = HeroicTankCrateData
  End
  Behavior = EjectPilotDie ModuleTag_17
    DeathTypes = ALL -CRUSHED -SPLATTED
    ExemptStatus = HIJACKED
    GroundCreationList = OCL_EjectPilotOnGround
    AirCreationList = OCL_EjectPilotViaParachute
    VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  End

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

  Behavior = MaxHealthUpgrade ModuleTag_23
    TriggeredBy   = Upgrade_AmericaCompositeArmor
    AddMaxHealth  = 100.0
    ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  End

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

End






;------------------------------------------------------------------------------
Object ChinaTankPropagandaAvenger

  ; *** ART Parameters ***
  SelectPortrait         = SAAvnger_L
  ButtonImage            = SAAvnger
  
  UpgradeCameo1 = Upgrade_AmericaBattleDrone
  UpgradeCameo2 = Upgrade_AmericaScoutDrone
  UpgradeCameo3 = Upgrade_AmericaHellfireDrone
  UpgradeCameo4 =  Upgrade_ChinaSubliminalMessaging

  Draw = W3DOverlordTruckDraw ModuleTag_01
    OkToChangeModelColor  = Yes
    ExtraPublicBone = TurretFX03
    ExtraPublicBone = LazerSpot01
    ExtraPublicBone = LazerSpot02
    DefaultConditionState
      Model               = AVAVNGER
       HideSubObject = TURRET01
   End
    
    ConditionState        = REALLYDAMAGED
      Model               = AVAVNGER_D
      HideSubObject = TURRET01
    End
    
    ConditionState        = RUBBLE
      Model               = AVAVNGER_D1
    End
    
    ;When a bombtruck disguises as an avenger, show the turret!
    ConditionState        = DISGUISED
      Model               = AVAVNGER
      ShowSubObject       = TURRET01
    End
    ConditionState        = REALLYDAMAGED DISGUISED
      Model               = AVAVNGER_D
      ShowSubObject       = TURRET01  ;Hide controlled turret
    End

    TrackMarks = EXTireTrack.tga
    Dust = RocketBuggyDust
    DirtSpray = RocketBuggyDirtSpray
    PowerslideSpray = RocketBuggyDirtPowerSlide

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

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Avenger
  Side = China
  EditorSorting   = VEHICLE
  TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions = None 
    Weapon = PRIMARY AvengerTargetDesignator
    ;Weapon = SECONDARY AvengerAirLaserDummy ;Not used since we have no turret to attack aircraft
  End
  ArmorSet
    Conditions      = None
    Armor           = AvengerArmor
    DamageFX        = TankDamageFX
  End
  BuildCost       = 1500
  BuildTime       = 10.0          ;in seconds    
  VisionRange     = 150
  ShroudClearingRange = 300
  Prerequisites
;    Object = Lazr_AmericaWarFactory
;    Object = Lazr_AmericaStrategyCenter
  End

  ExperienceValue        = 100 100 200 400 ;Experience point value at each level
  ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level

  IsTrainable     = Yes
  CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet      = Lazr_AmericaTankAvengerCommandSet
    
  ; *** AUDIO Parameters ***
  VoiceSelect = AvengerVoiceSelect
  VoiceMove = AvengerVoiceMove
  VoiceGuard = AvengerVoiceMove
  VoiceAttack = AvengerVoicePaint
  VoiceAttackAir = AvengerVoiceAttack
  SoundMoveStart = HumveeMoveStart
  SoundMoveStartDamaged = HumveeMoveStart

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    VoiceCreate     = AvengerVoiceCreate
    TurretMoveLoop = NoSound
    SoundEject = PilotSoundEject
    VoiceEject = PilotVoiceEject
    VoiceCrush = NoSound
    VoiceEnter = AvengerVoiceMove
  End
  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  
  Body = ActiveBody ModuleTag_02
    MaxHealth       = 300.0
    InitialHealth   = 300.0

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

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Locomotor = SET_NORMAL AvengerLocomotor
  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 50.0
  End
  
  ; Turret fly off death
  Behavior = SlowDeathBehavior ModuleTag_05
    DeathTypes = ALL -CRUSHED -SPLATTED
    ProbabilityModifier = 50
;    ModifierBonusPerOverkillPercent = 30%  ; negative means less likely to pick this in the face of much damage, positive means more likely
    DestructionDelay = 500
    DestructionDelayVariance = 100
    FX  = INITIAL  FX_GenericTankDeathEffect
    FX  = FINAL    FX_GenericTankDeathExplosion
    OCL = FINAL    OCL_AvengerTankDeathEffect
  End
  
  ; Catch fire, and explode death
  Behavior = SlowDeathBehavior ModuleTag_06
    DeathTypes = ALL -CRUSHED -SPLATTED
    ProbabilityModifier = 50
    DestructionDelay = 2000
    DestructionDelayVariance = 300
    FX  = INITIAL  FX_CrusaderCatchFire
    OCL = FINAL    OCL_AvengerTankDeathEffect
    FX  = FINAL    FX_GenericTankDeathExplosion 
  End

  Behavior = PointDefenseLaserUpdate ModuleTag_Laser_One
    WeaponTemplate        = AvengerPointDefenseLaserOne
    PrimaryTargetTypes    = BALLISTIC_MISSILE SMALL_MISSILE
    ScanRate              = 0
    ScanRange             = 200.0
    PredictTargetVelocityFactor = 1.0
  End

  Behavior = PointDefenseLaserUpdate ModuleTag_Laser_Two
    WeaponTemplate        = AvengerPointDefenseLaserTwo
    PrimaryTargetTypes    = BALLISTIC_MISSILE SMALL_MISSILE
    ScanRate              = 100
    ScanRange             = 200.0
    PredictTargetVelocityFactor = 1.0
  End

  Behavior = OverlordContain ModuleTag_OverlordContain
    Slots                 = 1
    DamagePercentToUnits  = 100%
    AllowInsideKindOf     = PORTABLE_STRUCTURE
    PassengersAllowedToFire = Yes
    PayloadTemplateName        = ChinaTankOverlordPropagandaTower
    ExperienceSinkForRider = Yes ; I get the Exp for things my turret friend kills
  End

  Behavior = ObjectCreationUpgrade ModuleTag_08
    UpgradeObject = Lazr_OCL_AmericanBattleDrone
    TriggeredBy   = Upgrade_AmericaBattleDrone
    ConflictsWith = Upgrade_AmericaScoutDrone Upgrade_AmericaHellfireDrone
  End
  Behavior = ObjectCreationUpgrade ModuleTag_09
    UpgradeObject = OCL_AmericanScoutDrone
    TriggeredBy   = Upgrade_AmericaScoutDrone
    ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaHellfireDrone
  End 
  Behavior = ObjectCreationUpgrade ModuleTag_19
    UpgradeObject = OCL_AmericanHellfireDrone
    TriggeredBy   = Upgrade_AmericaHellfireDrone
    ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaScoutDrone
  End

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

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

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

  Behavior = FXListDie ModuleTag_13
    DeathTypes = NONE +CRUSHED +SPLATTED
    DeathFX = FX_CarCrush
  End
  Behavior = CreateObjectDie ModuleTag_14
    DeathTypes = NONE +CRUSHED +SPLATTED
    CreationList = OCL_CrusaderTank_CrushEffect
  End
  Behavior = DestroyDie ModuleTag_15
    DeathTypes = NONE +CRUSHED +SPLATTED
  End
  Behavior = CreateCrateDie ModuleTag_16
    CrateData = SalvageCrateData
    ;CrateData = EliteTankCrateData
    ;CrateData = HeroicTankCrateData
  End
  Behavior = EjectPilotDie ModuleTag_17
    DeathTypes = ALL -CRUSHED -SPLATTED
    ExemptStatus = HIJACKED
    GroundCreationList = OCL_EjectPilotOnGround
    AirCreationList = OCL_EjectPilotViaParachute
    VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  End

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

  Behavior = MaxHealthUpgrade ModuleTag_23
    TriggeredBy   = Upgrade_AmericaCompositeArmor
    AddMaxHealth  = 100.0
    ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  End

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

End






;------------------------------------------------------------------------------
Object ChinaTankBunkerAvenger

  ; *** ART Parameters ***
  SelectPortrait         = SAAvnger_L
  ButtonImage            = SAAvnger
  
  UpgradeCameo1 = Upgrade_AmericaBattleDrone
  UpgradeCameo2 = Upgrade_AmericaScoutDrone
  UpgradeCameo3 = Upgrade_AmericaHellfireDrone
  ;UpgradeCameo4 =  Upgrade_ChinaSubliminalMessaging

  Draw = W3DOverlordTruckDraw ModuleTag_01
    OkToChangeModelColor  = Yes
    ExtraPublicBone = TurretFX03
    ExtraPublicBone = LazerSpot01
    ExtraPublicBone = LazerSpot02
    DefaultConditionState
      Model               = AVAVNGER
       HideSubObject = TURRET01
   End
    
    ConditionState        = REALLYDAMAGED
      Model               = AVAVNGER_D
      HideSubObject = TURRET01
    End
    
    ConditionState        = RUBBLE
      Model               = AVAVNGER_D1
    End
    
    ;When a bombtruck disguises as an avenger, show the turret!
    ConditionState        = DISGUISED
      Model               = AVAVNGER
      ShowSubObject       = TURRET01
    End
    ConditionState        = REALLYDAMAGED DISGUISED
      Model               = AVAVNGER_D
      ShowSubObject       = TURRET01  ;Hide controlled turret
    End

    TrackMarks = EXTireTrack.tga
    Dust = RocketBuggyDust
    DirtSpray = RocketBuggyDirtSpray
    PowerslideSpray = RocketBuggyDirtPowerSlide

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

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Avenger
  Side = China
  EditorSorting   = VEHICLE
  TransportSlotCount = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions = None 
    Weapon = PRIMARY AvengerTargetDesignator
    Weapon = SECONDARY AvengerAirLaserDummy ;Still used so we can order our passengers to attack aircraft
  End
  ArmorSet
    Conditions      = None
    Armor           = TankArmor
    DamageFX        = TankDamageFX
  End
  BuildCost       = 1500
  BuildTime       = 10.0          ;in seconds    
  VisionRange     = 150
  ShroudClearingRange = 300
  Prerequisites
;    Object = Lazr_AmericaWarFactory
;    Object = Lazr_AmericaStrategyCenter
  End

  ExperienceValue        = 100 100 200 400 ;Experience point value at each level
  ExperienceRequired     = 0 200 300 600 ;Experience points needed to gain each level

  IsTrainable     = Yes
  CrusherLevel           = 2  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet      = ChinaTankOverlordBattleBunkerCommandSet
    
  ; *** AUDIO Parameters ***
  VoiceSelect = AvengerVoiceSelect
  VoiceMove = AvengerVoiceMove
  VoiceGuard = AvengerVoiceMove
  VoiceAttack = AvengerVoicePaint
  VoiceAttackAir = AvengerVoiceAttack
  SoundMoveStart = HumveeMoveStart
  SoundMoveStartDamaged = HumveeMoveStart

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    VoiceCreate     = AvengerVoiceCreate
    TurretMoveLoop = NoSound
    SoundEject = PilotSoundEject
    VoiceEject = PilotVoiceEject
    VoiceCrush = NoSound
    VoiceEnter = AvengerVoiceMove
  End
  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
  
  Body = ActiveBody ModuleTag_02
    MaxHealth       = 350.0
    InitialHealth   = 350.0

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

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
  End
  Locomotor = SET_NORMAL AvengerLocomotor
  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 50.0
  End
  
  ; Turret fly off death
  Behavior = SlowDeathBehavior ModuleTag_05
    DeathTypes = ALL -CRUSHED -SPLATTED
    ProbabilityModifier = 50
;    ModifierBonusPerOverkillPercent = 30%  ; negative means less likely to pick this in the face of much damage, positive means more likely
    DestructionDelay = 500
    DestructionDelayVariance = 100
    FX  = INITIAL  FX_GenericTankDeathEffect
    FX  = FINAL    FX_GenericTankDeathExplosion
    OCL = FINAL    OCL_AvengerTankDeathEffect
  End
  
  ; Catch fire, and explode death
  Behavior = SlowDeathBehavior ModuleTag_06
    DeathTypes = ALL -CRUSHED -SPLATTED
    ProbabilityModifier = 50
    DestructionDelay = 2000
    DestructionDelayVariance = 300
    FX  = INITIAL  FX_CrusaderCatchFire
    OCL = FINAL    OCL_AvengerTankDeathEffect
    FX  = FINAL    FX_GenericTankDeathExplosion 
  End

  Behavior = PointDefenseLaserUpdate ModuleTag_Laser_One
    WeaponTemplate        = AvengerPointDefenseLaserOne
    PrimaryTargetTypes    = BALLISTIC_MISSILE SMALL_MISSILE
    ScanRate              = 0
    ScanRange             = 200.0
    PredictTargetVelocityFactor = 1.0
  End

  Behavior = PointDefenseLaserUpdate ModuleTag_Laser_Two
    WeaponTemplate        = AvengerPointDefenseLaserTwo
    PrimaryTargetTypes    = BALLISTIC_MISSILE SMALL_MISSILE
    ScanRate              = 100
    ScanRange             = 200.0
    PredictTargetVelocityFactor = 1.0
  End

  Behavior = OverlordContain ModuleTag_OverlordContain
    Slots                 = 1
    DamagePercentToUnits  = 100%
    AllowInsideKindOf     = PORTABLE_STRUCTURE
    PassengersAllowedToFire = Yes
    PayloadTemplateName        = ChinaTankOverlordBattleBunker
    ExperienceSinkForRider = Yes ; I get the Exp for things my turret friend kills
  End

  Behavior = ObjectCreationUpgrade ModuleTag_08
    UpgradeObject = Lazr_OCL_AmericanBattleDrone
    TriggeredBy   = Upgrade_AmericaBattleDrone
    ConflictsWith = Upgrade_AmericaScoutDrone Upgrade_AmericaHellfireDrone
  End
  Behavior = ObjectCreationUpgrade ModuleTag_09
    UpgradeObject = OCL_AmericanScoutDrone
    TriggeredBy   = Upgrade_AmericaScoutDrone
    ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaHellfireDrone
  End 
  Behavior = ObjectCreationUpgrade ModuleTag_19
    UpgradeObject = OCL_AmericanHellfireDrone
    TriggeredBy   = Upgrade_AmericaHellfireDrone
    ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaScoutDrone
  End

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

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

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

  Behavior = FXListDie ModuleTag_13
    DeathTypes = NONE +CRUSHED +SPLATTED
    DeathFX = FX_CarCrush
  End
  Behavior = CreateObjectDie ModuleTag_14
    DeathTypes = NONE +CRUSHED +SPLATTED
    CreationList = OCL_CrusaderTank_CrushEffect
  End
  Behavior = DestroyDie ModuleTag_15
    DeathTypes = NONE +CRUSHED +SPLATTED
  End
  Behavior = CreateCrateDie ModuleTag_16
    CrateData = SalvageCrateData
    ;CrateData = EliteTankCrateData
    ;CrateData = HeroicTankCrateData
  End
  Behavior = EjectPilotDie ModuleTag_17
    DeathTypes = ALL -CRUSHED -SPLATTED
    ExemptStatus = HIJACKED
    GroundCreationList = OCL_EjectPilotOnGround
    AirCreationList = OCL_EjectPilotViaParachute
    VeterancyLevels =  ALL -REGULAR ;only vet+ gives pilot
  End

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

  Behavior = MaxHealthUpgrade ModuleTag_23
    TriggeredBy   = Upgrade_AmericaCompositeArmor
    AddMaxHealth  = 100.0
    ChangeType    = ADD_CURRENT_HEALTH_TOO   ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
  End

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

End








Originally Posted by: CommieDog