Show me your entire jarmenkell code
Originally Posted by: Mr_Hymn_
;----------------------------------------------------------------------------
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
WeaponLaunchBone = TERTIARY Muzzle ;NOW IT LAUNCHES FROM HIS RIFLE
TransitionKey = TRANS_Stand
End
ConditionState = REALLYDAMAGED
IdleAnimation = UIHERO_SKL.UIHERO_ISTA 0 30
IdleAnimation = UIHERO_SKL.UIHERO_IIDA
IdleAnimation = UIHERO_SKL.UIHERO_IIDB
AnimationMode = ONCE
TransitionKey = TRANS_StandInjured
End
TransitionState = TRANS_Stand TRANS_StandInjured
Animation = UIHERO_SKL.UIHERO_ISTAHIT
AnimationMode = ONCE
End
; --- attack
ConditionState = FIRING_A
Animation = UIHERO_SKL.UIHERO_ATA
AnimationMode = ONCE
TransitionKey = TRANS_FiringA
AnimationSpeedFactorRange = 1.5 1.5
End
ConditionState = BETWEEN_FIRING_SHOTS_A
Animation = UIHERO_SKL.UIHERO_STA
AnimationMode = ONCE
WaitForStateToFinishIfPossible = TRANS_FiringA
End
AliasConditionState = RELOADING_A
ConditionState = FIRING_A REALLYDAMAGED
Animation = UIHERO_SKL.UIHERO_IATA2
AnimationMode = ONCE
TransitionKey = TRANS_FiringAInjured
AnimationSpeedFactorRange = 1.5 1.5
End
ConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
Animation = UIHERO_SKL.UIHERO_IATA2
AnimationMode = MANUAL
Flags = START_FRAME_LAST
WaitForStateToFinishIfPossible = TRANS_FiringAInjured
End
AliasConditionState = RELOADING_A REALLYDAMAGED
TransitionState = TRANS_FiringA TRANS_FiringAInjured
Animation = UIHERO_SKL.UIHERO_IATAHIT
AnimationMode = ONCE
End
; --- moving
ConditionState = MOVING
Animation = UIHERO_SKL.UIHERO_RNA2 30
AnimationMode = LOOP
Flags = RANDOMSTART
TransitionKey = None
ParticleSysBone = None InfantryDustTrails
End
AliasConditionState = MOVING FIRING_A
AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A
AliasConditionState = MOVING RELOADING_A
ConditionState = MOVING REALLYDAMAGED
Animation = UIHERO_SKL.UIHERO_IRNA 30
AnimationMode = LOOP
Flags = RANDOMSTART
TransitionKey = None
ParticleSysBone = None InfantryDustTrails
End
AliasConditionState = MOVING FIRING_A REALLYDAMAGED
AliasConditionState = MOVING BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
; --- cheering
ConditionState = SPECIAL_CHEERING
Animation = UIHERO_SKL.UIHERO_CHA
AnimationMode = LOOP
End
ConditionState = SPECIAL_CHEERING REALLYDAMAGED
Animation = UIHERO_SKL.UIHERO_ICHA
AnimationMode = LOOP
End
; --- dying
ConditionState = DYING
Animation = UIHERO_SKL.UIHERO_DTA
Animation = UIHERO_SKL.UIHERO_DTB
Animation = UIHERO_SKL.UIHERO_IDTA
Animation = UIHERO_SKL.UIHERO_IDTB
AnimationMode = ONCE
TransitionKey = TRANS_Dying
End
TransitionState = TRANS_Dying TRANS_Flailing
Animation = UIHERO_SKL.UIHERO_ADTG21
AnimationMode = ONCE
End
ConditionState = DYING EXPLODED_FLAILING
Animation = UIHERO_SKL.UIHERO_ADTG22
AnimationMode = LOOP
TransitionKey = TRANS_Flailing
End
ConditionState = DYING EXPLODED_BOUNCING
Animation = UIHERO_SKL.UIHERO_ADTG23
AnimationMode = ONCE
TransitionKey = None
End
; --- falling
ConditionState = FREEFALL
Animation = UIHERO_SKL.UIHERO_PFL
AnimationMode = LOOP
TransitionKey = TRANS_Falling
End
AliasConditionState = FREEFALL REALLYDAMAGED
AliasConditionState = FREEFALL DYING
ConditionState = PARACHUTING
Animation = UIHERO_SKL.UIHERO_PHG
AnimationMode = LOOP
Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first
TransitionKey = TRANS_Chute
End
AliasConditionState = PARACHUTING REALLYDAMAGED
AliasConditionState = PARACHUTING DYING
TransitionState = TRANS_Falling TRANS_Chute
Animation = UIHERO_SKL.UIHERO_POP
AnimationMode = ONCE
Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first
End
TransitionState = TRANS_Chute TRANS_Stand
Animation = UIHERO_SKL.UIHERO_PTD
AnimationMode = ONCE
End
TransitionState = TRANS_Chute TRANS_StandInjured
Animation = UIHERO_SKL.UIHERO_PTD
AnimationMode = ONCE
End
End
; ***DESIGN parameters ***
DisplayName = OBJECT:JarmenKell
Side = GLA
EditorSorting = INFANTRY
TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable)
MaxSimultaneousOfType = 5
WeaponSet
Conditions = None
Weapon = PRIMARY GLAJarmenKellRifle
Weapon = SECONDARY GLAJarmenKellVehiclePilotSniperRifle
Weapon = TERTIARY JarmenKell_RocketWeapon
PreferredAgainst = TERTIARY NONE
AutoChooseSources = TERTIARY NONE
AutoChooseSources = SECONDARY NONE
;AutoChooseSources = PRIMARY NONE
;AutoChooseSources = SECONDARY NONE
End
; WeaponSet
; Conditions = SNIPEVEHICLE
; Weapon = PRIMARY GLAJarmenKellVehiclePilotSniperRifle
; End
ArmorSet
Conditions = None
Armor = HumanArmor
DamageFX = InfantryDamageFX
End
VisionRange = 200
ShroudClearingRange = 300
Prerequisites
Object = GLABarracks
End
BuildCost = 0
BuildTime = 5.0 ;in seconds
ExperienceValue = 50 50 100 150 ;Experience point value at each level
ExperienceRequired = 0 100 200 400 ;Experience points needed to gain each level
IsTrainable = Yes ;Can gain experience
CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CommandSet = GLAInfantryJarmenKellCommandSet
; *** AUDIO Parameters ***
VoiceSelect = JarmenKellVoiceSelect
VoiceMove = JarmenKellVoiceMove
VoiceGuard = JarmenKellVoiceMove
VoiceAttack = JarmenKellVoiceAttack
VoiceFear = JarmenKellVoiceFear
SoundDie = JarmenKellVoiceDie
SoundDieFire = DieByFireGLA
SoundDieToxin = DieByToxinGLA
SoundStealthOn = StealthOn
SoundStealthOff = StealthOff
UnitSpecificSounds
VoiceCreate = JarmenKellVoiceCreate
VoiceSnipePilot = JarmenKellVoiceSnipe
VoiceGarrison = JarmenKellVoiceGarrison
VoiceEnter = JarmenKellVoiceMove
VoiceEnterHostile = JarmenKellVoiceMove
VoiceGetHealed = JarmenKellVoiceMove
End
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SALVAGER STEALTH_GARRISON SCORE HERO
KindOf = PRELOAD VEHICLE SCORE SELECTABLE CAN_CAST_REFLECTIONS DOZER
Body = ActiveBody ModuleTag_02
MaxHealth = 200.0
InitialHealth = 200.0
End
Behavior = WorkerAIUpdate ModuleTag_06
AutoAcquireEnemiesWhenIdle = Yes Stealthed
End
;-------------original code
;Behavior = AIUpdateInterface ModuleTag_03
; AutoAcquireEnemiesWhenIdle = Yes
;End
Locomotor = SET_NORMAL JarmenKellLocomotor
Behavior = PhysicsBehavior ModuleTag_04
Mass = 5.0
End
Behavior = StealthUpdate ModuleTag_06
StealthDelay = 2000 ; msec
StealthForbiddenConditions = ATTACKING
InnateStealth = Yes
OrderIdleEnemiesToAttackMeUponReveal = Yes
End
Behavior = CommandButtonHuntUpdate ModuleTag_07 ; allows use of command button hunt script with this unit.
End
Behavior = WeaponBonusUpgrade ModuleTag_08
TriggeredBy = Upgrade_GLAAPBullets
End
;---repair
Behavior = DozerAIUpdate ModuleTag_03
RepairHealthPercentPerSecond = 20% ; % of max health to repair each second;
BoredTime = 5000 ; in milliseconds
BoredRange = 150 ; when bored, we look this far away to do something
the only "enemies" that workers can acquire are mines, to be disarmed...
AutoAcquireEnemiesWhenIdle = Yes
End
Behavior = SpecialAbility ModuleTag_08
SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
UpdateModuleStartsAttack = Yes
InitiateSound = ColonelBurtonVoicePlantRemoteCharge
End
Behavior = SpecialAbilityUpdate ModuleTag_09
SpecialPowerTemplate = SpecialAbilityColonelBurtonRemoteCharges
StartAbilityRange = 0.0
PreparationTime = 0
SpecialObject = RemoteC4Charge
MaxSpecialObjects = 1000
SpecialObjectsPersistWhenOwnerDies = No ;Charges are removed instantly when owner dies (nobody can detonate).
AlwaysValidateSpecialObjects = Yes ;Coupled with the above setting, this one is necessary for code optimization.
SpecialObjectsPersistent = Yes ;Charges are persistent till lifetime expires or owner detonates them.
UniqueSpecialObjectTargets = Yes ;This prevents multiple charges placed on the same object.
UnpackTime = 1000 ; 5500 ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
PackTime = 0
SkipPackingWithNoTarget = Yes ;When yes, the packing/unpacking will be ignored when detonating charges.
FlipOwnerAfterUnpacking = Yes
FleeRangeAfterCompletion = 100.0 ;Runs away after finishing ability
UnpackSound = ColonelBurtonPlantCharge
LoseStealthOnTrigger = No ; Yes
PreTriggerUnstealthTime = 500 ; 5000 ; in milliseconds
End
Behavior = SpecialAbility ModuleTag_10
SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
UpdateModuleStartsAttack = Yes
InitiateSound = ColonelBurtonVoicePlantTimedCharge
End
Behavior = SpecialAbilityUpdate ModuleTag_11
SpecialPowerTemplate = SpecialAbilityColonelBurtonTimedCharges
StartAbilityRange = 0.0
PreparationTime = 0
SpecialObject = TimedC4Charge
MaxSpecialObjects = 1000
SpecialObjectsPersistWhenOwnerDies = Yes
SpecialObjectsPersistent = Yes ;Charges are persistent till lifetime expires or owner detonates them.
UniqueSpecialObjectTargets = Yes ;This prevents multiple charges placed on the same object.
UnpackTime = 1000 ; 5500 ;NOTE: Modifying this value will require modifying the delay for ColonelBurtonPlantCharge
FlipOwnerAfterUnpacking = Yes
FleeRangeAfterCompletion = 100.0 ;Runs away after finishing ability
UnpackSound = ColonelBurtonPlantCharge
LoseStealthOnTrigger = No ; Yes
PreTriggerUnstealthTime = 500 ; 5000 ; in milliseconds
End
Behavior = CommandButtonHuntUpdate ModuleTag_07 ; allows use of command button hunt script with this unit.
End
Behavior = WeaponBonusUpgrade ModuleTag_08
TriggeredBy = Upgrade_GLAAPBullets
End
Behavior = StealthDetectorUpdate ModuleTag_44
DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec)
;DetectionRange = ??? ;Dustin, enable this for independant balancing!
CanDetectWhileGarrisoned = No ;Garrisoned means being in a structure that you units can shoot out of.
CanDetectWhileContained = No ;Contained means being in a transport or tunnel network.
End
Behavior = SpecialAbility ModuleTag_08
SpecialPowerTemplate = SpecialAbilityBlackLotusCaptureBuilding
UpdateModuleStartsAttack = Yes
InitiateSound = BlackLotusVoiceHackBuilding
End
Behavior = SpecialAbilityUpdate ModuleTag_09
SpecialPowerTemplate = SpecialAbilityBlackLotusCaptureBuilding
StartAbilityRange = 150.0
UnpackTime = 6730 ;animation time is 6730 (changing this will scale anim speed)
PackTime = 2800 ;animation time is 5800 (changing this will scale anim speed)
PreparationTime = 6000 ;time to complete hack once prepared (unpacked)
SpecialObject = BinaryDataStream
DoCaptureFX = Yes
PackSound = BlackLotusPack
UnpackSound = BlackLotusUnpack
TriggerSound = BlackLotusTrigger
PrepSoundLoop = BlackLotusPrepLoop
AwardXPForTriggering = 20
;SkillPointsForTriggering = ??? -- Dustin, fill me out if you want different balance values.
End
Behavior = SpecialAbility ModuleTag_12
SpecialPowerTemplate = SpecialAbilityBlackLotusStealCashHack
UpdateModuleStartsAttack = Yes
InitiateSound = BlackLotusVoiceHackCash
End
Behavior = SpecialAbilityUpdate ModuleTag_13
SpecialPowerTemplate = SpecialAbilityBlackLotusStealCashHack
StartAbilityRange = 150.0
UnpackTime = 6730 ;animation time is 6730 (changing this will scale anim speed)
PackTime = 5800 ;animation time is 5800 (changing this will scale anim speed)
PreparationTime = 6000 ;time to complete hack once prepared (unpacked)
EffectValue = 1000 ;amount of cash stolen
SpecialObject = BinaryDataStream
PackSound = BlackLotusPack
UnpackSound = BlackLotusUnpack
TriggerSound = BlackLotusTrigger
PrepSoundLoop = BlackLotusPrepLoop
AwardXPForTriggering = 20
;SkillPointsForTriggering = ??? -- Dustin, fill me out if you want different balance values.
End
;Hero units can't be squished!
;Behavior = SquishCollide ModuleTag_09
; ;nothing
;End
; --- begin Death modules ---
Behavior = SlowDeathBehavior ModuleTag_Death01
DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA
SinkDelay = 3000
SinkRate = 0.5 ; in Dist/Sec
DestructionDelay = 8000
FX = INITIAL FX_GIDie
End
Behavior = SlowDeathBehavior ModuleTag_Death02
DeathTypes = NONE +CRUSHED +SPLATTED
SinkDelay = 3000
SinkRate = 0.5 ; in Dist/Sec
DestructionDelay = 8000
FX = INITIAL FX_GIDieCrushed
End
Behavior = SlowDeathBehavior ModuleTag_Death03
DeathTypes = NONE +EXPLODED
SinkDelay = 3000
SinkRate = 0.5 ; in Dist/Sec
DestructionDelay = 8000
FX = INITIAL FX_GIDie
FlingForce = 8
FlingForceVariance = 3
FlingPitch = 60
FlingPitchVariance = 10
End
Behavior = SlowDeathBehavior ModuleTag_Death04
DeathTypes = NONE +BURNED
DestructionDelay = 0
FX = INITIAL FX_GIDie
OCL = INITIAL OCL_FlamingInfantry
End
Behavior = SlowDeathBehavior ModuleTag_Death05
DeathTypes = NONE +POISONED
DestructionDelay = 0
FX = INITIAL FX_GIDie
OCL = INITIAL OCL_ToxicInfantry
End
Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
DeathTypes = NONE +POISONED_BETA
DestructionDelay = 0
FX = INITIAL FX_GIDie
OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
End
; --- end Death modules ---
Behavior = PoisonedBehavior ModuleTag_14
PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me...
PoisonDuration = 3000 ; ... for this long after last hit by poison damage
End
Geometry = CYLINDER
GeometryMajorRadius = 10.0
GeometryMinorRadius = 10.0
GeometryHeight = 12.0
GeometryIsSmall = Yes
Shadow = SHADOW_DECAL
ShadowSizeX = 14;
ShadowSizeY = 14;
ShadowTexture = ShadowI;
BuildCompletion = APPEARS_AT_RALLY_POINT
End