; FILE: FactionUnit.ini /////////////////////////////////////////////////////// ; This file contains only objects that are units tied to specific factions. ; You will find tanks, infantry, transports ... all our "units" here. Also ; in this file are related objects such as debris from the units or ; tank shells to fire and deal damage to the enemy. ;////////////////////////////////////////////////////////////////////////////// ;------------------------------------------------------------------------------ Object AmericaParachute ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = PMparacht_SKNc Animation = PMparacht_SKL.PMparacht_FAL AnimationMode = LOOP End ConditionState = PARACHUTING Model = PMparacht_SKNc Animation = PMparacht_SKL.PMparacht_OPN AnimationMode = ONCE End ConditionState = RUBBLE Model = PMparacht_SKNc Animation = PMparacht_SKL.PMparacht_DRP AnimationMode = ONCE End ; this is a weird state to resolve an ambiguity: sometimes ; we can have a "rubble" parachute momentarily, that doesn't ; know that it has finished parachuting yet... ConditionState = RUBBLE PARACHUTING Model = PMparacht_SKNc Animation = PMparacht_SKL.PMparacht_DRP AnimationMode = ONCE End End ; ***DESIGN parameters *** Side = America EditorSorting = SYSTEM TransportSlotCount = 0 VisionRange = 300.0 ShroudClearingRange = 300 IsTrainable = No ;Can gain experience ; in theory, it would be nice to allow chutes to be attackable; however, bugs in the code ; can cause the rider to be left in a bad state (eg, no-collision bit set) if the chute dies ; prematurely. so disable this for now, and give it a ton of health to prevent splash damage ; from killing it. (srj) KindOf = PRELOAD PARACHUTE UNATTACKABLE ; *** AUDIO Parameters *** ; *** ENGINEERING Parameters *** Behavior = AIUpdateInterface ModuleTag_02 ; nothing End Locomotor = SET_NORMAL ParachuteLocomotor Locomotor = SET_FREEFALL FreeFallLocomotor Body = ActiveBody ModuleTag_03 MaxHealth = 100000.0 InitialHealth = 100000.0 End Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End Behavior = ParachuteContain ModuleTag_05 PitchRateMax = 60 ; deg/sec RollRateMax = 60 ; deg/sec LowAltitudeDamping = 0.2 ; how much to damp swaying when we get "close" to the ground ParachuteOpenDist = 25.0 ; how far we have to fall 'till we open our 'chute AllowInsideKindOf = INFANTRY PARACHUTABLE ParachuteOpenSound = ParachuteOpen End Behavior = SlowDeathBehavior ModuleTag_06 SinkDelay = 1000 SinkRate = 1 ; in Dist/Sec DestructionDelay = 4000 End RadarPriority = NOT_ON_RADAR Geometry = CYLINDER GeometryMajorRadius = 15.0 GeometryHeight = 10.0 GeometryIsSmall = Yes Shadow = SHADOW_VOLUME End ;------------------------------------------------------------------------------ Object AmericaCrateParachute ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = PMparacht_SKNc Animation = PMparacht_SKL.PMparacht_FAL AnimationMode = LOOP End ConditionState = PARACHUTING Model = PMparacht_SKNc Animation = PMparacht_SKL.PMparacht_OPN AnimationMode = ONCE End ConditionState = RUBBLE Model = PMparacht_SKNc Animation = PMparacht_SKL.PMparacht_DRP AnimationMode = ONCE End ; this is a weird state to resolve an ambiguity: sometimes ; we can have a "rubble" parachute momentarily, that doesn't ; know that it has finished parachuting yet... ConditionState = RUBBLE PARACHUTING Model = PMparacht_SKNc Animation = PMparacht_SKL.PMparacht_DRP AnimationMode = ONCE End End ; ***DESIGN parameters *** Side = America EditorSorting = SYSTEM TransportSlotCount = 0 VisionRange = 300.0 ShroudClearingRange = 300 IsTrainable = No ;Can gain experience ; in theory, it would be nice to allow chutes to be attackable; however, bugs in the code ; can cause the rider to be left in a bad state (eg, no-collision bit set) if the chute dies ; prematurely. so disable this for now, and give it a ton of health to prevent splash damage ; from killing it. (srj) KindOf = PRELOAD PARACHUTE UNATTACKABLE ; *** AUDIO Parameters *** ; *** ENGINEERING Parameters *** Behavior = AIUpdateInterface ModuleTag_02 ; nothing End Locomotor = SET_NORMAL CrateParachuteLocomotor Locomotor = SET_FREEFALL CrateFreeFallLocomotor Body = ActiveBody ModuleTag_03 MaxHealth = 100000.0 InitialHealth = 100000.0 End Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End Behavior = ParachuteContain ModuleTag_05 PitchRateMax = 60 ; deg/sec RollRateMax = 60 ; deg/sec LowAltitudeDamping = 0.2 ; how much to damp swaying when we get "close" to the ground ParachuteOpenDist = 12.5 ; how far we have to fall 'till we open our 'chute AllowInsideKindOf = PARACHUTABLE ParachuteOpenSound = ParachuteOpen End Behavior = SlowDeathBehavior ModuleTag_06 SinkDelay = 1000 SinkRate = 1 ; in Dist/Sec DestructionDelay = 4000 End RadarPriority = NOT_ON_RADAR Geometry = CYLINDER GeometryMajorRadius = 15.0 GeometryHeight = 10.0 GeometryIsSmall = Yes Shadow = SHADOW_VOLUME End ;------------------------------------------------------------------------------ Object AmericaInfantryColonelBurton ; *** ART Parameters *** SelectPortrait = SABurton_L ButtonImage = SABurton UpgradeCameo1 = Upgrade_AmericaAdvancedTraining Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; idle DefaultConditionState Model = AIHERO_SKN IdleAnimation = AIHERO_SKL.AIHERO_STA 0 25 IdleAnimation = AIHERO_SKL.AIHERO_IDA IdleAnimation = AIHERO_SKL.AIHERO_IDB AnimationMode = ONCE TransitionKey = TRANS_Stand WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponMuzzleFlash = SECONDARY NONE HideSubObject = MUZZLEFX01 End ; injured idle ConditionState = REALLYDAMAGED IdleAnimation = AIHERO_SKL.AIHERO_ISTA 0 30 IdleAnimation = AIHERO_SKL.AIHERO_IIDA IdleAnimation = AIHERO_SKL.AIHERO_IIDB AnimationMode = ONCE TransitionKey = TRANS_StandInjured End TransitionState = TRANS_Stand TRANS_StandInjured Animation = AIHERO_SKL.AIHERO_ISTAHIT AnimationMode = ONCE End ; moving ConditionState = MOVING Animation = AIHERO_SKL.AIHERO_RNA 26 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_Walking ParticleSysBone = None InfantryDustTrails HideSubObject = MUZZLEFX01 End AliasConditionState = MOVING FIRING_A AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A AliasConditionState = MOVING RELOADING_A AliasConditionState = MOVING FIRING_B AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B AliasConditionState = MOVING RELOADING_B ; injured moving ConditionState = MOVING REALLYDAMAGED Animation = AIHERO_SKL.AIHERO_IRNA 26 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_WalkingInjured ParticleSysBone = None InfantryDustTrails HideSubObject = MUZZLEFX01 End AliasConditionState = MOVING FIRING_A REALLYDAMAGED AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED AliasConditionState = MOVING RELOADING_A REALLYDAMAGED AliasConditionState = MOVING FIRING_B REALLYDAMAGED AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED AliasConditionState = MOVING RELOADING_B REALLYDAMAGED ; Firing animation ConditionState = FIRING_A Animation = AIHERO_SKL.AIHERO_ATA AnimationMode = ONCE AnimationSpeedFactorRange = 1.5 1.5 TransitionKey = TRANS_FiringA End ConditionState = BETWEEN_FIRING_SHOTS_A Animation = AIHERO_SKL.AIHERO_ATA AnimationMode = MANUAL Flags = START_FRAME_LAST WaitForStateToFinishIfPossible = TRANS_FiringA End AliasConditionState = RELOADING_A ; Injured Firing animation ConditionState = FIRING_A REALLYDAMAGED Animation = AIHERO_SKL.AIHERO_IATA AnimationMode = ONCE AnimationSpeedFactorRange = 1.5 1.5 TransitionKey = TRANS_FiringAInjured End ConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED Animation = AIHERO_SKL.AIHERO_IATA AnimationMode = MANUAL Flags = START_FRAME_LAST WaitForStateToFinishIfPossible = TRANS_FiringAInjured End AliasConditionState = RELOADING_A REALLYDAMAGED TransitionState = TRANS_FiringA TRANS_FiringAInjured Animation = AIHERO_SKL.AIHERO_IATAHIT AnimationMode = ONCE End ; Placing charge animation ConditionState = UNPACKING Animation = AIHERO_SKL.AIHERO_ATB1 AnimationMode = ONCE End AliasConditionState = MOVING UNPACKING ; Injured Placing charge animation ConditionState = UNPACKING REALLYDAMAGED Animation = AIHERO_SKL.AIHERO_IATB1 AnimationMode = ONCE End AliasConditionState = MOVING UNPACKING REALLYDAMAGED ; Stab animations ConditionState = PREATTACK_B Animation = AIHERO_SKL.AIHERO_ATC AnimationMode = ONCE TransitionKey = TRANS_Stabbing HideSubObject = MUZZLEFX01 End AliasConditionState = PREATTACK_B MOVING AliasConditionState = PREATTACK_B FIRING_B AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B ConditionState = FIRING_B Animation = AIHERO_SKL.AIHERO_ATC AnimationMode = MANUAL Flags = START_FRAME_LAST TransitionKey = TRANS_Stabbing HideSubObject = MUZZLEFX01 End AliasConditionState = BETWEEN_FIRING_SHOTS_B AliasConditionState = RELOADING_B TransitionState = TRANS_Stabbing TRANS_Stand Animation = AIHERO_SKL.AIHERO_ATC2 AnimationMode = ONCE End ; Injured Stab animations ConditionState = PREATTACK_B REALLYDAMAGED Animation = AIHERO_SKL.AIHERO_IATC1 AnimationMode = ONCE TransitionKey = TRANS_StabbingInjured HideSubObject = MUZZLEFX01 End AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED ConditionState = FIRING_B REALLYDAMAGED Animation = AIHERO_SKL.AIHERO_IATC2 AnimationMode = MANUAL Flags = START_FRAME_LAST TransitionKey = TRANS_StabbingInjured HideSubObject = MUZZLEFX01 End AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED AliasConditionState = RELOADING_B REALLYDAMAGED TransitionState = TRANS_StabbingInjured TRANS_StandInjured Animation = AIHERO_SKL.AIHERO_IATC2 AnimationMode = ONCE End ; cheering ConditionState = SPECIAL_CHEERING Animation = AIHERO_SKL.AIHERO_CHA AnimationMode = ONCE End ; injured cheering ConditionState = SPECIAL_CHEERING REALLYDAMAGED Animation = AIHERO_SKL.AIHERO_ICHA AnimationMode = ONCE End ; climbing ConditionState = CLIMBING Animation = AIHERO_SKL.AIHERO_CLMID AnimationMode = LOOP TransitionKey = TRANS_Climbing End AliasConditionState = RAPPELLING AliasConditionState = CLIMBING REALLYDAMAGED AliasConditionState = RAPPELLING REALLYDAMAGED ConditionState = CLIMBING MOVING Animation = AIHERO_SKL.AIHERO_CLMUP AnimationMode = LOOP TransitionKey = TRANS_Climbing End AliasConditionState = CLIMBING MOVING REALLYDAMAGED ConditionState = RAPPELLING MOVING Animation = AIHERO_SKL.AIHERO_CLMUP AnimationMode = LOOP_BACKWARDS TransitionKey = TRANS_Climbing End AliasConditionState = RAPPELLING MOVING REALLYDAMAGED ; these transitions don't really work well with our code. leave 'em out. ; TransitionState = TRANS_Climbing TRANS_Stand ; Animation = AIHERO_SKL.AIHERO_CLMST ; AnimationMode = ONCE ; End ; ; TransitionState = TRANS_Stand TRANS_Climbing ; Animation = AIHERO_SKL.AIHERO_CLMST ; AnimationMode = ONCE_BACKWARDS ; End ; dying anims ConditionState = DYING Animation = AIHERO_SKL.AIHERO_DTA Animation = AIHERO_SKL.AIHERO_DTB Animation = AIHero_SKL.AIHero_IDTA Animation = AIHero_SKL.AIHero_IDTB AnimationMode = ONCE TransitionKey = TRANS_Dying End AliasConditionState = RAPPELLING DYING AliasConditionState = CLIMBING DYING TransitionState = TRANS_Dying TRANS_Flailing Animation = AIHERO_SKL.AIHERO_ADTG21 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = AIHERO_SKL.AIHERO_ADTG22 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = AIHERO_SKL.AIHERO_ADTG23 AnimationMode = ONCE TransitionKey = None End ; misc anims ConditionState = FREEFALL Animation = AIHERO_SKL.AIHERO_PFL AnimationMode = LOOP TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = AIHERO_SKL.AIHERO_PHG AnimationMode = LOOP TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = AIHERO_SKL.AIHERO_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = AIHERO_SKL.AIHERO_PTD AnimationMode = ONCE End TransitionState = TRANS_Chute TRANS_StandInjured Animation = AIHERO_SKL.AIHERO_PTD AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:ColonelBurton Side = America EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY ColonelBurtonSniperRifleWeapon Weapon = SECONDARY ColonelBurtonKnifeWeapon AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI AutoChooseSources = SECONDARY NONE End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 500 Prerequisites Object = AmericaBarracks Object = AmericaStrategyCenter End BuildCost = 1500 BuildTime = 20.0 ;in seconds ExperienceValue = 50 100 100 150 ; Experience point value at each level ExperienceRequired = 0 200 300 600 ; Experience points needed to gain each level IsTrainable = Yes ; Can gain experience CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = AmericaInfantryColonelBurtonCommandSet MaxSimultaneousOfType = 1 ; *** AUDIO Parameters *** VoiceSelect = ColonelBurtonVoiceSelect VoiceMove = ColonelBurtonVoiceMove VoiceAttack = ColonelBurtonVoiceAttack VoiceFear = ColonelBurtonVoiceFear VoiceGuard = ColonelBurtonVoiceMove SoundDie = ColonelBurtonVoiceDie SoundDieFire = DieByFireUSA SoundDieToxin = DieByToxinUSA SoundStealthOn = StealthOn SoundStealthOff = StealthOff UnitSpecificSounds VoiceMelee = ColonelBurtonVoiceAttackKnife VoiceCreate = ColonelBurtonVoiceCreate VoiceGarrison = ColonelBurtonVoiceGarrison VoiceEnter = ColonelBurtonVoiceMove VoiceEnterHostile = ColonelBurtonVoiceMove VoiceGetHealed = ColonelBurtonVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE HERO Body = ActiveBody ModuleTag_02 MaxHealth = 200.0 InitialHealth = 200.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Behavior = CommandButtonHuntUpdate ModuleTag_04 ; allows use of command button hunt script with this unit. End Behavior = AutoFindHealingUpdate ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba ScanRate = 1000 ; once a second. ScanRange = 300 ; NeverHeal = 0.85 ; don't heal if we are > 85% healthy. AlwaysHeal = 0.25 ; if we get below 25%, find healing right away. End Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor ColonelBurtonCliffLocomotor Behavior = PhysicsBehavior ModuleTag_06 Mass = 5.0 End Behavior = StealthUpdate ModuleTag_07 StealthDelay = 2000 ; msec StealthForbiddenConditions = FIRING_PRIMARY HintDetectableConditions = IS_FIRING_WEAPON FriendlyOpacityMin = 50.0% FriendlyOpacityMax = 100.0% InnateStealth = Yes OrderIdleEnemiesToAttackMeUponReveal = Yes End Behavior = SpecialAbility ModuleTag_08 SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges UpdateModuleStartsAttack = Yes InitiateSound = ColonelBurtonVoicePlantRemoteCharge End Behavior = SpecialAbilityUpdate ModuleTag_09 SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges StartAbilityRange = 0.0 PreparationTime = 0 SpecialObject = RemoteC4Charge MaxSpecialObjects = 8 SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate). AlwaysValidateSpecialObjects = Yes ;Coupled with the above setting, this one is necessary for code optimization. SpecialObjectsPersistent = Yes ;Charges are persistent till lifetime expires or owner detonates them. UniqueSpecialObjectTargets = Yes ;This prevents multiple charges placed on the same object. UnpackTime = 5500 ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge PackTime = 0 SkipPackingWithNoTarget = Yes ;When yes, the packing/unpacking will be ignored when detonating charges. FlipOwnerAfterUnpacking = Yes FleeRangeAfterCompletion = 100.0 ;Runs away after finishing ability UnpackSound = ColonelBurtonPlantCharge LoseStealthOnTrigger = Yes PreTriggerUnstealthTime = 5000 ; in milliseconds End Behavior = SpecialAbility ModuleTag_10 SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges UpdateModuleStartsAttack = Yes InitiateSound = ColonelBurtonVoicePlantTimedCharge End Behavior = SpecialAbilityUpdate ModuleTag_11 SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges StartAbilityRange = 0.0 PreparationTime = 0 SpecialObject = TimedC4Charge MaxSpecialObjects = 10 SpecialObjectsPersistWhenOwnerDies = Yes SpecialObjectsPersistent = Yes ;Charges are persistent till lifetime expires or owner detonates them. UniqueSpecialObjectTargets = Yes ;This prevents multiple charges placed on the same object. UnpackTime = 5500 ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge FlipOwnerAfterUnpacking = Yes FleeRangeAfterCompletion = 100.0 ;Runs away after finishing ability UnpackSound = ColonelBurtonPlantCharge LoseStealthOnTrigger = Yes PreTriggerUnstealthTime = 5000 ; in milliseconds End Behavior = ExperienceScalarUpgrade ModuleTag_12 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End ;Hero units can't be squished! ;Behavior = SquishCollide ModuleTag_13 ; ;nothing ;End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_18 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 10.0 GeometryMinorRadius = 10.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14 ShadowSizeY = 14 ShadowTexture = ShadowI BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object AmericaVehicleHumvee ; *** ART Parameters *** SelectPortrait = SAHummer_L ButtonImage = SAHummer UpgradeCameo1 = Upgrade_AmericaBattleDrone UpgradeCameo2 = Upgrade_AmericaScoutDrone UpgradeCameo3 = Upgrade_AmericaTOWMissile UpgradeCameo4 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo5 = XXX Draw = W3DTruckDraw ModuleTag_01 OkToChangeModelColor = Yes ConditionState = NONE Model = AVHUMMER Turret = Turret ShowSubObject = Turret HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01 WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX End ConditionState = REALLYDAMAGED Model = AVHUMMER_d Turret = Turret ShowSubObject = Turret HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01 WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX End ConditionState = WEAPONSET_PLAYER_UPGRADE Model = AVHUMMER Turret = TurretUp01 HideSubObject = Turret MuzzleFX01 ShowSubObject = TurretUp01 Housecolor03 WeaponFireFXBone = PRIMARY MuzzleUp WeaponMuzzleFlash = PRIMARY MuzzleFXUp WeaponFireFXBone = SECONDARY WeaponB WeaponLaunchBone = SECONDARY WeaponB WeaponFireFXBone = TERTIARY WeaponB WeaponLaunchBone = TERTIARY WeaponB End ConditionState = REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE Model = AVHUMMER_d Turret = TurretUp01 HideSubObject = Turret MuzzleFX01 ShowSubObject = TurretUp01 Housecolor03 WeaponFireFXBone = PRIMARY MuzzleUp WeaponMuzzleFlash = PRIMARY MuzzleFXUp WeaponFireFXBone = SECONDARY WeaponB WeaponLaunchBone = SECONDARY WeaponB WeaponFireFXBone = TERTIARY WeaponB WeaponLaunchBone = TERTIARY WeaponB End TrackMarks = EXTireTrack.tga Dust = RocketBuggyDust DirtSpray = RocketBuggyDirtSpray PowerslideSpray = RocketBuggyDirtPowerSlide ; These parameters are only used if the model has a separate suspension, ; and the locomotor has HasSuspension = Yes. LeftFrontTireBone = Tire01 RightFrontTireBone = Tire02 LeftRearTireBone = Tire03 RightRearTireBone = Tire04 TireRotationMultiplier = 0.2 ; this * speed = rotation. PowerslideRotationAddition = 1.25 ; This speed is added to the rotation speed when powersliding. End ; ***DESIGN parameters *** DisplayName = OBJECT:Humvee Side = America EditorSorting = VEHICLE TransportSlotCount = 3 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY HumveeGun End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY HumveeGun Weapon = SECONDARY HumveeMissileWeapon Weapon = TERTIARY HumveeMissileWeaponAir PreferredAgainst = TERTIARY AIRCRAFT End ArmorSet Conditions = None Armor = HumveeArmor DamageFX = TruckDamageFX End BuildCost = 700 BuildTime = 10.0 ;in seconds VisionRange = 150 ShroudClearingRange = 320 Prerequisites Object = AmericaWarFactory End ExperienceValue = 50 50 100 150 ;Experience point value at each level ExperienceRequired = 0 100 150 300 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience 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 = AmericaVehicleHumveeCommandSet ; *** AUDIO Parameters *** VoiceSelect = HumveeVoiceSelect VoiceMove = HumveeVoiceMove VoiceGuard = HumveeVoiceMove VoiceAttack = HumveeVoiceAttack VoiceAttackAir = HumveeVoiceAttackTOW SoundMoveStart = HumveeMoveStart SoundMoveStartDamaged = HumveeMoveStart SoundEnter = HumveeEnter SoundExit = HumveeExit UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs ;TurretMoveStart = NoSound VoiceCreate = HumveeVoiceCreate TurretMoveLoop = TurretMoveLoop SoundEject = PilotSoundEject VoiceEject = PilotVoiceEject VoiceCrush = HumveeVoiceCrush ; Required for the W3DTruckDraw module TruckLandingSound = RocketBuggyLand TruckPowerslideSound = RocketBuggyPowerslide VoiceUnload = HumveeVoiceUnload VoiceEnter = HumveeVoiceMove End Behavior = AIUpdateInterface ModuleTag_20 AutoAcquireEnemiesWhenIdle = Yes MoodAttackCheckRate = 250 End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT Body = ActiveBody ModuleTag_02 MaxHealth = 240.0 InitialHealth = 240.0 End Behavior = TransportAIUpdate ModuleTag_03 Turret TurretTurnRate = 180 RecenterTime = 5000 ; how long to wait during idle before recentering ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY End AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL HumveeLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 50.0 End Behavior = TransportContain ModuleTag_05 PassengersAllowedToFire = Yes Slots = 5 ; EnterSound = GarrisonEnter ; ExitSound = GarrisonExit DamagePercentToUnits = 100% ;10% AllowInsideKindOf = INFANTRY ExitDelay = 250 NumberOfExitPaths = 3 ; Defaults to 1. Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting End Behavior = ObjectCreationUpgrade ModuleTag_06 UpgradeObject = OCL_AmericanBattleDrone TriggeredBy = Upgrade_AmericaBattleDrone ConflictsWith = Upgrade_AmericaScoutDrone End Behavior = ObjectCreationUpgrade ModuleTag_07 UpgradeObject = OCL_AmericanScoutDrone TriggeredBy = Upgrade_AmericaScoutDrone ConflictsWith = Upgrade_AmericaBattleDrone End Behavior = ProductionUpdate ModuleTag_08 MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame End Behavior = WeaponSetUpgrade ModuleTag_09 TriggeredBy = Upgrade_AmericaTOWMissile End Behavior = ExperienceScalarUpgrade ModuleTag_10 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = SlowDeathBehavior ModuleTag_11 DeathTypes = ALL -CRUSHED -SPLATTED ProbabilityModifier = 25 DestructionDelay = 1 OCL = INITIAL OCL_InitialHumveeDebris FX = FINAL FX_BattleMasterExplosionOneFinal OCL = FINAL OCL_FinalHumveeDebris End Behavior = DestroyDie ModuleTag_12 DeathTypes = NONE +CRUSHED +SPLATTED End Behavior = FXListDie ModuleTag_13 DeathTypes = NONE +CRUSHED +SPLATTED DeathFX = FX_CarCrush End Behavior = CreateCrateDie ModuleTag_CratesChange CrateData = SalvageCrateData ;CrateData = EliteTankCrateData ;CrateData = HeroicTankCrateData End ; This is commented out per hotlist request 10/9 ML ; Behavior = CreateObjectDie ModuleTag_15 ; DeathTypes = ALL -CRUSHED -SPLATTED ; CreationList = OCL_AmericanRangerDebris01 ; ExemptStatus = HIJACKED ; End Behavior = EjectPilotDie ModuleTag_16 DeathTypes = ALL -CRUSHED -SPLATTED ExemptStatus = HIJACKED ; The following added out per hotlist request 10/9 as above ML VeterancyLevels = ALL -REGULAR ;only vet+ gives pilot GroundCreationList = OCL_EjectPilotOnGround AirCreationList = OCL_EjectPilotViaParachute End Behavior = TransitionDamageFX ModuleTag_17 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition 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 = 14.0 GeometryMinorRadius = 7.0 GeometryHeight = 11.5 GeometryIsSmall = Yes Shadow = SHADOW_VOLUME ShadowSizeX = 45 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ ;**************************** Cinematic-Only unit ***************************** Object CINE_AmericaVehicleHumvee ; *** ART Parameters *** SelectPortrait = SAHummer_L ButtonImage = SAHummer UpgradeCameo1 = Upgrade_AmericaBattleDrone UpgradeCameo2 = Upgrade_AmericaScoutDrone UpgradeCameo3 = Upgrade_AmericaTOWMissile ;UpgradeCameo4 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo5 = XXX Draw = W3DTruckDraw ModuleTag_01 OkToChangeModelColor = Yes ConditionState = NONE Model = AVHUMMER Turret = Turret ShowSubObject = Turret HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01 WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX End ConditionState = REALLYDAMAGED Model = AVHUMMER_d Turret = Turret ShowSubObject = Turret HideSubObject = TurretUp01 Housecolor03 MuzzleFXUP01 WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX End ConditionState = WEAPONSET_PLAYER_UPGRADE Model = AVHUMMER Turret = TurretUp01 HideSubObject = Turret MuzzleFX01 ShowSubObject = TurretUp01 Housecolor03 WeaponFireFXBone = PRIMARY MuzzleUp WeaponMuzzleFlash = PRIMARY MuzzleFXUp WeaponFireFXBone = SECONDARY WeaponB WeaponLaunchBone = SECONDARY WeaponB WeaponFireFXBone = TERTIARY WeaponB WeaponLaunchBone = TERTIARY WeaponB End ConditionState = REALLYDAMAGED WEAPONSET_PLAYER_UPGRADE Model = AVHUMMER_d Turret = TurretUp01 HideSubObject = Turret MuzzleFX01 ShowSubObject = TurretUp01 Housecolor03 WeaponFireFXBone = PRIMARY MuzzleUp WeaponMuzzleFlash = PRIMARY MuzzleFXUp WeaponFireFXBone = SECONDARY WeaponB WeaponLaunchBone = SECONDARY WeaponB WeaponFireFXBone = TERTIARY WeaponB WeaponLaunchBone = TERTIARY WeaponB End TrackMarks = EXTireTrack.tga Dust = RocketBuggyDust DirtSpray = RocketBuggyDirtSpray PowerslideSpray = RocketBuggyDirtPowerSlide ; These parameters are only used if the model has a separate suspension, ; and the locomotor has HasSuspension = Yes. LeftFrontTireBone = Tire01 RightFrontTireBone = Tire02 LeftRearTireBone = Tire03 RightRearTireBone = Tire04 TireRotationMultiplier = 0.2 ; this * speed = rotation. PowerslideRotationAddition = 1.25 ; This speed is added to the rotation speed when powersliding. End ; ***DESIGN parameters *** DisplayName = OBJECT:Humvee Side = America EditorSorting = VEHICLE TransportSlotCount = 3 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY HumveeGun End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY HumveeGun Weapon = SECONDARY HumveeMissileWeapon Weapon = TERTIARY HumveeMissileWeaponAir PreferredAgainst = TERTIARY AIRCRAFT End ArmorSet Conditions = None Armor = HumveeArmor DamageFX = TruckDamageFX End BuildCost = 700 BuildTime = 10.0 ;in seconds VisionRange = 320 ShroudClearingRange = 320 Prerequisites Object = AmericaWarFactory End ExperienceValue = 50 50 100 150 ;Experience point value at each level ExperienceRequired = 0 100 150 300 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience 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 = AmericaVehicleHumveeCommandSet ; *** AUDIO Parameters *** VoiceSelect = HumveeVoiceSelect VoiceMove = HumveeVoiceMove VoiceGuard = HumveeVoiceMove VoiceAttack = HumveeVoiceAttack VoiceAttackAir = HumveeVoiceAttackTOW SoundMoveStart = HumveeMoveStart SoundMoveStartDamaged = HumveeMoveStart SoundEnter = HumveeEnter SoundExit = HumveeExit UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs ;TurretMoveStart = NoSound VoiceCreate = HumveeVoiceCreate TurretMoveLoop = TurretMoveLoop SoundEject = PilotSoundEject VoiceEject = PilotVoiceEject VoiceCrush = HumveeVoiceCrush ; Required for the W3DTruckDraw module TruckLandingSound = RocketBuggyLand TruckPowerslideSound = RocketBuggyPowerslide VoiceUnload = HumveeVoiceUnload VoiceEnter = HumveeVoiceMove End Behavior = AIUpdateInterface ModuleTag_20 AutoAcquireEnemiesWhenIdle = Yes MoodAttackCheckRate = 250 End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT Body = ActiveBody ModuleTag_02 MaxHealth = 240.0 InitialHealth = 240.0 End Behavior = TransportAIUpdate ModuleTag_03 Turret TurretTurnRate = 180 RecenterTime = 5000 ; how long to wait during idle before recentering ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY End AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL CINE_USAHumveeLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 50.0 End Behavior = TransportContain ModuleTag_05 PassengersAllowedToFire = Yes Slots = 5 ; EnterSound = GarrisonEnter ; ExitSound = GarrisonExit DamagePercentToUnits = 10% AllowInsideKindOf = INFANTRY ExitDelay = 250 NumberOfExitPaths = 3 ; Defaults to 1. Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting End Behavior = ObjectCreationUpgrade ModuleTag_06 UpgradeObject = OCL_AmericanBattleDrone TriggeredBy = Upgrade_AmericaBattleDrone ConflictsWith = Upgrade_AmericaScoutDrone End Behavior = ObjectCreationUpgrade ModuleTag_07 UpgradeObject = OCL_AmericanScoutDrone TriggeredBy = Upgrade_AmericaScoutDrone ConflictsWith = Upgrade_AmericaBattleDrone End Behavior = ProductionUpdate ModuleTag_08 MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame End Behavior = WeaponSetUpgrade ModuleTag_09 TriggeredBy = Upgrade_AmericaTOWMissile End Behavior = ExperienceScalarUpgrade ModuleTag_10 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = SlowDeathBehavior ModuleTag_11 DeathTypes = ALL -CRUSHED -SPLATTED ProbabilityModifier = 25 DestructionDelay = 1 OCL = INITIAL OCL_InitialHumveeDebris FX = FINAL FX_BattleMasterExplosionOneFinal OCL = FINAL OCL_FinalHumveeDebris End Behavior = DestroyDie ModuleTag_12 DeathTypes = NONE +CRUSHED +SPLATTED End Behavior = FXListDie ModuleTag_13 DeathTypes = NONE +CRUSHED +SPLATTED DeathFX = FX_CarCrush End Behavior = CreateCrateDie ModuleTag_CratesChange CrateData = SalvageCrateData ;CrateData = EliteTankCrateData ;CrateData = HeroicTankCrateData End ; This is commented out per hotlist request 10/9 ML ; Behavior = CreateObjectDie ModuleTag_15 ; DeathTypes = ALL -CRUSHED -SPLATTED ; CreationList = OCL_AmericanRangerDebris01 ; ExemptStatus = HIJACKED ; End Behavior = EjectPilotDie ModuleTag_16 DeathTypes = ALL -CRUSHED -SPLATTED ExemptStatus = HIJACKED ; The following added out per hotlist request 10/9 as above ML VeterancyLevels = ALL -REGULAR ;only vet+ gives pilot GroundCreationList = OCL_EjectPilotOnGround AirCreationList = OCL_EjectPilotViaParachute End Behavior = TransitionDamageFX ModuleTag_17 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition 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 = 14.0 GeometryMinorRadius = 7.0 GeometryHeight = 11.5 GeometryIsSmall = Yes Shadow = SHADOW_VOLUME ShadowSizeX = 45 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object HumveeMissile ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = UVRockBug_m End End ; ***DESIGN parameters *** EditorSorting = SYSTEM VisionRange = 0.0 ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** ENGINEERING Parameters *** KindOf = PROJECTILE SMALL_MISSILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End ; ---- begin Projectile death behaviors Behavior = InstantDeathBehavior DeathModuleTag_01 DeathTypes = NONE +DETONATED ; we detonated normally. ; no FX, just quiet destroy ourselves End Behavior = InstantDeathBehavior DeathModuleTag_02 DeathTypes = NONE +LASERED ; shot down by laser. FX = FX_GenericMissileDisintegrate OCL = OCL_GenericMissileDisintegrate End Behavior = InstantDeathBehavior DeathModuleTag_03 DeathTypes = ALL -LASERED -DETONATED ; shot down by nonlaser. FX = FX_GenericMissileDeath End ; ---- end Projectile death behaviors Behavior = PhysicsBehavior ModuleTag_06 Mass = 1 End Behavior = MissileAIUpdate ModuleTag_07 TryToFollowTarget = No FuelLifetime = 1000 InitialVelocity = 150 ; in dist/sec IgnitionDelay = 0 DistanceToTravelBeforeTurning = 3 IgnitionFX = FX_HumveeMissileIgnition End Locomotor = SET_NORMAL RocketBuggyMissileLocomotor Geometry = Sphere GeometryIsSmall = Yes GeometryMajorRadius = 2.0 End ;------------------------------------------------------------------------------ Object AmericaVehicleHumveeDeadHull ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AVHUMMER_D1 End End ; ***DESIGN parameters *** Side = America EditorSorting = SYSTEM TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) ; *** AUDIO Parameters *** ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = CAN_CAST_REFLECTIONS IMMOBILE NO_COLLIDE HULK Body = ActiveBody ModuleTag_02 MaxHealth = 1.0 InitialHealth = 1.0 End Behavior = PhysicsBehavior ModuleTag_03 Mass = 50 AllowBouncing = Yes End Behavior = LifetimeUpdate ModuleTag_04 MinLifetime = 0 ; min lifetime in msec MaxLifetime = 0 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_05 SinkDelay = 14000 SinkRate = 2 ; in Dist/Sec DestructionDelay = 20000 End Behavior = TransitionDamageFX ModuleTag_06 RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01 End Geometry = BOX GeometryMajorRadius = 9.0 GeometryMinorRadius = 6.0 GeometryHeight = 7.5 GeometryIsSmall = Yes End ;---------------------------------------------------------- Object AmericaVehicleTomahawk ; *** ART Parameters *** SelectPortrait = SACTomahawk_L ButtonImage = SACTomahawk UpgradeCameo1 = Upgrade_AmericaScoutDrone UpgradeCameo2 = Upgrade_AmericaBattleDrone UpgradeCameo3 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo4 = Upgrade_AmericaTomahawkRemoteControl ***CUT*** ;UpgradeCameo5 = XXX Draw = W3DTankDraw ModuleTag_01 OkToChangeModelColor = Yes ProjectileBoneFeedbackEnabledSlots = PRIMARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset DefaultConditionState Model = AVTomahawk Turret = TURRET TurretPitch = TURRETEL WeaponLaunchBone = PRIMARY WeaponA WeaponHideShowBone = PRIMARY MISSILE End ConditionState = REALLYDAMAGED Model = AVTomahawk_D End AliasConditionState = RUBBLE TrackMarks = EXTnkTrack.tga End ; ***DESIGN parameters *** DisplayName = OBJECT:Tomahawk Side = America EditorSorting = VEHICLE TransportSlotCount = 3 ;how many "slots" we take in a transport (0 == not transportable) BuildCost = 1200 BuildTime = 20.0 ;in seconds VisionRange = 180 ShroudClearingRange = 200 Prerequisites Object = AmericaWarFactory Object = AmericaStrategyCenter End ExperienceValue = 50 50 100 150 ;Experience point value at each level ExperienceRequired = 0 200 400 800 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience WeaponSet Conditions = None Weapon = PRIMARY TomahawkMissileWeapon End ArmorSet Conditions = None Armor = TruckArmor DamageFX = TankDamageFX End CrusherLevel = 2 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = AmericaVehicleTomahawkCommandSet ; *** AUDIO Parameters *** VoiceSelect = TomahawkVoiceSelect VoiceMove = TomahawkVoiceMove VoiceGuard = TomahawkVoiceMove VoiceAttack = TomahawkVoiceAttack SoundMoveStart = TomahawkMoveStart SoundMoveStartDamaged = TomahawkMoveStart UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs VoiceCreate = TomahawkVoiceCreate TurretMoveStart = NoSound TurretMoveLoop = TurretMoveLoopLoud SoundEject = PilotSoundEject VoiceEject = PilotVoiceEject VoiceCrush = TomahawkVoiceCrush VoiceEnter = TomahawkVoiceMove VoiceBombard = TomahawkVoiceAttack End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE DONT_AUTO_CRUSH_INFANTRY CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE Body = ActiveBody ModuleTag_02 MaxHealth = 180.0 InitialHealth = 180.0 End Behavior = AIUpdateInterface ModuleTag_03 Turret TurretTurnRate = 60 ; turn rate, in degrees per sec TurretPitchRate = 60 FirePitch = 70 ; Instead of aiming pitchwise at the target, it will aim here AllowsPitch = Yes ControlledWeaponSlots = PRIMARY End AutoAcquireEnemiesWhenIdle = No NotWhileAttacking End Locomotor = SET_NORMAL TomahawkLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 50.0 End Behavior = SlowDeathBehavior ModuleTag_05 DeathTypes = ALL -CRUSHED -SPLATTED DestructionDelay = 500 DestructionDelayVariance = 100 FX = INITIAL FX_GenericTankDeathEffect OCL = MIDPOINT OCL_AmericaVehicleTomahawkDie FX = FINAL FX_AmericaVehicleTomahawkDeathExplosion End Behavior = ObjectCreationUpgrade ModuleTag_06 UpgradeObject = OCL_AmericanBattleDrone TriggeredBy = Upgrade_AmericaBattleDrone ConflictsWith = Upgrade_AmericaScoutDrone End Behavior = ObjectCreationUpgrade ModuleTag_07 UpgradeObject = OCL_AmericanScoutDrone TriggeredBy = Upgrade_AmericaScoutDrone ConflictsWith = Upgrade_AmericaBattleDrone End Behavior = ProductionUpdate ModuleTag_08 MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame End Behavior = ExperienceScalarUpgrade ModuleTag_09 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = DestroyDie ModuleTag_10 DeathTypes = NONE +CRUSHED +SPLATTED End Behavior = FXListDie ModuleTag_11 DeathTypes = NONE +CRUSHED +SPLATTED DeathFX = FX_CarCrush End Behavior = CreateObjectDie ModuleTag_12 DeathTypes = NONE +CRUSHED +SPLATTED CreationList = OCL_CrusaderTank_CrushEffect End ; Behavior = FXListDie ; DeathTypes = ALL -CRUSHED -SPLATTED ; DeathFX = FX_GenericTankDeathEffect ; End ; Behavior = CreateObjectDie ; DeathTypes = ALL -CRUSHED -SPLATTED ; CreationList = OCL_GenericTankDeathEffect ; End Behavior = EjectPilotDie ModuleTag_13 DeathTypes = ALL -CRUSHED -SPLATTED ExemptStatus = HIJACKED VeterancyLevels = ALL -REGULAR ;only vet+ gives pilot GroundCreationList = OCL_EjectPilotOnGround AirCreationList = OCL_EjectPilotViaParachute End Behavior = TransitionDamageFX ModuleTag_14 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition End Behavior = FlammableUpdate ModuleTag_21 AflameDuration = 5000 ; If I catch fire, I'll burn for this long... AflameDamageAmount = 3 ; taking this much damage... AflameDamageDelay = 500 ; this often. End Geometry = BOX GeometryMajorRadius = 15.0 GeometryMinorRadius = 10.0 GeometryHeight = 10.0 GeometryIsSmall = Yes Shadow = SHADOW_VOLUME ShadowSizeX = 45 ; minimum elevation angle above horizon. Used to limit shadow length End ;---------------------------------------------------------- Object AmericaVehicleTomahawkHulk ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 ConditionState = NONE Model = AVTomahawk_D1 End End ; ***DESIGN parameters *** EditorSorting = DEBRIS ; *** ENGINEERING Parameters *** KindOf = NO_COLLIDE HULK Behavior = PhysicsBehavior ModuleTag_03 Mass = 10.0 AllowBouncing = Yes KillWhenRestingOnGround = Yes End Behavior = LifetimeUpdate ModuleTag_04 MinLifetime = 1500 ; min lifetime in msec MaxLifetime = 1600 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_05 SinkDelay = 1500 SinkRate = 2 ; in Dist/Sec DestructionDelay = 8000 End End ;---------------------------------------------------------- Object ChinaVehicleNukeCannonHulk ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 ConditionState = NONE Model = NVNukeCn_D1 End End ; ***DESIGN parameters *** EditorSorting = DEBRIS ; *** ENGINEERING Parameters *** KindOf = NO_COLLIDE HULK Behavior = PhysicsBehavior ModuleTag_03 Mass = 10.0 AllowBouncing = Yes KillWhenRestingOnGround = Yes End Behavior = LifetimeUpdate ModuleTag_04 MinLifetime = 1500 ; min lifetime in msec MaxLifetime = 1600 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_05 SinkDelay = 1500 SinkRate = 2 ; in Dist/Sec DestructionDelay = 8000 End End ;------------------------------------------------------------------------------ Object AmericaJetRaptor ; *** ART Parameters *** SelectPortrait = SACRaptor_L ButtonImage = SACRaptor UpgradeCameo1 = Upgrade_AmericaLaserMissiles UpgradeCameo2 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVRaptor HideSubObject = BurnerFX01 BurnerFX02 WeaponLaunchBone = PRIMARY WeaponA End ConditionState = JETEXHAUST ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = JETEXHAUST JETAFTERBURNER ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail ; afterburner ShowSubObject = BurnerFX01 BurnerFX02 ParticleSysBone = Engine01 JetLenzflare ParticleSysBone = Engine02 JetLenzflare End ConditionState = REALLYDAMAGED Model = AVRaptor_D ; damage ParticleSysBone = Smoke01 JetSmoke ParticleSysBone = Engine01 JetEngineDamagedSmoke End ConditionState = REALLYDAMAGED JETEXHAUST Model = AVRaptor_D ; damage ParticleSysBone = Smoke01 JetSmoke ParticleSysBone = Engine01 JetEngineDamagedSmoke ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = REALLYDAMAGED JETEXHAUST JETAFTERBURNER Model = AVRaptor_D ; damage ParticleSysBone = Smoke01 JetSmoke ParticleSysBone = Engine01 JetEngineDamagedSmoke ; afterburner ShowSubObject = BurnerFX01 BurnerFX02 ParticleSysBone = Engine01 JetLenzflare ParticleSysBone = Engine02 JetLenzflare ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = RUBBLE Model = AVRaptor_D1B HideSubObject = None ShowSubObject = None End ConditionState = RUBBLE JETEXHAUST JETAFTERBURNER Model = AVRaptor_D1B ;HideSubObject is needed cause there're inherited from default condition state HideSubObject = None ShowSubObject = None ParticleSysBone = Engine01 JetExhaust ParticleSysBone = Engine02 JetExhaust ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End OkToChangeModelColor = Yes End ; ***DESIGN parameters *** DisplayName = OBJECT:Raptor EditorSorting = VEHICLE Side = America TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 180.0 ShroudClearingRange = 400 Prerequisites Object = AmericaAirfield End WeaponSet Conditions = None Weapon = PRIMARY RaptorJetMissileWeapon End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY RaptorJetLaserGuidedMissileWeapon End ArmorSet Conditions = None Armor = AirplaneArmor DamageFX = None End BuildCost = 1400 BuildTime = 20 ExperienceValue = 50 50 100 150 ;Experience point value at each level ExperienceRequired = 0 100 200 400 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrusherLevel = 1 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = AmericaJetRaptorCommandSet ; *** AUDIO Parameters *** VoiceSelect = RaptorVoiceSelect VoiceMove = RaptorVoiceMove VoiceAttack = RaptorVoiceAttack VoiceAttackAir = RaptorVoiceAttackAir VoiceGuard = RaptorVoiceAirPatrol SoundDie = RaptorVoiceFalling SoundAmbient = RaptorAmbientLoop SoundAmbientRubble = NoSound ; For now, it is better to have some sound than no sound cause there is a bug in ; what triggers the sound move loop sound, and the multiplayer test is only days away ; SoundMoveLoop = RaptorAmbientLoop ; don't want sound while sitting at airfield ; SoundAmbient = NoSound UnitSpecificSounds VoiceCreate = RaptorVoiceCreate SoundEject = PilotSoundEject VoiceEject = PilotVoiceEject Afterburner = RaptorAfterburner VoiceLowFuel = RaptorVoiceLowFuel VoiceGarrison = RaptorVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT Body = ActiveBody ModuleTag_02 MaxHealth = 160.0 InitialHealth = 160.0 End Behavior = WeaponSetUpgrade ModuleTag_03 TriggeredBy = Upgrade_AmericaLaserMissiles End Behavior = ExperienceScalarUpgrade ModuleTag_04 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = JetSlowDeathBehavior ModuleTag_05 FXOnGroundDeath = FX_JetOnGroundDeath OCLOnGroundDeath = OCL_RaptorDeathFinalBlowUp DestructionDelay = 99999999; destruction will happen when we RollRate = 0.2 RollRateDelta = 100% ;each frame, rollrate = rollrate * rollrateDelta PitchRate = 0.0 FallHowFast = 110.0% ;Bigger is faster (can be over 100%,it's a fraction of gravity) FXInitialDeath = FX_JetDeathInitial OCLInitialDeath = OCL_RaptorDeathInitial DelaySecondaryFromInitialDeath = 500 ; in milliseconds FXSecondary = FX_JetDeathSecondary OCLSecondary = OCL_RaptorDeathSecondary FXHitGround = FX_JetDeathHitGround OCLHitGround = OCL_RaptorDeathHitGround DelayFinalBlowUpFromHitGround = 200 ; in milliseconds FXFinalBlowUp = FX_JetDeathFinalBlowUp OCLFinalBlowUp = OCL_RaptorDeathFinalBlowUp ; DeathLoopSound = MICAL NEEDS TO MAKE ME End Behavior = EjectPilotDie ModuleTag_06 ExemptStatus = HIJACKED GroundCreationList = OCL_EjectPilotOnGround AirCreationList = OCL_EjectPilotViaParachute VeterancyLevels = ALL -REGULAR ;only vet+ gives pilot End Behavior = PhysicsBehavior ModuleTag_07 Mass = 500.0 End Behavior = TransitionDamageFX ModuleTag_08 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition End Behavior = JetAIUpdate ModuleTag_09 OutOfAmmoDamagePerSecond = 10% ; amount of damage to take per SEC (not per frame) when out of ammo ; note that it's expressed as a percent of max health, not an absolute TakeoffSpeedForMaxLift = 100% ; smaller numbers give more lift sooner when taking off TakeoffPause = 500 MinHeight = 5 ParkingOffset = 3 ; scooch it a little forward so the tail doesn't hit the doors ReturnToBaseIdleTime = 10000 ; if idle for this long, return to base, even if not out of ammo End Locomotor = SET_NORMAL RaptorJetLocomotor Locomotor = SET_TAXIING BasicJetTaxiLocomotor 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 GeometryIsSmall = Yes GeometryMajorRadius = 14.0 GeometryMinorRadius = 7.0 GeometryHeight = 5.0 Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length. End ;------------------------------------------------------------------------------ ;This is the raptor as it's crashing ;------------------------------------------------------------------------------ Object AmericaJetRaptorHulk ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVRaptor_D1 End End ; ***DESIGN parameters *** EditorSorting = DEBRIS ; *** ENGINEERING Parameters *** KindOf = NO_COLLIDE HULK Behavior = PhysicsBehavior ModuleTag_03 Mass = 2.0 AllowBouncing = No KillWhenRestingOnGround = Yes End Behavior = LifetimeUpdate ModuleTag_04 MinLifetime = 1500 ; min lifetime in msec MaxLifetime = 1600 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_05 SinkDelay = 1500 SinkRate = 2 ; in Dist/Sec DestructionDelay = 8000 End End ;------------------------------------------------------------------------------ ;This is the A10 as it's crashing ;------------------------------------------------------------------------------ Object AmericaJetA10Hulk ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVWarthog_D1 End End ; ***DESIGN parameters *** EditorSorting = DEBRIS ; *** ENGINEERING Parameters *** KindOf = NO_COLLIDE HULK Behavior = PhysicsBehavior ModuleTag_03 Mass = 2.0 AllowBouncing = No KillWhenRestingOnGround = Yes End Behavior = LifetimeUpdate ModuleTag_04 MinLifetime = 1500 ; min lifetime in msec MaxLifetime = 1600 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_05 SinkDelay = 1500 SinkRate = 2 ; in Dist/Sec DestructionDelay = 8000 End End ;------------------------------------------------------------------------------ ;This is the stealth as it's crashing ;------------------------------------------------------------------------------ Object AmericaJetStealthHulk ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVStealth_D1 End End ; ***DESIGN parameters *** EditorSorting = DEBRIS ; *** ENGINEERING Parameters *** KindOf = NO_COLLIDE HULK Behavior = PhysicsBehavior ModuleTag_03 Mass = 2.0 AllowBouncing = No KillWhenRestingOnGround = Yes End Behavior = LifetimeUpdate ModuleTag_04 MinLifetime = 1500 ; min lifetime in msec MaxLifetime = 1600 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_05 SinkDelay = 1500 SinkRate = 2 ; in Dist/Sec DestructionDelay = 8000 End End ;------------------------------------------------------------------------------ ;This is the stealth as it's crashing ;------------------------------------------------------------------------------ Object AmericaJetAuroraHulk ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVAurora_D1 End End ; ***DESIGN parameters *** EditorSorting = DEBRIS ; *** ENGINEERING Parameters *** KindOf = NO_COLLIDE HULK Behavior = PhysicsBehavior ModuleTag_03 Mass = 2.0 AllowBouncing = No KillWhenRestingOnGround = Yes End Behavior = LifetimeUpdate ModuleTag_04 MinLifetime = 1500 ; min lifetime in msec MaxLifetime = 1600 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_05 SinkDelay = 1500 SinkRate = 2 ; in Dist/Sec DestructionDelay = 8000 End End ;------------------------------------------------------------------------------ Object A10ThunderboltMissile ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AVWarthog_M ParticleSysBone = NONE MissileExhaust End End ; ***DESIGN parameters *** DisplayName = OBJECT:Missile Side = America EditorSorting = SYSTEM TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 0.0 ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** AUDIO Parameters *** ; *** ENGINEERING Parameters *** KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End ; ---- begin Projectile death behaviors Behavior = InstantDeathBehavior DeathModuleTag_01 DeathTypes = NONE +DETONATED ; we detonated normally. ; no FX, just quiet destroy ourselves End Behavior = InstantDeathBehavior DeathModuleTag_02 DeathTypes = NONE +LASERED ; shot down by laser. FX = FX_GenericMissileDisintegrate OCL = OCL_GenericMissileDisintegrate End Behavior = InstantDeathBehavior DeathModuleTag_03 DeathTypes = ALL -LASERED -DETONATED ; shot down by nonlaser. FX = FX_GenericMissileDeath End ; ---- end Projectile death behaviors ; The weapon is in OCL.ini. This makes it do double damage secretly. ; Behavior = FireWeaponWhenDeadBehavior ModuleTag_05 ; DeathWeapon = A10ThunderboltMissileWeapon ; StartsActive = Yes ; End Behavior = PhysicsBehavior ModuleTag_08 Mass = 1 End Behavior = MissileAIUpdate ModuleTag_09 TryToFollowTarget = Yes FuelLifetime = 10000 InitialVelocity = 30 ; in dist/sec IgnitionDelay = 0 IgnitionFX = FX_A10ThunderboltMissileIgnition End ; It's a missile, it needs to hit so it can +DETONATED ; Behavior = HeightDieUpdate ModuleTag_10 ; TargetHeight = 1.0 ; TargetHeightIncludesStructures = No ; End Locomotor = SET_NORMAL A10ThunderboltMissileLocomotor Geometry = Sphere GeometryIsSmall = Yes GeometryMajorRadius = 1.0 Behavior = SpecialPowerCompletionDie ModuleTag_11 SpecialPowerTemplate = SuperweaponA10ThunderboltMissileStrike End ; Geometry = Sphere ; GeometryIsSmall = Yes ;GeometryMajorRadius = 12.0 End ;------------------------------------------------------------------------------ Object RaptorJetMissile ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AVRaptor_M End End ; ***DESIGN parameters *** DisplayName = OBJECT:Missile EditorSorting = SYSTEM VisionRange = 0.0 ; *** ENGINEERING Parameters *** KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End ; ---- begin Projectile death behaviors Behavior = InstantDeathBehavior DeathModuleTag_01 DeathTypes = NONE +DETONATED ; we detonated normally. ; no FX, just quiet destroy ourselves End Behavior = InstantDeathBehavior DeathModuleTag_02 DeathTypes = NONE +LASERED ; shot down by laser. FX = FX_GenericMissileDisintegrate OCL = OCL_GenericMissileDisintegrate End Behavior = InstantDeathBehavior DeathModuleTag_03 DeathTypes = ALL -LASERED -DETONATED ; shot down by nonlaser. FX = FX_GenericMissileDeath End ; ---- end Projectile death behaviors Behavior = PhysicsBehavior ModuleTag_07 Mass = 1 End Behavior = MissileAIUpdate ModuleTag_08 TryToFollowTarget = Yes FuelLifetime = 10000 InitialVelocity = 75 ; in dist/sec IgnitionDelay = 30 IgnitionFX = FX_JetMissileIgnition End Locomotor = SET_NORMAL RaptorJetMissileLocomotor Geometry = Sphere GeometryIsSmall = Yes GeometryMajorRadius = 1.0 End ;------------------------------------------------------------------------------ Object StealthJetMissile ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AVStealth_M End End ; ***DESIGN parameters *** DisplayName = OBJECT:Missile EditorSorting = SYSTEM VisionRange = 0.0 ; *** ENGINEERING Parameters *** KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End ; ---- begin Projectile death behaviors Behavior = InstantDeathBehavior DeathModuleTag_01 DeathTypes = NONE +DETONATED ; we detonated normally. ; no FX, just quiet destroy ourselves End Behavior = InstantDeathBehavior DeathModuleTag_02 DeathTypes = NONE +LASERED ; shot down by laser. FX = FX_GenericMissileDisintegrate OCL = OCL_GenericMissileDisintegrate End Behavior = InstantDeathBehavior DeathModuleTag_03 DeathTypes = ALL -LASERED -DETONATED ; shot down by nonlaser. FX = FX_GenericMissileDeath End ; ---- end Projectile death behaviors Behavior = PhysicsBehavior ModuleTag_07 Mass = 1 End Behavior = MissileAIUpdate ModuleTag_08 TryToFollowTarget = Yes FuelLifetime = 10000 InitialVelocity = 75 ; in dist/sec IgnitionDelay = 30 IgnitionFX = FX_JetMissileIgnition End Locomotor = SET_NORMAL StealthJetMissileLocomotor Geometry = Sphere GeometryIsSmall = Yes GeometryMajorRadius = 1.0 End ;------------------------------------------------------------------------------ Object AmericaJetB52 ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVBomber ParticleSysBone = Engine01 JetBlackTrailThin ParticleSysBone = Engine02 JetBlackTrailThin ParticleSysBone = Engine03 JetBlackTrailThin ParticleSysBone = Engine04 JetBlackTrailThin ParticleSysBone = WingTip01 JetContrailThin ParticleSysBone = WingTip02 JetContrailThin End ConditionState = DAMAGED Model = AVBomber_D ParticleSysBone = Smoke01 JetFireLarge ParticleSysBone = Smoke02 JetFireLarge ParticleSysBone = Engine01 JetBlackTrailThin ParticleSysBone = Engine02 JetBlackTrailThin ParticleSysBone = Engine03 JetBlackTrailThin ParticleSysBone = Engine04 JetBlackTrailThin ParticleSysBone = Smoke01 JetSmokeLarge ParticleSysBone = Smoke02 JetSmokeLarge End ConditionState = REALLYDAMAGED Model = AVBomber_D ParticleSysBone = Smoke01 JetFireLarge ParticleSysBone = Smoke02 JetFireLarge ParticleSysBone = Engine01 JetBlackTrailThin ParticleSysBone = Engine02 JetBlackTrailThin ParticleSysBone = Engine03 JetBlackTrailThin ParticleSysBone = Engine04 JetBlackTrailThin ParticleSysBone = Smoke01 JetSmokeLarge ParticleSysBone = Smoke02 JetSmokeLarge End ConditionState = RUBBLE Model = AVBomber_D1 ParticleSysBone = Smoke01 JetFireLarge ParticleSysBone = Smoke02 JetFireLarge ParticleSysBone = Smoke01 JetSmokeLarge ParticleSysBone = Smoke02 JetSmokeLarge End OkToChangeModelColor = Yes End Draw = W3DModelDraw ModuleTag_02 DefaultConditionState Model = AVBomber_A2U Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = MANUAL Flags = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES End ConditionState = DOOR_1_OPENING Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = ONCE Flags = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES End ConditionState = DOOR_1_CLOSING Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES End ConditionState = REALLYDAMAGED Model = AVBomber_A2DU Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = MANUAL Flags = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES End ConditionState = DOOR_1_OPENING REALLYDAMAGED Model = AVBomber_A2DU Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = ONCE Flags = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES End ConditionState = DOOR_1_CLOSING REALLYDAMAGED Model = AVBomber_A2DU Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES End End ; ***DESIGN parameters *** DisplayName = OBJECT:B52 EditorSorting = VEHICLE Side = America TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 0.0 ArmorSet Conditions = None Armor = AirplaneArmor DamageFX = TankDamageFX End CommandSet = Command_ScriptedTransportDrops ; *** AUDIO Parameters *** SoundAmbient = B52AmbientLoop SoundAmbientRubble = NoSound ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT IGNORED_IN_GUI Body = ActiveBody ModuleTag_03 MaxHealth = 1000.0 InitialHealth = 1000.0 End ExperienceValue = 50 50 50 50 ; Experience point value at each level ;SCRIPTED SUPPORT: These special powers are triggered directly ;from the transport without creating a transport. This is done ;via new code support and CreateLocation USE_OWNER_OBJECT -- ;which also prevents creating the payload transport. Behavior = OCLSpecialPower ModuleTag_04 SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@ OCL = SUPERWEAPON_DaisyCutter CreateLocation = USE_OWNER_OBJECT End Behavior = OCLSpecialPower ModuleTag_05 SpecialPowerTemplate = SuperweaponParadropAmerica UpgradeOCL = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3 UpgradeOCL = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2 OCL = SUPERWEAPON_Paradrop1 CreateLocation = USE_OWNER_OBJECT End Behavior = OCLSpecialPower ModuleTag_06 SpecialPowerTemplate = SuperweaponCarpetBomb OCL = SUPERWEAPON_CarpetBomb CreateLocation = USE_OWNER_OBJECT End Behavior = PhysicsBehavior ModuleTag_07 Mass = 500.0 End Behavior = DeliverPayloadAIUpdate ModuleTag_08 DoorDelay = 500 MaxAttempts = 4 DropOffset = X:0 Y:0 Z:-10 DropDelay = 300 ; time in between each item dropped (if more than one) PutInContainer = AmericaParachute DeliveryDistance = 150 End Locomotor = SET_NORMAL B52Locomotor Behavior = TransportContain ModuleTag_09 Slots = 100 ; hey, it's a BIG transport ScatterNearbyOnExit = No OrientLikeContainerOnExit = Yes KeepContainerVelocityOnExit = Yes ExitPitchRate = 30 ExitBone = WeaponA01 AllowInsideKindOf = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE DoorOpenTime = 0 ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em NumberOfExitPaths = 0 DestroyRidersWhoAreNotFreeToExit = Yes ; 'destroy' as opposed to 'kill' End Behavior = JetSlowDeathBehavior ModuleTag_10 DestructionDelay = 2000 RollRate = 0.0 RollRateDelta = 100% ;each frame, rollrate = rollrate * rollrateDelta PitchRate = 0 FallHowFast = 25.0% ;Bigger is faster (can be over 100%,it's a fraction of gravity) FXInitialDeath = FX_JetBigDeathInitial OCLInitialDeath = OCL_AmericaJetCargoDeathStart DelaySecondaryFromInitialDeath = 2000 ; in milliseconds This guy won't hit the ground, so this time equals the above time OCLSecondary = OCL_AmericaJetCargoHulkDeath FXSecondary = FX_BigPlaneDeath ; FXFinalBlowUp = FX_JetDeathFinalBlowUp ; OCLFinalBlowUp = OCL_AuroraDeathFinalBlowUp ; DeathLoopSound = MICAL NEEDS TO MAKE ME End Behavior = TransitionDamageFX ModuleTag_11 DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition End Geometry = Box GeometryIsSmall = No GeometryMajorRadius = 60.0 GeometryMinorRadius = 10.0 GeometryHeight = 10.0 Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object CINE_USA08_AmericaJetB52 ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVBomber ParticleSysBone = Engine01 JetBlackTrailThin ParticleSysBone = Engine02 JetBlackTrailThin ParticleSysBone = Engine03 JetBlackTrailThin ParticleSysBone = Engine04 JetBlackTrailThin ParticleSysBone = WingTip01 JetContrailThin ParticleSysBone = WingTip02 JetContrailThin End ConditionState = DAMAGED Model = AVBomber_D ParticleSysBone = Smoke01 JetFireLarge ParticleSysBone = Smoke02 JetFireLarge ParticleSysBone = Engine01 JetBlackTrailThin ParticleSysBone = Engine02 JetBlackTrailThin ParticleSysBone = Engine03 JetBlackTrailThin ParticleSysBone = Engine04 JetBlackTrailThin ParticleSysBone = Smoke01 JetSmokeLarge ParticleSysBone = Smoke02 JetSmokeLarge End ConditionState = REALLYDAMAGED Model = AVBomber_D ParticleSysBone = Smoke01 JetFireLarge ParticleSysBone = Smoke02 JetFireLarge ParticleSysBone = Engine01 JetBlackTrailThin ParticleSysBone = Engine02 JetBlackTrailThin ParticleSysBone = Engine03 JetBlackTrailThin ParticleSysBone = Engine04 JetBlackTrailThin ParticleSysBone = Smoke01 JetSmokeLarge ParticleSysBone = Smoke02 JetSmokeLarge End ConditionState = RUBBLE Model = AVBomber_D1 ParticleSysBone = Smoke01 JetFireLarge ParticleSysBone = Smoke02 JetFireLarge ParticleSysBone = Smoke01 JetSmokeLarge ParticleSysBone = Smoke02 JetSmokeLarge End OkToChangeModelColor = Yes End Draw = W3DModelDraw ModuleTag_02 DefaultConditionState Model = AVBomber_A2U Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = MANUAL Flags = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES End ConditionState = DOOR_1_OPENING Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = ONCE Flags = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES End ConditionState = DOOR_1_CLOSING Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES End ConditionState = REALLYDAMAGED Model = AVBomber_A2DU Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = MANUAL Flags = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES End ConditionState = DOOR_1_OPENING REALLYDAMAGED Model = AVBomber_A2DU Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = ONCE Flags = START_FRAME_FIRST MAINTAIN_FRAME_ACROSS_STATES End ConditionState = DOOR_1_CLOSING REALLYDAMAGED Model = AVBomber_A2DU Animation = AVBomber_A2K.AVBomber_A2 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST MAINTAIN_FRAME_ACROSS_STATES End End ; ***DESIGN parameters *** DisplayName = OBJECT:B52 EditorSorting = VEHICLE Side = America TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 0.0 ArmorSet Conditions = None Armor = AirplaneArmor DamageFX = TankDamageFX End CommandSet = Command_ScriptedTransportDrops ; *** AUDIO Parameters *** SoundAmbient = B52AmbientLoop SoundAmbientRubble = NoSound ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE TRANSPORT AIRCRAFT IGNORED_IN_GUI Body = ActiveBody ModuleTag_03 MaxHealth = 1000.0 InitialHealth = 1000.0 End ExperienceValue = 50 50 50 50 ; Experience point value at each level ;SCRIPTED SUPPORT: These special powers are triggered directly ;from the transport without creating a transport. This is done ;via new code support and CreateLocation USE_OWNER_OBJECT -- ;which also prevents creating the payload transport. Behavior = OCLSpecialPower ModuleTag_04 SpecialPowerTemplate = SuperweaponDaisyCutter ;@@KRIS@@ OCL = SUPERWEAPON_DaisyCutter CreateLocation = USE_OWNER_OBJECT End Behavior = OCLSpecialPower ModuleTag_05 SpecialPowerTemplate = SuperweaponParadropAmerica UpgradeOCL = SCIENCE_Paradrop3 SUPERWEAPON_Paradrop3 UpgradeOCL = SCIENCE_Paradrop2 SUPERWEAPON_Paradrop2 OCL = SUPERWEAPON_Paradrop1 CreateLocation = USE_OWNER_OBJECT End Behavior = OCLSpecialPower ModuleTag_06 SpecialPowerTemplate = SuperweaponCarpetBomb OCL = SUPERWEAPON_CarpetBomb CreateLocation = USE_OWNER_OBJECT End Behavior = PhysicsBehavior ModuleTag_07 Mass = 500.0 End Behavior = DeliverPayloadAIUpdate ModuleTag_08 DoorDelay = 500 MaxAttempts = 4 DropOffset = X:0 Y:0 Z:-10 DropDelay = 300 ; time in between each item dropped (if more than one) PutInContainer = AmericaParachute DeliveryDistance = 150 End Locomotor = SET_NORMAL CINE_USA08_B52Locomotor Behavior = TransportContain ModuleTag_09 Slots = 100 ; hey, it's a BIG transport ScatterNearbyOnExit = No OrientLikeContainerOnExit = Yes KeepContainerVelocityOnExit = Yes ExitPitchRate = 30 ExitBone = WeaponA01 AllowInsideKindOf = INFANTRY VEHICLE PROJECTILE DOZER PARACHUTABLE DoorOpenTime = 0 ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em NumberOfExitPaths = 0 DestroyRidersWhoAreNotFreeToExit = Yes ; 'destroy' as opposed to 'kill' End Behavior = JetSlowDeathBehavior ModuleTag_10 DestructionDelay = 2000 RollRate = 0.0 RollRateDelta = 100% ;each frame, rollrate = rollrate * rollrateDelta PitchRate = 0 FallHowFast = 25.0% ;Bigger is faster (can be over 100%,it's a fraction of gravity) FXInitialDeath = FX_JetBigDeathInitial OCLInitialDeath = OCL_AmericaJetCargoDeathStart DelaySecondaryFromInitialDeath = 2000 ; in milliseconds This guy won't hit the ground, so this time equals the above time OCLSecondary = OCL_AmericaJetCargoHulkDeath FXSecondary = FX_BigPlaneDeath ; FXFinalBlowUp = FX_JetDeathFinalBlowUp ; OCLFinalBlowUp = OCL_AuroraDeathFinalBlowUp ; DeathLoopSound = MICAL NEEDS TO MAKE ME End Behavior = TransitionDamageFX ModuleTag_11 DamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_JetBigDamageTransition End Geometry = Box GeometryIsSmall = No GeometryMajorRadius = 60.0 GeometryMinorRadius = 10.0 GeometryHeight = 10.0 Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object CarpetBomb ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = EXCarptBmb End End ; ***DESIGN parameters *** DisplayName = OBJECT:CarpetBomb Side = America EditorSorting = SYSTEM TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 300.0 ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** AUDIO Parameters *** SoundFallingFromPlane = DaisyCutterWeapon ; *** ENGINEERING Parameters *** KindOf = PROJECTILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = AIUpdateInterface ModuleTag_03 End Locomotor = SET_NORMAL None Behavior = PhysicsBehavior ModuleTag_04 Mass = 75.0 AerodynamicFriction = 1 ; this is now friction-per-sec ForwardFriction = 33 ; this is now friction-per-sec CenterOfMassOffset = 2 ; Default of 0 means nothing tips as it falls. Positive tips forward, negative tips back End Behavior = FireWeaponWhenDeadBehavior ModuleTag_05 DeathWeapon = CarpetBombWeapon StartsActive = Yes End Behavior = HeightDieUpdate ModuleTag_06 TargetHeight = 1.0 TargetHeightIncludesStructures = No End Behavior = SpecialPowerCompletionDie ModuleTag_07 SpecialPowerTemplate = SuperweaponCarpetBomb End Behavior = FXListDie ModuleTag_08 DeathFX = FX_CarpetBomb End Behavior = DestroyDie ModuleTag_09 ;nothing End End ;------------------------------------------------------------------------------ Object AuroraBomb ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = EXCarptBmb End End ; ***DESIGN parameters *** Side = America EditorSorting = SYSTEM ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End VisionRange = 0.0 ; *** AUDIO Parameters *** ; *** ENGINEERING Parameters *** KindOf = PROJECTILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = PhysicsBehavior ModuleTag_03 Mass = 75.0 AerodynamicFriction = 2 ; this is now friction-per-sec ForwardFriction = 2 ; this is now friction-per-sec CenterOfMassOffset = 2 ; Default of 0 means nothing tips as it falls. Positive tips forward, negative tips back End ; it may seem odd to have a "bomb" with a Locomotor, especially a Thrust locomotor, ; but there's a good reason: the Aurora moves so freakin' fast that it's really ; hard to (1) find a reliable drop location, and (2) actually get it close enough to ; that location. So we cheat: just get fairly close, then let the "bomb" do a little (subtle) ; navigation on the way down. This works pretty well and actually looks much better ; than you might think. (srj) Behavior = MissileAIUpdate ModuleTag_04 TryToFollowTarget = No FuelLifetime = 0 IgnitionDelay = 0 InitialVelocity = 0 ; in dist/sec DistanceToTravelBeforeTurning = 0 DistanceToTargetBeforeDiving = 0 End Locomotor = SET_NORMAL AuroraBombLocomotor ; yes, that's right. Geometry = Sphere GeometryIsSmall = Yes GeometryMajorRadius = 2.0 End ;------------------------------------------------------------------------------ ; this is the "standard" mine used for building upgrades Object ChinaStandardMine ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; NOTE: ParticleSysBone doesn't work correctly with DefaultConditionState! ; fix someday! (srj) ConditionState = NONE Model = EXAMineGroup ParticleSysBone = Mine01 MineFX ParticleSysBone = Mine02 MineFX ParticleSysBone = Mine03 MineFX ParticleSysBone = Mine04 MineFX ParticleSysBone = Mine05 MineFX ParticleSysBone = Mine06 MineFX ParticleSysBone = Mine07 MineFX ParticleSysBone = Mine08 MineFX End ConditionState = RUBBLE Model = None End End ; ***DESIGN parameters *** DisplayName = OBJECT:StructureMine EditorSorting = MISC_MAN_MADE KindOf = STICK_TO_TERRAIN_SLOPE IMMOBILE MINE NO_HEAL_ICON ArmorSet Conditions = None Armor = MineArmor DamageFX = None End ; *** ENGINEERING Parameters *** Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = StealthUpdate ModuleTag_03 StealthDelay = 0 ; msec StealthForbiddenConditions = NONE FriendlyOpacityMin = 0.0% FriendlyOpacityMax = 0.0% InnateStealth = Yes OrderIdleEnemiesToAttackMeUponReveal = No End ; this is a misleading name, since it's really single-Mine Behavior... Behavior = MinefieldBehavior ModuleTag_04 DetonationWeapon = StructureMineWeapon ; what happens when we detonate DetonatedBy = ENEMIES NEUTRAL ; we no longer want the "scoot" behavior. it looks funky with current art. (srj) ;ScootFromStartingPointTime = 500 RepeatDetonateMoveThresh = 5.0 NumVirtualMines = 8 Regenerates = Yes ; Standard mines DO regenerate. StopsRegenAfterCreatorDies = Yes DegenPercentPerSecondAfterCreatorDies = 3.33% ; take about 30 seconds to die. End ; Standard mines DO heal. Behavior = AutoHealBehavior ModuleTag_05 StartsActive = Yes HealingAmount = 2 HealingDelay = 5000 ; msec StartHealingDelay = 15000 ; wait this long after we are damaged to start healing End Geometry = CYLINDER GeometryMajorRadius = 30.0 GeometryHeight = 1.0 GeometryIsSmall = No End ;------------------------------------------------------------------------------ Object ChinaClusterMine ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; NOTE: ParticleSysBone doesn't work correctly with DefaultConditionState! ; fix someday! (srj) ConditionState = NONE Model = EXAMineGroup ParticleSysBone = Mine01 MineFX ParticleSysBone = Mine02 MineFX ParticleSysBone = Mine03 MineFX ParticleSysBone = Mine04 MineFX ParticleSysBone = Mine05 MineFX ParticleSysBone = Mine06 MineFX ParticleSysBone = Mine07 MineFX ParticleSysBone = Mine08 MineFX End ConditionState = RUBBLE Model = None End End ; ***DESIGN parameters *** DisplayName = OBJECT:ClusterMine EditorSorting = MISC_MAN_MADE KindOf = STICK_TO_TERRAIN_SLOPE IMMOBILE MINE NO_HEAL_ICON ArmorSet Conditions = None Armor = MineArmor DamageFX = None End ; *** ENGINEERING Parameters *** Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = StealthUpdate ModuleTag_03 StealthDelay = 0 ; msec StealthForbiddenConditions = NONE FriendlyOpacityMin = 0.0% FriendlyOpacityMax = 0.0% InnateStealth = Yes OrderIdleEnemiesToAttackMeUponReveal = No End ; this is a misleading name, since it's really single-Mine Behavior... Behavior = MinefieldBehavior ModuleTag_04 DetonationWeapon = ClusterMineWeapon ; what happens when we detonate DetonatedBy = ENEMIES NEUTRAL ScootFromStartingPointTime = 1000 RepeatDetonateMoveThresh = 5.0 NumVirtualMines = 8 Regenerates = No ; Cluster mines do not regenerate. End ; Cluster mines do not heal. ; Behavior = AutoHealBehavior ModuleTag_05 ; StartsActive = Yes ; HealingAmount = 2 ; HealingDelay = 1000 ; msec ; StartHealingDelay = 15000 ; wait this long after we are damaged to start healing ; End Geometry = CYLINDER GeometryMajorRadius = 30.0 GeometryHeight = 1.0 GeometryIsSmall = No End ;------------------------------------------------------------------------------ Object ClusterMinesBomb ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = EXAMine_A End End ; ***DESIGN parameters *** DisplayName = OBJECT:ClusterMinesBomb Side = China EditorSorting = SYSTEM TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 0 ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** AUDIO Parameters *** ; *** ENGINEERING Parameters *** KindOf = PROJECTILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End ; alas, this DOES need ai... Behavior = AIUpdateInterface ModuleTag_03 End Locomotor = SET_NORMAL None Behavior = PhysicsBehavior ModuleTag_04 Mass = 75.0 AerodynamicFriction = 1 ; this is now friction-per-sec ForwardFriction = 33 ; this is now friction-per-sec CenterOfMassOffset = 2 ; Default of 0 means nothing tips as it falls. Positive tips forward, negative tips back End Behavior = GenerateMinefieldBehavior ModuleTag_05 MineName = ChinaClusterMine DistanceAroundObject = 80 GenerateOnlyOnDeath = Yes SmartBorder = Yes SmartBorderSkipInterior = No AlwaysCircular = Yes GenerationFX = WeaponFX_ClusterMineImpact End Behavior = HeightDieUpdate ModuleTag_06 TargetHeight = 60.0 TargetHeightIncludesStructures = No End Behavior = DestroyDie ModuleTag_07 ;nothing End Geometry = SPHERE ;Collision geometry GeometryMajorRadius = 1.0 ;Collision major radius GeometryMinorRadius = 1.0 ;Collision minor radius GeometryHeight = 1.0 ;Height for geometry GeometryIsSmall = Yes ;Is small geometry End ;------------------------------------------------------------------------------ Object EMPPulseBomb ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = EXAMine_A End End ; ***DESIGN parameters *** DisplayName = OBJECT:EMPPulseBomb Side = China EditorSorting = SYSTEM TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 0 ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** AUDIO Parameters *** ; *** ENGINEERING Parameters *** KindOf = PROJECTILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End ; alas, this DOES need ai... Behavior = AIUpdateInterface ModuleTag_03 End Locomotor = SET_NORMAL None Behavior = PhysicsBehavior ModuleTag_04 Mass = 75.0 AerodynamicFriction = 1 ; this is now friction-per-sec ForwardFriction = 33 ; this is now friction-per-sec CenterOfMassOffset = 2 ; Default of 0 means nothing tips as it falls. Positive tips forward, negative tips back End Behavior = HeightDieUpdate ModuleTag_05 TargetHeight = 15.0 TargetHeightIncludesStructures = No End Behavior = CreateObjectDie ModuleTag_06 CreationList = OCL_EMPPulseEffectSpheroids End Behavior = FXListDie ModuleTag_07 DeathFX = WeaponFX_EMPPulseImpact OrientToObject = No End Behavior = DestroyDie ModuleTag_08 ;nothing End Geometry = SPHERE ;Collision geometry GeometryMajorRadius = 1.0 ;Collision major radius GeometryMinorRadius = 1.0 ;Collision minor radius GeometryHeight = 1.0 ;Height for geometry GeometryIsSmall = Yes ;Is small geometry End ;------------------------------------------------------------------------------ Object BlackMarketNuke ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AVBomber_B End End ; ***DESIGN parameters *** DisplayName = OBJECT:BlackMarketNuke Side = GLA EditorSorting = SYSTEM TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** AUDIO Parameters *** ; *** ENGINEERING Parameters *** KindOf = PROJECTILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = AIUpdateInterface ModuleTag_03 End Locomotor = SET_NORMAL None Behavior = PhysicsBehavior ModuleTag_04 Mass = 75.0 AerodynamicFriction = 1 ; this is now friction-per-sec ForwardFriction = 33 ; this is now friction-per-sec CenterOfMassOffset = 2 ; Default of 0 means nothing tips as it falls. Positive tips forward, negative tips back End Behavior = FireWeaponWhenDeadBehavior ModuleTag_05 DeathWeapon = BlackMarketNukeWeapon StartsActive = Yes End Behavior = HeightDieUpdate ModuleTag_06 TargetHeight = 1.0 TargetHeightIncludesStructures = No End Behavior = SpecialPowerCompletionDie ModuleTag_07 SpecialPowerTemplate = SuperweaponBlackMarketNuke End Behavior = DestroyDie ModuleTag_08 ;nothing End Behavior = FXListDie ModuleTag_09 DeathFX = FX_NukeGLA OrientToObject = No End Geometry = Sphere GeometryIsSmall = Yes GeometryMajorRadius = 12.0 End ;------------------------------------------------------------------------------ Object AnthraxBomb ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AVBomber_B End End ; ***DESIGN parameters *** DisplayName = OBJECT:AnthraxBomb Side = GLA EditorSorting = SYSTEM TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 300.0 ShroudClearingRange = 0 ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** AUDIO Parameters *** SoundFallingFromPlane = DaisyCutterWeapon ; *** ENGINEERING Parameters *** KindOf = PROJECTILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = AIUpdateInterface ModuleTag_03 End Locomotor = SET_NORMAL None Behavior = PhysicsBehavior ModuleTag_04 Mass = 75.0 AerodynamicFriction = 1 ; this is now friction-per-sec ForwardFriction = 33 ; this is now friction-per-sec CenterOfMassOffset = 2 ; Default of 0 means nothing tips as it falls. Positive tips forward, negative tips back End Behavior = FireWeaponWhenDeadBehavior ModuleTag_05 DeathWeapon = AnthraxBombWeapon StartsActive = Yes End Behavior = HeightDieUpdate ModuleTag_06 TargetHeight = 40.0 TargetHeightIncludesStructures = No End Behavior = SpecialPowerCompletionDie ModuleTag_07 SpecialPowerTemplate = SuperweaponAnthraxBomb End Behavior = DestroyDie ModuleTag_08 ;nothing End Behavior = FXListDie ModuleTag_09 DeathFX = FX_AnthraxBomb End ; Geometry = Sphere ; GeometryIsSmall = Yes ;GeometryMajorRadius = 12.0 End ;------------------------------------------------------------------------------ Object DaisyCutterBomb ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AVBomber_B End End ; ***DESIGN parameters *** DisplayName = OBJECT:DaisyCutterBomb EditorSorting = SYSTEM TransportSlotCount = 10 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 300.0 ShroudClearingRange = 0 ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** AUDIO Parameters *** SoundFallingFromPlane = DaisyCutterWeapon ; *** ENGINEERING Parameters *** KindOf = PROJECTILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = CreateObjectDie ModuleTag_03 CreationList = OCL_DaisyCutterExplode End Behavior = FXListDie ModuleTag_04 DeathFX = FX_DaisyCutterExplode End Behavior = DestroyDie ModuleTag_05 ;nothing End Behavior = AIUpdateInterface ModuleTag_06 End Locomotor = SET_NORMAL None Behavior = PhysicsBehavior ModuleTag_07 Mass = 75.0 AerodynamicFriction = 1 ; this is now friction-per-sec ForwardFriction = 33 ; this is now friction-per-sec CenterOfMassOffset = 2 ; Default of 0 means nothing tips as it falls. Positive tips forward, negative tips back End Behavior = HeightDieUpdate ModuleTag_08 TargetHeight = 50.0 TargetHeightIncludesStructures = Yes End Behavior = SpecialPowerCompletionDie ModuleTag_09 SpecialPowerTemplate = SuperweaponDaisyCutter End Geometry = Sphere GeometryIsSmall = Yes GeometryMajorRadius = 12.0 End ;------------------------------------------------------------------------------ Object DaisyCutterGas ; *** ART Parameters *** ; Draw = W3DModelDraw ;; ConditionState = NONE ; Model = PMDumpst04 ; End ; End ; *** DESIGN Parameters *** ; *** ENGINEERING Parameters *** KindOf = IMMOBILE Body = ActiveBody ModuleTag_01 MaxHealth = 1.0 InitialHealth = 1.0 End Behavior = PhysicsBehavior ModuleTag_02 Mass = 150.0 AerodynamicFriction = 7 ; this is now friction-per-sec ForwardFriction = 200 ; this is now friction-per-sec End Behavior = HeightDieUpdate ModuleTag_03 TargetHeight = 40.0 TargetHeightIncludesStructures = Yes DestroyAttachedParticlesAtHeight = 41.0 ; Hack, todo remove this End Behavior = SlowDeathBehavior ModuleTag_04 DestructionDelay = 1000 DestructionDelayVariance = 100 FX = INITIAL FX_DaisyCutterIgnite FX = FINAL FX_DaisyCutterFinalExplosion Weapon = MIDPOINT DaisyCutterFlameWeapon ; Just a spot of flame to light trees on fire Weapon = FINAL DaisyCutterDetonationWeapon End End ;------------------------------------------------------------------------------ Object NeutronMissile ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ConditionState = NONE Model = NBNRocket End ConditionState = DAMAGED REALLYDAMAGED RUBBLE Model = NONE End End ; ***DESIGN parameters *** DisplayName = OBJECT:NeutronMissile KindOf = UNATTACKABLE EditorSorting = SYSTEM VisionRange = 300.0 ShroudClearingRange = 0 TransportSlotCount = 10 ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** AUDIO Parameters *** ; SoundFallingFromPlane = DaisyCutterWeapon ; *** ENGINEERING Parameters *** Body = ActiveBody ModuleTag_02 MaxHealth = 99999999.0 InitialHealth = 99999999.0 End Behavior = NeutronMissileUpdate ModuleTag_03 DistanceToTravelBeforeTurning = 300 ; goes straight up a long ways first MaxTurnRate = 7200 ; huge, since it turns off-camera ForwardDamping = 0.1 RelativeSpeed = 2.0 LaunchFX = FX_NeutronMissileLaunch IgnitionFX = FX_NeutronMissileIgnition TargetFromDirectlyAbove = 500 ; aim for an intermed spot directly above the target, so we come straight down onto it SpecialAccelFactor = 1 SpecialSpeedTime = 1500 SpecialSpeedHeight = 160 SpecialJitterDistance = 0.4 DeliveryDecalRadius = 210 DeliveryDecal Texture = SCCNuclearMissile_China Style = SHADOW_ALPHA_DECAL OpacityMin = 25% OpacityMax = 50% OpacityThrobTime = 500 Color = R:255 G:0 B:0 A:255 OnlyVisibleToOwningPlayer = Yes End End Behavior = HeightDieUpdate ModuleTag_04 TargetHeight = 100.0 TargetHeightIncludesStructures = No OnlyWhenMovingDown = Yes SnapToGroundOnDeath = Yes InitialDelay = 1000 ; Can't explode in the first second so we don't explode on the pad End Behavior = SpecialPowerCompletionDie ModuleTag_05 SpecialPowerTemplate = SuperweaponNeutronMissile End Behavior = NeutronMissileSlowDeathBehavior ModuleTag_06 DestructionDelay = 3501 ScorchMarkSize = 320 FXList = FX_Nuke Blast1Enabled = Yes Blast1Delay = 580 ;in milliseconds Blast1ScorchDelay = 100 ;in milliseconds Blast1InnerRadius = 60.0 ;objects inside this get the full damage Blast1OuterRadius = 60.0 ;objects inside this get some of the full damage Blast1MaxDamage = 0.0 ;damage within inner radius of blast Blast1MinDamage = 0.0 ;always do at least this much damage to objects Blast1ToppleSpeed = 0.5 ;higher #'s topple faster Blast1PushForce = 10.0 ;higher #'s push more Blast2Enabled = Yes Blast2Delay = 660 ;in milliseconds Blast2ScorchDelay = 180 ;in milliseconds Blast2InnerRadius = 90.0 ;objects inside this get the full damage Blast2OuterRadius = 90.0 ;objects inside this get some of the full damage Blast2MaxDamage = 0.0 ;damage within inner radius of blast Blast2MinDamage = 0.0 ;always do at least this much damage to objects Blast2ToppleSpeed = 0.45 ;higher #'s topple faster Blast2PushForce = 8.0 ;higher #'s push more Blast3Enabled = Yes Blast3Delay = 720 ;in milliseconds Blast3ScorchDelay = 260 ;in milliseconds Blast3InnerRadius = 120.0 ;objects inside this get the full damage Blast3OuterRadius = 120.0 ;objects inside this get some of the full damage Blast3MaxDamage = 0.0 ;damage within inner radius of blast Blast3MinDamage = 0.0 ;always do at least this much damage to objects Blast3ToppleSpeed = 0.42 ;higher #'s topple faster Blast3PushForce = 6.0 ;higher #'s push more Blast4Enabled = Yes Blast4Delay = 850 ;in milliseconds Blast4ScorchDelay = 340 ;in milliseconds Blast4InnerRadius = 150.0 ;objects inside this get the full damage Blast4OuterRadius = 150.0 ;objects inside this get some of the full damage Blast4MaxDamage = 0.0 ;damage within inner radius of blast Blast4MinDamage = 0.0 ;always do at least this much damage to objects Blast4ToppleSpeed = 0.40 ;higher #'s topple faster Blast4PushForce = 6.0 ;higher #'s push more Blast5Enabled = Yes Blast5Delay = 1000 ;in milliseconds Blast5ScorchDelay = 420 ;in milliseconds Blast5InnerRadius = 180.0 ;objects inside this get the full damage Blast5OuterRadius = 180.0 ;objects inside this get some of the full damage Blast5MaxDamage = 0.0 ;damage within inner radius of blast Blast5MinDamage = 0.0 ;always do at least this much damage to objects Blast5ToppleSpeed = 0.38 ;higher #'s topple faster Blast5PushForce = 6.0 ;higher #'s push more Blast6Enabled = Yes Blast6Delay = 1180 ;in milliseconds Blast6ScorchDelay = 500 ;in milliseconds Blast6InnerRadius = 60.0 ;objects inside this get the full damage Blast6OuterRadius = 210.0 ;objects inside this get some of the full damage Blast6MaxDamage = 3500.0 ;damage within inner radius of blast Blast6MinDamage = 300.0 ;always do at least this much damage to objects Blast6ToppleSpeed = 0.35 ;higher #'s topple faster Blast6PushForce = 4.0 ;higher #'s push more Blast7Enabled = Yes Blast7Delay = 999999 ;in milliseconds, don't do the damage wave Blast7ScorchDelay = 620 ;in milliseconds Blast7OuterRadius = 210.0 ;objects inside this get some of the full damage Blast8Enabled = Yes Blast8Delay = 999999 ;in milliseconds, don't do the damage wave Blast8ScorchDelay = 700 ;in milliseconds Blast8OuterRadius = 210.0 ;objects inside this get some of the full damage Blast9Enabled = Yes Blast9Delay = 999999 ;in milliseconds, don't do the damage wave Blast9ScorchDelay = 800 ;in milliseconds Blast9OuterRadius = 210.0 ;objects inside this get some of the full damage OCL = MIDPOINT OCL_NukeRadiationField End Geometry = CYLINDER GeometryIsSmall = Yes GeometryMajorRadius = 7.0 GeometryHeight = 60.0 End ;------------------------------------------------------------------------------ Object CargoTruckNuke ; ***DESIGN parameters *** DisplayName = OBJECT:NeutronMissile EditorSorting = SYSTEM VisionRange = 300.0 ShroudClearingRange = 0 ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** AUDIO Parameters *** ; SoundFallingFromPlane = DaisyCutterWeapon ; *** ENGINEERING Parameters *** Body = ActiveBody ModuleTag_01 MaxHealth = 99999999.0 InitialHealth = 99999999.0 End ;The lifetime delays the explosion with enough time to play an audio cue. ;NOTE: The lifetime update is set in the ObjectCreationList that creates ; this object!!! Behavior = LifetimeUpdate ModuleTag_02 MinLifetime = 3000 ; min lifetime in msec MaxLifetime = 3000 ; max lifetime in msec End Behavior = NeutronMissileSlowDeathBehavior ModuleTag_03 DestructionDelay = 3501 ScorchMarkSize = 320 FXList = FX_Nuke Blast1Enabled = Yes Blast1Delay = 580 ;in milliseconds Blast1ScorchDelay = 100 ;in milliseconds Blast1InnerRadius = 60.0 ;objects inside this get the full damage Blast1OuterRadius = 60.0 ;objects inside this get some of the full damage Blast1MaxDamage = 0.0 ;damage within inner radius of blast Blast1MinDamage = 0.0 ;always do at least this much damage to objects Blast1ToppleSpeed = 0.5 ;higher #'s topple faster Blast1PushForce = 10.0 ;higher #'s push more Blast2Enabled = Yes Blast2Delay = 660 ;in milliseconds Blast2ScorchDelay = 180 ;in milliseconds Blast2InnerRadius = 90.0 ;objects inside this get the full damage Blast2OuterRadius = 90.0 ;objects inside this get some of the full damage Blast2MaxDamage = 0.0 ;damage within inner radius of blast Blast2MinDamage = 0.0 ;always do at least this much damage to objects Blast2ToppleSpeed = 0.45 ;higher #'s topple faster Blast2PushForce = 8.0 ;higher #'s push more Blast3Enabled = Yes Blast3Delay = 720 ;in milliseconds Blast3ScorchDelay = 260 ;in milliseconds Blast3InnerRadius = 120.0 ;objects inside this get the full damage Blast3OuterRadius = 120.0 ;objects inside this get some of the full damage Blast3MaxDamage = 0.0 ;damage within inner radius of blast Blast3MinDamage = 0.0 ;always do at least this much damage to objects Blast3ToppleSpeed = 0.42 ;higher #'s topple faster Blast3PushForce = 6.0 ;higher #'s push more Blast4Enabled = Yes Blast4Delay = 850 ;in milliseconds Blast4ScorchDelay = 340 ;in milliseconds Blast4InnerRadius = 150.0 ;objects inside this get the full damage Blast4OuterRadius = 150.0 ;objects inside this get some of the full damage Blast4MaxDamage = 0.0 ;damage within inner radius of blast Blast4MinDamage = 0.0 ;always do at least this much damage to objects Blast4ToppleSpeed = 0.40 ;higher #'s topple faster Blast4PushForce = 6.0 ;higher #'s push more Blast5Enabled = Yes Blast5Delay = 1000 ;in milliseconds Blast5ScorchDelay = 420 ;in milliseconds Blast5InnerRadius = 180.0 ;objects inside this get the full damage Blast5OuterRadius = 180.0 ;objects inside this get some of the full damage Blast5MaxDamage = 0.0 ;damage within inner radius of blast Blast5MinDamage = 0.0 ;always do at least this much damage to objects Blast5ToppleSpeed = 0.38 ;higher #'s topple faster Blast5PushForce = 6.0 ;higher #'s push more Blast6Enabled = Yes Blast6Delay = 1180 ;in milliseconds Blast6ScorchDelay = 500 ;in milliseconds Blast6InnerRadius = 60.0 ;objects inside this get the full damage Blast6OuterRadius = 210.0 ;objects inside this get some of the full damage Blast6MaxDamage = 3500.0 ;damage within inner radius of blast Blast6MinDamage = 200.0 ;always do at least this much damage to objects Blast6ToppleSpeed = 0.35 ;higher #'s topple faster Blast6PushForce = 4.0 ;higher #'s push more Blast7Enabled = Yes Blast7Delay = 999999 ;in milliseconds, don't do the damage wave Blast7ScorchDelay = 620 ;in milliseconds Blast7OuterRadius = 210.0 ;objects inside this get some of the full damage Blast8Enabled = Yes Blast8Delay = 999999 ;in milliseconds, don't do the damage wave Blast8ScorchDelay = 700 ;in milliseconds Blast8OuterRadius = 210.0 ;objects inside this get some of the full damage Blast9Enabled = Yes Blast9Delay = 999999 ;in milliseconds, don't do the damage wave Blast9ScorchDelay = 800 ;in milliseconds Blast9OuterRadius = 210.0 ;objects inside this get some of the full damage End Geometry = Cylinder GeometryIsSmall = Yes GeometryMajorRadius = 7.0 GeometryHeight = 60.0 End ;------------------------------------------------------------------------------ Object ScudStormMissile ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = UBScudStrm_M End ConditionState = DAMAGED REALLYDAMAGED RUBBLE Model = NONE End End ; ***DESIGN parameters *** KindOf = PROJECTILE ;BALLISTIC_MISSILE EditorSorting = SYSTEM VisionRange = 300.0 ShroudClearingRange = 0 TransportSlotCount = 10 ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** AUDIO Parameters *** ; SoundFallingFromPlane = DaisyCutterWeapon ; *** ENGINEERING Parameters *** Body = ActiveBody ModuleTag_02 MaxHealth = 10000.0 InitialHealth = 10000.0 End Behavior = PhysicsBehavior ModuleTag_03 Mass = 500.0 End Behavior = MissileAIUpdate ModuleTag_04 TryToFollowTarget = No FuelLifetime = 0 ; zero is infinite InitialVelocity = 0 ; in dist/sec IgnitionFX = FX_ScudStormIgnition DistanceToTravelBeforeTurning = 500 DistanceToTargetBeforeDiving = 200 ; When I hit this close to target, I ignore PreferredHeight. End Locomotor = SET_NORMAL SCUDStormMissileLocomotor Behavior = HeightDieUpdate ModuleTag_05 TargetHeight = 15.0 TargetHeightIncludesStructures = No OnlyWhenMovingDown = Yes SnapToGroundOnDeath = Yes InitialDelay = 1000 ; Can't explode in the first second so we don't explode on the pad End Behavior = DestroyDie ModuleTag_06 ;nothing End Behavior = SpecialPowerCompletionDie ModuleTag_07 SpecialPowerTemplate = SuperweaponScudStorm End Behavior = FireWeaponWhenDeadBehavior ModuleTag_08 DeathWeapon = ScudStormDamageWeapon StartsActive = Yes ConflictsWith = Upgrade_GLAAnthraxBeta End Behavior = FireWeaponWhenDeadBehavior ModuleTag_09 DeathWeapon = ScudStormDamageWeaponUpgraded StartsActive = No ; turned on by upgrade TriggeredBy = Upgrade_GLAAnthraxBeta End Geometry = Cylinder GeometryIsSmall = Yes GeometryMajorRadius = 7.0 GeometryHeight = 30.0 End ;------------------------------------------------------------------------------ Object AmericaJetAurora ; *** ART Parameters *** SelectPortrait = SAAurora_L ButtonImage = SAAurora UpgradeCameo1 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVAurora HideSubObject = BurnerFX03 BurnerFX04 WeaponLaunchBone = PRIMARY WeaponA End ConditionState = JETEXHAUST ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = JETEXHAUST JETAFTERBURNER ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail ; afterburner ShowSubObject = BurnerFX03 BurnerFX04 ParticleSysBone = Engine01 JetLenzflare ParticleSysBone = Engine02 JetLenzflare End ConditionState = REALLYDAMAGED Model = AVAurora_D ; damage ParticleSysBone = Smoke01 JetSmoke ParticleSysBone = Engine01 JetEngineDamagedSmoke End ConditionState = REALLYDAMAGED JETEXHAUST Model = AVAurora_D ; damage ParticleSysBone = Smoke01 JetSmoke ParticleSysBone = Engine01 JetEngineDamagedSmoke ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = REALLYDAMAGED JETEXHAUST JETAFTERBURNER Model = AVAurora_D ; damage ParticleSysBone = Smoke01 JetSmoke ParticleSysBone = Engine01 JetEngineDamagedSmoke ; afterburner ShowSubObject = BurnerFX03 BurnerFX04 ParticleSysBone = Engine01 JetLenzflare ParticleSysBone = Engine02 JetLenzflare ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = RUBBLE Model = AVAurora_D1 HideSubObject = None ShowSubObject = None End ConditionState = RUBBLE JETEXHAUST JETAFTERBURNER Model = AVAurora_D1 ;HideSubObject is needed cause there're inherited from default condition state HideSubObject = None ShowSubObject = None ParticleSysBone = Engine01 JetExhaust ParticleSysBone = Engine02 JetExhaust ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End OkToChangeModelColor = Yes End ; ***DESIGN parameters *** DisplayName = OBJECT:Aurora EditorSorting = VEHICLE Side = America TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 180.0 ShroudClearingRange = 600 Prerequisites Object = AmericaAirfield Object = AmericaStrategyCenter End BuildCost = 2500 BuildTime = 30.0 ;in seconds WeaponSet Conditions = None Weapon = PRIMARY AuroraBombWeapon End ArmorSet Conditions = None Armor = AirplaneArmor DamageFX = None End ExperienceValue = 200 200 400 400 ;Experience point value at each level ExperienceRequired = 0 200 400 800 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrusherLevel = 1 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = AmericaJetAuroraCommandSet ; *** AUDIO Parameters *** VoiceSelect = AuroraBomberVoiceSelect VoiceMove = AuroraBomberVoiceMove VoiceGuard = AuroraBomberVoiceMove VoiceAttack = AuroraBomberVoiceAttack SoundAmbient = AuroraBomberAmbientLoop SoundAmbientRubble = NoSound SoundDie = AuroraBomberVoiceFalling UnitSpecificSounds VoiceCreate = AuroraBomberVoiceCreate SoundEject = PilotSoundEject VoiceEject = PilotVoiceEject Afterburner = RaptorAfterburner VoiceLowFuel = AuroraBomberVoiceLowFuel VoiceGarrison = AuroraBomberVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT Body = ActiveBody ModuleTag_02 MaxHealth = 80.0 InitialHealth = 80.0 End Behavior = JetSlowDeathBehavior ModuleTag_03 FXOnGroundDeath = FX_JetOnGroundDeath OCLOnGroundDeath = OCL_AuroraDeathFinalBlowUp DestructionDelay = 99999999; destruction will happen when we RollRate = 0.2 RollRateDelta = 100% ;each frame, rollrate = rollrate * rollrateDelta PitchRate = 0.0 FallHowFast = 110.0% ;Bigger is faster (can be over 100%,it's a fraction of gravity) FXInitialDeath = FX_JetDeathInitial ;OCLInitialDeath = None DelaySecondaryFromInitialDeath = 500 ; in milliseconds FXSecondary = FX_JetDeathSecondary ;OCLSecondary = None FXHitGround = FX_JetDeathHitGround ;OCLHitGround = None DelayFinalBlowUpFromHitGround = 200 ; in milliseconds FXFinalBlowUp = FX_JetDeathFinalBlowUp OCLFinalBlowUp = OCL_AuroraDeathFinalBlowUp ; DeathLoopSound = MICAL NEEDS TO MAKE ME End Behavior = EjectPilotDie ModuleTag_04 GroundCreationList = OCL_EjectPilotOnGround AirCreationList = OCL_EjectPilotViaParachute ExemptStatus = HIJACKED VeterancyLevels = ALL -REGULAR ;only vet+ gives pilot End Behavior = PhysicsBehavior ModuleTag_05 Mass = 500.0 End Behavior = ExperienceScalarUpgrade ModuleTag_06 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = JetAIUpdate ModuleTag_07 OutOfAmmoDamagePerSecond = 10% ; amount of damage to take per SEC (not per frame) when out of ammo ; note that it's expressed as a percent of max health, not an absolute TakeoffSpeedForMaxLift = 100% ; smaller numbers give more lift sooner when taking off TakeoffPause = 500 MinHeight = 5 SneakyOffsetWhenAttacking = -20.0 ; this is how far behind us people aim when we are in attack mode AttackLocomotorType = SET_SUPERSONIC AttackLocomotorPersistTime = 100 ; we start slowing down almost immediately AttackersMissPersistTime = 2000 ; but remain untargetable fer a bit longer ReturnForAmmoLocomotorType = SET_SLUGGISH ReturnToBaseIdleTime = 10000 ; if idle for this long, return to base, even if not out of ammo End Locomotor = SET_NORMAL AuroraJetLocomotor Locomotor = SET_SUPERSONIC AuroraJetSupersonicLocomotor Locomotor = SET_SLUGGISH AuroraJetSluggishLocomotor Locomotor = SET_TAXIING BasicJetTaxiLocomotor 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 Behavior = TransitionDamageFX ModuleTag_22 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition End Geometry = Box GeometryIsSmall = Yes GeometryMajorRadius = 14.0 GeometryMinorRadius = 7.0 GeometryHeight = 5.0 Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object AmericaJetStealthFighter ; *** ART Parameters *** SelectPortrait = SAStealth_L ButtonImage = SAStealth UpgradeCameo1 = Upgrade_AmericaLaserMissiles UpgradeCameo2 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVStealth HideSubObject = BurnerFX03 BurnerFX04 WeaponLaunchBone = PRIMARY WeaponA End ConditionState = JETEXHAUST ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = JETEXHAUST JETAFTERBURNER ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail ; afterburners ShowSubObject = BurnerFX03 BurnerFX04 ParticleSysBone = Engine01 JetLenzflare ParticleSysBone = Engine02 JetLenzflare End ConditionState = REALLYDAMAGED Model = AVStealth_D ; damage ParticleSysBone = Smoke01 JetSmoke ParticleSysBone = Engine01 JetEngineDamagedSmoke End ConditionState = REALLYDAMAGED JETEXHAUST Model = AVStealth_D ; damage ParticleSysBone = Smoke01 JetSmoke ParticleSysBone = Engine01 JetEngineDamagedSmoke ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = REALLYDAMAGED JETEXHAUST JETAFTERBURNER Model = AVStealth_D ; damage ParticleSysBone = Smoke01 JetSmoke ParticleSysBone = Engine01 JetEngineDamagedSmoke ; exhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail ; afterburners ShowSubObject = BurnerFX03 BurnerFX04 ParticleSysBone = Engine01 JetLenzflare ParticleSysBone = Engine02 JetLenzflare End ConditionState = RUBBLE Model = AVStealth_D1 HideSubObject = None ShowSubObject = None End ConditionState = RUBBLE JETEXHAUST JETAFTERBURNER Model = AVStealth_D1 ;HideSubObject is needed cause there're inherited from default condition state HideSubObject = None ShowSubObject = None ParticleSysBone = Engine01 JetExhaust ParticleSysBone = Engine02 JetExhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End OkToChangeModelColor = Yes End ; ***DESIGN parameters *** DisplayName = OBJECT:StealthFighter EditorSorting = VEHICLE Side = America TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 180.0 ShroudClearingRange = 300.0 Prerequisites Object = AmericaAirfield Science = SCIENCE_StealthFighter End WeaponSet Conditions = None Weapon = PRIMARY StealthJetMissileWeapon End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY StealthJetLaserGuidedMissileWeapon End ArmorSet Conditions = None Armor = AirplaneArmor DamageFX = None End BuildCost = 1600 BuildTime = 25.0 ;in seconds ExperienceValue = 100 100 200 300 ;Experience point value at each level ExperienceRequired = 0 200 300 600 ; Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrusherLevel = 1 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = AmericaJetStealthFighterCommandSet ; *** AUDIO Parameters *** VoiceSelect = StealthFighterVoiceSelect VoiceMove = StealthFighterVoiceMove VoiceAttack = StealthFighterVoiceAttack VoiceAttackAir = StealthFighterVoiceAttackAir VoiceGuard = StealthFighterVoiceAirPatrol SoundAmbient = StealthFighterAmbientLoop SoundAmbientRubble = NoSound SoundDie = StealthFighterVoiceFalling SoundStealthOn = StealthOn SoundStealthOff = StealthOff UnitSpecificSounds VoiceCreate = StealthFighterVoiceCreate SoundEject = PilotSoundEject VoiceEject = PilotVoiceEject Afterburner = RaptorAfterburner VoiceLowFuel = AuroraBomberVoiceLowFuel VoiceGarrison = StealthFighterVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = LOCAL_UNIT_ONLY KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT Body = ActiveBody ModuleTag_02 MaxHealth = 120.0 InitialHealth = 120.0 End Behavior = JetSlowDeathBehavior ModuleTag_03 FXOnGroundDeath = FX_JetOnGroundDeath OCLOnGroundDeath = OCL_StealthDeathFinalBlowUp DestructionDelay = 99999999; destruction will happen when we RollRate = 0.2 RollRateDelta = 100% ;each frame, rollrate = rollrate * rollrateDelta PitchRate = 0.0 FallHowFast = 110.0% ;Bigger is faster (can be over 100%,it's a fraction of gravity) FXInitialDeath = FX_JetDeathInitial ;OCLInitialDeath = None DelaySecondaryFromInitialDeath = 500 ; in milliseconds FXSecondary = FX_JetDeathSecondary ;OCLSecondary = None FXHitGround = FX_JetDeathHitGround ;OCLHitGround = None DelayFinalBlowUpFromHitGround = 200 ; in milliseconds FXFinalBlowUp = FX_JetDeathFinalBlowUp OCLFinalBlowUp = OCL_StealthDeathFinalBlowUp ; DeathLoopSound = MICAL NEEDS TO MAKE ME End Behavior = EjectPilotDie ModuleTag_04 GroundCreationList = OCL_EjectPilotOnGround AirCreationList = OCL_EjectPilotViaParachute ExemptStatus = HIJACKED VeterancyLevels = ALL -REGULAR ;only vet+ gives pilot End Behavior = PhysicsBehavior ModuleTag_05 Mass = 500.0 End Behavior = JetAIUpdate ModuleTag_06 OutOfAmmoDamagePerSecond = 10% ; amount of damage to take per SEC (not per frame) when out of ammo ; note that it's expressed as a percent of max health, not an absolute TakeoffSpeedForMaxLift = 100% ; smaller numbers give more lift sooner when taking off TakeoffPause = 500 MinHeight = 5 ReturnToBaseIdleTime = 10000 ; if idle for this long, return to base, even if not out of ammo End Behavior = WeaponSetUpgrade ModuleTag_07 TriggeredBy = Upgrade_AmericaLaserMissiles End Behavior = ExperienceScalarUpgrade ModuleTag_08 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = StealthUpdate ModuleTag_09 StealthDelay = 1500 ; msec StealthForbiddenConditions = FIRING_PRIMARY ; not currently used... but maybe someday? (srj) ;RevealDistanceFromTarget = 0.0f FriendlyOpacityMin = 50.0% FriendlyOpacityMax = 100.0% InnateStealth = Yes OrderIdleEnemiesToAttackMeUponReveal = Yes End Locomotor = SET_NORMAL StealthJetLocomotor Locomotor = SET_TAXIING BasicJetTaxiLocomotor 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 Behavior = TransitionDamageFX ModuleTag_22 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition End Geometry = Cylinder GeometryIsSmall = Yes GeometryMajorRadius = 7.0 GeometryMinorRadius = 7.0 GeometryHeight = 7.0 Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object AmericaVehicleComanche ; *** ART Parameters *** SelectPortrait = SACCommanche_L ButtonImage = SACCommanche UpgradeCameo1 = Upgrade_ComancheRocketPods UpgradeCameo2 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVComanche HideSubObject = MissileUpgrade Animation = AVComanche.AVComanche AnimationMode = LOOP WeaponMuzzleFlash = PRIMARY TurretFX WeaponFireFXBone = PRIMARY Muzzle WeaponFireFXBone = SECONDARY Muzzle WeaponLaunchBone = SECONDARY Muzzle End ConditionState = REALLYDAMAGED Model = AVComanche_d Animation = AVComanche_d.AVComanche_d AnimationMode = LOOP End ConditionState = WEAPONSET_PLAYER_UPGRADE ShowSubObject = MissileUpgrade Animation = AVComanche.AVComanche AnimationMode = LOOP WeaponFireFXBone = TERTIARY WeaponB WeaponLaunchBone = TERTIARY WeaponB End ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED Model = AVComanche_d ShowSubObject = MissileUpgrade Animation = AVComanche_d.AVComanche_d AnimationMode = LOOP WeaponFireFXBone = TERTIARY WeaponB WeaponLaunchBone = TERTIARY WeaponB End ConditionState = RUBBLE Model = AVComanche_d Animation = AVComanche_d.AVComanche_d AnimationMode = LOOP End ConditionState = RUBBLE SPECIAL_DAMAGED Model = AVComanche_d HideSubObject = AVComanche_Prop End OkToChangeModelColor = Yes End ; ***DESIGN parameters *** DisplayName = OBJECT:Comanche EditorSorting = VEHICLE Side = America TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 180.0 ShroudClearingRange = 600 Prerequisites Object = AmericaAirfield End WeaponSet Conditions = None ; ----- Weapon = PRIMARY Comanche20mmCannonWeapon PreferredAgainst = PRIMARY INFANTRY AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI ; ----- Weapon = SECONDARY ComancheAntiTankMissileWeapon PreferredAgainst = SECONDARY VEHICLE STRUCTURE AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI ; ----- Weapon = TERTIARY NONE End WeaponSet Conditions = PLAYER_UPGRADE ; ----- Weapon = PRIMARY Comanche20mmCannonWeapon PreferredAgainst = PRIMARY INFANTRY AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI ; ----- Weapon = SECONDARY ComancheAntiTankMissileWeapon PreferredAgainst = SECONDARY VEHICLE STRUCTURE AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI ; ----- Weapon = TERTIARY ComancheRocketPodWeapon AutoChooseSources = TERTIARY NONE End ArmorSet Conditions = None Armor = ComancheArmor DamageFX = None End BuildCost = 1500 BuildTime = 20 ; in seconds ExperienceValue = 50 50 100 200 ; Experience point value at each level ExperienceRequired = 0 100 200 400 ; Experience points needed to gain each level IsTrainable = Yes ; Can gain experience CommandSet = AmericaVehicleComancheCommandSet ; *** AUDIO Parameters *** VoiceSelect = ComancheVoiceSelect VoiceMove = ComancheVoiceMove VoiceGuard = ComancheVoiceMove VoiceAttack = ComancheVoiceAttack SoundAmbient = ComancheAmbientLoop SoundAmbientRubble = NoSound SoundDie = ComancheVoiceFalling UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs VoiceCreate = ComancheVoiceCreate SoundEject = PilotSoundEject VoiceEject = PilotVoiceEject Afterburner = RaptorAfterburner VoiceGarrison = ComancheVoiceMove TurretMoveStart = NoSound TurretMoveLoop = NoSound VoiceFireRocketPods = ComancheVoiceAttackRocket End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD Behavior = WeaponSetUpgrade ModuleTag_02 TriggeredBy = Upgrade_ComancheRocketPods End Behavior = ExperienceScalarUpgrade ModuleTag_03 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Body = ActiveBody ModuleTag_04 MaxHealth = 220.0 InitialHealth = 220.0 End Behavior = FXListDie ModuleTag_05 DeathFX = FX_HelicopterStartDeath End Behavior = JetAIUpdate ModuleTag_06 MinHeight = 5 NeedsRunway = No KeepsParkingSpaceWhenAirborne = No AutoAcquireEnemiesWhenIdle = Yes ; note that comanches do not return to base when idle ; this is a bit of a trick... normally, units cannot move-and-fire at ; the same time. we need the comanche to be able to. so we give it ; a "turret" (invisible) and put the two main weapons on it, but with ; no turn rate. voila! Turret TurretTurnRate = 0 ; this "turret" does not turn TurretPitchRate = 0 ; nor does it pitch ControlledWeaponSlots = PRIMARY SECONDARY End End Locomotor = SET_NORMAL ComancheLocomotor Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor Behavior = PhysicsBehavior ModuleTag_07 Mass = 50.0 End Behavior = HelicopterSlowDeathBehavior ModuleTag_08 DestructionDelay = 99999999 ; the destruction delay SpiralOrbitTurnRate = 140.0 ; in degrees per second, bigger # = tighter spiral SpiralOrbitForwardSpeed = 350.0 ; bigger # = larger spiral SpiralOrbitForwardSpeedDamping = .9999 ; smaller #'s = slow down faster MaxBraking = 190 ; max braking we can use during death spiral (lower num = wilder spiral) SoundDeathLoop = ComancheDamagedLoop MinSelfSpin = 100 ; in degrees per second MaxSelfSpin = 300 ; in degrees per second SelfSpinUpdateDelay = 100 ; in milliseconds SelfSpinUpdateAmount = 10 ; in degrees FallHowFast = 12.0% ; fraction of gravity, lower = take longer to fall MinBladeFlyOffDelay = 1500 ; in milliseconds MaxBladeFlyOffDelay = 1500 ; in milliseconds AttachParticle = SootySmokeTrail AttachParticleBone = Propeller02 BladeObjectName = ComancheBlades BladeBoneName = Propeller01 ; Most things that eject pilots do so immediately upon death, ; via use of EjectPilotDie, but Helicopters are a special case... ; they need to do so after their blades are ejected. OCLEjectPilot = OCL_EjectPilotViaParachute FXBlade = FX_HelicopterBladeExplosion OCLBlade = OCL_HelicopterBladeExplosion FXHitGround = FX_HelicopterHitGround OCLHitGround = OCL_HelicopterHitGround FXFinalBlowUp = FX_GroundedHelicopterBlowUp OCLFinalBlowUp = OCL_GroundedHelicopterBlowUp DelayFromGroundToFinalDeath = 1500 FinalRubbleObject = ComancheRubbleHull End Behavior = TransitionDamageFX ModuleTag_09 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition 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 = 20.0 GeometryMinorRadius = 3.0 GeometryHeight = 25.0 GeometryIsSmall = No Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object CINE_USA08_AmericaVehicleComanche ; *** ART Parameters *** SelectPortrait = SACCommanche_L ButtonImage = SACCommanche UpgradeCameo1 = Upgrade_ComancheRocketPods UpgradeCameo2 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVComanche HideSubObject = MissileUpgrade HideSubObject = TurretFX01 Animation = AVComanche.AVComanche AnimationMode = LOOP WeaponMuzzleFlash = PRIMARY TurretFX WeaponFireFXBone = PRIMARY Muzzle WeaponFireFXBone = SECONDARY Muzzle WeaponLaunchBone = SECONDARY Muzzle End ConditionState = REALLYDAMAGED Model = AVComanche_d Animation = AVComanche_d.AVComanche_d AnimationMode = LOOP End ConditionState = WEAPONSET_PLAYER_UPGRADE ShowSubObject = MissileUpgrade Animation = AVComanche.AVComanche AnimationMode = LOOP WeaponFireFXBone = TERTIARY WeaponB WeaponLaunchBone = TERTIARY WeaponB End ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED Model = AVComanche_d ShowSubObject = MissileUpgrade Animation = AVComanche_d.AVComanche_d AnimationMode = LOOP WeaponFireFXBone = TERTIARY WeaponB WeaponLaunchBone = TERTIARY WeaponB End ConditionState = RUBBLE Model = AVComanche_d Animation = AVComanche_d.AVComanche_d AnimationMode = LOOP End ConditionState = RUBBLE SPECIAL_DAMAGED Model = AVComanche_d HideSubObject = AVComanche_Prop End OkToChangeModelColor = Yes End ; ***DESIGN parameters *** DisplayName = OBJECT:Comanche EditorSorting = VEHICLE Side = America TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 400.0 ShroudClearingRange = 600 Prerequisites Object = AmericaAirfield End WeaponSet Conditions = None ; ----- Weapon = PRIMARY Comanche20mmCannonWeapon PreferredAgainst = PRIMARY INFANTRY AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI ; ----- Weapon = SECONDARY ComancheAntiTankMissileWeapon PreferredAgainst = SECONDARY VEHICLE STRUCTURE AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI ; ----- Weapon = TERTIARY NONE End WeaponSet Conditions = PLAYER_UPGRADE ; ----- Weapon = PRIMARY Comanche20mmCannonWeapon PreferredAgainst = PRIMARY INFANTRY AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI ; ----- Weapon = SECONDARY ComancheAntiTankMissileWeapon PreferredAgainst = SECONDARY VEHICLE STRUCTURE AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI ; ----- Weapon = TERTIARY ComancheRocketPodWeapon AutoChooseSources = TERTIARY NONE End ArmorSet Conditions = None Armor = ComancheArmor DamageFX = None End BuildCost = 1500 BuildTime = 20 ; in seconds ExperienceValue = 50 50 100 200 ; Experience point value at each level ExperienceRequired = 0 100 200 400 ; Experience points needed to gain each level IsTrainable = Yes ; Can gain experience CommandSet = AmericaVehicleComancheCommandSet ; *** AUDIO Parameters *** VoiceSelect = ComancheVoiceSelect VoiceMove = ComancheVoiceMove VoiceGuard = ComancheVoiceMove VoiceAttack = ComancheVoiceAttack SoundAmbient = ComancheAmbientLoop SoundAmbientRubble = NoSound SoundDie = ComancheVoiceFalling UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs VoiceCreate = ComancheVoiceCreate SoundEject = PilotSoundEject VoiceEject = PilotVoiceEject Afterburner = RaptorAfterburner VoiceGarrison = ComancheVoiceMove TurretMoveStart = NoSound TurretMoveLoop = NoSound VoiceFireRocketPods = ComancheVoiceAttackRocket End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT PRODUCED_AT_HELIPAD Behavior = WeaponSetUpgrade ModuleTag_02 TriggeredBy = Upgrade_ComancheRocketPods End Behavior = ExperienceScalarUpgrade ModuleTag_03 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Body = ActiveBody ModuleTag_04 MaxHealth = 220.0 InitialHealth = 220.0 End Behavior = FXListDie ModuleTag_05 DeathFX = FX_HelicopterStartDeath End Behavior = JetAIUpdate ModuleTag_06 MinHeight = 5 NeedsRunway = No KeepsParkingSpaceWhenAirborne = No AutoAcquireEnemiesWhenIdle = Yes ; note that comanches do not return to base when idle ; this is a bit of a trick... normally, units cannot move-and-fire at ; the same time. we need the comanche to be able to. so we give it ; a "turret" (invisible) and put the two main weapons on it, but with ; no turn rate. voila! Turret TurretTurnRate = 0 ; this "turret" does not turn TurretPitchRate = 0 ; nor does it pitch ControlledWeaponSlots = PRIMARY SECONDARY End End Locomotor = SET_NORMAL CINE_USA08_ComancheLocomotor Locomotor = SET_TAXIING BasicHelicopterTaxiLocomotor Behavior = PhysicsBehavior ModuleTag_07 Mass = 50.0 End Behavior = HelicopterSlowDeathBehavior ModuleTag_08 DestructionDelay = 99999999 ; the destruction delay SpiralOrbitTurnRate = 140.0 ; in degrees per second, bigger # = tighter spiral SpiralOrbitForwardSpeed = 350.0 ; bigger # = larger spiral SpiralOrbitForwardSpeedDamping = .9999 ; smaller #'s = slow down faster MaxBraking = 190 ; max braking we can use during death spiral (lower num = wilder spiral) SoundDeathLoop = ComancheDamagedLoop MinSelfSpin = 100 ; in degrees per second MaxSelfSpin = 300 ; in degrees per second SelfSpinUpdateDelay = 100 ; in milliseconds SelfSpinUpdateAmount = 10 ; in degrees FallHowFast = 12.0% ; fraction of gravity, lower = take longer to fall MinBladeFlyOffDelay = 1500 ; in milliseconds MaxBladeFlyOffDelay = 1500 ; in milliseconds AttachParticle = SootySmokeTrail AttachParticleBone = Propeller02 BladeObjectName = ComancheBlades BladeBoneName = Propeller01 ; Most things that eject pilots do so immediately upon death, ; via use of EjectPilotDie, but Helicopters are a special case... ; they need to do so after their blades are ejected. OCLEjectPilot = OCL_EjectPilotViaParachute FXBlade = FX_HelicopterBladeExplosion OCLBlade = OCL_HelicopterBladeExplosion FXHitGround = FX_HelicopterHitGround OCLHitGround = OCL_HelicopterHitGround FXFinalBlowUp = FX_GroundedHelicopterBlowUp OCLFinalBlowUp = OCL_GroundedHelicopterBlowUp DelayFromGroundToFinalDeath = 1500 FinalRubbleObject = ComancheRubbleHull End Behavior = TransitionDamageFX ModuleTag_09 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuousDown ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_ComancheDamageTransition 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 = 20.0 GeometryMinorRadius = 3.0 GeometryHeight = 25.0 GeometryIsSmall = No Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object ComancheBlades ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVComanche_D2 Animation = AVComanche_D2.AVComanche_D2 AnimationMode = LOOP End End ; ***DESIGN parameters *** DisplayName = OBJECT:Comanche Side = America ; *** ENGINEERING Parameters *** KindOf = PRELOAD IMMOBILE Behavior = PhysicsBehavior ModuleTag_02 AllowBouncing = Yes End Behavior = LifetimeUpdate ModuleTag_03 MinLifetime = 1000 ; min lifetime in msec MaxLifetime = 1000 ; max lifetime in msec End End ;------------------------------------------------------------------------------ Object ComancheRubbleHull ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVComanche_D1 End End ; ***DESIGN parameters *** DisplayName = OBJECT:ComancheHull Side = America ; *** ENGINEERING Parameters *** KindOf = IMMOBILE NO_COLLIDE HULK Behavior = PhysicsBehavior ModuleTag_02 Mass = 25.0 AllowBouncing = Yes End Behavior = LifetimeUpdate ModuleTag_03 MinLifetime = 3000 ; min lifetime in msec MaxLifetime = 3000 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_05 SinkDelay = 3000 SinkRate = 4 ; in Dist/Sec DestructionDelay = 10000 End End ;------------------------------------------------------------------------------ Object CINE_ComancheRubbleHull ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVComanche_D1 End End ; ***DESIGN parameters *** DisplayName = OBJECT:ComancheHull Side = America ; *** ENGINEERING Parameters *** KindOf = IMMOBILE Behavior = PhysicsBehavior ModuleTag_02 Mass = 25.0 AllowBouncing = Yes End End ;------------------------------------------------------------------------------ Object ChinookRubbleHull ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = AVChinook_D1 End End ; ***DESIGN parameters *** DisplayName = OBJECT:ComancheHull Side = America ; *** ENGINEERING Parameters *** KindOf = IMMOBILE NO_COLLIDE HULK Behavior = PhysicsBehavior ModuleTag_02 Mass = 25.0 AllowBouncing = Yes End Behavior = LifetimeUpdate ModuleTag_03 MinLifetime = 100000 ; min lifetime in msec MaxLifetime = 100000 ; max lifetime in msec End End ;------------------------------------------------------------------------------ Object ChinaJetMIG ; *** ART Parameters *** SelectPortrait = SNMig_L ButtonImage = SNMig UpgradeCameo1 = Upgrade_ChinaAircraftArmor UpgradeCameo2 = Upgrade_ChinaBlackNapalm ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = NVMIG HideSubObject = BurnerFX01 BurnerFX02 WeaponLaunchBone = PRIMARY WeaponA End ConditionState = JETEXHAUST ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = JETEXHAUST JETAFTERBURNER ShowSubObject = BurnerFX01 BurnerFX02 ParticleSysBone = Exhaust01 JetExhaust ParticleSysBone = Exhaust02 JetExhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = REALLYDAMAGED Model = NVMIG_D ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = RUBBLE Model = NVMIG_D End ConditionState = REALLYDAMAGED JETEXHAUST Model = NVMIG_D ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = REALLYDAMAGED JETEXHAUST JETAFTERBURNER Model = NVMIG_D ShowSubObject = BurnerFX01 BurnerFX02 ParticleSysBone = Engine01 JetExhaust ParticleSysBone = Engine02 JetExhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = RUBBLE JETEXHAUST JETAFTERBURNER ; @todo srj -- model missing ;Model = NVMIG_D1B Model = NVMIG_D ;HideSubObject is needed cause there're inherited from default condition state HideSubObject = None ShowSubObject = None ParticleSysBone = Engine01 JetExhaust ParticleSysBone = Engine02 JetExhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End End ; ***DESIGN parameters *** DisplayName = OBJECT:MIG EditorSorting = VEHICLE Side = China TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 200.0 ShroudClearingRange = 300.0 Prerequisites Object = ChinaAirfield End WeaponSet Conditions = None Weapon = PRIMARY NapalmMissileWeapon AutoChooseSources = PRIMARY NONE End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY BlackNapalmMissileWeapon AutoChooseSources = PRIMARY NONE End ArmorSet Conditions = None Armor = AirplaneArmor DamageFX = None End BuildCost = 1000 BuildTime = 10 ExperienceValue = 50 50 100 150 ;Experience point value at each level ExperienceRequired = 0 100 200 400 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrusherLevel = 1 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = ChinaJetMIGCommandSet ; *** AUDIO Parameters *** VoiceSelect = MigVoiceSelect VoiceMove = MigVoiceMove VoiceAttack = MigVoiceAttack VoiceAttackAir = MigVoiceAttackAir VoiceGuard = MigVoiceAirPatrol SoundAmbient = MigAmbientLoop SoundDie = MigVoiceFalling UnitSpecificSounds VoiceCreate = MigVoiceCreate Afterburner = RaptorAfterburner VoiceGarrison = MigVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT Body = ActiveBody ModuleTag_02 MaxHealth = 160.0 InitialHealth = 160.0 End Behavior = JetSlowDeathBehavior ModuleTag_03 FXOnGroundDeath = FX_JetOnGroundDeath OCLOnGroundDeath = OCL_MIGDeathFinalBlowUp DestructionDelay = 99999999 ; destruction will happen when we RollRate = 0.2 RollRateDelta = 100% ;each frame, rollrate = rollrate * rollrateDelta PitchRate = 0.0 FallHowFast = 110.0% ;Bigger is faster (can be over 100%,it's a fraction of gravity) FXInitialDeath = FX_JetDeathInitial OCLInitialDeath = OCL_MIGDeathInitial DelaySecondaryFromInitialDeath = 500 ; in milliseconds FXSecondary = FX_JetDeathSecondary OCLSecondary = OCL_MIGDeathSecondary FXHitGround = FX_JetDeathHitGround OCLHitGround = OCL_MIGDeathHitGround DelayFinalBlowUpFromHitGround = 200 ; in milliseconds FXFinalBlowUp = FX_JetDeathFinalBlowUp OCLFinalBlowUp = OCL_MIGDeathFinalBlowUp End Behavior = WeaponSetUpgrade ModuleTag_04 TriggeredBy = Upgrade_ChinaBlackNapalm End Behavior = PhysicsBehavior ModuleTag_05 Mass = 500.0 End Behavior = JetAIUpdate ModuleTag_06 OutOfAmmoDamagePerSecond = 10% ; amount of damage to take per SEC (not per frame) when out of ammo ; note that it's expressed as a percent of max health, not an absolute TakeoffSpeedForMaxLift = 100% ; smaller numbers give more lift sooner when taking off TakeoffPause = 500 MinHeight = 5 ReturnToBaseIdleTime = 10000 ; if idle for this long, return to base, even if not out of ammo End Locomotor = SET_NORMAL MIGLocomotor Locomotor = SET_TAXIING BasicJetTaxiLocomotor Behavior = FlammableUpdate ModuleTag_08 AflameDuration = 5000 ; If I catch fire, I'll burn for this long... AflameDamageAmount = 3 ; taking this much damage... AflameDamageDelay = 500 ; this often. End Behavior = TransitionDamageFX ModuleTag_09 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition End Behavior = MaxHealthUpgrade ModuleTag_10 TriggeredBy = Upgrade_ChinaAircraftArmor AddMaxHealth = 40.0 ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH End Geometry = Box GeometryIsSmall = Yes GeometryMajorRadius = 14.0 GeometryMinorRadius = 7.0 GeometryHeight = 5.0 Shadow = SHADOW_VOLUME Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ ;This is the MIG as it's crashing ;------------------------------------------------------------------------------ Object ChinaJetMIGHulk ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = NVMIG_D1 End End ; ***DESIGN parameters *** EditorSorting = DEBRIS ; *** ENGINEERING Parameters *** KindOf = NO_COLLIDE HULK Behavior = PhysicsBehavior ModuleTag_03 Mass = 2.0 AllowBouncing = No KillWhenRestingOnGround = Yes End Behavior = LifetimeUpdate ModuleTag_04 MinLifetime = 1500 ; min lifetime in msec MaxLifetime = 1600 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_05 SinkDelay = 1500 SinkRate = 2 ; in Dist/Sec DestructionDelay = 8000 End End ;------------------------------------------------------------------------------ Object NapalmMissile ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AVRaptor_M End End ; ***DESIGN parameters *** DisplayName = OBJECT:Missile EditorSorting = SYSTEM VisionRange = 0.0 ; Projectiles can't see, but superweapons *may need to* TransportSlotCount = 1 ; since Napalm Strike carries us as payload, not weapon ArmorSet Conditions = None Armor = ProjectileArmor DamageFX = None End ; *** ENGINEERING Parameters *** KindOf = PRELOAD CAN_CAST_REFLECTIONS PROJECTILE SMALL_MISSILE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End ; ---- begin Projectile death behaviors Behavior = InstantDeathBehavior DeathModuleTag_01 DeathTypes = NONE +DETONATED ; we detonated normally. ; no FX, just quiet destroy ourselves End Behavior = InstantDeathBehavior DeathModuleTag_02 DeathTypes = NONE +LASERED ; shot down by laser. FX = FX_GenericMissileDisintegrate OCL = OCL_GenericMissileDisintegrate End Behavior = InstantDeathBehavior DeathModuleTag_03 DeathTypes = ALL -LASERED -DETONATED ; shot down by nonlaser. FX = FX_GenericMissileDeath End ; ---- end Projectile death behaviors Behavior = PhysicsBehavior ModuleTag_06 Mass = 1 End Behavior = MissileAIUpdate ModuleTag_07 TryToFollowTarget = Yes FuelLifetime = 10000 InitialVelocity = 75 ; in dist/sec IgnitionDelay = 30 IgnitionFX = FX_NapalmMissileIgnition End Locomotor = SET_NORMAL NapalmMissileLocomotor Geometry = Sphere GeometryIsSmall = Yes GeometryMajorRadius = 1.0 End ;------------------------------------------------------------------------------ Object ChinaJetMIGNapalmStriker ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 DefaultConditionState Model = NVMig WeaponLaunchBone = PRIMARY WeaponA ParticleSysBone = Exhaust01 JetExhaust ;ParticleSysBone = Exhaust02 JetExhaust HideSubObject = BurnerFX01 BurnerFX02 End ConditionState = REALLYDAMAGED Model = NVMig_d End AliasConditionState = RUBBLE OkToChangeModelColor = Yes End ; ***DESIGN parameters *** DisplayName = OBJECT:MIG EditorSorting = SYSTEM Side = China TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 300.0 ShroudClearingRange = 300 Prerequisites Object = ChinaAirfield End WeaponSet Conditions = None Weapon = PRIMARY NapalmMissileWeapon End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY BlackNapalmMissileWeapon End ArmorSet Conditions = None Armor = AirplaneArmor DamageFX = None End CommandSet = ChinaJetMIGCommandSet ; *** AUDIO Parameters *** SoundAmbient = F15MoveLoop SoundAmbientRubble = NoSound ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE SCORE AIRCRAFT IGNORED_IN_GUI Body = ActiveBody ModuleTag_02 MaxHealth = 200.0 InitialHealth = 200.0 End Behavior = SpecialPowerCompletionDie ModuleTag_03 SpecialPowerTemplate = SuperweaponNapalmStrike End Behavior = JetSlowDeathBehavior ModuleTag_04 DestructionDelay = 99999999; destruction will happen when we RollRate = 0.2 RollRateDelta = 100% ;each frame, rollrate = rollrate * rollrateDelta PitchRate = 0.0 FallHowFast = 110.0% ;Bigger is faster (can be over 100%,it's a fraction of gravity) FXInitialDeath = FX_JetDeathInitial OCLInitialDeath = OCL_MIGDeathInitial DelaySecondaryFromInitialDeath = 500 ; in milliseconds FXSecondary = FX_JetDeathSecondary OCLSecondary = OCL_MIGDeathSecondary FXHitGround = FX_JetDeathHitGround OCLHitGround = OCL_MIGDeathHitGround DelayFinalBlowUpFromHitGround = 200 ; in milliseconds FXFinalBlowUp = FX_JetDeathFinalBlowUp OCLFinalBlowUp = OCL_MIGDeathFinalBlowUp End Behavior = DeliverPayloadAIUpdate ModuleTag_06 DoorDelay = 0 End Locomotor = SET_NORMAL MIGLocomotor Behavior = WeaponSetUpgrade ModuleTag_07 TriggeredBy = Upgrade_ChinaBlackNapalm End Behavior = TransportContain ModuleTag_08 Slots = 100 ; hey, it's a BIG transport ScatterNearbyOnExit = No OrientLikeContainerOnExit = Yes KeepContainerVelocityOnExit = Yes ExitPitchRate = 30 ExitBone = WeaponA AllowInsideKindOf = PROJECTILE DoorOpenTime = 0 ; this prevents the Contain module from messing with the doors, since we want DeliverPayload to handle 'em NumberOfExitPaths = 0 DestroyRidersWhoAreNotFreeToExit = Yes ; 'destroy' as opposed to 'kill' End Behavior = PhysicsBehavior ModuleTag_09 Mass = 500.0 End Behavior = FlammableUpdate ModuleTag_21 AflameDuration = 5000 ; If I catch fire, I'll burn for this long... AflameDamageAmount = 3 ; taking this much damage... AflameDamageDelay = 500 ; this often. End Geometry = Cylinder GeometryIsSmall = Yes GeometryMajorRadius = 7.0 GeometryMinorRadius = 7.0 GeometryHeight = 7.0 Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object ChinaJetMIG_CinematicVersion ; *** ART Parameters *** SelectPortrait = SNMig_L ButtonImage = SNMig UpgradeCameo1 = Upgrade_ChinaAircraftArmor UpgradeCameo2 = Upgrade_ChinaBlackNapalm ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = NVMIG HideSubObject = BurnerFX01 BurnerFX02 WeaponLaunchBone = PRIMARY WeaponA End ConditionState = JETEXHAUST ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = JETEXHAUST JETAFTERBURNER ShowSubObject = BurnerFX01 BurnerFX02 ParticleSysBone = Exhaust01 JetExhaust ParticleSysBone = Exhaust02 JetExhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = REALLYDAMAGED Model = NVMIG_D ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = RUBBLE Model = NVMIG_D End ConditionState = REALLYDAMAGED JETEXHAUST Model = NVMIG_D ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = REALLYDAMAGED JETEXHAUST JETAFTERBURNER Model = NVMIG_D ShowSubObject = BurnerFX01 BurnerFX02 ParticleSysBone = Engine01 JetExhaust ParticleSysBone = Engine02 JetExhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End ConditionState = RUBBLE JETEXHAUST JETAFTERBURNER ; @todo srj -- model missing ;Model = NVMIG_D1B Model = NVMIG_D ;HideSubObject is needed cause there're inherited from default condition state HideSubObject = None ShowSubObject = None ParticleSysBone = Engine01 JetExhaust ParticleSysBone = Engine02 JetExhaust ParticleSysBone = Wingtip01 JetContrail ParticleSysBone = Wingtip02 JetContrail End End ; ***DESIGN parameters *** DisplayName = OBJECT:MIG EditorSorting = VEHICLE Side = China TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 300.0 ShroudClearingRange = 300.0 Prerequisites Object = ChinaAirfield End WeaponSet Conditions = None Weapon = PRIMARY NapalmMissileWeapon AutoChooseSources = PRIMARY NONE End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY BlackNapalmMissileWeapon AutoChooseSources = PRIMARY NONE End ArmorSet Conditions = None Armor = AirplaneArmor DamageFX = None End BuildCost = 1200 BuildTime = 15 ExperienceValue = 50 50 100 150 ;Experience point value at each level ExperienceRequired = 0 100 200 400 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrusherLevel = 1 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = ChinaJetMIGCommandSet ; *** AUDIO Parameters *** VoiceSelect = MigVoiceSelect VoiceMove = MigVoiceMove VoiceAttack = MigVoiceAttack VoiceAttackAir = MigVoiceAttackAir VoiceGuard = MigVoiceAirPatrol SoundMoveLoop = MigAmbientLoop ; don't want sound while sitting at airfield SoundAmbient = NoSound SoundAmbientRubble = NoSound SoundDie = MigVoiceFalling UnitSpecificSounds VoiceCreate = MigVoiceCreate Afterburner = RaptorAfterburner VoiceGarrison = MigVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK SELECTABLE VEHICLE SCORE AIRCRAFT Body = ActiveBody ModuleTag_02 MaxHealth = 160.0 InitialHealth = 160.0 End Behavior = JetSlowDeathBehavior ModuleTag_03 FXOnGroundDeath = FX_JetOnGroundDeath OCLOnGroundDeath = OCL_MIGDeathFinalBlowUp_CinematicVersion DestructionDelay = 99999999 ; destruction will happen when we RollRate = 0.2 RollRateDelta = 100% ;each frame, rollrate = rollrate * rollrateDelta PitchRate = 0.0 FallHowFast = 110.0% ;Bigger is faster (can be over 100%,it's a fraction of gravity) FXInitialDeath = FX_JetDeathInitial OCLInitialDeath = OCL_MIGDeathInitial DelaySecondaryFromInitialDeath = 500 ; in milliseconds FXSecondary = FX_JetDeathSecondary OCLSecondary = OCL_MIGDeathSecondary FXHitGround = FX_JetDeathHitGround OCLHitGround = OCL_MIGDeathHitGround DelayFinalBlowUpFromHitGround = 200 ; in milliseconds FXFinalBlowUp = FX_JetDeathFinalBlowUp_CinematicVersion OCLFinalBlowUp = OCL_MIGDeathFinalBlowUp_CinematicVersion End Behavior = WeaponSetUpgrade ModuleTag_04 TriggeredBy = Upgrade_ChinaBlackNapalm End Behavior = PhysicsBehavior ModuleTag_05 Mass = 500.0 End Behavior = JetAIUpdate ModuleTag_06 OutOfAmmoDamagePerSecond = 10% ; amount of damage to take per SEC (not per frame) when out of ammo ; note that it's expressed as a percent of max health, not an absolute TakeoffSpeedForMaxLift = 100% ; smaller numbers give more lift sooner when taking off TakeoffPause = 500 MinHeight = 5 ReturnToBaseIdleTime = 10000 ; if idle for this long, return to base, even if not out of ammo End Locomotor = SET_NORMAL MIGLocomotor Locomotor = SET_TAXIING BasicJetTaxiLocomotor Behavior = FlammableUpdate ModuleTag_08 AflameDuration = 5000 ; If I catch fire, I'll burn for this long... AflameDamageAmount = 3 ; taking this much damage... AflameDamageDelay = 500 ; this often. End Behavior = TransitionDamageFX ModuleTag_09 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes Psys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_MIGDamageTransition End Behavior = MaxHealthUpgrade ModuleTag_10 TriggeredBy = Upgrade_ChinaAircraftArmor AddMaxHealth = 40.0 ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH End Geometry = Box GeometryIsSmall = Yes GeometryMajorRadius = 14.0 GeometryMinorRadius = 7.0 GeometryHeight = 5.0 Shadow = SHADOW_VOLUME Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object AmericaInfantryRanger ; *** ART Parameters *** SelectPortrait = SARanger_L ButtonImage = SARanger UpgradeCameo1 = Upgrade_AmericaRangerFlashBangGrenade UpgradeCameo2 = Upgrade_AmericaAdvancedTraining UpgradeCameo3 = Upgrade_InfantryCaptureBuilding ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = 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 ; --- Idle DefaultConditionState Model = AIRngr_SKN IdleAnimation = AIRngr_SKL.AIRngr_STA 0 35 IdleAnimation = AIRngr_SKL.AIRngr_IDA IdleAnimation = AIRngr_SKL.AIRngr_IDB AnimationMode = ONCE WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponFireFXBone = SECONDARY Muzzle WeaponLaunchBone = SECONDARY Muzzle TransitionKey = TRANS_Stand End ConditionState = REALLYDAMAGED IdleAnimation = AIRngr_SKL.AIRngr_STB 0 35 IdleAnimation = AIRngr_SKL.AIRngr_IDC IdleAnimation = AIRngr_SKL.AIRngr_IDD AnimationMode = ONCE TransitionKey = TRANS_StandInjured End TransitionState = TRANS_Stand TRANS_StandInjured Animation = AIRngr_SKL.AIRngr_SA2SB AnimationMode = ONCE End ; --- attacking (Machine Gun) ConditionState = USING_WEAPON_A Animation = AIRngr_SKL.AIRngr_ATA AnimationMode = LOOP TransitionKey = TRANS_FiringA End ConditionState = USING_WEAPON_A REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_ATA2 AnimationMode = LOOP TransitionKey = TRANS_FiringAInjured End TransitionState = TRANS_FiringA TRANS_FiringAInjured Animation = AIRngr_SKL.AIRngr_A2WAA AnimationMode = ONCE End TransitionState = TRANS_Stand TRANS_FiringA Animation = AIRngr_SKL.AIRngr_ATAST AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End TransitionState = TRANS_FiringA TRANS_Stand Animation = AIRngr_SKL.AIRngr_ATAED AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End TransitionState = TRANS_StandInjured TRANS_FiringAInjured Animation = AIRngr_SKL.AIRngr_S2WAA AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End TransitionState = TRANS_FiringAInjured TRANS_StandInjured Animation = AIRngr_SKL.AIRngr_WAA2S AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End TransitionState = TRANS_Stand TRANS_Move Animation = AIRngr_SKL.AIRngr_STA2RNA AnimationMode = ONCE End ; --- attacking (Grenade Launcher) ConditionState = PREATTACK_B Animation = AIRngr_SKL.AIRngr_ATBA AnimationMode = ONCE TransitionKey = TRANS_FiringB End AliasConditionState = PREATTACK_B MOVING AliasConditionState = PREATTACK_B FIRING_B AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B ConditionState = FIRING_B Animation = AIRngr_SKL.AIRngr_ATBB AnimationMode = ONCE TransitionKey = TRANS_FiringB End ConditionState = BETWEEN_FIRING_SHOTS_B Animation = AIRngr_SKL.AIRngr_ATBB AnimationMode = MANUAL Flags = START_FRAME_LAST TransitionKey = TRANS_FiringB WaitForStateToFinishIfPossible = TRANS_FiringB End AliasConditionState = RELOADING_B TransitionState = TRANS_Stand TRANS_FiringB Animation = AIRngr_SKL.AIRngr_ATBST1 AnimationMode = ONCE End TransitionState = TRANS_FiringB TRANS_Stand Animation = AIRngr_SKL.AIRngr_ATBST2 AnimationMode = ONCE End ConditionState = PREATTACK_B REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_ATB2A AnimationMode = ONCE TransitionKey = TRANS_FiringBInjured End AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED ConditionState = FIRING_B REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_ATB2B AnimationMode = ONCE TransitionKey = TRANS_FiringBInjured End ConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_ATB2B AnimationMode = MANUAL Flags = START_FRAME_LAST TransitionKey = TRANS_FiringBInjured WaitForStateToFinishIfPossible = TRANS_FiringBInjured End AliasConditionState = RELOADING_B REALLYDAMAGED TransitionState = TRANS_StandInjured TRANS_FiringBInjured Animation = AIRngr_SKL.AIRngr_ATB2ST1 AnimationMode = ONCE End TransitionState = TRANS_FiringBInjured TRANS_StandInjured Animation = AIRngr_SKL.AIRngr_ATB2ST2 AnimationMode = ONCE End ; -- cross-attack transitions TransitionState = TRANS_FiringA TRANS_FiringB Animation = AIRngr_SKL.AIRngr_ATA2AB AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End TransitionState = TRANS_FiringB TRANS_FiringA Animation = AIRngr_SKL.AIRngr_ATA2AB AnimationMode = ONCE_BACKWARDS AnimationSpeedFactorRange = 4 4 End ; --- moving ConditionState = MOVING Animation = AIRngr_SKL.AIRngr_RNA 30 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_Move ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING ATTACKING ConditionState = MOVING REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_RNB 30 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_Move End AliasConditionState = MOVING REALLYDAMAGED ATTACKING ; --- dying anims ConditionState = DYING Animation = AIRngr_SKL.AIRngr_DTA Animation = AIRngr_SKL.AIRngr_DTB AnimationMode = ONCE TransitionKey = None End TransitionState = TRANS_Dying TRANS_Flailing Animation = AIRngr_SKL.AIRngr_ADTF1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = AIRngr_SKL.AIRngr_ADTF2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = AIRngr_SKL.AIRngr_ADTF3 AnimationMode = ONCE TransitionKey = None End AliasConditionState = DYING SPLATTED ; --- cheering ConditionState = SPECIAL_CHEERING Animation = AIRngr_SKL.AIRngr_CHA AnimationMode = LOOP End ConditionState = SPECIAL_CHEERING REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_CHB AnimationMode = LOOP End ; ----- PARACHUTING ANIMATIONS ConditionState = FREEFALL Animation = AIRngr_SKL.AIRngr_PFL AnimationMode = LOOP TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = AIRngr_SKL.AIRngr_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = AIRngr_SKL.AIRngr_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = AIRngr_SKL.AIRngr_PTD AnimationMode = ONCE End TransitionState = TRANS_Chute TRANS_StandInjured Animation = AIRngr_SKL.AIRngr_PTD AnimationMode = ONCE End ; ------- Bldg-capture ConditionState = UNPACKING Model = AIRngr_F_SKN Animation = AIRngr_F_SKL.AIRngr_F_FDP1 AnimationMode = ONCE End AliasConditionState = UNPACKING REALLYDAMAGED ConditionState = RAISING_FLAG Model = AIRngr_F_SKN Animation = AIRngr_F_SKL.AIRngr_F_FDP2 AnimationMode = ONCE TransitionKey = TRANS_Raising End AliasConditionState = RAISING_FLAG REALLYDAMAGED ConditionState = PACKING Model = AIRngr_F_SKN Animation = AIRngr_F_SKL.AIRngr_F_FDP1 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST TransitionKey = TRANS_Packing End AliasConditionState = PACKING REALLYDAMAGED TransitionState = TRANS_Raising TRANS_Packing Model = AIRngr_F_SKN Animation = AIRngr_F_SKL.AIRngr_F_FDP2 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST End ; --- RAPPELLING ANIMATIONS ConditionState = RAPPELLING Animation = AIRngr_SKL.AIRngr_RPL1 ;30 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_Rappelling End AliasConditionState = MOVING RAPPELLING TransitionState = TRANS_Rappelling TRANS_Stand Animation = AIRngr_SKL.AIRngr_RPL2 AnimationMode = ONCE End TransitionState = TRANS_Rappelling TRANS_StandInjured Animation = AIRngr_SKL.AIRngr_RPL2 AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:Ranger Side = America EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY RangerAdvancedCombatRifle End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY RangerAdvancedCombatRifle Weapon = SECONDARY RangerFlashBangGrenadeWeapon AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 100 ShroudClearingRange = 400 Prerequisites Object = AmericaBarracks End BuildCost = 225 BuildTime = 5.0 ;in seconds ExperienceValue = 20 20 40 60 ;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 = AmericaInfantryRangerCommandSet ; *** AUDIO Parameters *** VoiceSelect = RangerVoiceSelect VoiceMove = RangerVoiceMove VoiceGuard = RangerVoiceMove VoiceAttack = RangerVoiceAttack SoundDie = RangerVoiceDie VoiceFear = RangerVoiceFear VoiceTaskComplete = RangerVoiceCaptureComplete UnitSpecificSounds VoiceEnter = RangerVoiceMove VoiceEnterHostile = RangerVoiceMove VoiceGarrison = RangerVoiceGarrison VoiceCreate = RangerVoiceCreate VoiceSubdue = RangerVoiceSubdue VoiceClearBuilding = RangerVoiceClearBuilding VoiceGetHealed = RangerVoiceMove VoicePrimaryWeaponMode = RangerVoiceModeGun VoiceSecondaryWeaponMode = RangerVoiceModeFlashBang End UnitSpecificFX ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs CombatDropKillFX = FX_RangerCombatDropKill End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY CAN_RAPPEL SCORE Behavior = CommandButtonHuntUpdate ModuleTag_02 End Body = ActiveBody ModuleTag_03 MaxHealth = 180.0 InitialHealth = 180.0 End Behavior = ExperienceScalarUpgrade ModuleTag_04 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = AutoFindHealingUpdate ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba ScanRate = 1000 ; once a second. ScanRange = 300 ; NeverHeal = 0.85 ; don't heal if we are > 85% healthy. AlwaysHeal = 0.25 ; if we get below 25%, find healing right away. End Behavior = AIUpdateInterface ModuleTag_06 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL BasicHumanLocomotor Behavior = PhysicsBehavior ModuleTag_07 Mass = 5.0 End Behavior = ProductionUpdate ModuleTag_08 ; nothing End Behavior = CommandButtonHuntUpdate ModuleTag_09 ; allows use of command button hunt script with this unit. End Behavior = WeaponSetUpgrade ModuleTag_10 TriggeredBy = Upgrade_AmericaRangerFlashBangGrenade End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = SquishCollide ModuleTag_12 ;nothing End Behavior = PoisonedBehavior ModuleTag_17 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_18 SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding UpdateModuleStartsAttack = Yes StartsPaused = Yes ; Unpaused by upgrade module InitiateSound = RangerVoiceCapture End Behavior = SpecialAbilityUpdate ModuleTag_19 SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding StartAbilityRange = 5.0 UnpackTime = 3000 ; (changing this will scale anim speed) PreparationTime = 20000 ; time to complete hack once prepared (changing this will scale anim speed) PackTime = 2000 ; (changing this will scale anim speed) DoCaptureFX = Yes AwardXPForTriggering = 15 ;SkillPointsForTriggering = ??? -- Dustin, fill me out if you want different balance values. End Behavior = UnpauseSpecialPowerUpgrade ModuleTag_20 SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding TriggeredBy = Upgrade_InfantryCaptureBuilding End Geometry = CYLINDER GeometryMajorRadius = 7.0 GeometryMinorRadius = 7.0 GeometryHeight = 13.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object CINE_AmericaInfantryRanger ; *** ART Parameters *** SelectPortrait = SARanger_L ButtonImage = SARanger UpgradeCameo1 = Upgrade_AmericaRangerFlashBangGrenade UpgradeCameo2 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; --- Idle DefaultConditionState Model = AIRngr_SKN IdleAnimation = AIRngr_SKL.AIRngr_STA 0 35 IdleAnimation = AIRngr_SKL.AIRngr_IDA IdleAnimation = AIRngr_SKL.AIRngr_IDB AnimationMode = ONCE WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponFireFXBone = SECONDARY Muzzle WeaponLaunchBone = SECONDARY Muzzle TransitionKey = TRANS_Stand End ConditionState = REALLYDAMAGED IdleAnimation = AIRngr_SKL.AIRngr_STB 0 35 IdleAnimation = AIRngr_SKL.AIRngr_IDC IdleAnimation = AIRngr_SKL.AIRngr_IDD AnimationMode = ONCE TransitionKey = TRANS_StandInjured End TransitionState = TRANS_Stand TRANS_StandInjured Animation = AIRngr_SKL.AIRngr_SA2SB AnimationMode = ONCE End ; --- attacking (Machine Gun) ConditionState = FIRING_A Animation = AIRngr_SKL.AIRngr_ATA AnimationMode = LOOP TransitionKey = TRANS_FiringA End AliasConditionState = BETWEEN_FIRING_SHOTS_A AliasConditionState = RELOADING_A ConditionState = FIRING_A REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_ATA2 AnimationMode = LOOP TransitionKey = TRANS_FiringAInjured End AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED AliasConditionState = RELOADING_A REALLYDAMAGED AliasConditionState = MOVING FIRING_A AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A AliasConditionState = MOVING RELOADING_A TransitionState = TRANS_FiringA TRANS_FiringAInjured Animation = AIRngr_SKL.AIRngr_A2WAA AnimationMode = ONCE End TransitionState = TRANS_Stand TRANS_FiringA Animation = AIRngr_SKL.AIRngr_ATAST AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End TransitionState = TRANS_FiringA TRANS_Stand Animation = AIRngr_SKL.AIRngr_ATAED AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End TransitionState = TRANS_StandInjured TRANS_FiringAInjured Animation = AIRngr_SKL.AIRngr_S2WAA AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End TransitionState = TRANS_FiringAInjured TRANS_StandInjured Animation = AIRngr_SKL.AIRngr_WAA2S AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End ; --- attacking (Grenade Launcher) ConditionState = PREATTACK_B Animation = AIRngr_SKL.AIRngr_ATBA AnimationMode = ONCE TransitionKey = TRANS_FiringB End AliasConditionState = PREATTACK_B MOVING AliasConditionState = PREATTACK_B FIRING_B AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B ConditionState = FIRING_B Animation = AIRngr_SKL.AIRngr_ATBB AnimationMode = ONCE TransitionKey = TRANS_FiringB End ConditionState = BETWEEN_FIRING_SHOTS_B Animation = AIRngr_SKL.AIRngr_ATBB AnimationMode = MANUAL Flags = START_FRAME_LAST TransitionKey = TRANS_FiringB WaitForStateToFinishIfPossible = TRANS_FiringB End AliasConditionState = RELOADING_B TransitionState = TRANS_Stand TRANS_FiringB Animation = AIRngr_SKL.AIRngr_ATBST1 AnimationMode = ONCE End TransitionState = TRANS_FiringB TRANS_Stand Animation = AIRngr_SKL.AIRngr_ATBST2 AnimationMode = ONCE End ConditionState = PREATTACK_B REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_ATB2A AnimationMode = ONCE TransitionKey = TRANS_FiringBInjured End AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED ConditionState = FIRING_B REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_ATB2B AnimationMode = ONCE TransitionKey = TRANS_FiringBInjured End ConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_ATB2B AnimationMode = MANUAL Flags = START_FRAME_LAST TransitionKey = TRANS_FiringBInjured WaitForStateToFinishIfPossible = TRANS_FiringBInjured End AliasConditionState = RELOADING_B REALLYDAMAGED TransitionState = TRANS_StandInjured TRANS_FiringBInjured Animation = AIRngr_SKL.AIRngr_ATB2ST1 AnimationMode = ONCE End TransitionState = TRANS_FiringBInjured TRANS_StandInjured Animation = AIRngr_SKL.AIRngr_ATB2ST2 AnimationMode = ONCE End ; -- cross-attack transitions TransitionState = TRANS_FiringA TRANS_FiringB Animation = AIRngr_SKL.AIRngr_ATA2AB AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End TransitionState = TRANS_FiringB TRANS_FiringA Animation = AIRngr_SKL.AIRngr_ATA2AB AnimationMode = ONCE_BACKWARDS AnimationSpeedFactorRange = 4 4 End ; --- moving ConditionState = MOVING Animation = AIRngr_SKL.AIRngr_RNA 40 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End ConditionState = MOVING REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_RNB 30 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None End ; --- dying anims ConditionState = DYING Animation = AIRngr_SKL.AIRngr_DTA Animation = AIRngr_SKL.AIRngr_DTB AnimationMode = ONCE TransitionKey = None End TransitionState = TRANS_Dying TRANS_Flailing Animation = AIRngr_SKL.AIRngr_ADTF1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = AIRngr_SKL.AIRngr_ADTF2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = AIRngr_SKL.AIRngr_ADTF3 AnimationMode = ONCE TransitionKey = None End AliasConditionState = DYING SPLATTED ; --- cheering ConditionState = SPECIAL_CHEERING Animation = AIRngr_SKL.AIRngr_CHA AnimationMode = LOOP End ConditionState = SPECIAL_CHEERING REALLYDAMAGED Animation = AIRngr_SKL.AIRngr_CHB AnimationMode = LOOP End ; ----- PARACHUTING ANIMATIONS ConditionState = FREEFALL Animation = AIRngr_SKL.AIRngr_PFL AnimationMode = LOOP TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = AIRngr_SKL.AIRngr_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = AIRngr_SKL.AIRngr_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = AIRngr_SKL.AIRngr_PTD AnimationMode = ONCE End TransitionState = TRANS_Chute TRANS_StandInjured Animation = AIRngr_SKL.AIRngr_PTD AnimationMode = ONCE End ; ------- Bldg-capture ConditionState = UNPACKING Model = AIRngr_F_SKN Animation = AIRngr_F_SKL.AIRngr_F_FDP1 AnimationMode = ONCE End AliasConditionState = UNPACKING REALLYDAMAGED ConditionState = RAISING_FLAG Model = AIRngr_F_SKN Animation = AIRngr_F_SKL.AIRngr_F_FDP2 AnimationMode = ONCE TransitionKey = TRANS_Raising End AliasConditionState = RAISING_FLAG REALLYDAMAGED ConditionState = PACKING Model = AIRngr_F_SKN Animation = AIRngr_F_SKL.AIRngr_F_FDP1 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST TransitionKey = TRANS_Packing End AliasConditionState = PACKING REALLYDAMAGED TransitionState = TRANS_Raising TRANS_Packing Model = AIRngr_F_SKN Animation = AIRngr_F_SKL.AIRngr_F_FDP2 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST End ; --- RAPPELLING ANIMATIONS ConditionState = RAPPELLING Animation = AIRngr_SKL.AIRngr_RPL1 ;30 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_Rappelling End AliasConditionState = MOVING RAPPELLING TransitionState = TRANS_Rappelling TRANS_Stand Animation = AIRngr_SKL.AIRngr_RPL2 AnimationMode = ONCE End TransitionState = TRANS_Rappelling TRANS_StandInjured Animation = AIRngr_SKL.AIRngr_RPL2 AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:Ranger Side = America EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY CINE_RangerAdvancedCombatRifle End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY RangerAdvancedCombatRifle Weapon = SECONDARY RangerFlashBangGrenadeWeapon AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 100 ShroudClearingRange = 400 Prerequisites Object = AmericaBarracks End BuildCost = 225 BuildTime = 5.0 ;in seconds ExperienceValue = 20 20 40 60 ;Experience point value at each level ExperienceRequired = 0 20 40 60 120 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = AmericaInfantryRangerCommandSet ; *** AUDIO Parameters *** VoiceSelect = RangerVoiceSelect VoiceMove = RangerVoiceMove VoiceGuard = RangerVoiceMove VoiceAttack = RangerVoiceAttack SoundDie = RangerVoiceDie VoiceFear = RangerVoiceFear VoiceTaskComplete = RangerVoiceCaptureComplete UnitSpecificSounds VoiceEnter = RangerVoiceMove VoiceEnterHostile = RangerVoiceMove VoiceGarrison = RangerVoiceGarrison VoiceCreate = RangerVoiceCreate VoiceSubdue = RangerVoiceSubdue VoiceClearBuilding = RangerVoiceClearBuilding VoiceGetHealed = RangerVoiceMove End UnitSpecificFX ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs CombatDropKillFX = FX_RangerCombatDropKill End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY CAN_RAPPEL SCORE Behavior = CommandButtonHuntUpdate ModuleTag_02 End Body = ActiveBody ModuleTag_03 MaxHealth = 180.0 InitialHealth = 180.0 End Behavior = ExperienceScalarUpgrade ModuleTag_04 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = AutoFindHealingUpdate ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba ScanRate = 1000 ; once a second. ScanRange = 300 ; NeverHeal = 0.85 ; don't heal if we are > 85% healthy. AlwaysHeal = 0.25 ; if we get below 25%, find healing right away. End Behavior = AIUpdateInterface ModuleTag_06 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL BasicHumanLocomotor Behavior = PhysicsBehavior ModuleTag_07 Mass = 5.0 End Behavior = ProductionUpdate ModuleTag_08 ; nothing End Behavior = CommandButtonHuntUpdate ModuleTag_09 ; allows use of command button hunt script with this unit. End Behavior = WeaponSetUpgrade ModuleTag_10 TriggeredBy = Upgrade_AmericaRangerFlashBangGrenade End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = SquishCollide ModuleTag_12 ;nothing End Behavior = PoisonedBehavior ModuleTag_17 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_18 SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding UpdateModuleStartsAttack = Yes StartsPaused = Yes ; Unpaused by upgrade module InitiateSound = RangerVoiceCapture End Behavior = SpecialAbilityUpdate ModuleTag_19 SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding StartAbilityRange = 5.0 UnpackTime = 3000 ; (changing this will scale anim speed) PreparationTime = 10000 ; time to complete hack once prepared (changing this will scale anim speed) PackTime = 2000 ; (changing this will scale anim speed) DoCaptureFX = Yes End Behavior = UnpauseSpecialPowerUpgrade ModuleTag_20 SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding TriggeredBy = Upgrade_InfantryCaptureBuilding End Geometry = CYLINDER GeometryMajorRadius = 7.0 GeometryMinorRadius = 7.0 GeometryHeight = 13.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object AmericaInfantryMissileDefender ; *** ART Parameters *** SelectPortrait = SAMissleDefender_L ButtonImage = SAMissleDefender UpgradeCameo1 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ;***NOTE*** ;A little history -- the MissileDefender now uses the assets of the TankHunter. ;The TH uses assets of the GLA tunnel defender, and the TD uses assets of the NEW ;MD. It was a design/art/code decision because the new missile defender animations ;don't suit that of a mobile/offensive unit with packing and unpacking. DefaultConditionState Model = NITHNT_SKN IdleAnimation = NITHNT_SKL.NITHNT_STA 0 30 IdleAnimation = NITHNT_SKL.NITHNT_IDA IdleAnimation = NITHNT_SKL.NITHNT_IDB AnimationMode = ONCE AnimationSpeedFactorRange = 0.8 1.2 TransitionKey = TRANS_Stand WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponFireFXBone = PRIMARY Muzzle WeaponLaunchBone = PRIMARY Muzzle WeaponLaunchBone = SECONDARY Muzzle End AliasConditionState = REALLYDAMAGED ConditionState = FIRING_A Animation = NITHNT_SKL.NITHNT_ATA AnimationMode = ONCE TransitionKey = TRANS_START_FIRING End AliasConditionState = FIRING_A REALLYDAMAGED ConditionState = BETWEEN_FIRING_SHOTS_A Animation = NITHNT_SKL.NITHNT_STA AnimationMode = ONCE ; this is basically a trick: this guy has a nontrivial animation for firing, ; and a long recycle time between shots. we want him to finish his fire animation ; (unless he's ordered to do something else), so this is just a handy trick that ; says, "if the previous state had this transition key, allow it to finish before ; switching to us, if possible". WaitForStateToFinishIfPossible = TRANS_START_FIRING End AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED ConditionState = MOVING Animation = NITHNT_SKL.NITHNT_RNA 20 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING REALLYDAMAGED ConditionState = RELOADING_A Animation = NITHNT_SKL.NITHNT_ATA 10 AnimationMode = ONCE ;WeaponLaunchBone = PRIMARY WeaponA End AliasConditionState = MOVING RELOADING_A AliasConditionState = MOVING RELOADING_A REALLYDAMAGED ConditionState = DYING Animation = NITHNT_SKL.NITHNT_DTA Animation = NITHNT_SKL.NITHNT_DTB AnimationSpeedFactorRange = 0.9 1.25 AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = NITHNT_SKL.NITHNT_ADTA1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = NITHNT_SKL.NITHNT_ADTA2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = NITHNT_SKL.NITHNT_ADTA3 AnimationMode = ONCE TransitionKey = None End ;PARACHUTING ANIMATIONS ConditionState = FREEFALL Animation = NITHNT_SKL.NITHNT_PFL AnimationMode = LOOP TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = NITHNT_SKL.NITHNT_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = NITHNT_SKL.NITHNT_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = NITHNT_SKL.NITHNT_PTD AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:MissileTeam Side = America EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY MissileDefenderMissileWeapon Weapon = SECONDARY MissileDefenderLaserGuidedMissileWeapon ;Controlled by special ability AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI AutoChooseSources = SECONDARY NONE End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 300 Prerequisites Object = AmericaBarracks End BuildCost = 300 BuildTime = 5.0 ;in seconds ExperienceValue = 20 20 40 60 ;Experience point value at each level ExperienceRequired = 0 100 200 400 ;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 = AmericaInfantryMissileDefenderCommandSet ; *** AUDIO Parameters *** VoiceSelect = MissileDefenderVoiceSelect VoiceMove = MissileDefenderVoiceMove VoiceGuard = MissileDefenderVoiceMove VoiceAttack = MissileDefenderVoiceAttack VoiceAttackAir = MissileDefenderVoiceAttack SoundDie = MissileDefenderVoiceDie SoundDieFire = DieByFireUSA SoundDieToxin = DieByToxinUSA VoiceFear = MissileDefenderVoiceFear UnitSpecificSounds VoiceGarrison = MissileDefenderVoiceGarrison VoiceCreate = MissileDefenderVoiceCreate VoiceEnter = MissileDefenderVoiceMove VoiceGetHealed = MissileDefenderVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = ExperienceScalarUpgrade ModuleTag_03 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = AIUpdateInterface ModuleTag_04 AutoAcquireEnemiesWhenIdle = Yes End Behavior = AutoFindHealingUpdate ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba ScanRate = 1000 ; once a second. ScanRange = 300 ; NeverHeal = 0.85 ; don't heal if we are > 85% healthy. AlwaysHeal = 0.25 ; if we get below 25%, find healing right away. End Locomotor = SET_NORMAL MissileDefenderLocomotor Behavior = PhysicsBehavior ModuleTag_06 Mass = 5.0 End Behavior = SpecialAbility ModuleTag_08 SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles UpdateModuleStartsAttack = Yes InitiateSound = MissileDefenderVoiceAttackLaser End Behavior = SpecialAbilityUpdate ModuleTag_09 SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles StartAbilityRange = 200.0 AbilityAbortRange = 250.0 ;If the target moves outside this range, abort. PreparationTime = 1000 PersistentPrepTime = 500 SpecialObject = LaserBeam SpecialObjectAttachToBone = Muzzle01 End Behavior = SquishCollide ModuleTag_10 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_13 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 7.0 GeometryMinorRadius = 7.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ ; @todo -- this entire unit is "first pass only" and needs lots of specialization Object AmericaInfantryPilot ; *** ART Parameters *** SelectPortrait = SAPilot_L ButtonImage = SAPilot ;UpgradeCameo1 = NONE ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AIRPlt_SKN IdleAnimation = AIRPlt_SKL.AIRPlt_STA 0 20 IdleAnimation = AIRPlt_SKL.AIRPlt_IDA IdleAnimation = AIRPlt_SKL.AIRPlt_IDB AnimationMode = ONCE TransitionKey = TRANS_Stand End ConditionState = FREEFALL Animation = AIRPlt_SKL.AIRPLT_PFL AnimationMode = ONCE TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = AIRPlt_SKL.AIRPlt_PHG AnimationMode = LOOP TransitionKey = TRANS_Chute WaitForStateToFinishIfPossible = TRANS_Falling End AliasConditionState = PARACHUTING DYING ConditionState = MOVING Animation = AIRPlt_SKL.AIRPlt_RNA AnimationMode = LOOP TransitionKey = TRANS_Stand ParticleSysBone = None InfantryDustTrails End ConditionState = DYING Animation = AIRPlt_SKL.AIRPlt_DTA Animation = AIRPlt_SKL.AIRPlt_DTB AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = AIRPlt_SKL.AIRPlt_ADTE1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = AIRPlt_SKL.AIRPlt_ADTE2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = AIRPlt_SKL.AIRPlt_ADTE3 AnimationMode = ONCE TransitionKey = None End ConditionState = SPECIAL_CHEERING Animation = AIRPLT_SKL.AIRPLT_CHA AnimationMode = LOOP End ;@TODO -- MISSING ANIMATION FILE ;TransitionState = TRANS_Falling TRANS_Chute ; Animation = AIRPLT_SKL.AIRPLT_POP ; AnimationMode = ONCE ; Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first ;End TransitionState = TRANS_Chute TRANS_Stand Animation = AIRPlt_SKL.AIRPlt_PTD AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:Pilot Side = America EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) ExperienceValue = 10 10 10 10 ;Experience point value at each level ExperienceRequired = 0 1 2 3 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CommandSet = AmericaInfantryPilotCommandSet ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 300 CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles ; *** AUDIO Parameters *** VoiceSelect = PilotVoiceSelect VoiceMove = PilotVoiceMove VoiceAttack = PilotVoiceMove SoundDie = PilotVoiceDie SoundDieFire = DieByFireUSA SoundDieToxin = DieByToxinUSA VoiceGarrison = PilotVoiceGarrison VoiceFear = PilotVoiceFear UnitSpecificSounds VoiceEnter = PilotVoiceEnter VoiceEnterHostile = PilotVoiceEnter VoiceGetHealed = PilotVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY NO_GARRISON SCORE IGNORES_SELECT_ALL Behavior = VeterancyGainCreate ModuleTag_02 ; omit the "ScienceRequired" so that this upgrade always occurs. ; Pilots should never (repeat, never) be less than VETERAN status. StartingLevel = VETERAN End Behavior = VeterancyCrateCollide ModuleTag_03 RequiredKindOf = VEHICLE ; we only give our bonus to VEHICLEs we collide with ForbiddenKindOf = DOZER ; but not to TRANSPORTs or DOZERs! EffectRange = 0 ; 0=="affect only the thing you collide with" AddsOwnerVeterancy = Yes ; we add our own veterancy to the target (rather than just +1 level) IsPilot = Yes ; set the pilot flag because it's different than the veterancy crate and has extra checking End Body = ActiveBody ModuleTag_04 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = AIUpdateInterface ModuleTag_05 AutoAcquireEnemiesWhenIdle = Yes End Behavior = AutoFindHealingUpdate ModuleTag_06 ; This update will have the unit go to a healing station if injured. jba ScanRate = 1000 ; once a second. ScanRange = 300 ; NeverHeal = 0.85 ; don't heal if we are > 85% healthy. AlwaysHeal = 0.25 ; if we get below 25%, find healing right away. End Behavior = PilotFindVehicleUpdate ModuleTag_07 ; This update will have the unit go to a vehicle. jba ScanRate = 1000 ; once a second. ScanRange = 300 ; MinHealth = 0.5 ; don't enter a vehicle less than 50% healthy. End Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor Locomotor = SET_NORMAL_UPGRADED BasicHumanLocomotorPlus25 Behavior = PhysicsBehavior ModuleTag_08 Mass = 5.0 End Behavior = LocomotorSetUpgrade ModuleTag_10 TriggeredBy = Upgrade_Veterancy_HEROIC End Behavior = SquishCollide ModuleTag_11 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_14 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 10.0 GeometryMinorRadius = 10.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object AmericaInfantryPathfinder ; *** ART Parameters *** SelectPortrait = SAPathfinder1_L ButtonImage = SAPathfinder1 UpgradeCameo1 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AIPFDR_SKN IdleAnimation = AIPFDR_SKL.AIPFDR_STA IdleAnimation = AIPFDR_SKL.AIPFDR_IDA AnimationMode = ONCE WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX TransitionKey = TRANS_Standing End AliasConditionState = REALLYDAMAGED ConditionState = MOVING Animation = AIPFDR_SKL.AIPFDR_RNA 25 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_Standing ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING REALLYDAMAGED ConditionState = FIRING_A Animation = AIPFDR_SKL.AIPFDR_ATB ; recoil in standing position AnimationMode = ONCE TransitionKey = TRANS_FiringA End AliasConditionState = FIRING_A MOVING AliasConditionState = FIRING_A MOVING REALLYDAMAGED AliasConditionState = FIRING_A REALLYDAMAGED ConditionState = BETWEEN_FIRING_SHOTS_A Animation = AIPFDR_SKL.AIPFDR_ATBST ; motionless in standing position AnimationMode = ONCE WaitForStateToFinishIfPossible = TRANS_FiringA End AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED AliasConditionState = RELOADING_A AliasConditionState = RELOADING_A REALLYDAMAGED ConditionState = DYING Animation = AIPFDR_SKL.AIPFDR_DTA AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = AIPFDR_SKL.AIPFDR_ADTA1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = AIPFDR_SKL.AIPFDR_ADTA2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = AIPFDR_SKL.AIPFDR_ADTA3 AnimationMode = ONCE TransitionKey = None End ConditionState = FREEFALL Animation = AIPFDR_SKL.AIPFDR_PFL AnimationMode = LOOP TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = AIPFDR_SKL.AIPFDR_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ;our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = AIPFDR_SKL.AIPFDR_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ;our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Standing Animation = AIPFDR_SKL.AIPFDR_PTD AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:Pathfinder Side = America EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY USAPathfinderSniperRifle End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 200 ShroudClearingRange = 400 Prerequisites Object = AmericaBarracks Science = SCIENCE_Pathfinder End BuildCost = 600 BuildTime = 10.0 ;in seconds ExperienceValue = 40 40 60 80 ;Experience point value at each level ExperienceRequired = 0 50 100 200 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = AmericaInfantryPathfinderCommandSet ; *** AUDIO Parameters *** VoiceSelect = PathfinderVoiceSelect VoiceMove = PathfinderVoiceMove VoiceGuard = PathfinderVoiceMove VoiceAttack = PathfinderVoiceAttack SoundDie = PathfinderVoiceDie SoundDieFire = DieByFireUSA SoundDieToxin = DieByToxinUSA VoiceFear = PathfinderVoiceFear SoundStealthOn = StealthOn SoundStealthOff = StealthOff VoiceFear = PathfinderVoiceFear UnitSpecificSounds VoiceCreate = PathfinderVoiceCreate VoiceGarrison = PathfinderVoiceGarrison VoiceEnter = PathfinderVoiceMove VoiceEnterHostile = PathfinderVoiceMove VoiceGetHealed = PathfinderVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY STEALTH_GARRISON SCORE Body = ActiveBody ModuleTag_02 MaxHealth = 120.0 InitialHealth = 120.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes Stealthed MoodAttackCheckRate = 250 End Behavior = AutoFindHealingUpdate ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba ScanRate = 1000 ; once a second. ScanRange = 300 ; NeverHeal = 0.85 ; don't heal if we are > 85% healthy. AlwaysHeal = 0.25 ; if we get below 25%, find healing right away. End Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor Behavior = ExperienceScalarUpgrade ModuleTag_05 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = PhysicsBehavior ModuleTag_06 Mass = 5.0 End Behavior = StealthDetectorUpdate ModuleTag_08 DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec) ;DetectionRange = ??? ;Dustin, enable this for independant balancing! CanDetectWhileGarrisoned = No ;Garrisoned means being in a structure that you units can shoot out of. CanDetectWhileContained = No ;Contained means being in a transport or tunnel network. End Behavior = StealthUpdate ModuleTag_09 StealthDelay = 0 ; msec StealthForbiddenConditions = MOVING ; stays stealthy while attacking FriendlyOpacityMin = 30.0% FriendlyOpacityMax = 80.0% PulseFrequency = 500 ; msec MoveThresholdSpeed = 3 InnateStealth = Yes OrderIdleEnemiesToAttackMeUponReveal = Yes End Behavior = SquishCollide ModuleTag_10 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_13 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End 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 ;------------------------------------------------------------------------------ Object CINE_AmericanInfantryPathfinder ; *** ART Parameters *** SelectPortrait = SAPathfinder1_L ButtonImage = SAPathfinder1 UpgradeCameo1 = Upgrade_AmericaAdvancedTraining ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AIPFDR_SKN IdleAnimation = AIPFDR_SKL.AIPFDR_STA 0 14 IdleAnimation = AIPFDR_SKL.AIPFDR_IDA AnimationMode = ONCE WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX TransitionKey = TRANS_Standing End ConditionState = MOVING Animation = AIPFDR_SKL.AIPFDR_RNA 30 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_Standing ParticleSysBone = None InfantryDustTrails End TransitionState = TRANS_Standing TRANS_PreAttack Animation = AIPFDR_SKL.AIPFDR_DVA ; dive to the ground AnimationMode = ONCE End ConditionState = PREATTACK_A Animation = AIPFDR_SKL.AIPFDR_STB ; motionless in prone position AnimationMode = ONCE TransitionKey = TRANS_PreAttack End AliasConditionState = PREATTACK_A MOVING AliasConditionState = PREATTACK_A FIRING_A AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A ConditionState = FIRING_A Animation = AIPFDR_SKL.AIPFDR_ATA ; recoil in prone position AnimationMode = ONCE TransitionKey = TRANS_LyingDown End AliasConditionState = RELOADING_A AliasConditionState = BETWEEN_FIRING_SHOTS_A ConditionState = MOVING FIRING_A Animation = AIPFDR_SKL.AIPFDR_CLA 15 ; crawling AnimationMode = LOOP TransitionKey = TRANS_LyingDown ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A AliasConditionState = MOVING RELOADING_A ; TransitionState = TRANS_Standing TRANS_LyingDown ; Animation = AIPFDR_SKL.AIPFDR_DVA ; dive to the ground ; AnimationMode = ONCE ; End TransitionState = TRANS_LyingDown TRANS_Dying Animation = AIPFDR_SKL.AIPFDR_SUA ; getting up AnimationMode = ONCE End TransitionState = TRANS_LyingDown TRANS_Standing Animation = AIPFDR_SKL.AIPFDR_SUA ; getting up AnimationMode = ONCE End ConditionState = DYING Animation = AIPFDR_SKL.AIPFDR_DTA AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = AIPFDR_SKL.AIPFDR_ADTA1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = AIPFDR_SKL.AIPFDR_ADTA2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = AIPFDR_SKL.AIPFDR_ADTA3 AnimationMode = ONCE TransitionKey = None End ConditionState = FREEFALL Animation = AIPFDR_SKL.AIPFDR_PFL AnimationMode = LOOP TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = AIPFDR_SKL.AIPFDR_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ;our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = AIPFDR_SKL.AIPFDR_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ;our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Standing Animation = AIPFDR_SKL.AIPFDR_PTD AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:Pathfinder Side = America EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY CINE_USAPathfinderSniperRifle End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 300 ShroudClearingRange = 400 Prerequisites Object = AmericaBarracks Science = SCIENCE_Pathfinder End BuildCost = 600 BuildTime = 10.0 ;in seconds ExperienceValue = 40 40 60 80 ;Experience point value at each level ExperienceRequired = 0 50 100 200 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = AmericaInfantryPathfinderCommandSet ; *** AUDIO Parameters *** VoiceSelect = PathfinderVoiceSelect VoiceMove = PathfinderVoiceMove VoiceGuard = PathfinderVoiceMove VoiceAttack = PathfinderVoiceAttack SoundDie = PathfinderVoiceDie SoundDieFire = DieByFireUSA SoundDieToxin = DieByToxinUSA VoiceFear = PathfinderVoiceFear SoundStealthOn = StealthOn SoundStealthOff = StealthOff VoiceFear = PathfinderVoiceFear UnitSpecificSounds VoiceCreate = PathfinderVoiceCreate VoiceGarrison = PathfinderVoiceGarrison VoiceEnter = PathfinderVoiceMove VoiceEnterHostile = PathfinderVoiceMove VoiceGetHealed = PathfinderVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY STEALTH_GARRISON SCORE Body = ActiveBody ModuleTag_02 MaxHealth = 120.0 InitialHealth = 120.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes Stealthed MoodAttackCheckRate = 250 End Behavior = AutoFindHealingUpdate ModuleTag_04 ; This update will have the unit go to a healing station if injured. jba ScanRate = 1000 ; once a second. ScanRange = 300 ; NeverHeal = 0.85 ; don't heal if we are > 85% healthy. AlwaysHeal = 0.25 ; if we get below 25%, find healing right away. End Locomotor = SET_NORMAL ColonelBurtonGroundLocomotor Behavior = ExperienceScalarUpgrade ModuleTag_05 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = PhysicsBehavior ModuleTag_06 Mass = 5.0 End Behavior = SquishCollide ModuleTag_10 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_13 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End 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 ;------------------------------------------------------------------------------ Object GLAInfantryRebel ; *** ART Parameters *** SelectPortrait = SURebel_L ButtonImage = SURebel UpgradeCameo1 = Upgrade_GLAAPBullets UpgradeCameo2 = Upgrade_GLACamouflage UpgradeCameo3 = Upgrade_InfantryCaptureBuilding ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = 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 = UIRGrd_SKN IdleAnimation = UIRGrd_SKL.UIRGrd_STN 0 35 IdleAnimation = UIRGrd_SKL.UIRGrd_IDA IdleAnimation = UIRGrd_SKL.UIRGrd_IDB AnimationMode = ONCE WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX TransitionKey = TRANS_Standing 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:Rebel Side = GLA EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY GLARebelMachineGun End ; sorry, no tranqs, cut for this version (srj) ; WeaponSet ; Conditions = PLAYER_UPGRADE ; Weapon = PRIMARY GLARebelMachineGun ; Weapon = SECONDARY GLARebelTranqDartsWeapon ; AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI ; AutoChooseSources = SECONDARY NONE ; End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 300 Prerequisites Object = GLABarracks End BuildCost = 150 BuildTime = 5.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 = GLAInfantryRebelCommandSet ; *** AUDIO Parameters *** VoiceSelect = RebelVoiceSelect VoiceMove = RebelVoiceMove VoiceGuard = RebelVoiceMove VoiceAttack = RebelVoiceAttack SoundDie = RebelVoiceDie SoundDieFire = DieByFireGLA SoundDieToxin = DieByToxinGLA SoundStealthOn = StealthOn SoundStealthOff = StealthOff VoiceFear = RebelVoiceFear VoiceTaskComplete = RebelVoiceCaptureComplete UnitSpecificSounds VoiceCreate = RebelVoiceCreate VoiceSubdue = RebelVoiceSubdue VoiceGarrison = RebelVoiceGarrison VoiceEnter = RebelVoiceMove VoiceEnterHostile = RebelVoiceMove VoiceGetHealed = RebelVoiceMove 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 ; sorry, no tranq or stun bullets, cut for this version (srj) ; Behavior = WeaponSetUpgrade ModuleTag_08 ; TriggeredBy = Upgrade_GLATranqDarts ; End Behavior = WeaponBonusUpgrade ModuleTag_09 TriggeredBy = Upgrade_GLAAPBullets End Behavior = StealthUpgrade ModuleTag_10 TriggeredBy = Upgrade_GLACamouflage End Behavior = SquishCollide ModuleTag_11 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones 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 ;---------------------------------------------------------------------------- Object GLAInfantryJarmenKell ; *** ART Parameters *** SelectPortrait = SUJermanKell1_L ;NOTE: Asset spelling mistake ButtonImage = SUJermanKell1 UpgradeCameo1 = Upgrade_GLAAPBullets ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; --- idle DefaultConditionState Model = UIHERO_SKN IdleAnimation = UIHERO_SKL.UIHERO_STA 0 21 IdleAnimation = UIHERO_SKL.UIHERO_IDA IdleAnimation = UIHERO_SKL.UIHERO_IDB AnimationMode = ONCE WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX TransitionKey = TRANS_Stand End ConditionState = REALLYDAMAGED IdleAnimation = UIHERO_SKL.UIHERO_ISTA 0 30 IdleAnimation = UIHERO_SKL.UIHERO_IIDA IdleAnimation = UIHERO_SKL.UIHERO_IIDB AnimationMode = ONCE TransitionKey = TRANS_StandInjured End TransitionState = TRANS_Stand TRANS_StandInjured Animation = UIHERO_SKL.UIHERO_ISTAHIT AnimationMode = ONCE End ; --- attack ConditionState = FIRING_A Animation = UIHERO_SKL.UIHERO_ATA AnimationMode = ONCE TransitionKey = TRANS_FiringA AnimationSpeedFactorRange = 1.5 1.5 End ConditionState = BETWEEN_FIRING_SHOTS_A Animation = UIHERO_SKL.UIHERO_STA AnimationMode = ONCE WaitForStateToFinishIfPossible = TRANS_FiringA End AliasConditionState = RELOADING_A ConditionState = FIRING_A REALLYDAMAGED Animation = UIHERO_SKL.UIHERO_IATA2 AnimationMode = ONCE TransitionKey = TRANS_FiringAInjured AnimationSpeedFactorRange = 1.5 1.5 End ConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED Animation = UIHERO_SKL.UIHERO_IATA2 AnimationMode = MANUAL Flags = START_FRAME_LAST WaitForStateToFinishIfPossible = TRANS_FiringAInjured End AliasConditionState = RELOADING_A REALLYDAMAGED TransitionState = TRANS_FiringA TRANS_FiringAInjured Animation = UIHERO_SKL.UIHERO_IATAHIT AnimationMode = ONCE End ; --- moving ConditionState = MOVING Animation = UIHERO_SKL.UIHERO_RNA2 30 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING FIRING_A AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A AliasConditionState = MOVING RELOADING_A ConditionState = MOVING REALLYDAMAGED Animation = UIHERO_SKL.UIHERO_IRNA 30 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING FIRING_A REALLYDAMAGED AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED AliasConditionState = MOVING RELOADING_A REALLYDAMAGED ; --- cheering ConditionState = SPECIAL_CHEERING Animation = UIHERO_SKL.UIHERO_CHA AnimationMode = LOOP End ConditionState = SPECIAL_CHEERING REALLYDAMAGED Animation = UIHERO_SKL.UIHERO_ICHA AnimationMode = LOOP End ; --- dying ConditionState = DYING Animation = UIHERO_SKL.UIHERO_DTA Animation = UIHERO_SKL.UIHERO_DTB Animation = UIHERO_SKL.UIHERO_IDTA Animation = UIHERO_SKL.UIHERO_IDTB AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = UIHERO_SKL.UIHERO_ADTG21 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UIHERO_SKL.UIHERO_ADTG22 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UIHERO_SKL.UIHERO_ADTG23 AnimationMode = ONCE TransitionKey = None End ; --- falling ConditionState = FREEFALL Animation = UIHERO_SKL.UIHERO_PFL AnimationMode = LOOP TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = UIHERO_SKL.UIHERO_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = UIHERO_SKL.UIHERO_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = UIHERO_SKL.UIHERO_PTD AnimationMode = ONCE End TransitionState = TRANS_Chute TRANS_StandInjured Animation = UIHERO_SKL.UIHERO_PTD AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:JarmenKell Side = GLA EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) MaxSimultaneousOfType = 1 WeaponSet Conditions = None Weapon = PRIMARY GLAJarmenKellRifle Weapon = SECONDARY GLAJarmenKellVehiclePilotSniperRifle AutoChooseSources = PRIMARY NONE AutoChooseSources = SECONDARY NONE End ; WeaponSet ; Conditions = SNIPEVEHICLE ; Weapon = PRIMARY GLAJarmenKellVehiclePilotSniperRifle ; End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 200 ShroudClearingRange = 300 Prerequisites Object = GLABarracks Object = GLAPalace End BuildCost = 1500 BuildTime = 20.0 ;in seconds ExperienceValue = 50 50 100 150 ;Experience point value at each level ExperienceRequired = 0 100 200 400 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = GLAInfantryJarmenKellCommandSet ; *** AUDIO Parameters *** VoiceSelect = JarmenKellVoiceSelect VoiceMove = JarmenKellVoiceMove VoiceGuard = JarmenKellVoiceMove VoiceAttack = JarmenKellVoiceAttack VoiceFear = JarmenKellVoiceFear SoundDie = JarmenKellVoiceDie SoundDieFire = DieByFireGLA SoundDieToxin = DieByToxinGLA SoundStealthOn = StealthOn SoundStealthOff = StealthOff UnitSpecificSounds VoiceCreate = JarmenKellVoiceCreate VoiceSnipePilot = JarmenKellVoiceSnipe VoiceGarrison = JarmenKellVoiceGarrison VoiceEnter = JarmenKellVoiceMove VoiceEnterHostile = JarmenKellVoiceMove VoiceGetHealed = JarmenKellVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER STEALTH_GARRISON SCORE HERO Body = ActiveBody ModuleTag_02 MaxHealth = 200.0 InitialHealth = 200.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL JarmenKellLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End Behavior = StealthUpdate ModuleTag_06 StealthDelay = 2000 ; msec StealthForbiddenConditions = ATTACKING InnateStealth = Yes OrderIdleEnemiesToAttackMeUponReveal = Yes End Behavior = CommandButtonHuntUpdate ModuleTag_07 ; allows use of command button hunt script with this unit. End Behavior = WeaponBonusUpgrade ModuleTag_08 TriggeredBy = Upgrade_GLAAPBullets End ;Hero units can't be squished! ;Behavior = SquishCollide ModuleTag_09 ; ;nothing ;End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_14 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 10.0 GeometryMinorRadius = 10.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object CINE_GLAInfantryJarmenKell ; *** ART Parameters *** SelectPortrait = SUJermanKell1_L ;NOTE: Asset spelling mistake ButtonImage = SUJermanKell1 ;UpgradeCameo1 = NONE ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; --- idle DefaultConditionState Model = UIHERO_SKN IdleAnimation = UIHERO_SKL.UIHERO_STA 0 21 IdleAnimation = UIHERO_SKL.UIHERO_IDA IdleAnimation = UIHERO_SKL.UIHERO_IDB AnimationMode = ONCE WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX TransitionKey = TRANS_Stand End ConditionState = REALLYDAMAGED IdleAnimation = UIHERO_SKL.UIHERO_ISTA 0 30 IdleAnimation = UIHERO_SKL.UIHERO_IIDA IdleAnimation = UIHERO_SKL.UIHERO_IIDB AnimationMode = ONCE TransitionKey = TRANS_StandInjured End TransitionState = TRANS_Stand TRANS_StandInjured Animation = UIHERO_SKL.UIHERO_ISTAHIT AnimationMode = ONCE End ; --- attack ConditionState = FIRING_A Animation = UIHERO_SKL.UIHERO_ATA AnimationMode = ONCE TransitionKey = TRANS_FiringA End AliasConditionState = BETWEEN_FIRING_SHOTS_A AliasConditionState = RELOADING_A ConditionState = FIRING_A REALLYDAMAGED Animation = UIHERO_SKL.UIHERO_IATA2 AnimationMode = ONCE TransitionKey = TRANS_FiringAInjured End AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED AliasConditionState = RELOADING_A REALLYDAMAGED TransitionState = TRANS_FiringA TRANS_FiringAInjured Animation = UIHERO_SKL.UIHERO_IATAHIT AnimationMode = ONCE End ; --- moving ConditionState = MOVING Animation = UIHERO_SKL.UIHERO_RNA2 40 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None End AliasConditionState = MOVING FIRING_A AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A AliasConditionState = MOVING RELOADING_A ConditionState = MOVING REALLYDAMAGED Animation = UIHERO_SKL.UIHERO_IRNA 24 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None End AliasConditionState = MOVING FIRING_A REALLYDAMAGED AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED AliasConditionState = MOVING RELOADING_A REALLYDAMAGED ; --- cheering ConditionState = SPECIAL_CHEERING Animation = UIHERO_SKL.UIHERO_CHA AnimationMode = LOOP End ConditionState = SPECIAL_CHEERING REALLYDAMAGED Animation = UIHERO_SKL.UIHERO_ICHA AnimationMode = LOOP End ; --- dying ConditionState = DYING Animation = UIHERO_SKL.UIHERO_DTA Animation = UIHERO_SKL.UIHERO_DTB Animation = UIHERO_SKL.UIHERO_IDTA Animation = UIHERO_SKL.UIHERO_IDTB AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = UIHERO_SKL.UIHERO_ADTG21 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UIHERO_SKL.UIHERO_ADTG22 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UIHERO_SKL.UIHERO_ADTG23 AnimationMode = ONCE TransitionKey = None End ; --- falling ConditionState = FREEFALL Animation = UIHERO_SKL.UIHERO_PFL AnimationMode = LOOP TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = UIHERO_SKL.UIHERO_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = UIHERO_SKL.UIHERO_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = UIHERO_SKL.UIHERO_PTD AnimationMode = ONCE End TransitionState = TRANS_Chute TRANS_StandInjured Animation = UIHERO_SKL.UIHERO_PTD AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:JarmenKell Side = GLA EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) MaxSimultaneousOfType = 1 WeaponSet Conditions = None Weapon = PRIMARY CINE_GLAJarmenKellRifle Weapon = SECONDARY GLAJarmenKellVehiclePilotSniperRifle AutoChooseSources = PRIMARY NONE AutoChooseSources = SECONDARY NONE End ; WeaponSet ; Conditions = SNIPEVEHICLE ; Weapon = PRIMARY GLAJarmenKellVehiclePilotSniperRifle ; End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 225 ShroudClearingRange = 300 Prerequisites Object = GLABarracks Object = GLAPalace End BuildCost = 1500 BuildTime = 20.0 ;in seconds ExperienceValue = 50 50 100 150 ;Experience point value at each level ExperienceRequired = 0 100 200 400 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = GLAInfantryJarmenKellCommandSet ; *** AUDIO Parameters *** VoiceSelect = JarmenKellVoiceSelect VoiceMove = JarmenKellVoiceMove VoiceGuard = JarmenKellVoiceMove VoiceAttack = JarmenKellVoiceAttack VoiceFear = JarmenKellVoiceFear SoundDie = JarmenKellVoiceDie SoundDieFire = DieByFireGLA SoundDieToxin = DieByToxinGLA SoundStealthOn = StealthOn SoundStealthOff = StealthOff UnitSpecificSounds VoiceCreate = JarmenKellVoiceCreate VoiceSnipePilot = JarmenKellVoiceSnipe VoiceGarrison = JarmenKellVoiceGarrison VoiceEnter = JarmenKellVoiceMove VoiceEnterHostile = JarmenKellVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER STEALTH_GARRISON SCORE Body = ActiveBody ModuleTag_02 MaxHealth = 200.0 InitialHealth = 200.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL CINE_JarmenKellLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End Behavior = CommandButtonHuntUpdate ModuleTag_07 ; allows use of command button hunt script with this unit. End Behavior = WeaponBonusUpgrade ModuleTag_08 TriggeredBy = Upgrade_GLAAPBullets End Behavior = SquishCollide ModuleTag_09 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_14 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 10.0 GeometryMinorRadius = 10.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ ;Tunnel Fanatic ;Now called the RPG Trooper Object GLAInfantryTunnelDefender ; *** ART Parameters *** SelectPortrait = SURPG_L ButtonImage = SURPG UpgradeCameo1 = Upgrade_GLAAPRockets ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = UITunF_SKN IdleAnimation = UITunF_SKL.UITunF_STA 0 20 IdleAnimation = UITunF_SKL.UITunF_IDA IdleAnimation = UITunF_SKL.UITunF_IDB IdleAnimation = UITunF_SKL.UITunF_IDC AnimationMode = ONCE WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponFireFXBone = PRIMARY Muzzle WeaponLaunchBone = PRIMARY Muzzle End ConditionState = MOVING Animation = UITunF_SKL.UITunF_WKA 16 Animation = UITunF_SKL.UITunF_WKB 30 Animation = UITunF_SKL.UITunF_WKC 30 Animation = UITunF_SKL.UITunF_RNA 15 Animation = UITunF_SKL.UITunF_RNB 25 AnimationMode = LOOP ParticleSysBone = None InfantryDustTrails End ConditionState = DYING Animation = UITunF_SKL.UITunF_DTA Animation = UITunF_SKL.UITunF_DTB AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = UITunF_SKL.UITunF_ADTA1 Animation = UITunF_SKL.UITunF_ADTE1 Animation = UITunF_SKL.UITunF_ADTF1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UITunF_SKL.UITunF_ADTA2 Animation = UITunF_SKL.UITunF_ADTE2 Animation = UITunF_SKL.UITunF_ADTF2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UITunF_SKL.UITunF_ADTA3 Animation = UITunF_SKL.UITunF_ADTE3 Animation = UITunF_SKL.UITunF_ADTF3 AnimationMode = ONCE TransitionKey = None End ConditionState = FIRING_A Animation = UITunF_SKL.UITunF_ATA AnimationMode = ONCE TransitionKey = TRANS_START_FIRING End ConditionState = BETWEEN_FIRING_SHOTS_A Animation = UITunF_SKL.UITunF_STA AnimationMode = ONCE ; this is basically a trick: this guy has a nontrivial animation for firing, ; and a long recycle time between shots. we want him to finish his fire animation ; (unless he's ordered to do something else), so this is just a handy trick that ; says, "if the previous state had this transition key, allow it to finish before ; switching to us, if possible". WaitForStateToFinishIfPossible = TRANS_START_FIRING End AliasConditionState = RELOADING_A ConditionState = SPECIAL_CHEERING Animation = UITUNF_SKL.UITUNF_CHA AnimationMode = LOOP End End ; ***DESIGN parameters *** DisplayName = OBJECT:TunnelDefender Side = GLA EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY TunnelDefenderRocketWeapon End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 400 ; Prerequisites ; Object = GLATunnelNetwork ; End BuildCost = 300 BuildTime = 5.0 ;in seconds ExperienceValue = 20 20 40 60 ;Experience point value at each level ExperienceRequired = 0 100 200 400 ;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 = GLAInfantryTunnelDefenderCommandSet ; *** AUDIO Parameters *** VoiceSelect = RPGTrooperVoiceSelect VoiceMove = RPGTrooperVoiceMove VoiceGuard = RPGTrooperVoiceMove VoiceAttack = RPGTrooperVoiceAttack SoundDie = RPGTrooperVoiceDie SoundDieFire = DieByFireGLA SoundDieToxin = DieByToxinGLA VoiceFear = RPGTrooperVoiceFear UnitSpecificSounds VoiceCreate = RPGTrooperVoiceCreate VoiceGarrison = RPGTrooperVoiceGarrison VoiceEnter = RPGTrooperVoiceMove VoiceEnterHostile = RPGTrooperVoiceMove VoiceGetHealed = RPGTrooperVoiceMove 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 = 100.0 InitialHealth = 100.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL MissileDefenderLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End Behavior = SquishCollide ModuleTag_06 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_12 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End 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 ;------------------------------------------------------------------------------ ;***THESE UNITS ARE NOT SELECTABLE ANYMORE! To kill them, you must target ; the stinger site. If the weapon does particular types of damage, it'll ; kill guys inside first, then the site. Object GLAInfantryStingerSoldier ; *** ART Parameters *** SelectPortrait = SUStinger_L ButtonImage = SUStinger Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = UISmsd_SKN IdleAnimation = UISmsd_SKL.UISmsd_STA 0 45 IdleAnimation = UISmsd_SKL.UISmsd_IDA IdleAnimation = UISmsd_SKL.UISmsd_IDB IdleAnimation = UISmsd_SKL.UISmsd_IDC IdleAnimation = UISmsd_SKL.UISmsd_IDD AnimationMode = ONCE WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponFireFXBone = PRIMARY Exhaust WeaponLaunchBone = PRIMARY Muzzle WeaponFireFXBone = SECONDARY Exhaust WeaponLaunchBone = SECONDARY Muzzle WaitForStateToFinishIfPossible = TRANS_START_FIRING End AliasConditionState = BETWEEN_FIRING_SHOTS_A AliasConditionState = BETWEEN_FIRING_SHOTS_B AliasConditionState = RELOADING_A AliasConditionState = RELOADING_B ConditionState = MOVING Animation = UISmsd_SKL.UISmsd_WKB 25 AnimationMode = LOOP End ConditionState = DYING Animation = UISmsd_SKL.UISmsd_DTA Animation = UISmsd_SKL.UISmsd_DTB AnimationMode = ONCE TransitionKey = TRANS_Dying WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish End TransitionState = TRANS_Dying TRANS_Flailing Animation = UISmsd_SKL.UISmsd_ADTF1 Animation = UISmsd_SKL.UISmsd_ADTG21 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UISmsd_SKL.UISmsd_ADTF2 Animation = UISmsd_SKL.UISmsd_ADTG22 AnimationMode = LOOP TransitionKey = TRANS_Flailing WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish End ConditionState = DYING EXPLODED_BOUNCING Animation = UISmsd_SKL.UISmsd_ADTF3 Animation = UISmsd_SKL.UISmsd_ADTG23 AnimationMode = ONCE TransitionKey = None WaitForStateToFinishIfPossible = NONE ; We got a Key from Default state, but Death does not need to wait for firing to finish End ConditionState = FIRING_A Animation = UISmsd_SKL.UISmsd_ATA AnimationMode = ONCE TransitionKey = TRANS_START_FIRING End ; AliasConditionState is a new keyword that says, ; "give me another ConditionState exactly like the previous ; one, except with different conditions". Useful when you ; have several states that are the same with only different condition bits. ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.). AliasConditionState = MOVING FIRING_A AliasConditionState = MOVING RELOADING_A ConditionState = FIRING_B Animation = UISmsd_SKL.UISmsd_ATB AnimationMode = ONCE TransitionKey = TRANS_START_FIRINGB End ; AliasConditionState is a new keyword that says, ; "give me another ConditionState exactly like the previous ; one, except with different conditions". Useful when you ; have several states that are the same with only different condition bits. ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.). AliasConditionState = MOVING FIRING_B AliasConditionState = MOVING RELOADING_B ConditionState = SPECIAL_CHEERING Animation = UISMSD_SKL.UISMSD_CHA AnimationMode = LOOP End End ; ***DESIGN parameters *** DisplayName = OBJECT:StingerSoldier Side = GLA EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY StingerMissileWeapon AutoChooseSources = PRIMARY FROM_PLAYER FROM_AI FROM_SCRIPT Weapon = SECONDARY StingerMissileWeaponAir PreferredAgainst = SECONDARY BALLISTIC_MISSILE AIRCRAFT End ArmorSet Conditions = None Armor = StingerSoldierArmor ;Extra protection due to being enclosed by the stinger site. DamageFX = None End VisionRange = 400.0 ShroudClearingRange = 400 Prerequisites Object = GLABarracks End BuildCost = 100 BuildTime = 1.0 ;in seconds CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles ;I don't know what is right, but this is SO wrong. ; CommandSet = GLAInfantryRebelCommandSet ; *** AUDIO Parameters *** VoiceSelect = StingerSoldierVoiceSelect VoiceMove = StingerSoldierVoiceMove VoiceAttack = StingerSoldierVoiceAttack SoundDie = StingerSoldierVoiceDie SoundDieFire = DieByFireGLA SoundDieToxin = DieByToxinGLA ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER CLICK_THROUGH SPAWNS_ARE_THE_WEAPONS Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = StealthDetectorUpdate ModuleTag_16 DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec) DetectionRange = 200 ;Dustin, enable this for independant balancing! CanDetectWhileGarrisoned = No ;Garrisoned means being in a structure that you units can shoot out of. CanDetectWhileContained = No ;Contained means being in a transport or tunnel network. End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS MoodAttackCheckRate = 250 End Locomotor = SET_NORMAL BasicHumanLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End Behavior = SlavedUpdate ModuleTag_06 ;nothing End ; Behavior = ProneUpdate ModuleTag_07 ; DamageToFramesRatio = 5.0 ; I take 20 damage, I go prone for 100. For this guy, if any of my buds or my building take damage too (I have SlaveUpdate + ProneUpdate) Prone may get cut by itself though ; End Behavior = SquishCollide ModuleTag_08 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_14 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 10.0 GeometryMinorRadius = 10.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14 ShadowSizeY = 14 ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object CINE_GLAInfantryStingerSoldier ; *** ART Parameters *** SelectPortrait = SUStinger_L ButtonImage = SUStinger Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = UISmsd_SKN IdleAnimation = UISmsd_SKL.UISmsd_STA 0 45 IdleAnimation = UISmsd_SKL.UISmsd_IDA IdleAnimation = UISmsd_SKL.UISmsd_IDB IdleAnimation = UISmsd_SKL.UISmsd_IDC IdleAnimation = UISmsd_SKL.UISmsd_IDD AnimationMode = ONCE WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponFireFXBone = PRIMARY Exhaust WeaponLaunchBone = PRIMARY Muzzle WeaponFireFXBone = SECONDARY Exhaust WeaponLaunchBone = SECONDARY Muzzle WaitForStateToFinishIfPossible = TRANS_START_FIRING End AliasConditionState = BETWEEN_FIRING_SHOTS_A AliasConditionState = BETWEEN_FIRING_SHOTS_B AliasConditionState = RELOADING_A AliasConditionState = RELOADING_B ConditionState = MOVING Animation = UISmsd_SKL.UISmsd_WKB 25 AnimationMode = LOOP End ConditionState = DYING Animation = UISmsd_SKL.UISmsd_DTA Animation = UISmsd_SKL.UISmsd_DTB AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = UISmsd_SKL.UISmsd_ADTF1 Animation = UISmsd_SKL.UISmsd_ADTG21 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UISmsd_SKL.UISmsd_ADTF2 Animation = UISmsd_SKL.UISmsd_ADTG22 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UISmsd_SKL.UISmsd_ADTF3 Animation = UISmsd_SKL.UISmsd_ADTG23 AnimationMode = ONCE TransitionKey = None End ConditionState = FIRING_A Animation = UISmsd_SKL.UISmsd_ATA AnimationMode = ONCE TransitionKey = TRANS_START_FIRING End ; AliasConditionState is a new keyword that says, ; "give me another ConditionState exactly like the previous ; one, except with different conditions". Useful when you ; have several states that are the same with only different condition bits. ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.). AliasConditionState = MOVING FIRING_A AliasConditionState = MOVING RELOADING_A ConditionState = FIRING_B Animation = UISmsd_SKL.UISmsd_ATB AnimationMode = ONCE TransitionKey = TRANS_START_FIRINGB End ; AliasConditionState is a new keyword that says, ; "give me another ConditionState exactly like the previous ; one, except with different conditions". Useful when you ; have several states that are the same with only different condition bits. ; these aliases handle the moving-between-shots case. (we can't actually move-and-fire at the same time.). AliasConditionState = MOVING FIRING_B AliasConditionState = MOVING RELOADING_B ConditionState = SPECIAL_CHEERING Animation = UISMSD_SKL.UISMSD_CHA AnimationMode = LOOP End End ; ***DESIGN parameters *** DisplayName = OBJECT:StingerSoldier Side = GLA EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY CINE_StingerMissileWeapon AutoChooseSources = PRIMARY FROM_PLAYER FROM_AI FROM_SCRIPT Weapon = SECONDARY StingerMissileWeaponAir PreferredAgainst = SECONDARY BALLISTIC_MISSILE AIRCRAFT End ArmorSet Conditions = None Armor = StingerSoldierArmor ;Extra protection due to being enclosed by the stinger site. DamageFX = None End VisionRange = 400.0 ShroudClearingRange = 400 Prerequisites Object = GLABarracks End BuildCost = 100 BuildTime = 1.0 ;in seconds CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles ;I don't know what is right, but this is SO wrong. ; CommandSet = GLAInfantryRebelCommandSet ; *** AUDIO Parameters *** VoiceSelect = StingerSoldierVoiceSelect VoiceMove = StingerSoldierVoiceMove VoiceAttack = StingerSoldierVoiceAttack SoundDie = StingerSoldierVoiceDie SoundDieFire = DieByFireGLA SoundDieToxin = DieByToxinGLA ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER CLICK_THROUGH Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = StealthDetectorUpdate ModuleTag_16 DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec) DetectionRange = 200 ;Dustin, enable this for independant balancing! CanDetectWhileGarrisoned = No ;Garrisoned means being in a structure that you units can shoot out of. CanDetectWhileContained = No ;Contained means being in a transport or tunnel network. End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes MoodAttackCheckRate = 250 End Locomotor = SET_NORMAL BasicHumanLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End Behavior = SlavedUpdate ModuleTag_06 ;nothing End ; Behavior = ProneUpdate ModuleTag_07 ; DamageToFramesRatio = 5.0 ; I take 20 damage, I go prone for 100. For this guy, if any of my buds or my building take damage too (I have SlaveUpdate + ProneUpdate) Prone may get cut by itself though ; End Behavior = SquishCollide ModuleTag_08 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_14 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 10.0 GeometryMinorRadius = 10.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14 ShadowSizeY = 14 ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object GLAInfantryTerrorist ; *** ART Parameters *** SelectPortrait = SUTerrorist_L ButtonImage = SUTerrorist ;UpgradeCameo1 = NONE ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = UITRST_SKN IdleAnimation = UITRST_SKL.UITRST_STA 0 25 ;Regular spice animations IdleAnimation = UITRST_SKL.UITRST_IDA IdleAnimation = UITRST_SKL.UITRST_IDB AnimationMode = ONCE TransitionKey = TRANS_Stand End ConditionState = REALLYDAMAGED Animation = UITRST_SKL.UITRST_STA AnimationMode = LOOP TransitionKey = TRANS_Stand End ConditionState = FREEFALL Animation = UITRST_SKL.UITRST_PFL AnimationMode = LOOP TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = UITRST_SKL.UITRST_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING ConditionState = MOVING Animation = UITRST_SKL.UITRST_RNA 15 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING REALLYDAMAGED ConditionState = ATTACKING MOVING Animation = UITRST_SKL.UITRST_RNB 10 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None End AliasConditionState = ATTACKING MOVING REALLYDAMAGED ConditionState = PREATTACK_A Animation = UITRST_SKL.UITRST_ATA AnimationMode = ONCE End AliasConditionState = PREATTACK_A MOVING ConditionState = DYING Animation = UITRST_SKL.UITRST_DTA Animation = UITRST_SKL.UITRST_DTC AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = UITRST_SKL.UITRST_ADTE1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UITRST_SKL.UITRST_ADTE2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UITRST_SKL.UITRST_ADTE3 AnimationMode = ONCE TransitionKey = None End ConditionState = SPECIAL_CHEERING Animation = UITRST_SKL.UITRST_CHA AnimationMode = LOOP End TransitionState = TRANS_Falling TRANS_Chute Animation = UITRST_SKL.UITRST_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = UITRST_SKL.UITRST_PTD AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:Terrorist Side = GLA EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None ;Kill himself so we can use FireWeaponWhenDead to fire the real weapon -- and use UNRESISTABLE ;damage to do ini logic for type of death to play -- unresistable for success. Weapon = PRIMARY TerroristSuicideWeapon End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 200 Prerequisites Object = GLABarracks End BuildCost = 200 BuildTime = 5.0 ;in seconds CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = GLAInfantryTerroristCommandSet ; *** AUDIO Parameters *** VoiceSelect = TerroristVoiceSelect VoiceMove = TerroristVoiceMove VoiceAttack = TerroristVoiceAttack SoundDie = TerroristVoiceDie SoundDieFire = DieByFireGLA SoundDieToxin = DieByToxinGLA VoiceFear = TerroristVoiceFear VoiceGuard = TerroristVoiceMove UnitSpecificSounds VoiceGarrison = TerroristVoiceMove VoiceCreate = TerroristVoiceCreate VoiceEnter = TerroristVoiceEnter VoiceEnterHostile = TerroristVoiceEnterHostile VoiceGetHealed = TerroristVoiceMove 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 ExperienceValue = 20 20 20 20 ; Experience point value at each level Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL FastHumanLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End ;Kris Behavior = ConvertToCarBombCrateCollide ModuleTag_06 RequiredKindOf = VEHICLE ; we only give our bonus to VEHICLEs we collide with ;ForbiddenKindOf = TRANSPORT DOZER ; but not to TRANSPORTs or DOZERs! FXList = FX_MakeCarBombSuccess End Behavior = SquishCollide ModuleTag_07 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -SUICIDED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie End ;POISON_DEATHS POISON_DEATHS POISON_DEATHS POISON_DEATHS Behavior = SlowDeathBehavior ModuleTag_Death02 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ;POISON_DEATHS POISON_DEATHS POISON_DEATHS POISON_DEATHS ; I have just pulled my ripcord, and this ain't no parachute! Behavior = SlowDeathBehavior ModuleTag_Death03 DeathTypes = NONE +SUICIDED SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_TerroristExplode FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = FireWeaponWhenDeadBehavior ModuleTag_Death04 DeathWeapon = SuicideDynamitePack StartsActive = Yes ; turned on by upgrade DeathTypes = NONE +SUICIDED +CRUSHED +SPLATTED +LASERED +BURNED +EXPLODED End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_14 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 10.0 GeometryMinorRadius = 10.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ Object GLAInfantryAngryMobNexus ;**** ART Parameters ************************** SelectPortrait = SUAngryMob_L ButtonImage = SUAngryMob UpgradeCameo1 = Upgrade_GLAArmTheMob ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = None ; Model = AVBomber_B End End ;****DESIGN parameters ************************** DisplayName = OBJECT:AngryMobNexus Side = GLA RadarPriority = NOT_ON_RADAR EditorSorting = INFANTRY TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY GLAAngryMobNexusHarmlessWeapon Weapon = SECONDARY GLAAngryMobNexusHarmlessWeapon Weapon = TERTIARY GLAAngryMobNexusHarmlessWeapon End ArmorSet Conditions = None Armor = InvulnerableAllArmor DamageFX = None End BuildCost = 800 BuildTime = 15.0 ;in seconds VisionRange = 150 ; it can scout for the spawn ShroudClearingRange = 0 Prerequisites Object = GLABarracks Object = GLAPalace End ExperienceValue = 5 5 5 5 ;Experience point value at each level IsTrainable = No CommandSet = GLAInfantryAngryMobCommandSet; ;**** AUDIO Parameters ***************************** VoiceSelect = AngryMobVoiceSelect VoiceMove = AngryMobVoiceMove VoiceGuard = AngryMobVoiceMove VoiceAttack = AngryMobVoiceAttack SoundMoveStart = NoSound SoundAmbient = AngryMobAmbientLoop SoundAmbientRubble = NoSound SoundDie = CivilianArabMaleDie SoundDieFire = DieByFireGLA SoundDieToxin = DieByToxinGLA UnitSpecificSounds VoiceCreate = AngryMobVoiceCreate End ;**** ENGINEERING Parameters ****************************** RadarPriority = UNIT KindOf = PRELOAD CAN_ATTACK INFANTRY MOB_NEXUS ATTACK_NEEDS_LINE_OF_SIGHT NO_COLLIDE SELECTABLE SCORE Body = ImmortalBody ModuleTag_02 MaxHealth = 99999.0 InitialHealth = 99999.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL AngryMobNexusLocomotor ;Important! don't make the Nexus any faster! Locomotor = SET_WANDER AngryMobNexusLocomotor ;Important! don't make the Nexus any faster! Locomotor = SET_PANIC AngryMobNexusLocomotor ;Important! don't make the Nexus any faster! ; Locomotor = SET_NORMAL WanderHumanLocomotor ;Important! don't make the Nexus any faster! ; Locomotor = SET_WANDER WanderHumanLocomotor ;Important! don't make the Nexus any faster! ; Locomotor = SET_PANIC WanderHumanLocomotor ;Important! don't make the Nexus any faster! Behavior = PhysicsBehavior ModuleTag_04 Mass = 50.0 End Behavior = SpawnBehavior ModuleTag_05 SpawnNumber = 10 SpawnReplaceDelay = 30000 ; 30 seconds SpawnTemplateName = GLAInfantryAngryMobPistol01 ; Aladdin SpawnTemplateName = GLAInfantryAngryMobRock02 ; Woman in the Gypsy Costume SpawnTemplateName = GLAInfantryAngryMobMolotov02 ; The Lady with the hot sauce SpawnTemplateName = GLAInfantryAngryMobPistol03 ; Skinny Guy with the Green Beret SpawnTemplateName = GLAInfantryAngryMobRock04 ; Fat guy with the tank top SpawnTemplateName = GLAInfantryAngryMobMolotov02 ; The Lady with the hot sauce SpawnTemplateName = GLAInfantryAngryMobPistol05 ; The robed dude with the Man-Veil ExitByBudding = Yes;! InitialBurst = 5 ; the first set of 5 will not delay OneShot = No AggregateHealth = Yes End Behavior = QueueProductionExitUpdate ModuleTag_06 UnitCreatePoint = X: 0.0 Y: 0.0 Z:0.0 NaturalRallyPoint = X: 0.0 Y: 0.0 Z:0.0 ExitDelay = 5000 ; 5 sec InitialBurst = 5 ; the first set of 5 will not delay End Behavior = DestroyDie ModuleTag_07 DeathTypes = ALL End Geometry = CYLINDER GeometryMajorRadius = 1.0 GeometryMinorRadius = 1.0 GeometryHeight = 1.0 GeometryIsSmall = Yes Shadow = SHADOW_VOLUME End ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ Object GLAInfantryAngryMobPistol01 ;**** ART Parameters *** Draw = W3DModelDraw DrawTag_01 OkToChangeModelColor = Yes ; WHILE CARRYING PISTOL ;--------------------------------------------------------- DefaultConditionState ;Idle with Pistol Holstered Model = UIMOB01_SKN IdleAnimation = UIMOB01_SKL.UIMOB01_IDA1 0 12 IdleAnimation = UIMOB01_SKL.UIMOB01_IDA2 0 5 IdleAnimation = UIMOB01_SKL.UIMOB01_CHA 0 5 IdleAnimation = UIMOB01_SKL.UIMOB01_STA 0 5 AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_A WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponFireFXBone = SECONDARY MuzzleAK WeaponMuzzleFlash = SECONDARY MuzzleAKFX End ; Drawing pistol ConditionState = PREATTACK_A Animation = UIMOB01_SKL.UIMOB01_ATA1_ST ; start firing AnimationMode = ONCE End AliasConditionState = PREATTACK_A FIRING_A AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A ; Firing pistol ConditionState = FIRING_A Animation = UIMOB01_SKL.UIMOB01_ATA1_LP ; looping firing AnimationMode = LOOP TransitionKey = TRANS_FIRING_A End AliasConditionState = BETWEEN_FIRING_SHOTS_A ConditionState = RELOADING_A Animation = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing AnimationMode = ONCE End ; This transition allows him to put his gun away when he's finished attacking. TransitionState = TRANS_FIRING_A TRANS_STAND_A Animation = UIMOB01_SKL.UIMOB01_ATA1_ED ; end firing AnimationMode = ONCE End ConditionState = MOVING Animation = UIMOB01_SKL.UIMOB01_RNA AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING RELOADING_A AliasConditionState = MOVING PREATTACK_A AliasConditionState = MOVING FIRING_A AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A AliasConditionState = MOVING RELOADING_C RELOADING_A AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A ConditionState = DYING Animation = UIMOB01_SKL.UIMOB01_DA1 Animation = UIMOB01_SKL.UIMOB01_DA2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING Animation = UIMOB01_SKL.UIMOB01_CHA AnimationMode = ONCE End ;-------------------------------------------------------- ; TRANSITION FROM PISTOL TO AK47 TransitionState = TRANS_STAND_A TRANS_STAND_AK Animation = UIMOB01_SKL.UIMOB01_TA-D AnimationMode = ONCE End ; WHILE CARRYING AK47 ;--------------------------------------------------------- ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung Model = UIMOB01_SKN IdleAnimation = UIMOB01_SKL.UIMOB01_IDD1 0 6 IdleAnimation = UIMOB01_SKL.UIMOB01_IDD2 0 6 IdleAnimation = UIMOB01_SKL.UIMOB01_CHD 0 6 IdleAnimation = UIMOB01_SKL.UIMOB01_STD AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_AK End ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB01_SKL.UIMOB01_RND AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING_AK End ConditionState = DYING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB01_SKL.UIMOB01_DD1 Animation = UIMOB01_SKL.UIMOB01_DD2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB01_SKL.UIMOB01_CHD AnimationMode = ONCE End ; Drawing AK47 ConditionState = PREATTACK_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB01_SKL.UIMOB01_ATD1_ST ; start firing AnimationMode = ONCE End AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE ; Firing Gun ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB01_SKL.UIMOB01_ATD1_LP ; looping firing AnimationMode = LOOP WeaponFireFXBone = SECONDARY MuzzleAK WeaponMuzzleFlash = SECONDARY MuzzleAKFX TransitionKey = TRANS_FIRING_AK End AliasConditionState = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE ConditionState = RELOADING_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing AnimationMode = ONCE End ; This transition allows him to put his gun away when he's finished attacking. TransitionState = TRANS_FIRING_AK TRANS_STAND_AK Animation = UIMOB01_SKL.UIMOB01_ATD1_ED ; end firing AnimationMode = ONCE End ; ;Throwing bottle---------------------------------------------------------------- ; ConditionState = PREATTACK_C ; Animation = UIMOB01_SKL.UIMOB01_ATCA_BF ; the wind up ; End ; AliasConditionState = PREATTACK_C FIRING_A ; AliasConditionState = PREATTACK_C RELOADING_A ; AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A ; ; ConditionState = FIRING_C ; Animation = UIMOB01_SKL.UIMOB01_ATCA_AF ; the release and follow-thru ; TransitionKey = TRANS_THROW ; End ; AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A ; ; ConditionState RELOADING_C ; Animation =UIMOB01_SKL.UIMOB01_IDA1 ; WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru ; End ; AliasConditionState = RELOADING_C RELOADING_A ; AliasConditionState = RELOADING_C FIRING_A ; AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A ; TransitionState = TRANSXXX TRANS_THROW ; Animation = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway gun and take out bottle ; End ; TransitionState = TRANS_THROW TRANS_FIRING_A ; Animation = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get PISTOL ; End ; TransitionState = TRANSXXXAK TRANS_THROW ; Animation = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway AK and take out bottle ; End ; TransitionState = TRANS_THROW TRANS_FIRING_AK ; Animation = UIMOB01_SKL.UIMOB01_XXXXXXXXputaway bottle and get AK ; End ;-------------------------------------------------------- TransitionState = TRANS_Dying TRANS_Flailing Animation = UIMOB01_SKL.UIMOB01_A_ADTE1 Animation = UIMOB01_SKL.UIMOB01_D_ADTE1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UIMOB01_SKL.UIMOB01_A_ADTE2 Animation = UIMOB01_SKL.UIMOB01_D_ADTE2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UIMOB01_SKL.UIMOB01_A_ADTE3 Animation = UIMOB01_SKL.UIMOB01_D_ADTE3 AnimationMode = ONCE TransitionKey = None End End ;**** DESIGN parameters *** DisplayName = OBJECT:AngryMob Side = GLA EditorSorting = INFANTRY TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY GLAAngryMobPistolWeapon End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY GLAAngryMobAK47NoDamageWeapon ; for atttacking in AK-proof conditions Weapon = SECONDARY GLAAngryMobAK47Weapon End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 150 Prerequisites Object = GLABarracks End BuildCost = 100 BuildTime = 0.0 ExperienceValue = 5 5 5 5 ;Experience point value at each level ExperienceRequired = 0 150 450 900 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles ; *** AUDIO Parameters *** VoiceSelect = NoSound VoiceMove = NoSound VoiceAttack = NoSound SoundDie = CivilianArabMaleDie ;**** ENGINEERING Parameters *** ;MOB01 RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI ;NO_COLLIDE ;Lorenzen disables Body = ActiveBody BodyTag_01 MaxHealth = 50.0 InitialHealth = 50.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Behavior = MobMemberSlavedUpdate ModuleTag_04 MustCatchUpRadius = 40 NoNeedToCatchUpRadius = 15 Squirrelliness = 0.05 CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames End Locomotor = SET_NORMAL AngryMobNormalLocomotor Locomotor = SET_WANDER AngryMobWanderLocomotor Locomotor = SET_PANIC AngryMobPanicLocomotor Behavior = PhysicsBehavior BehaviorTag_01 Mass = 5.0 End Behavior = SquishCollide ModuleTag_08 ;nothing End Behavior = WeaponSetUpgrade UpgradeTag_01 TriggeredBy = Upgrade_GLAArmTheMob End ; --- begin Death modules --- Behavior = SlowDeathBehavior DeathTag_01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie End Behavior = SlowDeathBehavior DeathTag_02 DeathTypes = NONE +CRUSHED +SPLATTED SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDieCrushed End Behavior = SlowDeathBehavior DeathTag_03 DeathTypes = NONE +EXPLODED SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior DeathTag_04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior DeathTag_05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_ToxicInfantry End ; --- end Death modules --- Behavior = PoisonedBehavior BehaviorTag_02 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 4.0 ; very thin GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ Object GLAInfantryAngryMobRock02 ;**** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; WHILE CARRYING ROCK ;--------------------------------------------------------- DefaultConditionState Model = UIMOB02_SKN IdleAnimation = UIMOB02_SKL.UIMOB02_IDB1 0 12 IdleAnimation = UIMOB02_SKL.UIMOB02_IDB2 0 5 IdleAnimation = UIMOB02_SKL.UIMOB02_CHB 0 5 IdleAnimation = UIMOB02_SKL.UIMOB02_STB 0 12 AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_A ;WeaponFireFXBone = PRIMARY "UIMOB02 R HAND" ;WeaponMuzzleFlash = PRIMARY "UIMOB02 R HAND" WeaponFireFXBone = SECONDARY MuzzleAK WeaponMuzzleFlash = SECONDARY MuzzleAKFX End ; Drawing rock ConditionState = PREATTACK_A Animation = UIMOB02_SKL.UIMOB02_ATB2_BF ; wind up AnimationMode = ONCE End AliasConditionState = PREATTACK_A FIRING_A AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A ; throwing rock ConditionState = FIRING_A Animation = UIMOB02_SKL.UIMOB02_ATB1_AF ; throw Animation = UIMOB02_SKL.UIMOB02_ATB2_AF ; throw AnimationMode = ONCE TransitionKey = TRANS_FIRING_A End ConditionState = BETWEEN_FIRING_SHOTS_A Animation = UIMOB02_SKL.UIMOB02_STB AnimationMode = ONCE ; this is basically a trick: this guy has a nontrivial animation for firing, ; and a long recycle time between shots. we want him to finish his fire animation ; (unless he's ordered to do something else), so this is just a handy trick that ; says, "if the previous state had this transition key, allow it to finish before ; switching to us, if possible". WaitForStateToFinishIfPossible = TRANS_FIRING_A End AliasConditionState = RELOADING_A ConditionState = MOVING Animation = UIMOB02_SKL.UIMOB02_RNB AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING ParticleSysBone = None InfantryDustTrails End ConditionState = DYING Animation = UIMOB02_SKL.UIMOB02_DB1 Animation = UIMOB02_SKL.UIMOB02_DB2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING Animation = UIMOB02_SKL.UIMOB02_CHB Flags = RANDOMSTART AnimationMode = LOOP End ;-------------------------------------------------------- ; TRANSITION FROM PISTOL TO AK47 TransitionState = TRANS_STAND_A TRANS_STAND_AK Animation = UIMOB02_SKL.UIMOB02_TB-D AnimationMode = ONCE End ; WHILE CARRYING AK47 ;--------------------------------------------------------- ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung Model = UIMOB02_SKN IdleAnimation = UIMOB02_SKL.UIMOB02_IDD1 0 6 IdleAnimation = UIMOB02_SKL.UIMOB02_IDD2 0 6 IdleAnimation = UIMOB02_SKL.UIMOB02_CHD 0 6 IdleAnimation = UIMOB02_SKL.UIMOB02_STD AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_AK End ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB02_SKL.UIMOB02_RND AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING_AK End ConditionState = DYING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB02_SKL.UIMOB02_DD1 Animation = UIMOB02_SKL.UIMOB02_DD2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB02_SKL.UIMOB02_CHD AnimationMode = ONCE End ; Drawing AK47 ConditionState = PREATTACK_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB02_SKL.UIMOB02_ATD1_ST ; start firing AnimationMode = ONCE End AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE ; Firing Gun ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB02_SKL.UIMOB02_ATD1_LP ; looping firing AnimationMode = LOOP WeaponFireFXBone = SECONDARY MuzzleAK WeaponMuzzleFlash = SECONDARY MuzzleAKFX TransitionKey = TRANS_FIRING_AK End AliasConditionState = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE ConditionState = RELOADING_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB02_SKL.UIMOB02_ATD1_ED ; end firing AnimationMode = ONCE End ; This transition allows him to put his gun away when he's finished attacking. TransitionState = TRANS_FIRING_AK TRANS_STAND_AK Animation = UIMOB02_SKL.UIMOB02_ATD1_ED ; end firing AnimationMode = ONCE End TransitionState = TRANS_Dying TRANS_Flailing Animation = UIMOB02_SKL.UIMOB02_B_ADTA1 Animation = UIMOB02_SKL.UIMOB02_D_ADTA1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UIMOB02_SKL.UIMOB02_B_ADTA2 Animation = UIMOB02_SKL.UIMOB02_D_ADTA2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UIMOB02_SKL.UIMOB02_B_ADTA3 Animation = UIMOB02_SKL.UIMOB02_D_ADTA3 AnimationMode = ONCE TransitionKey = None End End ;**** DESIGN parameters *** DisplayName = OBJECT:AngryMob Side = GLA EditorSorting = INFANTRY TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY GLAAngryMobRockProjectileWeapon End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY GLAAngryMobAK47NoDamageWeapon ; for atttacking in AK-proof conditions Weapon = SECONDARY GLAAngryMobAK47Weapon End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 150 Prerequisites Object = GLABarracks End BuildCost = 100 BuildTime = 0.0 ExperienceValue = 5 5 5 5 ;Experience point value at each level ExperienceRequired = 0 150 450 900 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles ; *** AUDIO Parameters *** VoiceSelect = NoSound VoiceMove = NoSound VoiceAttack = NoSound SoundDie = CivilianArabFemaleDie ;**** ENGINEERING Parameters *** ;MOB02 RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI ;NO_COLLIDE ;Lorenzen disables Body = ActiveBody BodyTag_01 MaxHealth = 50.0 InitialHealth = 50.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Behavior = MobMemberSlavedUpdate ModuleTag_04 MustCatchUpRadius = 40 NoNeedToCatchUpRadius = 15 Squirrelliness = 0.05 CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames End Locomotor = SET_NORMAL AngryMobNormalLocomotor Locomotor = SET_WANDER AngryMobWanderLocomotor Locomotor = SET_PANIC AngryMobPanicLocomotor Behavior = PhysicsBehavior ModuleTag_05 Mass = 5.0 End Behavior = SquishCollide ModuleTag_08 ;nothing End Behavior = WeaponSetUpgrade UpgradeTag_01 TriggeredBy = Upgrade_GLAArmTheMob End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_ToxicInfantry End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_13 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 4.0 ; very thin GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ObjectReskin GLAInfantryAngryMobPistol03 GLAInfantryAngryMobPistol01 ;**** ART Parameters *** Draw = W3DModelDraw DrawTag_01 OkToChangeModelColor = Yes ; WHILE CARRYING PISTOL ;--------------------------------------------------------- DefaultConditionState ;Idle with Pistol Holstered Model = UIMOB03_SKN IdleAnimation = UIMOB03_SKL.UIMOB03_IDA1 0 12 IdleAnimation = UIMOB03_SKL.UIMOB03_IDA2 0 5 IdleAnimation = UIMOB03_SKL.UIMOB03_CHA 0 5 IdleAnimation = UIMOB03_SKL.UIMOB03_STA 0 5 AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_A WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponFireFXBone = SECONDARY MuzzleAK WeaponMuzzleFlash = SECONDARY MuzzleAKFX WeaponFireFXBone = TERTIARY "UIMOB03 R HAND" End ; Drawing pistol ConditionState = PREATTACK_A Animation = UIMOB03_SKL.UIMOB03_ATA1_ST ; start firing AnimationMode = ONCE End AliasConditionState = PREATTACK_A FIRING_A AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A ; Firing pistol ConditionState = FIRING_A Animation = UIMOB03_SKL.UIMOB03_ATA1_LP ; looping firing AnimationMode = LOOP TransitionKey = TRANS_FIRING_A End AliasConditionState = BETWEEN_FIRING_SHOTS_A ConditionState = RELOADING_A Animation = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing AnimationMode = ONCE End ; This transition allows him to put his gun away when he's finished attacking. TransitionState = TRANS_FIRING_A TRANS_STAND_A Animation = UIMOB03_SKL.UIMOB03_ATA1_ED ; end firing AnimationMode = ONCE End ConditionState = MOVING Animation = UIMOB03_SKL.UIMOB03_RNA AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING RELOADING_A AliasConditionState = MOVING PREATTACK_A AliasConditionState = MOVING FIRING_A AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A AliasConditionState = MOVING RELOADING_C RELOADING_A AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A ConditionState = DYING Animation = UIMOB03_SKL.UIMOB03_DA1 Animation = UIMOB03_SKL.UIMOB03_DA2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING Animation = UIMOB03_SKL.UIMOB03_CHA AnimationMode = ONCE End ;-------------------------------------------------------- ; TRANSITION FROM PISTOL TO AK47 TransitionState = TRANS_STAND_A TRANS_STAND_AK Animation = UIMOB03_SKL.UIMOB03_TA-D AnimationMode = ONCE End ; WHILE CARRYING AK47 ;--------------------------------------------------------- ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung Model = UIMOB03_SKN IdleAnimation = UIMOB03_SKL.UIMOB03_IDD1 0 6 IdleAnimation = UIMOB03_SKL.UIMOB03_IDD2 0 6 IdleAnimation = UIMOB03_SKL.UIMOB03_CHD 0 6 IdleAnimation = UIMOB03_SKL.UIMOB03_STD AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_AK End ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB03_SKL.UIMOB03_RND AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING_AK End ConditionState = DYING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB03_SKL.UIMOB03_DD1 Animation = UIMOB03_SKL.UIMOB03_DD2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB03_SKL.UIMOB03_CHD AnimationMode = ONCE End ; Drawing AK47 ConditionState = PREATTACK_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB03_SKL.UIMOB03_ATD_ST ; start firing AnimationMode = ONCE End AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE ; Firing Gun ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB03_SKL.UIMOB03_ATD_LP ; looping firing AnimationMode = LOOP WeaponFireFXBone = SECONDARY MuzzleAK WeaponMuzzleFlash = SECONDARY MuzzleAKFX TransitionKey = TRANS_FIRING_AK End AliasConditionState = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE ConditionState = RELOADING_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB03_SKL.UIMOB03_ATD_ED ; end firing AnimationMode = ONCE End ; This transition allows him to put his gun away when he's finished attacking. TransitionState = TRANS_FIRING_AK TRANS_STAND_AK Animation = UIMOB03_SKL.UIMOB03_ATD_ED ; end firing AnimationMode = ONCE End ; ;Throwing bottle---------------------------------------------------------------- ; ConditionState = PREATTACK_C ; Animation = UIMOB03_SKL.UIMOB03_ATCA_BF ; the wind up ; End ; AliasConditionState = PREATTACK_C FIRING_A ; AliasConditionState = PREATTACK_C RELOADING_A ; AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A ; ; ConditionState = FIRING_C ; Animation = UIMOB03_SKL.UIMOB03_ATCA_AF ; the release and follow-thru ; TransitionKey = TRANS_THROW ; End ; AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A ; ; ConditionState RELOADING_C ; Animation =UIMOB03_SKL.UIMOB03_IDA1 ; WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru ; ; End ; AliasConditionState = RELOADING_C RELOADING_A ; AliasConditionState = RELOADING_C FIRING_A ; AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A ; TransitionState = TRANSXXX TRANS_THROW ; Animation = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway gun and take out bottle ; End ; TransitionState = TRANS_THROW TRANS_FIRING_A ; Animation = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get PISTOL ; End ; TransitionState = TRANSXXXAK TRANS_THROW ; Animation = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway AK and take out bottle ; End ; TransitionState = TRANS_THROW TRANS_FIRING_AK ; Animation = UIMOB03_SKL.UIMOB03_XXXXXXXXputaway bottle and get AK ; End ;-------------------------------------------------------- TransitionState = TRANS_Dying TRANS_Flailing Animation = UIMOB03_SKL.UIMOB03_A_ADTD1 Animation = UIMOB03_SKL.UIMOB03_D_ADTD1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UIMOB03_SKL.UIMOB03_A_ADTD2 Animation = UIMOB03_SKL.UIMOB03_D_ADTD2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UIMOB03_SKL.UIMOB03_A_ADTD3 Animation = UIMOB03_SKL.UIMOB03_D_ADTD3 AnimationMode = ONCE TransitionKey = None End End Geometry = CYLINDER GeometryMajorRadius = 3.0 ; very thin GeometryMinorRadius = 3.0 ; very thinD GeometryHeight = 12.0 GeometryIsSmall = Yes End ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ObjectReskin GLAInfantryAngryMobRock04 GLAInfantryAngryMobRock02 ;**** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; WHILE CARRYING ROCK ;--------------------------------------------------------- DefaultConditionState Model = UIMOB04_SKN IdleAnimation = UIMOB04_SKL.UIMOB04_IDB1 0 12 IdleAnimation = UIMOB04_SKL.UIMOB04_IDB2 0 5 IdleAnimation = UIMOB04_SKL.UIMOB04_CHB 0 5 IdleAnimation = UIMOB04_SKL.UIMOB04_STB 0 12 AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_A WaitForStateToFinishIfPossible TRANS_FIRING_A ;WeaponFireFXBone = PRIMARY "UIMOB04 R HAND" ;WeaponMuzzleFlash = PRIMARY "UIMOB04 R HAND" WeaponFireFXBone = SECONDARY MuzzleAK WeaponMuzzleFlash = SECONDARY MuzzleAKFX End ; Drawing rock ConditionState = PREATTACK_A Animation = UIMOB04_SKL.UIMOB04_ATB2_BF ; wind up AnimationMode = ONCE AnimationSpeedFactorRange 1.0 1.0 End AliasConditionState = PREATTACK_A FIRING_A AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A ; throwing rock ConditionState = FIRING_A Animation = UIMOB04_SKL.UIMOB04_ATB1_AF ; throw Animation = UIMOB04_SKL.UIMOB04_ATB2_AF ; throw AnimationMode = ONCE TransitionKey = TRANS_FIRING_A End ConditionState = BETWEEN_FIRING_SHOTS_A Animation = UIMOB04_SKL.UIMOB04_STB AnimationMode = ONCE ; this is basically a trick: this guy has a nontrivial animation for firing, ; and a long recycle time between shots. we want him to finish his fire animation ; (unless he's ordered to do something else), so this is just a handy trick that ; says, "if the previous state had this transition key, allow it to finish before ; switching to us, if possible". WaitForStateToFinishIfPossible = TRANS_FIRING_A End AliasConditionState = RELOADING_A ConditionState = MOVING Animation = UIMOB04_SKL.UIMOB04_RUN AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING ParticleSysBone = None InfantryDustTrails End ConditionState = DYING Animation = UIMOB04_SKL.UIMOB04_DB1 Animation = UIMOB04_SKL.UIMOB04_DB2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING Animation = UIMOB04_SKL.UIMOB04_CHB Flags = RANDOMSTART AnimationMode = LOOP End ;-------------------------------------------------------- ; TRANSITION FROM PISTOL TO AK47 TransitionState = TRANS_STAND_A TRANS_STAND_AK Animation = UIMOB04_SKL.UIMOB04_TB-D AnimationMode = ONCE End ; WHILE CARRYING AK47 ;--------------------------------------------------------- ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung Model = UIMOB04_SKN IdleAnimation = UIMOB04_SKL.UIMOB04_IDD1 0 6 IdleAnimation = UIMOB04_SKL.UIMOB04_IDD2 0 6 IdleAnimation = UIMOB04_SKL.UIMOB04_CHD 0 6 IdleAnimation = UIMOB04_SKL.UIMOB04_STD AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_AK WeaponFireFXBone = SECONDARY MuzzleAK WeaponMuzzleFlash = SECONDARY MuzzleAKFX End ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB04_SKL.UIMOB04_RND AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING_AK End ConditionState = DYING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB04_SKL.UIMOB04_DD1 Animation = UIMOB04_SKL.UIMOB04_DD2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB04_SKL.UIMOB04_CHD AnimationMode = ONCE End ; Drawing AK47 ConditionState = PREATTACK_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB04_SKL.UIMOB04_ATD1_ST ; start firing AnimationMode = ONCE End AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE ; Firing Gun ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB04_SKL.UIMOB04_ATD1_LP ; looping firing AnimationMode = LOOP WeaponFireFXBone = PRIMARY MuzzleAK WeaponMuzzleFlash = PRIMARY MuzzleAKFX TransitionKey = TRANS_FIRING_AK End AliasConditionState = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE ConditionState = RELOADING_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB04_SKL.UIMOB04_ATD1_ED ; end firing AnimationMode = ONCE End ; This transition allows him to put his gun away when he's finished attacking. TransitionState = TRANS_FIRING_AK TRANS_STAND_AK Animation = UIMOB04_SKL.UIMOB04_ATD1_ED ; end firing AnimationMode = ONCE End TransitionState = TRANS_Dying TRANS_Flailing Animation = UIMOB04_SKL.UIMOB04_B_ADTF1 Animation = UIMOB04_SKL.UIMOB04_D_ADTF1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UIMOB04_SKL.UIMOB04_B_ADTF2 Animation = UIMOB04_SKL.UIMOB04_D_ADTF2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UIMOB04_SKL.UIMOB04_B_ADTF3 Animation = UIMOB04_SKL.UIMOB04_D_ADTF3 AnimationMode = ONCE TransitionKey = None End End Geometry = CYLINDER GeometryMajorRadius = 5.0 ; kinda thin GeometryMinorRadius = 5.0 ; kinda thinD GeometryHeight = 12.0 GeometryIsSmall = Yes End ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ObjectReskin GLAInfantryAngryMobPistol05 GLAInfantryAngryMobPistol01 ;**** ART Parameters *** Draw = W3DModelDraw DrawTag_01 OkToChangeModelColor = Yes ; WHILE CARRYING PISTOL ;--------------------------------------------------------- DefaultConditionState ;Idle with Pistol Holstered Model = UIMOB05_SKN IdleAnimation = UIMOB05_SKL.UIMOB05_IDA1 0 12 IdleAnimation = UIMOB05_SKL.UIMOB05_IDA2 0 5 IdleAnimation = UIMOB05_SKL.UIMOB05_CHA 0 5 IdleAnimation = UIMOB05_SKL.UIMOB05_STA 0 5 AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_A WeaponFireFXBone = PRIMARY Muzzle01 WeaponMuzzleFlash = PRIMARY Muzzle01 End ; Drawing pistol ConditionState = PREATTACK_A Animation = UIMOB05_SKL.UIMOB05_ATA1_ST ; start firing AnimationMode = ONCE End AliasConditionState = PREATTACK_A FIRING_A AliasConditionState = PREATTACK_A BETWEEN_FIRING_SHOTS_A ; Firing pistol ConditionState = FIRING_A Animation = UIMOB05_SKL.UIMOB05_ATA1_LP ; looping firing AnimationMode = LOOP TransitionKey = TRANS_FIRING_A End AliasConditionState = BETWEEN_FIRING_SHOTS_A ConditionState = RELOADING_A Animation = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing AnimationMode = ONCE End ; This transition allows him to put his gun away when he's finished attacking. TransitionState = TRANS_FIRING_A TRANS_STAND_A Animation = UIMOB05_SKL.UIMOB05_ATA1_ED ; end firing AnimationMode = ONCE End ConditionState = MOVING Animation = UIMOB05_SKL.UIMOB05_RNA AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING RELOADING_A AliasConditionState = MOVING PREATTACK_A AliasConditionState = MOVING FIRING_A AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A AliasConditionState = MOVING RELOADING_C RELOADING_A AliasConditionState = MOVING PREATTACK_C BETWEEN_FIRING_SHOTS_A ConditionState = DYING Animation = UIMOB05_SKL.UIMOB05_DA1 Animation = UIMOB05_SKL.UIMOB05_DA2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING Animation = UIMOB05_SKL.UIMOB05_CHA AnimationMode = ONCE End ;-------------------------------------------------------- ; TRANSITION FROM PISTOL TO AK47 TransitionState = TRANS_STAND_A TRANS_STAND_AK Animation = UIMOB05_SKL.UIMOB05_TA-D AnimationMode = ONCE End ; WHILE CARRYING AK47 ;--------------------------------------------------------- ConditionState WEAPONSET_PLAYER_UPGRADE ;Idle with AK Slung Model = UIMOB05_SKN IdleAnimation = UIMOB05_SKL.UIMOB05_IDD1 0 6 IdleAnimation = UIMOB05_SKL.UIMOB05_IDD2 0 6 IdleAnimation = UIMOB05_SKL.UIMOB05_CHD 0 6 IdleAnimation = UIMOB05_SKL.UIMOB05_STD AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_AK WeaponFireFXBone = SECONDARY MuzzleAK WeaponMuzzleFlash = SECONDARY MuzzleAKFX End ConditionState = MOVING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB05_SKL.UIMOB05_RND AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING_AK End ConditionState = DYING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB05_SKL.UIMOB05_DD1 Animation = UIMOB05_SKL.UIMOB05_DD2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING WEAPONSET_PLAYER_UPGRADE Animation = UIMOB05_SKL.UIMOB05_CHD AnimationMode = ONCE End ; Drawing AK47 ConditionState = PREATTACK_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB05_SKL.UIMOB05_ATD1_ST ; start firing AnimationMode = ONCE End AliasConditionState = PREATTACK_B FIRING_B WEAPONSET_PLAYER_UPGRADE AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE ; Firing Gun ConditionState = FIRING_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB05_SKL.UIMOB05_ATD1_LP ; looping firing AnimationMode = LOOP WeaponFireFXBone = PRIMARY MuzzleAK WeaponMuzzleFlash = PRIMARY MuzzleAKFX TransitionKey = TRANS_FIRING_AK End AliasConditionState = BETWEEN_FIRING_SHOTS_B WEAPONSET_PLAYER_UPGRADE ConditionState = RELOADING_B WEAPONSET_PLAYER_UPGRADE Animation = UIMOB05_SKL.UIMOB05_ATD1_ED ; end firing AnimationMode = ONCE End ; This transition allows him to put his gun away when he's finished attacking. TransitionState = TRANS_FIRING_AK TRANS_STAND_AK Animation = UIMOB05_SKL.UIMOB05_ATD1_ED ; end firing AnimationMode = ONCE End ; ;Throwing bottle---------------------------------------------------------------- ; ConditionState = PREATTACK_C ; Animation = UIMOB05_SKL.UIMOB05_ATCA_BF ; the wind up ; End ; AliasConditionState = PREATTACK_C FIRING_A ; AliasConditionState = PREATTACK_C RELOADING_A ; AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_A ; ; ConditionState = FIRING_C ; Animation = UIMOB05_SKL.UIMOB05_ATCA_AF ; the release and follow-thru ; TransitionKey = TRANS_THROW ; End ; AliasConditionState = FIRING_C BETWEEN_FIRING_SHOTS_A ; ; ConditionState RELOADING_C ; Animation =UIMOB05_SKL.UIMOB05_IDA1 ; WaitForStateToFinishIfPossible = TRANS_THROW ; universal hub for follow-thru ; End ; AliasConditionState = RELOADING_C RELOADING_A ; AliasConditionState = RELOADING_C FIRING_A ; AliasConditionState = RELOADING_C BETWEEN_FIRING_SHOTS_A ; TransitionState = TRANSXXX TRANS_THROW ; Animation = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway gun and take out bottle ; End ; TransitionState = TRANS_THROW TRANS_FIRING_A ; Animation = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get PISTOL ; End ; TransitionState = TRANSXXXAK TRANS_THROW ; Animation = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway AK and take out bottle ; End ; TransitionState = TRANS_THROW TRANS_FIRING_AK ; Animation = UIMOB05_SKL.UIMOB05_XXXXXXXXputaway bottle and get AK ; End ;-------------------------------------------------------- TransitionState = TRANS_Dying TRANS_Flailing Animation = UIMOB05_SKL.UIMOB05_A_ADTA1 Animation = UIMOB05_SKL.UIMOB05_D_ADTA1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UIMOB05_SKL.UIMOB05_A_ADTA2 Animation = UIMOB05_SKL.UIMOB05_D_ADTA2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UIMOB05_SKL.UIMOB05_A_ADTA3 Animation = UIMOB05_SKL.UIMOB05_D_ADTA3 AnimationMode = ONCE TransitionKey = None End End Geometry = CYLINDER GeometryMajorRadius = 3.0 ; very thin GeometryMinorRadius = 3.0 ; very thinD GeometryHeight = 12.0 GeometryIsSmall = Yes End ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ Object GLAInfantryAngryMobMolotov02 ;**** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; WHILE CARRYING ROCK ;--------------------------------------------------------- DefaultConditionState Model = UIMOB02_SKN IdleAnimation = UIMOB02_SKL.UIMOB02_IDB1 0 12 IdleAnimation = UIMOB02_SKL.UIMOB02_IDB2 0 5 IdleAnimation = UIMOB02_SKL.UIMOB02_CHB 0 5 IdleAnimation = UIMOB02_SKL.UIMOB02_STB 0 12 AnimationMode = ONCE AnimationSpeedFactorRange 0.9 1.1 TransitionKey = TRANS_STAND_B WeaponFireFXBone = SECONDARY "UIMOB02 R HAND" End ; Drawing rock ConditionState = PREATTACK_B Animation = UIMOB02_SKL.UIMOB02_ATCB_BF ; wind up AnimationMode = ONCE End AliasConditionState = PREATTACK_B FIRING_B AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B ; throwing rock ConditionState = FIRING_B Animation = UIMOB02_SKL.UIMOB02_ATCB_AF ; throw AnimationMode = ONCE TransitionKey = TRANS_FIRING_B End ConditionState = BETWEEN_FIRING_SHOTS_B Animation = UIMOB02_SKL.UIMOB02_STB AnimationMode = ONCE ; this is basically a trick: this guy has a nontrivial animation for firing, ; and a long recycle time between shots. we want him to finish his fire animation ; (unless he's ordered to do something else), so this is just a handy trick that ; says, "if the previous state had this transition key, allow it to finish before ; switching to us, if possible". WaitForStateToFinishIfPossible = TRANS_FIRING_B End AliasConditionState = RELOADING_B ConditionState = MOVING Animation = UIMOB02_SKL.UIMOB02_RNB AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = MOVING ParticleSysBone = None InfantryDustTrails End ConditionState = DYING Animation = UIMOB02_SKL.UIMOB02_DB1 Animation = UIMOB02_SKL.UIMOB02_DB2 AnimationMode = ONCE TransitionKey = TRANS_Dying End ConditionState = SPECIAL_CHEERING Animation = UIMOB02_SKL.UIMOB02_CHB Flags = RANDOMSTART AnimationMode = LOOP End TransitionState = TRANS_Dying TRANS_Flailing Animation = UIMOB02_SKL.UIMOB02_B_ADTA1 Animation = UIMOB02_SKL.UIMOB02_D_ADTA1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UIMOB02_SKL.UIMOB02_B_ADTA2 Animation = UIMOB02_SKL.UIMOB02_D_ADTA2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UIMOB02_SKL.UIMOB02_B_ADTA3 Animation = UIMOB02_SKL.UIMOB02_D_ADTA3 AnimationMode = ONCE TransitionKey = None End End ;**** DESIGN parameters *** DisplayName = OBJECT:AngryMob Side = GLA EditorSorting = INFANTRY TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY GLAAngryMobMolotovCocktailProjectileWeapon ; all she does is throw molotovs End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 150 Prerequisites Object = GLABarracks End BuildCost = 100 BuildTime = 0.0 ExperienceValue = 5 5 5 5 ;Experience point value at each level ExperienceRequired = 0 150 450 900 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles ; *** AUDIO Parameters *** VoiceSelect = NoSound VoiceMove = NoSound VoiceAttack = NoSound SoundDie = CivilianArabFemaleDie ;**** ENGINEERING Parameters *** ;MOB02 RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER IGNORED_IN_GUI ;NO_COLLIDE ;Lorenzen disables Body = ActiveBody BodyTag_01 MaxHealth = 50.0 InitialHealth = 50.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Behavior = MobMemberSlavedUpdate ModuleTag_04 MustCatchUpRadius = 40 NoNeedToCatchUpRadius = 15 Squirrelliness = 0.05 CatchUpCrisisBailTime = 30; this is in calls to this update, not in frames End Locomotor = SET_NORMAL AngryMobNormalLocomotor Locomotor = SET_WANDER AngryMobWanderLocomotor Locomotor = SET_PANIC AngryMobPanicLocomotor Behavior = PhysicsBehavior ModuleTag_05 Mass = 5.0 End Behavior = SquishCollide ModuleTag_08 ;nothing End Behavior = WeaponSetUpgrade UpgradeTag_01 TriggeredBy = Upgrade_GLAArmTheMob End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_ToxicInfantry End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_13 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 4.0 ; very thin GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ Object GLAInfantryHijacker ; *** ART Parameters *** SelectPortrait = SUHijacker_L ButtonImage = SUHijacker ;UpgradeCameo1 = NONE ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = UIHJCK_SKN IdleAnimation = UIHJCK_SKL.UIHJCK_STA 0 25 IdleAnimation = UIHJCK_SKL.UIHJCK_IDA IdleAnimation = UIHJCK_SKL.UIHJCK_IDB AnimationMode = ONCE TransitionKey = TRANS_Stand End AliasConditionState = REALLYDAMAGED ConditionState = MOVING Animation = UIHJCK_SKL.UIHJCK_RUN AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End AliasConditionState = REALLYDAMAGED MOVING ConditionState = DYING Animation = UIHJCK_SKL.UIHJCK_DTA Animation = UIHJCK_SKL.UIHJCK_DTB AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = UIHJCK_SKL.UIHJCK_ADTE1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UIHJCK_SKL.UIHJCK_ADTE2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UIHJCK_SKL.UIHJCK_ADTE3 AnimationMode = ONCE TransitionKey = None End ConditionState = SPECIAL_CHEERING Animation = UIHJCK_SKL.UIHJCK_CHA AnimationMode = LOOP End ConditionState = PARACHUTING Animation = UIHJCK_SKL.UIHJCK_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = UIHJCK_SKL.UIHJCK_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = UIHJCK_SKL.UIHJCK_PTD AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:Hijacker Side = GLA EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 100 ShroudClearingRange = 200 Prerequisites Object = GLABarracks Object = GLAPalace Science = SCIENCE_Hijacker End BuildCost = 400 BuildTime = 10.0 ;in seconds ExperienceValue = 50 100 150 400 ;Experience point value at each level ExperienceRequired = 0 150 450 900 ;Experience points needed to gain each level IsTrainable = No ;Can gain experience CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = GLAInfantryHijackerCommandSet ; *** AUDIO Parameters *** VoiceSelect = HijackerVoiceSelect VoiceMove = HijackerVoiceMove VoiceGuard = HijackerVoiceMove VoiceAttack = HijackerVoiceAttack SoundDie = HijackerVoiceDie SoundDieFire = DieByFireGLA SoundDieToxin = DieByToxinGLA VoiceFear = HijackerVoiceFear UnitSpecificSounds VoiceGarrison = HijackerVoiceGarrison VoiceCreate = HijackerVoiceCreate VoiceEnter = HijackerVoiceEnter VoiceEnterHostile = HijackerVoiceEnterHostile VoiceGetHealed = HijackerVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER SCORE STEALTH_GARRISON ;STEALTH_GARRISON Added per Dustin, 12/14--ML Behavior = StealthUpdate ModuleTag_02 StealthDelay = 500 ; half second delay before stealthy StealthForbiddenConditions = MOVING ; only stealthy while stationary MoveThresholdSpeed = 3 InnateStealth = Yes OrderIdleEnemiesToAttackMeUponReveal = Yes End Body = ActiveBody ModuleTag_03 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = HijackerUpdate ModuleTag_04 ParachuteName = AmericaParachute End Behavior = AIUpdateInterface ModuleTag_05 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL JarmenKellLocomotor Behavior = PhysicsBehavior ModuleTag_06 Mass = 5.0 End Behavior = ConvertToHijackedVehicleCrateCollide ModuleTag_08 RequiredKindOf = VEHICLE ; This is my car now, infidel! End Behavior = SquishCollide ModuleTag_09 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_14 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 10.0 GeometryMinorRadius = 10.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object ChinaInfantryRedguard ; *** ART Parameters *** SelectPortrait = SNRedGuard_L ButtonImage = SNRedGuard_L UpgradeCameo1 = Upgrade_Nationalism UpgradeCameo2 = Upgrade_InfantryCaptureBuilding ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = 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-Around Animations DefaultConditionState Model = NICNSC_SKN IdleAnimation = NICNSC_SKL.NICNSC_STA 0 35 IdleAnimation = NICNSC_SKL.NICNSC_IDA IdleAnimation = NICNSC_SKL.NICNSC_IDB AnimationMode = ONCE WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX TransitionKey = TRANS_Stand End ConditionState = REALLYDAMAGED IdleAnimation = NICNSC_SKL.NICNSC_STB AnimationMode = ONCE TransitionKey = TRANS_StandDamaged End ; ------- Machine Gun Animations ConditionState = USING_WEAPON_A Animation = NICNSC_SKL.NICNSC_ATA AnimationMode = LOOP TransitionKey = TRANS_Firing End ConditionState = USING_WEAPON_A REALLYDAMAGED Animation = NICNSC_SKL.NICNSC_ATC AnimationMode = LOOP TransitionKey = TRANS_FiringDamaged End ; ------- Firing-related Transitions TransitionState = TRANS_Firing TRANS_FiringDamaged Animation = NICNSC_SKL.NICNSC_AA2AC AnimationMode = ONCE End TransitionState = TRANS_Stand TRANS_Firing Animation = NICNSC_SKL.NICNSC_SA2AA AnimationMode = ONCE End TransitionState = TRANS_Firing TRANS_Stand Animation = NICNSC_SKL.NICNSC_AA2SA AnimationMode = ONCE End TransitionState = TRANS_StandDamaged TRANS_FiringDamaged Animation = NICNSC_SKL.NICNSC_ATCST AnimationMode = ONCE End TransitionState = TRANS_FiringDamaged TRANS_StandDamaged Animation = NICNSC_SKL.NICNSC_ATCED AnimationMode = ONCE End ; ------------- Damage Transitions -------------------- TransitionState = TRANS_StandDamaged TRANS_RunDamaged Animation = NICNSC_SKL.NICNSC_AA2AC AnimationMode = ONCE AnimationSpeedFactorRange = 2 2 End TransitionState = TRANS_RunDamaged TRANS_StandDamaged Animation = NICNSC_SKL.NICNSC_AA2AC AnimationMode = ONCE_BACKWARDS AnimationSpeedFactorRange = 2 2 Flags = START_FRAME_LAST End TransitionState = TRANS_Stand TRANS_StandDamaged Animation = NICNSC_SKL.NICNSC_AA2SA AnimationMode = ONCE_BACKWARDS AnimationSpeedFactorRange = 4 5 Flags = START_FRAME_LAST End ; ------- Bayonet Animations ConditionState = PREATTACK_C Animation = NICNSC_SKL.NICNSC_ATB1 AnimationMode = ONCE TransitionKey = TRANS_Stab End AliasConditionState = PREATTACK_C MOVING AliasConditionState = PREATTACK_C FIRING_C AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C ConditionState = FIRING_C Animation = NICNSC_SKL.NICNSC_ATB2 AnimationMode = ONCE ; this is basically a trick: this guy has a nontrivial animation for firing, ; and a long recycle time between shots. we want him to finish his fire animation ; (unless he's ordered to do something else), so this is just a handy trick that ; says, "if the previous state had this transition key, allow it to finish before ; switching to us, if possible". WaitForStateToFinishIfPossible = TRANS_Stab End AliasConditionState = BETWEEN_FIRING_SHOTS_C AliasConditionState = RELOADING_C ; ------- Parachuting Animations ConditionState = FREEFALL Animation = NICNSC_SKL.NICNSC_POP AnimationMode = MANUAL Flags = START_FRAME_FIRST TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = NICNSC_SKL.NICNSC_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = NICNSC_SKL.NICNSC_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = NICNSC_SKL.NICNSC_PTD AnimationMode = ONCE End ; ------- Movement Animations ConditionState = MOVING Animation = NICNSC_SKL.NICNSC_RNA 26 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING ATTACKING ConditionState = MOVING REALLYDAMAGED Animation = NICNSC_SKL.NICNSC_RNB 28 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_RunDamaged TransitionKey = None End AliasConditionState = MOVING ATTACKING REALLYDAMAGED ; ------- Bldg-capture ConditionState = UNPACKING Model = NICNSC_F_SKN Animation = NICNSC_F_SKL.NICNSC_F_FDP1 AnimationMode = ONCE End AliasConditionState = UNPACKING REALLYDAMAGED ConditionState = RAISING_FLAG Model = NICNSC_F_SKN Animation = NICNSC_F_SKL.NICNSC_F_FDP2 AnimationMode = ONCE TransitionKey = TRANS_Raising End AliasConditionState = RAISING_FLAG REALLYDAMAGED ConditionState = PACKING Model = NICNSC_F_SKN Animation = NICNSC_F_SKL.NICNSC_F_FDP1 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST TransitionKey = TRANS_Packing End AliasConditionState = PACKING REALLYDAMAGED TransitionState = TRANS_Raising TRANS_Packing Model = NICNSC_F_SKN Animation = NICNSC_F_SKL.NICNSC_F_FDP2 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST End ; ------- Dying Animations ConditionState = DYING Animation = NICNSC_SKL.NICNSC_DTA Animation = NICNSC_SKL.NICNSC_DTB AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = NICNSC_SKL.NICNSC_ATDE1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = NICNSC_SKL.NICNSC_ATDE2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = NICNSC_SKL.NICNSC_ATDE3 AnimationMode = ONCE TransitionKey = None End ; ------- Misc Animations ConditionState = SPECIAL_CHEERING Animation = NICNSC_SKL.NICNSC_CHA AnimationMode = LOOP End End ; ***DESIGN parameters *** DisplayName = OBJECT:Redguard Side = China EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY RedguardMachineGun End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 100 ShroudClearingRange = 200 Prerequisites Object = ChinaBarracks End BuildCost = 300 BuildTime = 10.0 ;in seconds ExperienceValue = 5 5 10 20 ;Experience point value at each level ExperienceRequired = 0 20 40 80 ;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 = ChinaInfantryRedguardCommandSet ; *** AUDIO Parameters *** VoiceSelect = RedGuardVoiceSelect VoiceMove = RedGuardVoiceMove VoiceGuard = RedGuardVoiceMove VoiceAttack = RedGuardVoiceAttack VoiceGroupSelect = BattleCrySound SoundDie = RedGuardVoiceDie SoundDieFire = DieByFireChina SoundDieToxin = DieByToxinChina VoiceFear = RedGuardVoiceFear VoiceTaskComplete = RedGuardVoiceCaptureComplete UnitSpecificSounds VoiceMelee = RedGuardVoiceAttackBayonet VoiceGarrison = RedGuardVoiceGarrison VoiceCreate = RedGuardVoiceCreate VoiceSubdue = RedGuardVoiceSubdue VoiceEnter = RedGuardVoiceMove VoiceEnterHostile = RedGuardVoiceMove VoiceGetHealed = RedGuardVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE Body = ActiveBody ModuleTag_02 MaxHealth = 120.0 InitialHealth = 120.0 End Behavior = VeterancyGainCreate ModuleTag_03 StartingLevel = VETERAN ScienceRequired = SCIENCE_RedGuardTraining End Behavior = AIUpdateInterface ModuleTag_04 AutoAcquireEnemiesWhenIdle = Yes End Behavior = CommandButtonHuntUpdate ModuleTag_05 ; allows use of command button hunt script with this unit. End Locomotor = SET_NORMAL RedguardLocomotor Behavior = HordeUpdate ModuleTag_06 RubOffRadius = 60 ; 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 = 30 ; how close other units must be to us to count towards our horde-ness (~30 feet or so) KindOf = INFANTRY ; what KindOf's must match to count towards horde-ness AlliesOnly = Yes ; do we only count allies towards horde status? ExactMatch = No ; do we only count units of our exact same type towards horde status? (overrides kindof) 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_07 Mass = 5.0 End ; sorry, no tranq or stun bullets, cut for this version (srj) ; Behavior = WeaponSetUpgrade ModuleTag_09 ; TriggeredBy = Upgrade_ChinaStunBullets ; End Behavior = SquishCollide ModuleTag_10 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_15 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_16 SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding UpdateModuleStartsAttack = Yes StartsPaused = Yes InitiateSound = RedGuardVoiceCapture End Behavior = SpecialAbilityUpdate ModuleTag_17 SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding 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 = 4 ;SkillPointsForTriggering = ??? -- Dustin, fill me out if you want different balance values. End Behavior = UnpauseSpecialPowerUpgrade ModuleTag_18 SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding TriggeredBy = Upgrade_InfantryCaptureBuilding End Geometry = CYLINDER GeometryMajorRadius = 7.0 GeometryMinorRadius = 7.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object ChinaInfantryParadeRedGuard ; Unit added per John Lee's request. - GB ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; ------- Standing-Around Animations DefaultConditionState Model = NICNSC_SKN IdleAnimation = NICNSC_SKL.NICNSC_STA 0 35 IdleAnimation = NICNSC_SKL.NICNSC_IDA IdleAnimation = NICNSC_SKL.NICNSC_IDB AnimationMode = ONCE WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX TransitionKey = TRANS_Stand End ConditionState = REALLYDAMAGED IdleAnimation = NICNSC_SKL.NICNSC_STB AnimationMode = ONCE TransitionKey = TRANS_StandDamaged End ; ------- Machine Gun Animations ConditionState = FIRING_A Animation = NICNSC_SKL.NICNSC_ATA AnimationMode = LOOP TransitionKey = TRANS_Firing End AliasConditionState = BETWEEN_FIRING_SHOTS_A AliasConditionState = RELOADING_A ConditionState = USING_WEAPON_A REALLYDAMAGED Animation = NICNSC_SKL.NICNSC_ATC AnimationMode = LOOP TransitionKey = TRANS_FiringDamaged End ; ------- Firing-related Transitions TransitionState = TRANS_Firing TRANS_FiringDamaged Animation = NICNSC_SKL.NICNSC_AA2AC AnimationMode = ONCE End TransitionState = TRANS_Stand TRANS_Firing Animation = NICNSC_SKL.NICNSC_SA2AA AnimationMode = ONCE End TransitionState = TRANS_Firing TRANS_Stand Animation = NICNSC_SKL.NICNSC_AA2SA AnimationMode = ONCE End TransitionState = TRANS_StandDamaged TRANS_FiringDamaged Animation = NICNSC_SKL.NICNSC_ATCST AnimationMode = ONCE End TransitionState = TRANS_FiringDamaged TRANS_StandDamaged Animation = NICNSC_SKL.NICNSC_ATCED AnimationMode = ONCE End ; ------------- Damage Transitions -------------------- TransitionState = TRANS_StandDamaged TRANS_RunDamaged Animation = NICNSC_SKL.NICNSC_AA2AC AnimationMode = ONCE AnimationSpeedFactorRange = 2 2 End TransitionState = TRANS_RunDamaged TRANS_StandDamaged Animation = NICNSC_SKL.NICNSC_AA2AC AnimationMode = ONCE_BACKWARDS AnimationSpeedFactorRange = 2 2 Flags = START_FRAME_LAST End TransitionState = TRANS_Stand TRANS_StandDamaged Animation = NICNSC_SKL.NICNSC_AA2SA AnimationMode = ONCE_BACKWARDS AnimationSpeedFactorRange = 4 5 Flags = START_FRAME_LAST End ; ------- Bayonet Animations ConditionState = PREATTACK_C Animation = NICNSC_SKL.NICNSC_ATB1 AnimationMode = ONCE TransitionKey = TRANS_Stab End AliasConditionState = PREATTACK_C MOVING AliasConditionState = PREATTACK_C FIRING_C AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C ConditionState = FIRING_C Animation = NICNSC_SKL.NICNSC_ATB2 AnimationMode = ONCE ; this is basically a trick: this guy has a nontrivial animation for firing, ; and a long recycle time between shots. we want him to finish his fire animation ; (unless he's ordered to do something else), so this is just a handy trick that ; says, "if the previous state had this transition key, allow it to finish before ; switching to us, if possible". WaitForStateToFinishIfPossible = TRANS_Stab End AliasConditionState = BETWEEN_FIRING_SHOTS_C AliasConditionState = RELOADING_C ; ------- Parachuting Animations ConditionState = FREEFALL Animation = NICNSC_SKL.NICNSC_POP AnimationMode = MANUAL Flags = START_FRAME_FIRST TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = NICNSC_SKL.NICNSC_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = NICNSC_SKL.NICNSC_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = NICNSC_SKL.NICNSC_PTD AnimationMode = ONCE End ; ------- Movement Animations ConditionState = MOVING Animation = NICNSC_SKL.NICNSC_MAR 12 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING ATTACKING ConditionState = MOVING REALLYDAMAGED Animation = NICNSC_SKL.NICNSC_RNB AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_RunDamaged ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING ATTACKING REALLYDAMAGED ; ------- Bldg-capture ConditionState = UNPACKING Animation = NICNSC_SKL.NICNSC_FDP1 AnimationMode = ONCE End AliasConditionState = UNPACKING REALLYDAMAGED ConditionState = RAISING_FLAG Animation = NICNSC_SKL.NICNSC_FDP2 AnimationMode = ONCE TransitionKey = TRANS_Raising End AliasConditionState = RAISING_FLAG REALLYDAMAGED ConditionState = PACKING Animation = NICNSC_SKL.NICNSC_FDP1 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST TransitionKey = TRANS_Packing End AliasConditionState = PACKING REALLYDAMAGED TransitionState = TRANS_Raising TRANS_Packing Animation = NICNSC_SKL.NICNSC_FDP2 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST End ; ------- Misc Animations ; ------- Dying Animations ConditionState = DYING Animation = NICNSC_SKL.NICNSC_DTA Animation = NICNSC_SKL.NICNSC_DTB AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = NICNSC_SKL.NICNSC_ATDE1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = NICNSC_SKL.NICNSC_ATDE2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = NICNSC_SKL.NICNSC_ATDE3 AnimationMode = ONCE TransitionKey = None End ConditionState = SPECIAL_CHEERING Animation = NICNSC_SKL.NICNSC_CHA AnimationMode = LOOP End End ; ***DESIGN parameters *** DisplayName = OBJECT:Redguard Side = China EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY RedguardMachineGun Weapon = SECONDARY None Weapon = TERTIARY RedguardBayonet AutoChooseSources = TERTIARY None End ; sorry, no stun bullets, cut for this version (srj) ; WeaponSet ; Conditions = PLAYER_UPGRADE ; Weapon = PRIMARY RedguardMachineGun ; Weapon = SECONDARY RedguardStunBulletsMachineGun ; Weapon = TERTIARY RedguardBayonet ; AutoChooseSources = SECONDARY None ; AutoChooseSources = TERTIARY None ; End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 100 ShroudClearingRange = 200 Prerequisites Object = ChinaBarracks End BuildCost = 225 BuildTime = 10.0 ;in seconds ExperienceValue = 5 5 10 20 ;Experience point value at each level ExperienceRequired = 0 20 40 80 ;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 = ChinaInfantryRedguardCommandSet ; *** AUDIO Parameters *** VoiceSelect = RedGuardVoiceSelect VoiceMove = RedGuardVoiceMove VoiceAttack = RedGuardVoiceAttack VoiceGroupSelect = BattleCrySound SoundDie = RedGuardVoiceDie SoundDieFire = DieByFireChina SoundDieToxin = DieByToxinChina ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE Body = ActiveBody ModuleTag_02 MaxHealth = 90.0 InitialHealth = 90.0 End Behavior = VeterancyGainCreate ModuleTag_03 StartingLevel = VETERAN ScienceRequired = SCIENCE_RedGuardTraining End Behavior = AIUpdateInterface ModuleTag_04 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL ParadeRedguardLocomotor Behavior = PhysicsBehavior ModuleTag_06 Mass = 5.0 End ; sorry, no tranq or stun bullets, cut for this version (srj) ; Behavior = WeaponSetUpgrade ModuleTag_08 ; TriggeredBy = Upgrade_ChinaStunBullets ; End Behavior = SquishCollide ModuleTag_09 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_ToxicInfantry End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_14 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_15 SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding UpdateModuleStartsAttack = Yes InitiateSound = RedGuardVoiceCapture End Behavior = SpecialAbilityUpdate ModuleTag_16 SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding StartAbilityRange = 5.0 UnpackTime = 3000 ; (changing this will scale anim speed) PreparationTime = 10000 ; time to complete hack once prepared (changing this will scale anim speed) PackTime = 2000 ; (changing this will scale anim speed) DoCaptureFX = Yes 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 ;------------------------------------------------------------------------------ ;**************************** Cinematic-Only unit **************************** Object CINE_ChinaInfantryParadeRedGuard ; Unit added per John Lee's request. - GB ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; ------- Standing-Around Animations DefaultConditionState Model = NICNSC_SKN IdleAnimation = NICNSC_SKL.NICNSC_STA 0 35 IdleAnimation = NICNSC_SKL.NICNSC_IDA IdleAnimation = NICNSC_SKL.NICNSC_IDB AnimationMode = ONCE WeaponFireFXBone = PRIMARY Muzzle WeaponMuzzleFlash = PRIMARY MuzzleFX TransitionKey = TRANS_Stand End ConditionState = REALLYDAMAGED IdleAnimation = NICNSC_SKL.NICNSC_STB AnimationMode = ONCE TransitionKey = TRANS_Stand End ; ------- Machine Gun Animations ConditionState = FIRING_A Animation = NICNSC_SKL.NICNSC_ATA AnimationMode = LOOP TransitionKey = TRANS_Firing End AliasConditionState = BETWEEN_FIRING_SHOTS_A AliasConditionState = RELOADING_A ConditionState = FIRING_A REALLYDAMAGED Animation = NICNSC_SKL.NICNSC_ATC AnimationMode = LOOP TransitionKey = TRANS_FiringDamaged End AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED AliasConditionState = RELOADING_A REALLYDAMAGED ; ------- Stun Bullet Animations ; sorry, no tranq or stun bullets, cut for this version (srj) ; ; ConditionState = FIRING_B ; Animation = NICNSC_SKL.NICNSC_ATA ; AnimationMode = LOOP ; TransitionKey = TRANS_Firing ; End ; AliasConditionState = BETWEEN_FIRING_SHOTS_B ; AliasConditionState = RELOADING_B ; ; ConditionState = FIRING_B REALLYDAMAGED ; Animation = NICNSC_SKL.NICNSC_ATC ; AnimationMode = LOOP ; TransitionKey = TRANS_FiringDamaged ; End ; AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED ; AliasConditionState = RELOADING_B REALLYDAMAGED ; ------- Firing-related Transitions TransitionState = TRANS_Firing TRANS_FiringDamaged Animation = NICNSC_SKL.NICNSC_AA2AC AnimationMode = ONCE End TransitionState = TRANS_Stand TRANS_Firing Animation = NICNSC_SKL.NICNSC_SA2AA AnimationMode = ONCE AnimationSpeedFactorRange = 40 40 End TransitionState = TRANS_Firing TRANS_Stand Animation = NICNSC_SKL.NICNSC_AA2SA AnimationMode = ONCE AnimationSpeedFactorRange = 4 4 End TransitionState = TRANS_Stand TRANS_FiringDamaged Animation = NICNSC_SKL.NICNSC_ATCST AnimationMode = ONCE AnimationSpeedFactorRange = 40 40 End TransitionState = TRANS_FiringDamaged TRANS_Stand Animation = NICNSC_SKL.NICNSC_ATCED AnimationMode = ONCE End ; ------- Bayonet Animations ConditionState = PREATTACK_C Animation = NICNSC_SKL.NICNSC_ATB1 AnimationMode = ONCE TransitionKey = TRANS_Stab End AliasConditionState = PREATTACK_C MOVING AliasConditionState = PREATTACK_C FIRING_C AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C ConditionState = FIRING_C Animation = NICNSC_SKL.NICNSC_ATB2 AnimationMode = ONCE ; this is basically a trick: this guy has a nontrivial animation for firing, ; and a long recycle time between shots. we want him to finish his fire animation ; (unless he's ordered to do something else), so this is just a handy trick that ; says, "if the previous state had this transition key, allow it to finish before ; switching to us, if possible". WaitForStateToFinishIfPossible = TRANS_Stab End AliasConditionState = BETWEEN_FIRING_SHOTS_C AliasConditionState = RELOADING_C ; ------- Parachuting Animations ConditionState = FREEFALL Animation = NICNSC_SKL.NICNSC_POP AnimationMode = MANUAL Flags = START_FRAME_FIRST TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = NICNSC_SKL.NICNSC_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = NICNSC_SKL.NICNSC_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = NICNSC_SKL.NICNSC_PTD AnimationMode = ONCE End ; ------- Movement Animations ConditionState = MOVING Animation = NICNSC_SKL.NICNSC_MAR 12 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None End AliasConditionState = MOVING FIRING_A AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A AliasConditionState = MOVING RELOADING_A AliasConditionState = MOVING FIRING_B AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B AliasConditionState = MOVING RELOADING_B AliasConditionState = MOVING FIRING_C AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_C AliasConditionState = MOVING RELOADING_C ConditionState = MOVING REALLYDAMAGED Animation = NICNSC_SKL.NICNSC_RNB AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None End AliasConditionState = MOVING FIRING_A REALLYDAMAGED AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED AliasConditionState = MOVING RELOADING_A REALLYDAMAGED AliasConditionState = MOVING FIRING_B REALLYDAMAGED AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_B REALLYDAMAGED AliasConditionState = MOVING RELOADING_B REALLYDAMAGED AliasConditionState = MOVING FIRING_C REALLYDAMAGED AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_C REALLYDAMAGED AliasConditionState = MOVING RELOADING_C REALLYDAMAGED ; ------- Bldg-capture ConditionState = UNPACKING Animation = NICNSC_SKL.NICNSC_FDP1 AnimationMode = ONCE End AliasConditionState = UNPACKING REALLYDAMAGED ConditionState = RAISING_FLAG Animation = NICNSC_SKL.NICNSC_FDP2 AnimationMode = ONCE TransitionKey = TRANS_Raising End AliasConditionState = RAISING_FLAG REALLYDAMAGED ConditionState = PACKING Animation = NICNSC_SKL.NICNSC_FDP1 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST TransitionKey = TRANS_Packing End AliasConditionState = PACKING REALLYDAMAGED TransitionState = TRANS_Raising TRANS_Packing Animation = NICNSC_SKL.NICNSC_FDP2 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST End ; ------- Misc Animations ConditionState = DYING Animation = NICNSC_SKL.NICNSC_DTA Animation = NICNSC_SKL.NICNSC_DTB AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = NICNSC_SKL.NICNSC_ATDE1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = NICNSC_SKL.NICNSC_ATDE2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = NICNSC_SKL.NICNSC_ATDE3 AnimationMode = ONCE TransitionKey = None End ConditionState = SPECIAL_CHEERING Animation = NICNSC_SKL.NICNSC_CHA AnimationMode = LOOP End End ; ***DESIGN parameters *** DisplayName = OBJECT:Redguard Side = China EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY RedguardMachineGun Weapon = SECONDARY None Weapon = TERTIARY RedguardBayonet AutoChooseSources = TERTIARY None End ; sorry, no stun bullets, cut for this version (srj) ; WeaponSet ; Conditions = PLAYER_UPGRADE ; Weapon = PRIMARY RedguardMachineGun ; Weapon = SECONDARY RedguardStunBulletsMachineGun ; Weapon = TERTIARY RedguardBayonet ; AutoChooseSources = SECONDARY None ; AutoChooseSources = TERTIARY None ; End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 100 ShroudClearingRange = 200 Prerequisites Object = ChinaBarracks End BuildCost = 225 BuildTime = 10.0 ;in seconds ExperienceValue = 5 5 10 20 ;Experience point value at each level ExperienceRequired = 0 20 40 80 ;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 = ChinaInfantryRedguardCommandSet ; *** AUDIO Parameters *** VoiceSelect = RedGuardVoiceSelect VoiceMove = RedGuardVoiceMove VoiceAttack = RedGuardVoiceAttack VoiceGroupSelect = BattleCrySound SoundDie = RedGuardVoiceDie SoundDieFire = DieByFireChina SoundDieToxin = DieByToxinChina ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE Body = ActiveBody ModuleTag_02 MaxHealth = 90.0 InitialHealth = 90.0 End Behavior = VeterancyGainCreate ModuleTag_03 StartingLevel = VETERAN ScienceRequired = SCIENCE_RedGuardTraining End Behavior = AIUpdateInterface ModuleTag_04 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL CINE_ParadeRedguardLocomotor Behavior = PhysicsBehavior ModuleTag_06 Mass = 5.0 End ; sorry, no tranq or stun bullets, cut for this version (srj) ; Behavior = WeaponSetUpgrade ModuleTag_08 ; TriggeredBy = Upgrade_ChinaStunBullets ; End Behavior = SquishCollide ModuleTag_09 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_ToxicInfantry End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_14 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_15 SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding UpdateModuleStartsAttack = Yes InitiateSound = RedGuardVoiceCapture End Behavior = SpecialAbilityUpdate ModuleTag_16 SpecialPowerTemplate = SpecialAbilityRedGuardCaptureBuilding StartAbilityRange = 5.0 UnpackTime = 3000 ; (changing this will scale anim speed) PreparationTime = 10000 ; time to complete hack once prepared (changing this will scale anim speed) PackTime = 2000 ; (changing this will scale anim speed) DoCaptureFX = Yes 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 ;------------------------------------------------------------------------------ Object ChinaInfantryBlackLotus ; *** ART Parameters *** SelectPortrait = SNBlkLotus_L2 ButtonImage = SNBlkLotus2 ;UpgradeCameo1 = NONE ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; --- idle DefaultConditionState Model = NIHERO_SKN IdleAnimation = NIHERO_SKL.NIHERO_STA 0 17 IdleAnimation = NIHERO_SKL.NIHero_IDA IdleAnimation = NIHERO_SKL.NIHero_IDB AnimationMode = ONCE TransitionKey = TRANS_Stand End ConditionState = REALLYDAMAGED IdleAnimation = NIHERO_SKL.NIHERO_ISTA 0 30 IdleAnimation = NIHERO_SKL.NIHero_IIDA AnimationMode = ONCE TransitionKey = TRANS_StandInjured End TransitionState = TRANS_Stand TRANS_StandInjured Animation = NIHero_SKL.NIHero_ISTAHIT AnimationMode = ONCE End ; --- moving ConditionState = MOVING Animation = NIHero_SKL.NIHero_RNA AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING UNPACKING ConditionState = MOVING REALLYDAMAGED Animation = NIHero_SKL.NIHero_IRNA AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING UNPACKING REALLYDAMAGED ; --- packing states ConditionState = UNPACKING ;Preparing to attack (unpacking gear) Animation = NIHero_SKL.NIHero_ATA1 AnimationMode = ONCE End AliasConditionState = UNPACKING FIRING_A ConditionState = FIRING_A ;Processing attack (hacking) Animation = NIHero_SKL.NIHero_ATA2 AnimationMode = LOOP TransitionKey = TRANS_FiringA End ConditionState = PACKING ;Completing attack (packing gear) Animation = NIHero_SKL.NIHero_ATA3 AnimationMode = ONCE End AliasConditionState = FIRING_A PACKING TransitionState = TRANS_FiringA TRANS_FiringAInjured Animation = NIHero_SKL.NIHero_IATAHIT AnimationMode = ONCE End ; --- injured-packing states ConditionState = UNPACKING REALLYDAMAGED ;Preparing to attack (unpacking gear) Animation = NIHero_SKL.NIHero_IATA1 AnimationMode = ONCE End AliasConditionState = UNPACKING FIRING_A REALLYDAMAGED ConditionState = FIRING_A REALLYDAMAGED ;Processing attack (hacking) Animation = NIHero_SKL.NIHero_IATA2 AnimationMode = LOOP TransitionKey = TRANS_FiringAInjured End ConditionState = PACKING REALLYDAMAGED ;Completing attack (packing gear) Animation = NIHero_SKL.NIHero_IATA3 AnimationMode = ONCE End AliasConditionState = FIRING_A PACKING REALLYDAMAGED ; --- packing-dying states ; code doesn't really support this. Oh well. ; ConditionState = DYING RAISING_FLAG ; Animation = NIHero_SKL.NIHero_IDTA ; Animation = NIHero_SKL.NIHero_IDTB ; AnimationMode = ONCE ; End ; AliasConditionState = DYING RAISING_FLAG EXPLODED_FLAILING EXPLODED_BOUNCING ; --- normal-dying states ConditionState = DYING Animation = NIHero_SKL.NIHero_DTA Animation = NIHero_SKL.NIHero_DTB AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = NIHero_SKL.NIHero_ADTF1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = NIHero_SKL.NIHero_ADTF2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = NIHero_SKL.NIHero_ADTF3 AnimationMode = ONCE TransitionKey = None End ; --- cheering states ConditionState = SPECIAL_CHEERING Animation = NIHERO_SKL.NIHERO_CHA AnimationMode = ONCE End ConditionState = SPECIAL_CHEERING REALLYDAMAGED Animation = NIHERO_SKL.NIHERO_ICHA AnimationMode = ONCE End ; --- falling states ConditionState = FREEFALL Animation = NIHero_SKL.NIHero_PFL AnimationMode = LOOP TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = NIHero_SKL.NIHero_PHG AnimationMode = LOOP TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING TransitionState = TRANS_Falling TRANS_Chute Animation = NIHero_SKL.NIHero_POP AnimationMode = ONCE Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first End TransitionState = TRANS_Chute TRANS_Stand Animation = NIHero_SKL.NIHero_PTD AnimationMode = ONCE End TransitionState = TRANS_Chute TRANS_StandInjured Animation = NIHero_SKL.NIHero_PTD AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:BlackLotus Side = China EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY None End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 300 ShroudClearingRange = 400 Prerequisites Object = ChinaBarracks Object = ChinaPropagandaCenter End BuildCost = 1500 BuildTime = 20.0 ;in seconds MaxSimultaneousOfType = 1 CommandSet = ChinaInfantryBlackLotusCommandSet ExperienceValue = 50 100 150 400 ;Experience point value at each level ExperienceRequired = 0 150 450 900 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = ChinaInfantryBlackLotusCommandSet ; *** AUDIO Parameters *** VoiceSelect = BlackLotusVoiceSelect VoiceMove = BlackLotusVoiceMove VoiceAttack = BlackLotusVoiceAttack VoiceGuard = BlackLotusVoiceMove VoiceFear = BlackLotusVoiceFear VoiceTaskComplete = BlackLotusVoiceCaptureComplete SoundDie = BlackLotusVoiceDie SoundDieFire = DieByFireFemale SoundDieToxin = DieByToxinFemale SoundStealthOn = StealthOn SoundStealthOff = StealthOff UnitSpecificSounds VoiceCreate = BlackLotusVoiceCreate VoiceGarrison = BlackLotusVoiceMove VoiceEnter = BlackLotusVoiceMove VoiceEnterHostile = BlackLotusVoiceMove VoiceStealCashComplete = BlackLotusVoiceCashComplete VoiceDisableVehicleComplete = BlackLotusVoiceDisableComplete VoiceCaptureBuildingComplete = BlackLotusVoiceCaptureComplete VoiceGetHealed = BlackLotusVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE HERO Body = ActiveBody ModuleTag_02 MaxHealth = 150.0 InitialHealth = 150.0 End Behavior = CommandButtonHuntUpdate ModuleTag_03 ; allows use of command button hunt script with this unit. End Behavior = AIUpdateInterface ModuleTag_04 AutoAcquireEnemiesWhenIdle = No End Locomotor = SET_NORMAL BlackLotusLocomotor Locomotor = SET_FREEFALL FreeFallLocomotor Behavior = PhysicsBehavior ModuleTag_05 Mass = 5.0 End Behavior = StealthUpdate ModuleTag_07 StealthDelay = 2500 ; msec StealthForbiddenConditions = USING_ABILITY HintDetectableConditions = USING_ABILITY InnateStealth = Yes OrderIdleEnemiesToAttackMeUponReveal = Yes End Behavior = StealthDetectorUpdate ModuleTag_44 DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec) ;DetectionRange = ??? ;Dustin, enable this for independant balancing! CanDetectWhileGarrisoned = No ;Garrisoned means being in a structure that you units can shoot out of. CanDetectWhileContained = No ;Contained means being in a transport or tunnel network. End Behavior = SpecialAbility ModuleTag_08 SpecialPowerTemplate = SpecialAbilityBlackLotusCaptureBuilding UpdateModuleStartsAttack = Yes InitiateSound = BlackLotusVoiceHackBuilding End Behavior = SpecialAbilityUpdate ModuleTag_09 SpecialPowerTemplate = SpecialAbilityBlackLotusCaptureBuilding StartAbilityRange = 150.0 UnpackTime = 6730 ;animation time is 6730 (changing this will scale anim speed) PackTime = 2800 ;animation time is 5800 (changing this will scale anim speed) PreparationTime = 6000 ;time to complete hack once prepared (unpacked) SpecialObject = BinaryDataStream DoCaptureFX = Yes PackSound = BlackLotusPack UnpackSound = BlackLotusUnpack TriggerSound = BlackLotusTrigger PrepSoundLoop = BlackLotusPrepLoop AwardXPForTriggering = 20 ;SkillPointsForTriggering = ??? -- Dustin, fill me out if you want different balance values. End Behavior = SpecialAbility ModuleTag_10 SpecialPowerTemplate = SpecialAbilityBlackLotusDisableVehicleHack UpdateModuleStartsAttack = Yes InitiateSound = BlackLotusVoiceHackVehicle End Behavior = SpecialAbilityUpdate ModuleTag_11 SpecialPowerTemplate = SpecialAbilityBlackLotusDisableVehicleHack StartAbilityRange = 150.0 UnpackTime = 2000 ;6730 ;animation time is 6730 (changing this will scale anim speed) PackTime = 1000 ;2800 ;animation time is 5800 (changing this will scale anim speed) PreparationTime = 2000 ;time to complete hack once prepared (unpacked) EffectDuration = 15000 ;duration vehicle is disabled (30 seconds) DisableFXParticleSystem = DisabledEffectBinaryShower0 SpecialObject = BinaryDataStream PackSound = BlackLotusPack UnpackSound = BlackLotusUnpack TriggerSound = BlackLotusTrigger PrepSoundLoop = BlackLotusPrepLoop AwardXPForTriggering = 0 ;SkillPointsForTriggering = ??? -- Dustin, fill me out if you want different balance values. End Behavior = SpecialAbility ModuleTag_12 SpecialPowerTemplate = SpecialAbilityBlackLotusStealCashHack UpdateModuleStartsAttack = Yes InitiateSound = BlackLotusVoiceHackCash End Behavior = SpecialAbilityUpdate ModuleTag_13 SpecialPowerTemplate = SpecialAbilityBlackLotusStealCashHack StartAbilityRange = 150.0 UnpackTime = 6730 ;animation time is 6730 (changing this will scale anim speed) PackTime = 5800 ;animation time is 5800 (changing this will scale anim speed) PreparationTime = 6000 ;time to complete hack once prepared (unpacked) EffectValue = 1000 ;amount of cash stolen SpecialObject = BinaryDataStream PackSound = BlackLotusPack UnpackSound = BlackLotusUnpack TriggerSound = BlackLotusTrigger PrepSoundLoop = BlackLotusPrepLoop AwardXPForTriggering = 20 ;SkillPointsForTriggering = ??? -- Dustin, fill me out if you want different balance values. End ;Hero units can't be squished! ;Behavior = SquishCollide ModuleTag_14 ; ;nothing ;End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_17 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 10.0 GeometryMinorRadius = 10.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object ChinaInfantryTankHunter ; *** ART Parameters *** SelectPortrait = SNTankHunter_L ButtonImage = SNTankHunter UpgradeCameo1 = Upgrade_Nationalism ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = NIMSST_SKN IdleAnimation = NIMSST_SKL.NIMSST_STA 0 30 IdleAnimation = NIMSST_SKL.NIMSST_IDA IdleAnimation = NIMSST_SKL.NIMSST_IDB AnimationMode = ONCE AnimationSpeedFactorRange = 0.8 1.2 TransitionKey = TRANS_Stand WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponFireFXBone = PRIMARY Muzzle WeaponLaunchBone = PRIMARY Muzzle WeaponLaunchBone = SECONDARY Muzzle End AliasConditionState = REALLYDAMAGED ConditionState = FIRING_A Animation = NIMSST_SKL.NIMSST_ATA AnimationMode = ONCE TransitionKey = TRANS_START_FIRING End AliasConditionState = REALLYDAMAGED FIRING_A ConditionState = BETWEEN_FIRING_SHOTS_A Animation = NIMSST_SKL.NIMSST_STA AnimationMode = ONCE ; this is basically a trick: this guy has a nontrivial animation for firing, ; and a long recycle time between shots. we want him to finish his fire animation ; (unless he's ordered to do something else), so this is just a handy trick that ; says, "if the previous state had this transition key, allow it to finish before ; switching to us, if possible". WaitForStateToFinishIfPossible = TRANS_START_FIRING End AliasConditionState = REALLYDAMAGED BETWEEN_FIRING_SHOTS_A ConditionState = MOVING Animation = NIMSST_SKL.NIMSST_RNA 20 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = None ParticleSysBone = None InfantryDustTrails End AliasConditionState = REALLYDAMAGED MOVING ConditionState = RELOADING_A Animation = NIMSST_SKL.NIMSST_ATA 10 AnimationMode = ONCE ;WeaponLaunchBone = PRIMARY WeaponA End AliasConditionState = MOVING RELOADING_A AliasConditionState = REALLYDAMAGED MOVING RELOADING_A ConditionState = DYING Animation = NIMSST_SKL.NIMSST_DTA Animation = NIMSST_SKL.NIMSST_DTB AnimationSpeedFactorRange = 0.9 1.25 AnimationMode = ONCE TransitionKey = TRANS_Dying End TransitionState = TRANS_Dying TRANS_Flailing Animation = NIMSST_SKL.NIMSST_ADTD1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = NIMSST_SKL.NIMSST_ADTD2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = NIMSST_SKL.NIMSST_ADTD3 AnimationMode = ONCE TransitionKey = None End ;PARACHUTING ANIMATIONS ConditionState = FREEFALL Animation = NIMSST_SKL.NIMSST_POP AnimationMode = ONCE TransitionKey = TRANS_Falling End AliasConditionState = FREEFALL REALLYDAMAGED AliasConditionState = FREEFALL DYING ConditionState = PARACHUTING Animation = NIMSST_SKL.NIMSST_PHG AnimationMode = LOOP Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first TransitionKey = TRANS_Chute End AliasConditionState = PARACHUTING REALLYDAMAGED AliasConditionState = PARACHUTING DYING ; TransitionState = TRANS_Falling TRANS_Chute ; Animation = NIMSST_SKL.NIMSST_POP ; AnimationMode = ONCE ; Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first ; End TransitionState = TRANS_Chute TRANS_Stand Animation = NIMSST_SKL.NIMSST_PDN AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:TankHunter Side = China EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY ChinaInfantryTankHunterMissileLauncher End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 400 Prerequisites Object = ChinaBarracks End BuildCost = 300 BuildTime = 5.0 ;in seconds ExperienceValue = 20 20 40 60 ;Experience point value at each level ExperienceRequired = 0 100 200 400 ;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 = ChinaInfantryTankHunterCommandSet ; *** AUDIO Parameters *** VoiceSelect = TankHunterVoiceSelect VoiceMove = TankHunterVoiceMove VoiceAttack = TankHunterVoiceAttack VoiceAttackAir = TankHunterVoiceAttack SoundDie = TankHunterVoiceDie SoundDieFire = DieByFireChina SoundDieToxin = DieByToxinChina VoiceGuard = TankHunterVoiceMove VoiceFear = TankHunterVoiceFear UnitSpecificSounds VoiceCreate = TankHunterVoiceCreate VoiceGarrison = TankHunterVoiceGarrison VoiceEnter = TankHunterVoiceMove VoiceEnterHostile = TankHunterVoiceMove VoiceGetHealed = TankHunterVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL MissileDefenderLocomotor Behavior = HordeUpdate ModuleTag_04 UpdateRate = 1000 ; how often to recheck horde status (msec) RubOffRadius = 60 ; if I am this close to a real hordesman, I will get to be an honorary hordesman Radius = 30 ; how close other units must be to us to count towards our horde-ness (~30 feet or so) KindOf = INFANTRY ; what KindOf's must match to count towards horde-ness AlliesOnly = Yes ; do we only count allies towards horde status? ExactMatch = No ; do we only count units of our exact same type towards horde status? (overrides kindof) 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_05 Mass = 5.0 End Behavior = SpecialAbility ModuleTag_07 SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack UpdateModuleStartsAttack = Yes InitiateSound = TankHunterVoiceTNT End Behavior = SpecialAbilityUpdate ModuleTag_08 SpecialPowerTemplate = SpecialAbilityTankHunterTNTAttack StartAbilityRange = 5.0 PreparationTime = 0 SpecialObject = TNTStickyBomb MaxSpecialObjects = 8 SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate). SpecialObjectsPersistent = Yes ;Charges are persistent till lifetime expires or owner detonates them. UniqueSpecialObjectTargets = Yes ;This prevents multiple charges placed on the same object. FleeRangeAfterCompletion = 100.0 ;Runs away after finishing ability End Behavior = SquishCollide ModuleTag_09 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_12 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End 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 ;------------------------------------------------------------------------------ Object TNTStickyBomb ;Created by Chinese Tank Hunters ;No drawable because it's invisible ; *** ART Parameters *** ; ***DESIGN parameters *** Side = China EditorSorting = SYSTEM TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 75.0 ;Allow the stickybomb to show itself to user? ShroudClearingRange = 75 ArmorSet Conditions = None Armor = InvulnerableAllArmor End ; *** AUDIO Parameters *** SoundDie = BombTruckDefaultBombDetonation UnitSpecificSounds UnitBombPing = BombTickTimed End ; *** ENGINEERING Parameters *** RadarPriority = NOT_ON_RADAR KindOf = PROJECTILE MINE NO_COLLIDE Behavior = PhysicsBehavior ModuleTag_01 Mass = 5 End ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior) Behavior = LifetimeUpdate ModuleTag_02 MinLifetime = 10000 ; min lifetime in msec MaxLifetime = 10000 ; max lifetime in msec End Behavior = StickyBombUpdate ModuleTag_03 ; nothing End Behavior = SlowDeathBehavior ModuleTag_04 DestructionDelay = 1 FX = INITIAL WeaponFX_TNTStickyBombDetonation Weapon = FINAL TNTDetonationWeapon End Body = HighlanderBody ModuleTag_NewBody MaxHealth = 1.0 InitialHealth = 1.0 End End ;------------------------------------------------------------------------------ Object RemoteC4Charge ;Created by ColonelBurton ;No drawable because it's invisible ; *** ART Parameters *** ; ***DESIGN parameters *** Side = America EditorSorting = SYSTEM TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 75.0 ;Allow the stickybomb to show itself to user? ShroudClearingRange = 75 ArmorSet Conditions = None Armor = InvulnerableAllArmor End ; *** AUDIO Parameters *** SoundDie = RemoteDemoChargeExplosion UnitSpecificSounds UnitBombPing = BombTickRemote End ; *** ENGINEERING Parameters *** RadarPriority = NOT_ON_RADAR KindOf = PROJECTILE MINE NO_COLLIDE ;Body = ActiveBody ModuleTag_02 ; MaxHealth = 1.0 ; InitialHealth = 1.0 ;End Body = HighlanderBody ModuleTag_NewBody MaxHealth = 1.0 InitialHealth = 1.0 End Behavior = StealthUpdate ModuleTag_03 StealthDelay = 0 ; msec StealthForbiddenConditions = NONE FriendlyOpacityMin = 50.0% InnateStealth = Yes End Behavior = StickyBombUpdate ModuleTag_04 ;Keeps it attached properly to the intended target should it move. End Behavior = SlowDeathBehavior ModuleTag_05 DestructionDelay = 1 FX = INITIAL WeaponFX_TNTStickyBombDetonation Weapon = FINAL BurtonC4ChargeWeapon End Geometry = CYLINDER GeometryMajorRadius = 0.0 GeometryHeight = 0.0 GeometryIsSmall = No End ;------------------------------------------------------------------------------ Object TimedC4Charge ;Created by Colonel Burton ;No drawable because it's invisible ; *** ART Parameters *** ; ***DESIGN parameters *** Side = America EditorSorting = SYSTEM TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 75.0 ;Allow the stickybomb to show itself to user? ShroudClearingRange = 75 ArmorSet Conditions = None Armor = InvulnerableAllArmor End ; *** AUDIO Parameters *** SoundDie = RemoteDemoChargeExplosion UnitSpecificSounds UnitBombPing = BombTickTimed End ; *** ENGINEERING Parameters *** RadarPriority = NOT_ON_RADAR KindOf = PROJECTILE MINE NO_COLLIDE ;Body = ActiveBody ModuleTag_02 ; MaxHealth = 1.0 ; InitialHealth = 1.0 ;End Body = HighlanderBody ModuleTag_NewBody MaxHealth = 1.0 InitialHealth = 1.0 End Behavior = StealthUpdate ModuleTag_03 StealthDelay = 0 ; msec StealthForbiddenConditions = NONE FriendlyOpacityMin = 50.0% InnateStealth = Yes End ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior) Behavior = LifetimeUpdate ModuleTag_04 MinLifetime = 20000 ; min lifetime in msec MaxLifetime = 20000 ; max lifetime in msec End Behavior = StickyBombUpdate ModuleTag_05 ;Keeps it attached properly to the intended target should it move. End Behavior = SlowDeathBehavior ModuleTag_06 DestructionDelay = 1 FX = INITIAL WeaponFX_TNTStickyBombDetonation Weapon = FINAL BurtonC4ChargeWeapon End Geometry = CYLINDER GeometryMajorRadius = 0.0 GeometryHeight = 0.0 GeometryIsSmall = No End ;------------------------------------------------------------------------------ Object DemoTrapDetonationObject ;The explodes-next-frame object when demo trap is triggered. ; ***DESIGN parameters *** Side = GLA EditorSorting = SYSTEM TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 0.0 ;Allow the stickybomb to show itself to user? ; *** AUDIO Parameters *** ; *** ENGINEERING Parameters *** RadarPriority = NOT_ON_RADAR KindOf = PROJECTILE Behavior = PhysicsBehavior ModuleTag_01 Mass = 5 End ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior) Behavior = LifetimeUpdate ModuleTag_02 MinLifetime = 1 ; min lifetime in msec MaxLifetime = 1 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_03 DestructionDelay = 1 FX = INITIAL WeaponFX_DemoTrapDetonation Weapon = FINAL DemoTrapDetonationWeapon End End ;------------------------------------------------------------------------------ Object CINE_DemoTrapDetonationObject ;The explodes-next-frame object when demo trap is triggered. ; ***DESIGN parameters *** Side = GLA EditorSorting = SYSTEM TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) VisionRange = 0.0 ;Allow the stickybomb to show itself to user? ; *** AUDIO Parameters *** ; *** ENGINEERING Parameters *** RadarPriority = NOT_ON_RADAR KindOf = PROJECTILE Behavior = PhysicsBehavior ModuleTag_01 Mass = 5 End ;This determines how long the bomb lives before it explodes (via SlowDeathBehavior) Behavior = LifetimeUpdate ModuleTag_02 MinLifetime = 1 ; min lifetime in msec MaxLifetime = 1 ; max lifetime in msec End Behavior = SlowDeathBehavior ModuleTag_03 DestructionDelay = 1 FX = INITIAL CINE_WeaponFX_DemoTrapDetonation Weapon = FINAL DummyWeapon End End ;------------------------------------------------------------------------------ ; @todo -- this entire unit is "first pass only" and needs lots of specialization Object ChinaInfantrySecretPolice ; *** ART Parameters *** Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ; @todo srj -- all these states are using placeholder art; need to add anims, etc. DefaultConditionState Model = NIHacker End End ; ***DESIGN parameters *** DisplayName = OBJECT:SecretPolice Side = China EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY None End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 150 ShroudClearingRange = 150 Prerequisites Object = ChinaBarracks End BuildCost = 100 BuildTime = 3.0 ;in seconds ExperienceValue = 50 100 150 400 ;Experience point value at each level ExperienceRequired = 0 150 450 900 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience ; *** AUDIO Parameters *** VoiceSelect = RedGuardVoiceSelect VoiceMove = RedGuardVoiceMove VoiceAttack = RedGuardVoiceAttack SoundDie = RedGuardVoiceDie SoundDieFire = DieByFireChina SoundDieToxin = DieByToxinChina ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS INFANTRY SCORE Body = ActiveBody ModuleTag_02 MaxHealth = 50.0 InitialHealth = 50.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL BasicHumanLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End Behavior = SlowDeathBehavior ModuleTag_05 SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 End Behavior = SquishCollide ModuleTag_06 ;nothing End Behavior = FXListDie ModuleTag_07 DeathTypes = ALL -CRUSHED -SPLATTED DeathFX = FX_GIDie End Behavior = FXListDie ModuleTag_08 DeathTypes = NONE +CRUSHED +SPLATTED DeathFX = FX_GIDieCrushed End Behavior = PoisonedBehavior ModuleTag_09 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Geometry = CYLINDER GeometryMajorRadius = 10.0 GeometryMinorRadius = 10.0 GeometryHeight = 12.0 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 14; ShadowSizeY = 14; ShadowTexture = ShadowI; BuildCompletion = APPEARS_AT_RALLY_POINT End ;------------------------------------------------------------------------------ Object GLAInfantryWorker ; *** ART Parameters *** SelectPortrait = SUWorker_L ButtonImage = SUWorker ;UpgradeCameo1 = NONE ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = UIWRKR_SKN IdleAnimation = UIWRKR_SKL.UIWRKR_STA 0 9 IdleAnimation = UIWRKR_SKL.UIWRKR_IDA AnimationMode = ONCE TransitionKey = TRANS_Stand End ConditionState = MOVING Animation = UIWRKR_SKL.UIWRKR_RNA 16 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_Moving ParticleSysBone = None InfantryDustTrails End ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time, ; since we flip the bit once we get pretty close to the target. but it looks ; funky to do the construction animation while moving. ; so just use the normal move animation in that case. AliasConditionState = ACTIVELY_CONSTRUCTING MOVING ConditionState = ATTACKING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_MS AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_MetalDetector_Standing End ConditionState = MOVING ATTACKING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_MSW 50 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_MetalDetector_Moving ParticleSysBone = None InfantryDustTrails End AliasConditionState = MOVING ATTACKING CARRYING TransitionState = TRANS_Stand TRANS_MetalDetector_Standing ;STANDING -> ATTACKING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRB1;take out standing AnimationMode = ONCE End TransitionState = TRANS_MetalDetector_Standing TRANS_Stand ;ATTACKING -> STANDING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRB2;put away standing AnimationMode = ONCE End TransitionState = TRANS_Carry TRANS_MetalDetector_Standing ;CARRYING -> ATTACKING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRB1;take out standing AnimationMode = ONCE End TransitionState = TRANS_MetalDetector_Standing TRANS_Carry ;ATTACKING -> CARRYING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRB2;put away standing AnimationMode = ONCE End TransitionState = TRANS_Carry TRANS_MetalDetector_Moving ;CARRYING -> MOVING ATTACKING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION] AnimationMode = ONCE AnimationSpeedFactorRange = 2.0 2.0 End TransitionState = TRANS_MetalDetector_Moving TRANS_Stand ;MOVING ATTACKING -> STANDING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRB2;put away moving AnimationMode = ONCE End TransitionState = TRANS_Stand TRANS_MetalDetector_Moving ;STANDING -> MOVING ATTACKING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION] AnimationMode = ONCE AnimationSpeedFactorRange = 2.0 2.0 End TransitionState = TRANS_Moving TRANS_MetalDetector_Standing ;MOVING -> ATTACKING [STANDING] ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRB1;take out standing AnimationMode = ONCE End TransitionState = TRANS_MetalDetector_Standing TRANS_Moving ;ATTACKING [STANDING] -> MOVING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRC2;put away moving [NEW NON-SKATING ANIMATION] AnimationMode = ONCE AnimationSpeedFactorRange = 2.0 2.0 End TransitionState = TRANS_Moving TRANS_MetalDetector_Moving ;MOVING -> MOVING ATTACKING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION] AnimationMode = ONCE AnimationSpeedFactorRange = 2.0 2.0 End TransitionState = TRANS_MetalDetector_Moving TRANS_Moving ;MOVING ATTACKING -> MOVING ShowSubObject = MINED_SKIN Animation = UIWRKR_SKL.UIWRKR_TRC2;put away moving [NEW NON-SKATING ANIMATION] AnimationMode = ONCE AnimationSpeedFactorRange = 2.0 2.0 End ConditionState = MOVING CARRYING ShowSubObject = BOX Animation = UIWRKR_SKL.UIWRKR_CARY 12 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_Carry ParticleSysBone = None InfantryDustTrails End ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time, ; since we flip the bit once we get pretty close to the target. but it looks ; funky to do the construction animation while moving. ; so just use the normal move animation in that case. AliasConditionState = ACTIVELY_CONSTRUCTING MOVING CARRYING ConditionState = CARRYING ShowSubObject = BOX Animation = UIWRKR_SKL.UIWRKR_CARST 30 AnimationMode = LOOP Flags = RANDOMSTART TransitionKey = TRANS_Carry End ConditionState = DYING Animation = UIWRKR_SKL.UIWRKR_DTA AnimationMode = ONCE TransitionKey = TRANS_Dying End AliasConditionState = DYING CARRYING TransitionState = TRANS_Dying TRANS_Flailing Animation = UIWRKR_SKL.UIWRKR_ADTE1 AnimationMode = ONCE End ConditionState = DYING EXPLODED_FLAILING Animation = UIWRKR_SKL.UIWRKR_ADTE2 AnimationMode = LOOP TransitionKey = TRANS_Flailing End ConditionState = DYING EXPLODED_BOUNCING Animation = UIWRKR_SKL.UIWRKR_ADTE3 AnimationMode = ONCE TransitionKey = None End ConditionState = SPECIAL_CHEERING Animation = UIWRKR_SKL.UIWRKR_CHA AnimationMode = ONCE End ConditionState = ACTIVELY_CONSTRUCTING Animation = UIWRKR_SKL.UIWRKR_BDA AnimationMode = LOOP TransitionKey = TRANS_Constructing End AliasConditionState = ACTIVELY_CONSTRUCTING CARRYING ; -------------------- TransitionState = TRANS_Stand TRANS_Carry ShowSubObject = BOX Animation = UIWRKR_SKL.UIWRKR_PIK AnimationMode = ONCE End TransitionState = TRANS_Carry TRANS_Stand ShowSubObject = BOX Animation = UIWRKR_SKL.UIWRKR_PIK AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST End TransitionState = TRANS_Stand TRANS_Constructing Animation = UIWRKR_SKL.UIWRKR_TRA1 AnimationMode = ONCE End TransitionState = TRANS_Constructing TRANS_Stand Animation = UIWRKR_SKL.UIWRKR_TRA2 AnimationMode = ONCE End End ; ***DESIGN parameters *** DisplayName = OBJECT:Worker Side = GLA EditorSorting = INFANTRY TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY None End WeaponSet Conditions = MINE_CLEARING_DETAIL Weapon = PRIMARY WorkerMineDisarmingWeapon End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 100 ShroudClearingRange = 200 ;Prerequisites ; Object = GLABarracks GLASupplyStash ;commented out, or else you can't build from Con Yard as Dozer. ;End BuildCost = 200 BuildTime = 5.0 ;in seconds CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = GLAWorkerCommandSet ; *** AUDIO Parameters *** VoiceSelect = WorkerVoiceSelect VoiceMove = WorkerVoiceMove VoiceAttack = WorkerVoiceMove SoundDie = WorkerVoiceDie SoundDieFire = DieByFireGLA SoundDieToxin = DieByToxinChina VoiceGuard = WorkerVoiceMove VoiceFear = WorkerVoiceFear VoiceTaskComplete = WorkerVoiceBuildComplete UnitSpecificSounds VoiceEnter = WorkerVoiceMove VoiceEnterHostile = WorkerVoiceMove VoiceGarrison = WorkerVoiceGarrison VoiceCreate = WorkerVoiceCreate VoiceSupply = WorkerVoiceSupply VoiceNoBuild = WorkerVoiceBuildNot VoiceRepair = WorkerVoiceRepair VoiceDisarm = WorkerVoiceClearMine VoiceBuildResponse = WorkerVoiceBuild VoiceGetHealed = WorkerVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER DOZER HARVESTER SCORE Body = ActiveBody ModuleTag_02 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = WorkerAIUpdate ModuleTag_03 RepairHealthPercentPerSecond = 2% ; % of max health to repair each second BoredTime = 5000 ; in milliseconds BoredRange = 150 ; when bored, we look this far away to do something MaxBoxes = 1 SupplyCenterActionDelay = 150 ;400 ; ms for whole thing (one transaction) SupplyWarehouseActionDelay = 150 ;400 ;ms per box (many small transactions) SupplyWarehouseScanDistance = 700 ;350 ; Max distance to look for a warehouse, or we go home. (Direct dock command on warehouse overrides, and no max on Center Scan) SuppliesDepletedVoice = WorkerVoiceSuppliesDepleted ; the only "enemies" that workers can acquire are mines, to be disarmed... AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL FastHumanLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End Behavior = SquishCollide ModuleTag_06 ;nothing End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDie 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_GIDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_GIDie OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_GIDie 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_GIDie OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End ; --- end Death modules --- Behavior = StealthDetectorUpdate ModuleTag_12 DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec) ;DetectionRange = ??? ;Dustin, enable this for independant balancing! CanDetectWhileGarrisoned = No ;Garrisoned means being in a structure that you units can shoot out of. CanDetectWhileContained = No ;Contained means being in a transport or tunnel network. ExtraRequiredKindOf = MINE ; we can only detect MINES, not other stealthed things End Behavior = PoisonedBehavior ModuleTag_13 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End 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 ;------------------------------------------------------------------------------ ; Also known as the Ambulance Object AmericaVehicleMedic ; *** ART Parameters *** SelectPortrait = SAAmbulance_L ButtonImage = SAAmbulance UpgradeCameo1 = Upgrade_AmericaBattleDrone UpgradeCameo2 = Upgrade_AmericaScoutDrone ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DTruckDraw ModuleTag_01 ConditionState = NONE Model = AVAmbulance Turret = Turret TurretPitch = TurretEL WeaponFireFXBone = PRIMARY WeaponA WeaponLaunchBone = PRIMARY WeaponA End ConditionState = REALLYDAMAGED Model = AVAmbulance_D Turret = Turret TurretPitch = TurretEL WeaponFireFXBone = PRIMARY WeaponA WeaponLaunchBone = PRIMARY WeaponA End ConditionState = RUBBLE Model = AVAmbulance_D End TrackMarks = EXTireTrack.tga OkToChangeModelColor = Yes 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 = 2.5 ; This speed is added to the rotation speed when powersliding. End ; ***DESIGN parameters *** DisplayName = OBJECT:Medic Side = America EditorSorting = VEHICLE TransportSlotCount = 3 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet ;*** Fully automated and driven by the CleanupHazardUpdate *** Conditions = None Weapon = PRIMARY AmbulanceCleanHazardWeapon AutoChooseSources = PRIMARY NONE End ArmorSet Conditions = None Armor = ToxinTruckArmor DamageFX = TruckDamageFX End BuildCost = 600 BuildTime = 10.0 ;in seconds VisionRange = 100 ShroudClearingRange = 400 Prerequisites Object = AmericaWarFactory End ExperienceValue = 50 50 50 50 ;Experience point value at each level IsTrainable = No 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 = AmericaVehicleAmbulanceCommandSet ; *** AUDIO Parameters *** VoiceSelect = AmbulanceVoiceSelect VoiceMove = AmbulanceVoiceMove VoiceGuard = AmbulanceVoiceMove VoiceAttack = AmbulanceVoiceDetox SoundMoveStart = HumveeMoveStart SoundMoveStartDamaged = HumveeMoveStart SoundEnter = HumveeEnter SoundExit = HumveeExit UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs VoiceCreate = AmbulanceVoiceCreate TurretMoveStart = NoSound TurretMoveLoop = TurretMoveLoop ; Required for the W3DTruckDraw module TruckLandingSound = RocketBuggyLand TruckPowerslideSound = RocketBuggyPowerslide VoiceCrush = AmbulanceVoiceCrush VoiceEnter = AmbulanceVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS VEHICLE SCORE TRANSPORT Body = ActiveBody ModuleTag_02 MaxHealth = 240.0 InitialHealth = 240.0 End Behavior = CleanupHazardUpdate ModuleTag_03 WeaponSlot = PRIMARY ScanRate = 1000 ScanRange = 100.0 ;If this range exceeds the AmbulanceCleanHazardWeapon AttackRange, it'll move! End ;Can be ordered to clean up a larger area with the ability to move around at an extended range. Behavior = CleanupAreaPower ModuleTag_04 SpecialPowerTemplate = SpecialAbilityAmbulanceCleanupArea MaxMoveDistanceFromLocation = 300.0 ;allows the unit to move around while cleaning up InitiateSound = AmbulanceVoiceDetox End Behavior = TransportAIUpdate ModuleTag_05 AutoAcquireEnemiesWhenIdle = No ;CleanupHazardUpdate handles this... Turret TurretTurnRate = 180 TurretPitchRate = 180 AllowsPitch = Yes MinPhysicalPitch = -20 ; If allows pitch, the lowest I can dip down to shoot. defaults to 0 (horizontal) TurretFireAngleSweep = PRIMARY 25 ControlledWeaponSlots = PRIMARY End End Locomotor = SET_NORMAL HumveeLocomotor Behavior = TransportContain ModuleTag_06 Slots = 3 HealthRegen%PerSec = 25 DamagePercentToUnits = 10% AllowInsideKindOf = INFANTRY AllowAlliesInside = Yes AllowNeutralInside = No AllowEnemiesInside = No ExitDelay = 250 NumberOfExitPaths = 3 ; Defaults to 1. Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting End Behavior = PhysicsBehavior ModuleTag_07 Mass = 50.0 End Behavior = SlowDeathBehavior ModuleTag_08 DeathTypes = ALL -CRUSHED -SPLATTED DestructionDelay = 0 FX = FINAL FX_GenericTankDeathExplosion OCL = FINAL OCL_FinalAmbulanceDebris End Behavior = ObjectCreationUpgrade ModuleTag_09 UpgradeObject = OCL_AmericanBattleDrone TriggeredBy = Upgrade_AmericaBattleDrone ConflictsWith = Upgrade_AmericaScoutDrone End Behavior = ObjectCreationUpgrade ModuleTag_10 UpgradeObject = OCL_AmericanScoutDrone TriggeredBy = Upgrade_AmericaScoutDrone ConflictsWith = Upgrade_AmericaBattleDrone End Behavior = ProductionUpdate ModuleTag_11 MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame End Behavior = DestroyDie ModuleTag_12 DeathTypes = NONE +CRUSHED +SPLATTED 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 = FXListDie ModuleTag_15 DeathTypes = ALL -CRUSHED -SPLATTED DeathFX = FX_GenericTankDeathEffect End Behavior = CreateCrateDie ModuleTag_16 CrateData = SalvageCrateData ;CrateData = EliteTankCrateData ;CrateData = HeroicTankCrateData End Behavior = ExperienceScalarUpgrade ModuleTag_17 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = TransitionDamageFX ModuleTag_18 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition 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 Behavior = AutoHealBehavior ModuleTag_22 HealingAmount = 4 HealingDelay = 1000 ; msec Radius = 100.0f StartsActive = Yes KindOf = INFANTRY End Geometry = BOX GeometryMajorRadius = 14.0 GeometryMinorRadius = 7.0 GeometryHeight = 12.0 ; height set to allow clear clipping of projectile streams GeometryIsSmall = Yes Shadow = SHADOW_VOLUME End ;------------------------------------------------------------------------------ Object AmericaVehicleBattleDrone ; *** ART Parameters *** SelectPortrait = SABattleDrone_L ButtonImage = SABattleDrone UpgradeCameo1 = Upgrade_AmericaDroneArmor ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE ;MAIN CHASSIS Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes DefaultConditionState Model = AVBATTLEDR Animation = AVBATTLEDR.AVBATTLEDR AnimationMode = LOOP Turret = Turret01 TurretPitch = TurretEL01 WeaponMuzzleFlash = PRIMARY TurretFX01 WeaponFireFXBone = PRIMARY Muzzle01 End ConditionState = REALLYDAMAGED Model = AVBATTLEDR_D Animation = AVBATTLEDR_D.AVBATTLEDR_D AnimationMode = LOOP End End ;EXTENDING ARM (FOR REPAIRING) Draw = W3DModelDraw ModuleTag_02 OkToChangeModelColor = Yes DefaultConditionState Model = AVBATTLEDR_A End ;Unloading the arm (before starting to repair) ConditionState = UNPACKING Animation = AVBATTLEDR_A1.AVBATTLEDR_A1 AnimationMode = ONCE End ;Loading the arm (after reparing complete) ConditionState = PACKING Animation = AVBATTLEDR_A1.AVBATTLEDR_A1 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST End ;Repair extending animation 1 (using bogus condition states -- doesn't justify making a whole new set) ConditionState = FIRING_B Animation = AVBATTLEDR_A2.AVBATTLEDR_A2 AnimationMode = ONCE End ;Repair retracting animation 1 (using bogus condition states -- doesn't justify making a whole new set) ConditionState = FIRING_C Animation = AVBATTLEDR_A2.AVBATTLEDR_A2 AnimationMode = ONCE_BACKWARDS Flags = START_FRAME_LAST End End ; ***DESIGN parameters *** DisplayName = OBJECT:BattleDrone Side = America EditorSorting = VEHICLE TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY BattleDroneMachineGun End ArmorSet Conditions = None Armor = TankArmor DamageFX = SmallTankDamageFX End BuildCost = 200 BuildTime = 5.0 ;in seconds VisionRange = 150 ShroudClearingRange = 150 Prerequisites Object = AmericaWarFactory End ExperienceValue = 10 10 10 10 ;Experience point value at each level IsTrainable = No ; *** AUDIO Parameters *** VoiceSelect = NoSound VoiceMove = NoSound VoiceAttack = NoSound SoundMoveStart = NoSound UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs TurretMoveStart = NoSound TurretMoveLoop = TurretMoveLoop End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SELECTABLE CAN_ATTACK DRONE Body = ActiveBody ModuleTag_03 MaxHealth = 100.0 InitialHealth = 100.0 End Behavior = AIUpdateInterface ModuleTag_04 Turret TurretTurnRate = 360 // turn rate, in degrees per sec TurretPitchRate = 360 MinPhysicalPitch = -75 ; If allows pitch, the lowest I can dip down to shoot. defaults to 0 (horizontal) AllowsPitch = Yes ControlledWeaponSlots = PRIMARY End AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL BattleDroneLocomotor Locomotor = SET_PANIC BattleDronePanicLocomotor ;used for repairing master (zippy) Behavior = PhysicsBehavior ModuleTag_05 Mass = 50.0 KillWhenRestingOnGround = Yes AllowBouncing = No End Behavior = MaxHealthUpgrade ModuleTag_06 TriggeredBy = Upgrade_AmericaDroneArmor AddMaxHealth = 50.0 ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH End Behavior = SlavedUpdate ModuleTag_07 GuardMaxRange = 35 ;How far away from master I'm allowed when master is idle (doesn't wander) GuardWanderRange = 35 ;How far away I'm allowed to wander from master while guarding. AttackRange = 75 ;How far away from master I'm allowed when master is attacking a target. AttackWanderRange = 10 ;How far I'm allowed to wander from target. ScoutRange = 75 ;How far away from master I'm allowed when master is moving. ScoutWanderRange = 10 ;How far I'm allowed to wander from scout point. RepairRange = 8 ;How far I can zip around while repair (only moves when he stops welding) RepairMinAltitude = 18.0 ;My minimum repair hover altitude. RepairMaxAltitude = 24.0 ;My maximum repair hover altitude. RepairRatePerSecond = 5.0 ;How many health points can I repair per second. RepairWhenBelowHealth% = 60 ;How low should my master's health be (in %) before I should prioritize repairing. RepairMinReadyTime = 300 RepairMaxReadyTime = 750 RepairMinWeldTime = 250 RepairMaxWeldTime = 500 RepairWeldingSys = BlueSparks RepairWeldingFXBone = Muzzle02 StayOnSameLayerAsMaster = Yes End Behavior = DestroyDie ModuleTag_08 DeathTypes = ALL End Behavior = CreateObjectDie ModuleTag_09 DeathTypes = ALL CreationList = OCL_AmericaBattleDroneExplode End Behavior = TransitionDamageFX ModuleTag_10 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleDroneDamageTransitionSmall End Behavior = FXListDie ModuleTag_11 DeathTypes = ALL DeathFX = FX_AmericaBattleDroneExplode End Behavior = UpgradeDie ModuleTag_12 ;This frees the object based upgrade for the producer object. DeathTypes = ALL UpgradeToRemove = Upgrade_AmericaBattleDrone ModuleTag_13 End Behavior = FlammableUpdate ModuleTag_21 AflameDuration = 5000 ; If I catch fire, I'll burn for this long... AflameDamageAmount = 3 ; taking this much damage... AflameDamageDelay = 500 ; this often. End Geometry = CYLINDER GeometryMajorRadius = 5 GeometryMinorRadius = 5 GeometryHeight = 10.0 GeometryIsSmall = Yes Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ ; **data here is a copy and paste of AmericaVehicleMedic** Object AmericaVehicleGuardianDrone ; *** ART Parameters *** Draw = W3DTankDraw ModuleTag_01 DefaultConditionState Model = AVGuardDr Turret = Turret WeaponFireFXBone = PRIMARY TurretMS WeaponMuzzleFlash = PRIMARY TurretFX End TrackMarks = EXTnkTrack.tga OkToChangeModelColor = Yes End ; ***DESIGN parameters *** DisplayName = OBJECT:GuardianDrone Side = America EditorSorting = VEHICLE TransportSlotCount = 3 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY CrusaderTankGun End ArmorSet Conditions = None Armor = TankArmor DamageFX = TankDamageFX End BuildCost = 700 BuildTime = 8.0 ;in seconds VisionRange = 150 ShroudClearingRange = 150 Prerequisites Object = AmericaWarFactory End ExperienceValue = 50 100 150 400 ;Experience point value at each level IsTrainable = No ; *** AUDIO Parameters *** VoiceSelect = NoSound VoiceMove = NoSound VoiceAttack = NoSound SoundMoveStart = NoSound UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs TurretMoveStart = NoSound TurretMoveLoop = TurretMoveLoop End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK CAN_CAST_REFLECTIONS VEHICLE SCORE Body = ActiveBody ModuleTag_02 MaxHealth = 300.0 InitialHealth = 300.0 End Behavior = AIUpdateInterface ModuleTag_03 Turret TurretTurnRate = 60 // turn rate, in degrees per sec ControlledWeaponSlots = PRIMARY End AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL BasicTankLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 50.0 End Behavior = SlowDeathBehavior ModuleTag_05 DestructionDelay = 500 FX = FINAL FX_GenericTankDeathExplosion End Behavior = MaxHealthUpgrade ModuleTag_06 TriggeredBy = Upgrade_AmericaDroneArmor AddMaxHealth = 50.0 ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH End Behavior = FXListDie ModuleTag_07 DeathFX = FX_GenericTankDeathEffect End Behavior = CreateObjectDie ModuleTag_08 CreationList = OCL_GenericTankDeathEffect End Behavior = CreateCrateDie ModuleTag_09 CrateData = SalvageCrateData ;CrateData = EliteTankCrateData ;CrateData = HeroicTankCrateData End Behavior = TransitionDamageFX ModuleTag_10 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn End Behavior = FlammableUpdate ModuleTag_21 AflameDuration = 5000 ; If I catch fire, I'll burn for this long... AflameDamageAmount = 3 ; taking this much damage... AflameDamageDelay = 500 ; this often. End Geometry = BOX GeometryMajorRadius = 15.0 GeometryMinorRadius = 10.0 GeometryHeight = 10.0 GeometryIsSmall = Yes Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object AmericaVehicleScoutDrone ; *** ART Parameters *** SelectPortrait = SAScout_L ButtonImage = SAScout UpgradeCameo1 = Upgrade_AmericaDroneArmor ;UpgradeCameo2 = NONE ;UpgradeCameo3 = NONE ;UpgradeCameo4 = NONE ;UpgradeCameo5 = NONE Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ConditionState = NONE Model = AVScoutDr Animation = AVScoutDr.AVScoutDr AnimationMode = LOOP End ConditionState = REALLYDAMAGED Model = AVScoutDr_d Animation = AVScoutDr_d.AVScoutDr_d AnimationMode = LOOP End End ; ***DESIGN parameters *** DisplayName = OBJECT:ScoutDrone Side = America EditorSorting = VEHICLE TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) ArmorSet Conditions = None Armor = TankArmor DamageFX = SmallTankDamageFX End BuildCost = 100 BuildTime = 5.0 ;in seconds VisionRange = 150 ShroudClearingRange = 500 IsTrainable = No ;Can gain experience ; *** AUDIO Parameters *** VoiceSelect = NoSound VoiceMove = NoSound VoiceAttack = NoSound SoundMoveStart = NoSound UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs TurretMoveStart = NoSound TurretMoveLoop = TurretMoveLoop End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SELECTABLE DRONE Body = ActiveBody ModuleTag_02 MaxHealth = 20.0 InitialHealth = 20.0 End Behavior = AIUpdateInterface ModuleTag_03 Turret TurretTurnRate = 60 // turn rate, in degrees per sec ControlledWeaponSlots = PRIMARY End AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL DroneLocomotor Behavior = StealthDetectorUpdate ModuleTag_04 DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec) ;DetectionRange = ??? ;Dustin, enable this for independant balancing! CanDetectWhileGarrisoned = No ;Garrisoned means being in a structure that you units can shoot out of. CanDetectWhileContained = No ;Contained means being in a transport or tunnel network. End Behavior = PhysicsBehavior ModuleTag_05 Mass = 50.0 KillWhenRestingOnGround = Yes AllowBouncing = No End Behavior = SlavedUpdate ModuleTag_06 GuardMaxRange = 35 ;How far away from master I'm allowed when master is idle (doesn't wander) GuardWanderRange = 35 ;How far away I'm allowed to wander from master while guarding. AttackRange = 75 ;How far away from master I'm allowed when master is attacking a target. AttackWanderRange = 10 ;How far I'm allowed to wander from target. ScoutRange = 75 ;How far away from master I'm allowed when master is moving. ScoutWanderRange = 10 ;How far I'm allowed to wander from scout point. DistToTargetToGrantRangeBonus = 20 ;How close I have to be to the master's target in order to grant master a range bonus. StayOnSameLayerAsMaster = Yes End Behavior = MaxHealthUpgrade ModuleTag_07 TriggeredBy = Upgrade_AmericaDroneArmor AddMaxHealth = 50.0 ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH End Behavior = DestroyDie ModuleTag_08 DeathTypes = ALL End Behavior = CreateObjectDie ModuleTag_09 DeathTypes = ALL CreationList = OCL_AmericaScoutDroneExplode End Behavior = FXListDie ModuleTag_10 DeathTypes = ALL DeathFX = FX_AmericaScoutDroneExplode End Behavior = TransitionDamageFX ModuleTag_11 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01 ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleDroneDamageTransitionSmall End Behavior = UpgradeDie ModuleTag_12 ;This frees the object based upgrade for the producer object. DeathTypes = ALL UpgradeToRemove = Upgrade_AmericaScoutDrone ModuleTag_13 End Behavior = FlammableUpdate ModuleTag_21 AflameDuration = 5000 ; If I catch fire, I'll burn for this long... AflameDamageAmount = 3 ; taking this much damage... AflameDamageDelay = 500 ; this often. End Geometry = CYLINDER GeometryMajorRadius = 5.0 GeometryMinorRadius = 6.0 GeometryHeight = 3.0 GeometryIsSmall = Yes Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object AmericaVehicleSpyDrone ; *** ART Parameters *** SelectPortrait = SAScout_L ButtonImage = SAScout Draw = W3DModelDraw ModuleTag_01 OkToChangeModelColor = Yes ConditionState = NONE Model = AVSpyDrone Animation = AVSpyDrone.AVSpyDrone AnimationMode = LOOP End ; Damage state waiting for pristine's approval (or may just not need one) ; ConditionState = REALLYDAMAGED ; Model = AVSpyDrone_d ; Animation = AVSpyDrone_d.AVSpyDrone_d ; AnimationMode = LOOP ; End End ; ***DESIGN parameters *** DisplayName = OBJECT:SpyDrone Side = America EditorSorting = VEHICLE TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable) ArmorSet Conditions = None Armor = AirplaneArmor DamageFX = SmallTankDamageFX End VisionRange = 250 ShroudClearingRange = 0; Dynamic range below IsTrainable = No ; *** AUDIO Parameters *** VoiceSelect = NoSound VoiceMove = NoSound VoiceAttack = NoSound SoundMoveStart = NoSound UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs TurretMoveStart = NoSound TurretMoveLoop = TurretMoveLoop End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD CAN_CAST_REFLECTIONS VEHICLE SCORE DRONE SELECTABLE INERT Body = ActiveBody ModuleTag_02 MaxHealth = 200.0 InitialHealth = 200.0 End Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = No End Locomotor = SET_NORMAL SpyDroneLocomtor Behavior = DynamicShroudClearingRangeUpdate ModuleTag_04 FinalVision = 250.0 ChangeInterval = 50 ShrinkDelay = 2000 ShrinkTime = 1000 GrowDelay = 0 GrowTime = 1000 GrowInterval = 10 ; Faster than most GridDecalTemplate Texture = EXGrid Style = SHADOW_ADDITIVE_DECAL OpacityMin = 50% OpacityMax = 100% OpacityThrobTime = 500 Color = R:32 G:64 B:128 A:0 //dim blue, additive End End Behavior = StealthDetectorUpdate ModuleTag_05 DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec) ;DetectionRange = ??? ;Dustin, enable this for independant balancing! CanDetectWhileGarrisoned = No ;Garrisoned means being in a structure that you units can shoot out of. CanDetectWhileContained = No ;Contained means being in a transport or tunnel network. End Behavior = PhysicsBehavior ModuleTag_06 Mass = 50.0 End Behavior = DestroyDie ModuleTag_07 DeathTypes = ALL End Behavior = CreateObjectDie ModuleTag_08 DeathTypes = ALL CreationList = OCL_AmericaScoutDroneExplode End Behavior = StealthUpdate ModuleTag_09 StealthDelay = 0 ; msec StealthForbiddenConditions = NONE InnateStealth = Yes OrderIdleEnemiesToAttackMeUponReveal = Yes End Behavior = MaxHealthUpgrade ModuleTag_10 TriggeredBy = Upgrade_AmericaDroneArmor AddMaxHealth = 50.0 ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH End Behavior = FlammableUpdate ModuleTag_21 AflameDuration = 5000 ; If I catch fire, I'll burn for this long... AflameDamageAmount = 3 ; taking this much damage... AflameDamageDelay = 500 ; this often. End Geometry = CYLINDER GeometryMajorRadius = 5.0 GeometryMinorRadius = 6.0 GeometryHeight = 3.0 GeometryIsSmall = Yes Shadow = SHADOW_VOLUME ShadowSizeX = 89 ; minimum elevation angle above horizon. Used to limit shadow length End ;------------------------------------------------------------------------------ Object AmericaTankCrusader ; *** ART Parameters *** SelectPortrait = SACLeopard_L ButtonImage = SACLeopard UpgradeCameo1 = Upgrade_AmericaBattleDrone UpgradeCameo2 = Upgrade_AmericaScoutDrone UpgradeCameo3 = Upgrade_AmericaAdvancedTraining UpgradeCameo4 = Upgrade_AmericaCompositeArmor ;UpgradeCameo5 = NONE Draw = W3DTankDraw ModuleTag_01 DefaultConditionState Model = AVLeopard Turret = Turret WeaponFireFXBone = PRIMARY TurretMS WeaponRecoilBone = PRIMARY Barrel WeaponMuzzleFlash = PRIMARY TurretFX WeaponLaunchBone = PRIMARY TurretMS End ConditionState = REALLYDAMAGED Model = AVLeopard_D End ConditionState = RUBBLE Model = AVLeopard_D End TrackMarks = EXTnkTrack.tga 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. OkToChangeModelColor = Yes End ; ***DESIGN parameters *** DisplayName = OBJECT:Crusader Side = America EditorSorting = VEHICLE TransportSlotCount = 3 WeaponSet Conditions = None Weapon = PRIMARY CrusaderTankGun ; Uncomment this when we want the crusader to have a machine too again ;Weapon = SECONDARY CrusaderMachineGun End ArmorSet Conditions = None Armor = TankArmor DamageFX = TankDamageFX End ;ArmorSet ; Conditions = PLAYER_UPGRADE ; Armor = UpgradedTankArmor ; DamageFX = TankDamageFX ;End BuildCost = 900 BuildTime = 10.0 ;in seconds VisionRange = 150 ShroudClearingRange = 300 Prerequisites Object = AmericaWarFactory 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 ;Can gain experience 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 = AmericaTankCrusaderCommandSet ; *** AUDIO Parameters *** VoiceSelect = CrusaderTankVoiceSelect VoiceMove = CrusaderTankVoiceMove VoiceGuard = CrusaderTankVoiceMove VoiceAttack = CrusaderTankVoiceAttack SoundMoveStart = CrusaderTankMoveStart SoundMoveStartDamaged = CrusaderTankMoveStart UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs VoiceCreate = CrusaderTankVoiceCreate VoiceEnter = CrusaderTankVoiceMove TurretMoveStart = NoSound TurretMoveLoop = TurretMoveLoop SoundEject = PilotSoundEject VoiceEject = PilotVoiceEject VoiceCrush = CrusaderTankVoiceCrush 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 = 480 InitialHealth = 480 End Behavior = AIUpdateInterface ModuleTag_03 Turret TurretTurnRate = 180 ;60 // turn rate, in degrees per sec ControlledWeaponSlots= PRIMARY End AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL CrusaderLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 50.0 End Behavior = ObjectCreationUpgrade ModuleTag_05 UpgradeObject = OCL_AmericanBattleDrone TriggeredBy = Upgrade_AmericaBattleDrone ConflictsWith = Upgrade_AmericaScoutDrone End Behavior = ObjectCreationUpgrade ModuleTag_06 UpgradeObject = OCL_AmericanScoutDrone TriggeredBy = Upgrade_AmericaScoutDrone ConflictsWith = Upgrade_AmericaBattleDrone End Behavior = ProductionUpdate ModuleTag_07 MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame End Behavior = ExperienceScalarUpgrade ModuleTag_08 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = MaxHealthUpgrade ModuleTag_09 TriggeredBy = Upgrade_AmericaCompositeArmor AddMaxHealth = 100.0 ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH End ; Turret fly off death Behavior = SlowDeathBehavior ModuleTag_10 DeathTypes = ALL -CRUSHED -SPLATTED ProbabilityModifier = 50 DestructionDelay = 500 DestructionDelayVariance = 100 FX = INITIAL FX_GenericTankDeathEffect OCL = MIDPOINT OCL_GenericTankDeathEffect FX = FINAL FX_GenericTankDeathExplosion OCL = FINAL OCL_CrusaderTurret End ; Catch fire, and explode death Behavior = SlowDeathBehavior ModuleTag_11 DeathTypes = ALL -CRUSHED -SPLATTED ProbabilityModifier = 50 DestructionDelay = 2000 DestructionDelayVariance = 300 FX = INITIAL FX_CrusaderCatchFire OCL = FINAL OCL_GenericTankDeathEffect FX = FINAL FX_GenericTankDeathExplosion End Behavior = TransitionDamageFX ModuleTag_12 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition End Behavior = DestroyDie ModuleTag_13 DeathTypes = NONE +CRUSHED +SPLATTED End ; A crushing defeat Behavior = FXListDie ModuleTag_14 DeathTypes = NONE +CRUSHED +SPLATTED DeathFX = FX_CarCrush End Behavior = CreateObjectDie ModuleTag_15 DeathTypes = NONE +CRUSHED +SPLATTED CreationList = OCL_CrusaderTank_CrushEffect End Behavior = CreateCrateDie ModuleTag_CratesChange CrateData = SalvageCrateData ;CrateData = EliteTankCrateData ;CrateData = HeroicTankCrateData End Behavior = EjectPilotDie ModuleTag_17 GroundCreationList = OCL_EjectPilotOnGround AirCreationList = OCL_EjectPilotViaParachute ExemptStatus = HIJACKED VeterancyLevels = ALL -REGULAR ;only vet+ gives pilot End Behavior = MaxHealthUpgrade ModuleTag_18 TriggeredBy = Upgrade_AmericaCompositeArmor AddMaxHealth = 100.0 ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH End Behavior = FlammableUpdate ModuleTag_21 AflameDuration = 5000 ; If I catch fire, I'll burn for this long... AflameDamageAmount = 3 ; taking this much damage... AflameDamageDelay = 500 ; this often. End Geometry = 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 ;------------------------------------------------------------------------------ ;******************************* Cinematic-Only unit ************************** Object CINE_AmericaTankCrusader ; *** ART Parameters *** SelectPortrait = SACLeopard_L ButtonImage = SACLeopard UpgradeCameo1 = Upgrade_AmericaBattleDrone UpgradeCameo2 = Upgrade_AmericaScoutDrone UpgradeCameo3 = Upgrade_AmericaAdvancedTraining UpgradeCameo4 = Upgrade_AmericaCompositeArmor ;UpgradeCameo5 = NONE Draw = W3DTankDraw ModuleTag_01 DefaultConditionState Model = AVLeopard Turret = Turret WeaponFireFXBone = PRIMARY TurretMS WeaponRecoilBone = PRIMARY Barrel WeaponMuzzleFlash = PRIMARY TurretFX WeaponLaunchBone = PRIMARY TurretMS End ConditionState = REALLYDAMAGED Model = AVLeopard_D End ConditionState = RUBBLE Model = AVLeopard_D End TrackMarks = EXTnkTrack.tga 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. OkToChangeModelColor = Yes End ; ***DESIGN parameters *** DisplayName = OBJECT:Crusader Side = America EditorSorting = VEHICLE TransportSlotCount = 3 WeaponSet Conditions = None Weapon = PRIMARY CrusaderTankGun ; Uncomment this when we want the crusader to have a machine too again ;Weapon = SECONDARY CrusaderMachineGun End ArmorSet Conditions = None Armor = TankArmor DamageFX = TankDamageFX End ;ArmorSet ; Conditions = PLAYER_UPGRADE ; Armor = UpgradedTankArmor ; DamageFX = TankDamageFX ;End BuildCost = 900 BuildTime = 10.0 ;in seconds VisionRange = 150 ShroudClearingRange = 300 Prerequisites Object = AmericaWarFactory 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 ;Can gain experience 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 = AmericaTankCrusaderCommandSet ; *** AUDIO Parameters *** VoiceSelect = CrusaderTankVoiceSelect VoiceMove = CrusaderTankVoiceMove VoiceGuard = CrusaderTankVoiceMove VoiceAttack = CrusaderTankVoiceAttack SoundMoveStart = CrusaderTankMoveStart SoundMoveStartDamaged = CrusaderTankMoveStart UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs VoiceCreate = CrusaderTankVoiceCreate VoiceEnter = CrusaderTankVoiceMove TurretMoveStart = NoSound TurretMoveLoop = TurretMoveLoop SoundEject = PilotSoundEject VoiceEject = PilotVoiceEject VoiceCrush = CrusaderTankVoiceCrush 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 = 480 InitialHealth = 480 End Behavior = AIUpdateInterface ModuleTag_03 Turret TurretTurnRate = 180 ;60 // turn rate, in degrees per sec ControlledWeaponSlots= PRIMARY End AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL CINE_CrusaderLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 50.0 End Behavior = ObjectCreationUpgrade ModuleTag_05 UpgradeObject = OCL_AmericanBattleDrone TriggeredBy = Upgrade_AmericaBattleDrone ConflictsWith = Upgrade_AmericaScoutDrone End Behavior = ObjectCreationUpgrade ModuleTag_06 UpgradeObject = OCL_AmericanScoutDrone TriggeredBy = Upgrade_AmericaScoutDrone ConflictsWith = Upgrade_AmericaBattleDrone End Behavior = ProductionUpdate ModuleTag_07 MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame End Behavior = ExperienceScalarUpgrade ModuleTag_08 TriggeredBy = Upgrade_AmericaAdvancedTraining AddXPScalar = 1.0 ;Increases experience gained by an additional 100% End Behavior = MaxHealthUpgrade ModuleTag_09 TriggeredBy = Upgrade_AmericaCompositeArmor AddMaxHealth = 100.0 ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH End ; Turret fly off death Behavior = SlowDeathBehavior ModuleTag_10 DeathTypes = ALL -CRUSHED -SPLATTED ProbabilityModifier = 50 DestructionDelay = 500 DestructionDelayVariance = 100 FX = INITIAL FX_GenericTankDeathEffect OCL = MIDPOINT OCL_GenericTankDeathEffect FX = FINAL FX_GenericTankDeathExplosion OCL = FINAL OCL_CrusaderTurret End ; Catch fire, and explode death Behavior = SlowDeathBehavior ModuleTag_11 DeathTypes = ALL -CRUSHED -SPLATTED ProbabilityModifier = 50 DestructionDelay = 2000 DestructionDelayVariance = 300 FX = INITIAL FX_CrusaderCatchFire OCL = FINAL OCL_GenericTankDeathEffect FX = FINAL FX_GenericTankDeathExplosion End Behavior = TransitionDamageFX ModuleTag_12 ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition End Behavior = DestroyDie ModuleTag_13 DeathTypes = NONE +CRUSHED +SPLATTED End ; A crushing defeat Behavior = FXListDie ModuleTag_14 DeathTypes = NONE +CRUSHED +SPLATTED DeathFX = FX_CarCrush End Behavior = CreateObjectDie ModuleTag_15 DeathTypes = NONE +CRUSHED +SPLATTED CreationList = OCL_CrusaderTank_CrushEffect End Behavior = CreateCrateDie ModuleTag_CratesChange CrateData = SalvageCrateData ;CrateData = EliteTankCrateData ;CrateData = HeroicTankCrateData End ;Behavior = EjectPilotDie ModuleTag_17 ; GroundCreationList = OCL_EjectPilotOnGround ; AirCreationList = OCL_EjectPilotViaParachute ; ExemptStatus = HIJACKED ; VeterancyLevels = ALL -REGULAR ;only vet+ gives pilot ;End Behavior = MaxHealthUpgrade ModuleTag_18 TriggeredBy = Upgrade_AmericaCompositeArmor AddMaxHealth = 100.0 ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH End Behavior = FlammableUpdate ModuleTag_21 AflameDuration = 5000 ; If I catch fire, I'll burn for this long... AflameDamageAmount = 3 ; taking this much damage... AflameDamageDelay = 500 ; this often. End Geometry = 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 GLATankScorpion ; *** ART Parameters *** SelectPortrait = SUScorpion_L ButtonImage = SUScorpion UpgradeCameo1 = Upgrade_GLAScorpionRocket UpgradeCameo2 = Upgrade_GLAAPRockets UpgradeCameo3 = Upgrade_GLAToxinShells UpgradeCameo4 = Upgrade_GLAJunkRepair ;UpgradeCameo5 = NONE Draw = W3DTankDraw ModuleTag_01 OkToChangeModelColor = Yes ProjectileBoneFeedbackEnabledSlots = SECONDARY ; WeaponLaunchBone will be shown/hidden, not just used for firing offset DefaultConditionState Model = UVLiteTank Turret = Turret01 ; note, order-dependent: we must hide/show Missile AFTER we hide/show MissileRack! HideSubObject = MissleRack01 Missile ; MissileRack misspelled in the Art WeaponFireFXBone = PRIMARY Muzzle WeaponRecoilBone = PRIMARY Barrel WeaponMuzzleFlash = PRIMARY MuzzleFX WeaponLaunchBone = PRIMARY Muzzle End ConditionState = REALLYDAMAGED Model = UVLiteTank_d End ConditionState = RUBBLE Model = UVLiteTank_d End ConditionState = WEAPONSET_PLAYER_UPGRADE ShowSubObject = MissleRack01 WeaponFireFXBone = SECONDARY WeaponA WeaponLaunchBone = SECONDARY WeaponA WeaponHideShowBone = SECONDARY Missile End ConditionState = WEAPONSET_PLAYER_UPGRADE REALLYDAMAGED Model = UVLiteTank_d ShowSubObject = MissleRack01 WeaponFireFXBone = SECONDARY WeaponA WeaponLaunchBone = SECONDARY WeaponA WeaponHideShowBone = SECONDARY Missile End TrackMarks = EXTnkTrack.tga TreadAnimationRate = 2.0 ; amount of tread texture to move per second End ; ***DESIGN parameters *** DisplayName = OBJECT:Scorpion Side = GLA EditorSorting = VEHICLE TransportSlotCount = 3 ;how many "slots" we take in a transport (0 == not transportable) WeaponSet Conditions = None Weapon = PRIMARY ScorpionTankGun Weapon = SECONDARY None End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY ScorpionTankGun Weapon = SECONDARY ScorpionMissileWeapon AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI AutoChooseSources = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI End ArmorSet Conditions = None Armor = TankArmor DamageFX = TankDamageFX End BuildCost = 600 BuildTime = 7.0 ;in seconds VisionRange = 125 ShroudClearingRange = 300 Prerequisites Object = GLAArmsDealer End ExperienceValue = 60 60 120 200 ;Experience point value at each level ExperienceRequired = 0 100 200 400 ;Experience points needed to gain each level IsTrainable = Yes ;Can gain experience 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 = GLATankScorpionCommandSet ; *** AUDIO Parameters *** VoiceSelect = ScorpionTankVoiceSelect VoiceMove = ScorpionTankVoiceMove VoiceAttack = ScorpionTankVoiceAttack SoundMoveStart = ScorpionTankMoveStart SoundMoveStartDamaged = ScorpionTankMoveStart VoiceGuard = ScorpionTankVoiceMove UnitSpecificSounds ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs VoiceCreate = ScorpionTankVoiceCreate ;TurretMoveStart = NoSound TurretMoveLoop = TurretMoveLoop VoiceEnter = ScorpionTankVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SALVAGER SCORE Body = ActiveBody ModuleTag_02 MaxHealth = 370.0 InitialHealth = 370.0 End Behavior = AIUpdateInterface ModuleTag_03 Turret TurretTurnRate = 100 RecenterTime = 5000 ; how long to wait during idle before recentering ControlledWeaponSlots = PRIMARY SECONDARY End AutoAcquireEnemiesWhenIdle = Yes End Locomotor = SET_NORMAL ScorpionLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 50.0 End Behavior = AutoHealBehavior ModuleTag_05 HealingAmount = 2 HealingDelay = 1000 ; msec TriggeredBy = Upgrade_GLAJunkRepair 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_GenericTankDeathEffect FX = FINAL FX_BattleMasterExplosionOneFinal End Behavior = WeaponSetUpgrade ModuleTag_07 TriggeredBy = Upgrade_GLAScorpionRocket End Behavior = DestroyDie ModuleTag_09 DeathTypes = NONE +CRUSHED +SPLATTED End ; A crushing defeat Behavior = FXListDie ModuleTag_10 DeathTypes = NONE +CRUSHED +SPLATTED DeathFX = FX_CarCrush End Behavior = CreateObjectDie ModuleTag_11 DeathTypes = NONE +CRUSHED +SPLATTED CreationList = OCL_CrusaderTank_CrushEffect End Behavior = CreateCrateDie ModuleTag_12