;------------------------------------------------------------------------------ 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 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 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 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 -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_RebelDie End Behavior = SlowDeathBehavior ModuleTag_Death02 DeathTypes = NONE +CRUSHED +SPLATTED SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_GIDieCrushed End Behavior = SlowDeathBehavior ModuleTag_Death03 DeathTypes = NONE +EXPLODED SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_RebelDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_DieByFireGLA OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_16 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End Behavior = SpecialAbility ModuleTag_17 SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding UpdateModuleStartsAttack = Yes StartsPaused = Yes InitiateSound = RebelVoiceCapture End Behavior = SpecialAbilityUpdate ModuleTag_18 SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding StartAbilityRange = 5.0 UnpackTime = 3000 ; (changing this will scale anim speed) PreparationTime = 20000 ; time to complete hack once prepared (changing this will scale anim speed) PackTime = 2000 ; (changing this will scale anim speed) DoCaptureFX = Yes AwardXPForTriggering = 12 ;SkillPointsForTriggering = ??? -- Dustin, fill me out if you want different balance values. End Behavior = UnpauseSpecialPowerUpgrade ModuleTag_19 SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding TriggeredBy = Upgrade_InfantryCaptureBuilding End Behavior = SpecialAbility ModuleTag_20 SpecialPowerTemplate = SpecialAbilityBoobyTrap UpdateModuleStartsAttack = Yes StartsPaused = Yes InitiateSound = RebelVoiceBoobyTrapInstall End Behavior = SpecialAbilityUpdate ModuleTag_21 SpecialPowerTemplate = SpecialAbilityBoobyTrap StartAbilityRange = 5.0 PreparationTime = 0 SpecialObject = BoobyTrap MaxSpecialObjects = 100 SpecialObjectsPersistWhenOwnerDies = Yes SpecialObjectsPersistent = Yes ;Charges are persistent till lifetime expires or owner detonates them. ; Not implemented UniqueSpecialObjectTargets = Yes ;This prevents multiple charges placed on the same object. End Behavior = UnpauseSpecialPowerUpgrade ModuleTag_22 SpecialPowerTemplate = SpecialAbilityBoobyTrap TriggeredBy = Upgrade_GLAInfantryRebelBoobyTrapAttack 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 AliasConditionState = MOVING DOCKING AliasConditionState = MOVING DOCKING_BEGINNING AliasConditionState = MOVING DOCKING_ACTIVE 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 = SECONDARY NONE End ArmorSet Conditions = None Armor = HumanArmor DamageFX = InfantryDamageFX End VisionRange = 200 ShroudClearingRange = 400 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 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 CANNOT_RETALIATE 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 EnemyDetectionEvaEvent = EnemyJarmenKellDetected OwnDetectionEvaEvent = OwnJarmenKellDetected 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 -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_JarmenKellDie 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_JarmenKellDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_DieByFireGLA OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_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 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 -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_RPGTrooperDie 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_RPGTrooperDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_DieByFireGLA OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_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 ; CommandSet = GLAInfantryRebelCommandSet ; *** AUDIO Parameters *** VoiceSelect = StingerSoldierVoiceSelect VoiceMove = StingerSoldierVoiceMove VoiceAttack = StingerSoldierVoiceAttack ; *** 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 Stealthed 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 Behavior = StealthUpdate ModuleTag_09 StealthDelay = 2500 ; msec StealthForbiddenConditions = ATTACKING USING_ABILITY MoveThresholdSpeed = 3 InnateStealth = No ;Requires upgrade first OrderIdleEnemiesToAttackMeUponReveal = Yes End Behavior = StealthUpgrade ModuleTag_10 TriggeredBy = Upgrade_GLACamoNetting End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_StingerSoldierDie 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_StingerSoldierDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_DieByFireGLA OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_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 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 Behavior = CommandButtonHuntUpdate ModuleTag_CBH01 ; allows use of command button hunt script with this unit. 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 -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_TerroristDie End ;POISON_DEATHS POISON_DEATHS POISON_DEATHS POISON_DEATHS Behavior = SlowDeathBehavior ModuleTag_Death02 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry_TerroristOnly End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta_TerroristOnly ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma_TerroristOnly 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 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 SlavesHaveFreeWill = No 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 ;**** 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 -POISONED_BETA -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_CivilianArabMaleDie 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_CivilianArabMaleDie 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 ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma End ; --- end Death modules --- Behavior = PoisonedBehavior 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 ;**** 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 -POISONED_BETA -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_CivilianArabFemaleDie 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_CivilianArabFemaleDie 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_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_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 ;**** 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 -POISONED_BETA -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_CivilianArabFemaleDie 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_CivilianArabFemaleDie 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_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_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 VoiceFear = HijackerVoiceFear UnitSpecificSounds VoiceGarrison = HijackerVoiceGarrison VoiceCreate = HijackerVoiceCreate VoiceEnter = HijackerVoiceEnter VoiceEnterHostile = HijackerVoiceEnterHostile VoiceGetHealed = HijackerVoiceMove End ; *** ENGINEERING Parameters *** RadarPriority = UNIT EnterGuard = Yes HijackGuard = Yes 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 Behavior = CommandButtonHuntUpdate ModuleTag_CBH01 ; allows use of command button hunt script with this unit. 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 -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_HijackerDie 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_HijackerDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_DieByFireGLA OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_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 GLAInfantryWorker ; *** ART Parameters *** SelectPortrait = SUWorker_L ButtonImage = SUWorker UpgradeCameo1 = Upgrade_GLAWorkerShoes ;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 = 3.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 VoiceGuard = WorkerVoiceMove VoiceFear = WorkerVoiceFear VoiceTaskComplete = WorkerVoiceBuildComplete UnitSpecificSounds VoiceEnter = WorkerVoiceMoveUpgraded VoiceEnterHostile = WorkerVoiceMoveUpgraded VoiceGarrison = WorkerVoiceGarrison VoiceCreate = WorkerVoiceCreate VoiceSupply = WorkerVoiceSupply VoiceNoBuild = WorkerVoiceBuildNot VoiceRepair = WorkerVoiceRepair VoiceDisarm = WorkerVoiceClearMine VoiceBuildResponse = WorkerVoiceBuild VoiceGetHealed = WorkerVoiceMoveUpgraded VoiceMoveUpgraded = WorkerVoiceMoveUpgraded 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 UpgradedSupplyBoost = 8 ; gives this much more cash for every box collected 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 Locomotor = SET_NORMAL_UPGRADED WorkerShoesLocomotor Behavior = PhysicsBehavior ModuleTag_04 Mass = 5.0 End Behavior = SquishCollide ModuleTag_06 ;nothing End Behavior = LocomotorSetUpgrade ModuleTag_07 TriggeredBy = Upgrade_GLAWorkerShoes End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_WorkerDie 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_WorkerDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_DieByFireGLA OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma End ; --- end Death modules --- Behavior = 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 Behavior = CommandSetUpgrade ModuleTag_14 TriggeredBy = Upgrade_GLAWorkerFakeCommandSet RemovesUpgrades = Upgrade_GLAWorkerRealCommandSet CommandSet = GLAWorkerFakeBuildingsCommandSet End Behavior = CommandSetUpgrade ModuleTag_15 TriggeredBy = Upgrade_GLAWorkerRealCommandSet RemovesUpgrades = Upgrade_GLAWorkerFakeCommandSet Upgrade_GLAWorkerRealCommandSet CommandSet = GLAWorkerCommandSet End Behavior = ProductionUpdate ModuleTag_16 MaxQueueEntries = 1; For the command set switching upgrade 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 GLAInfantrySaboteur ; *** ART Parameters *** SelectPortrait = SUSaboteur_L ButtonImage = SUSaboteur ;UpgradeCameo1 = NONE ;UpgradeCameo2 = NONE ;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 DefaultConditionState Model = UISabotr_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 ConditionState = DYING Animation = UIWRKR_SKL.UIWRKR_DTA AnimationMode = ONCE TransitionKey = TRANS_Dying End 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 End ; ***DESIGN parameters *** DisplayName = OBJECT:Saboteur 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 = 150 ShroudClearingRange = 300 Prerequisites Object = GLAPalace End BuildCost = 800 BuildTime = 15.0 ;in seconds ExperienceValue = 15 15 30 40 ;Experience point value at each level IsTrainable = No ;Can gain experience CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CommandSet = GLAInfantrySaboteurCommandSet ; *** AUDIO Parameters *** VoiceSelect = SaboteurVoiceSelect VoiceMove = SaboteurVoiceMove VoiceGuard = SaboteurVoiceMove VoiceAttack = SaboteurVoiceAttack SoundStealthOn = StealthOn SoundStealthOff = StealthOff VoiceFear = SaboteurVoiceFear VoiceTaskComplete = NoSound UnitSpecificSounds VoiceCreate = SaboteurVoiceCreate VoiceSubdue = SaboteurVoiceMove VoiceGarrison = SaboteurVoiceMove VoiceEnter = SaboteurVoiceMove VoiceEnterHostile = SaboteurVoiceAttack VoiceGetHealed = SaboteurVoiceMove 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 SaboteurGroundLocomotor SaboteurCliffLocomotor Behavior = PhysicsBehavior ModuleTag_05 Mass = 5.0 End Behavior = StealthUpdate ModuleTag_07 StealthDelay = 2500 ; msec StealthForbiddenConditions = None InnateStealth = Yes ;Requires upgrade first OrderIdleEnemiesToAttackMeUponReveal = Yes End Behavior = SquishCollide ModuleTag_11 ;nothing End Behavior = SabotagePowerPlantCrateCollide SabotageTag_01 BuildingPickup = Yes SabotagePowerDuration = 30000 End ;Behavior = SabotageSupplyDropzoneCrateCollide SabotageTag_02 ; BuildingPickup = Yes ; StealCashAmount = 800 ;End Behavior = SabotageSuperweaponCrateCollide SabotageTag_03 BuildingPickup = Yes End Behavior = SabotageCommandCenterCrateCollide SabotageTag_04 BuildingPickup = Yes End Behavior = SabotageSupplyCenterCrateCollide SabotageTag_05 BuildingPickup = Yes StealCashAmount = 1000 End Behavior = SabotageMilitaryFactoryCrateCollide SabotageTag_06 BuildingPickup = Yes SabotageDuration = 30000 End Behavior = SabotageFakeBuildingCrateCollide SabotageTag_07 BuildingPickup = Yes End Behavior = SabotageInternetCenterCrateCollide SabotageTag_08 BuildingPickup = Yes SabotageDuration = 15000 End ; --- begin Death modules --- Behavior = SlowDeathBehavior ModuleTag_Death01 DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA SinkDelay = 3000 SinkRate = 0.5 ; in Dist/Sec DestructionDelay = 8000 FX = INITIAL FX_SaboteurDie 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_SaboteurDie FlingForce = 8 FlingForceVariance = 3 FlingPitch = 60 FlingPitchVariance = 10 End Behavior = SlowDeathBehavior ModuleTag_Death04 DeathTypes = NONE +BURNED DestructionDelay = 0 FX = INITIAL FX_DieByFireGLA OCL = INITIAL OCL_FlamingInfantry End Behavior = SlowDeathBehavior ModuleTag_Death05 DeathTypes = NONE +POISONED DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantry End Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag DeathTypes = NONE +POISONED_BETA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones End Behavior = SlowDeathBehavior ModuleTag_Death07 DeathTypes = NONE +POISONED_GAMMA DestructionDelay = 0 FX = INITIAL FX_DieByToxinGLA OCL = INITIAL OCL_ToxicInfantryGamma End ; --- end Death modules --- Behavior = PoisonedBehavior ModuleTag_16 PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me... PoisonDuration = 3000 ; ... for this long after last hit by poison damage End ; Behavior = SpecialAbility ModuleTag_17 ; SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding ; UpdateModuleStartsAttack = Yes ; StartsPaused = Yes ; InitiateSound = RebelVoiceCapture ; End ; Behavior = SpecialAbilityUpdate ModuleTag_18 ; SpecialPowerTemplate = SpecialAbilityRebelCaptureBuilding ; StartAbilityRange = 5.0 ; UnpackTime = 3000 ; (changing this will scale anim speed) ; PreparationTime = 20000 ; time to complete hack once prepared (changing this will scale anim speed) ; PackTime = 2000 ; (changing this will scale anim speed) ; DoCaptureFX = Yes ; AwardXPForTriggering = 12 ; ;SkillPointsForTriggering = ??? -- Dustin, fill me out if you want different balance values. ; End 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