Sure, it is simple to add Jarmen's vehicle sniping weapon to the pathfinder. For good measure, you can also make him able to snipe garrisoned infantry if this is Zero Hour (not in Generals) by giving him the GC_Slth Jarmen projectile shooting rifle.
Here is the code for a zero hour map.ini that gives the pathfinder the fast firing GC_Slth anti-vehicle sniper rifle, and the anti-garrison projectile fireing weapon. I dispensed with the Jarmen snipe vehicle command button, the pathfinder will snipe vehicles on his own initiative, without having to be told, even when garrisoned.
Code:
;------------------------------------------------------------------------------
Object AmericaInfantryPathfinder
ReplaceModule ModuleTag_01
Draw = W3DModelDraw ModuleTag_01_Override
OkToChangeModelColor = Yes
DefaultConditionState
Model = AIPFDR_SKN
IdleAnimation = AIPFDR_SKL.AIPFDR_STA
IdleAnimation = AIPFDR_SKL.AIPFDR_IDA
AnimationMode = ONCE
WeaponFireFXBone = PRIMARY Muzzle
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponFireFXBone = SECONDARY Muzzle ;Jarmen vehicle rifle
WeaponMuzzleFlash = SECONDARY MuzzleFX
WeaponFireFXBone = TERTIARY Muzzle ;Jarmen projectile rifle
WeaponMuzzleFlash = TERTIARY MuzzleFX
WeaponLaunchBone = TERTIARY Muzzle
TransitionKey = TRANS_Standing
End
AliasConditionState = REALLYDAMAGED
ConditionState = MOVING
Animation = AIPFDR_SKL.AIPFDR_RNA 25
AnimationMode = LOOP
Flags = RANDOMSTART
TransitionKey = TRANS_Standing
ParticleSysBone = None InfantryDustTrails
End
AliasConditionState = MOVING REALLYDAMAGED
ConditionState = FIRING_A
Animation = AIPFDR_SKL.AIPFDR_ATB ; recoil in standing position
AnimationMode = ONCE
TransitionKey = TRANS_FiringA
End
AliasConditionState = FIRING_A MOVING
AliasConditionState = FIRING_A MOVING REALLYDAMAGED
AliasConditionState = FIRING_A REALLYDAMAGED
AliasConditionState = FIRING_B
AliasConditionState = FIRING_B MOVING
AliasConditionState = FIRING_B MOVING REALLYDAMAGED
AliasConditionState = FIRING_B REALLYDAMAGED
AliasConditionState = FIRING_C
AliasConditionState = FIRING_C MOVING
AliasConditionState = FIRING_C MOVING REALLYDAMAGED
AliasConditionState = FIRING_C REALLYDAMAGED
ConditionState = BETWEEN_FIRING_SHOTS_A
Animation = AIPFDR_SKL.AIPFDR_ATBST ; motionless in standing position
AnimationMode = ONCE
WaitForStateToFinishIfPossible = TRANS_FiringA
End
AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
AliasConditionState = RELOADING_A
AliasConditionState = RELOADING_A REALLYDAMAGED
AliasConditionState = BETWEEN_FIRING_SHOTS_B
AliasConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
AliasConditionState = RELOADING_B
AliasConditionState = RELOADING_B REALLYDAMAGED
AliasConditionState = BETWEEN_FIRING_SHOTS_C
AliasConditionState = BETWEEN_FIRING_SHOTS_C REALLYDAMAGED
AliasConditionState = RELOADING_C
AliasConditionState = RELOADING_C REALLYDAMAGED
ConditionState = DYING
Animation = AIPFDR_SKL.AIPFDR_DTA
AnimationMode = ONCE
TransitionKey = TRANS_Dying
End
TransitionState = TRANS_Dying TRANS_Flailing
Animation = AIPFDR_SKL.AIPFDR_ADTA1
AnimationMode = ONCE
End
ConditionState = DYING EXPLODED_FLAILING
Animation = AIPFDR_SKL.AIPFDR_ADTA2
AnimationMode = LOOP
TransitionKey = TRANS_Flailing
End
ConditionState = DYING EXPLODED_BOUNCING
Animation = AIPFDR_SKL.AIPFDR_ADTA3
AnimationMode = ONCE
TransitionKey = None
End
ConditionState = FREEFALL
Animation = AIPFDR_SKL.AIPFDR_PFL
AnimationMode = LOOP
TransitionKey = TRANS_Falling
End
AliasConditionState = FREEFALL DYING
ConditionState = PARACHUTING
Animation = AIPFDR_SKL.AIPFDR_PHG
AnimationMode = LOOP
Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME
;our bone positions should come from the last frame, rather than the first
TransitionKey = TRANS_Chute
End
AliasConditionState = PARACHUTING DYING
TransitionState = TRANS_Falling TRANS_Chute
Animation = AIPFDR_SKL.AIPFDR_POP
AnimationMode = ONCE
Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME
;our bone positions should come from the last frame, rather than the first
End
TransitionState = TRANS_Chute TRANS_Standing
Animation = AIPFDR_SKL.AIPFDR_PTD
AnimationMode = ONCE
End
End
End
WeaponSet
Conditions = None
Weapon = PRIMARY USAPathfinderSniperRifle
Weapon = SECONDARY GC_Slth_GLAJarmenKellVehiclePilotSniperRifle ;5 second reload time
Weapon = TERTIARY GC_Slth_GLAJarmenKellRifle ;with garrison sniping projectile
PreferredAgainst = PRIMARY INFANTRY
PreferredAgainst = SECONDARY VEHICLE
End
VisionRange = 300 ;range of his weapon
ShroudClearingRange = 400
ReplaceModule ModuleTag_08
Behavior = StealthDetectorUpdate ModuleTag_08_Override
DetectionRate = 500
DetectionRange = 200
CanDetectWhileGarrisoned = Yes
CanDetectWhileContained = Yes
End
End
End
;------------------------------------------------------------------------------
It also makes him able to detect stealth while garrisoned or in vehicles.
His vision has been increased to 300 range to match his pathfinder weapon range.