Jump to content

Adding Grapple and Flight to Titan armour


AxlDave

Recommended Posts

Brief intro: I wanted to make Titan armour the uber-est armour in the game by adding Ghost, Flight, and Grapple abilities. First stop - editing DCG.ini. Added Fly and Ghost to the abilities, Grapple to the properties. Upon testing, found that Ghost worked perfectly, nice. Fly worked functionally, but visually the soldier was running in mid-air. Not ideal, but workable. Grapple, however... well, that didn't even show up, despite being listed as an ability in the Unit Loadout screen.

 

So, back to DCG.ini, this time adding Grapple to abilities as well as properties. It shows up twice in the Unit Loadout screen, but only once on the action buttons. But hey, at least it's there. Except that, when used, it shows the animation of the soldier firing their weapon, before they magically fly up to the grapple location, fail to initiate the "climbing up" animation, and spend the rest of the mission stuck in mid air.

 

Needless to say, this problem required further investigation, which brought me to editing UPK files. Now, I think I have located what I need to change in the file Soldier_MaleTitan_SF.upk, CHH_Lv3MedMale_ANIMSET --> Meshes --> SM_Lv3MedMale --> SkeletalMeshSocket_47.

 

 

 

begin object name=SkeletalMeshSocket_47 class=SkeletalMeshSocket
    SocketName=Inven_Grapple
    BoneName=RigLArmForearm
    RelativeLocation=(X=11.14450,Y=1.0,Z=-0.30728960)
    RelativeRotation=(Pitch=-2435,Yaw=15903,Roll=-30737)
object end
// Reference: SkeletalMeshSocket'CHH_Lv3MedMale_ANIMSET.Meshes.SM_Lv3MedMale.SkeletalMeshSocket_47'

 

 

 

Now, my understanding tells me that, if I replace SkeletalMeshSocket_47 with the value from the Ghost armour, SkeletalMeshSocket_31, then that should enable the Titan armour to use the Grapple animation of the Ghost armour, right?

 

Or do I have it all wrong? If so, corrections would be very welcome.

 

 

The second problem is making the Titan armour appear to fly. I have found four SkeletalMeshSockets in the Archangel armour that seem to relate to a jetpack, but also a whole bunch of animations in CHH_Lv3MedMale_ANIMSET --> Anims which no doubt are necessary to the visual effect.

 

 

 

begin object name=SkeletalMeshSocket_19 class=SkeletalMeshSocket
    SocketName=Jet_L
    BoneName=Jet_Nozzle_L_b
    RelativeRotation=(Pitch=32768,Yaw=0,Roll=0)
object end
// Reference: SkeletalMeshSocket'CHH_Lv3MedMale_ANIMSET.Meshes.SM_Lv3MedMaleJet.SkeletalMeshSocket_19'

begin object name=SkeletalMeshSocket_20 class=SkeletalMeshSocket
    SocketName=Jet_R
    BoneName=Jet_Nozzle_R_b
    RelativeRotation=(Pitch=32768,Yaw=0,Roll=0)
object end
// Reference: SkeletalMeshSocket'CHH_Lv3MedMale_ANIMSET.Meshes.SM_Lv3MedMaleJet.SkeletalMeshSocket_20'

begin object name=SkeletalMeshSocket_21 class=SkeletalMeshSocket
    SocketName=Stabilizer_L
    BoneName=PistonSleeve3_L_b
    RelativeLocation=(X=6.50,Y=7.50,Z=0.0)
    RelativeRotation=(Pitch=0,Yaw=21845,Roll=0)
object end
// Reference: SkeletalMeshSocket'CHH_Lv3MedMale_ANIMSET.Meshes.SM_Lv3MedMaleJet.SkeletalMeshSocket_21'

begin object name=SkeletalMeshSocket_22 class=SkeletalMeshSocket
    SocketName=Stabilizer_R
    BoneName=PistonSleeve3_R_b
    RelativeLocation=(X=6.50,Y=7.50,Z=0.0)
    RelativeRotation=(Pitch=0,Yaw=21845,Roll=0)
object end
// Reference: SkeletalMeshSocket'CHH_Lv3MedMale_ANIMSET.Meshes.SM_Lv3MedMaleJet.SkeletalMeshSocket_22'


begin object name=AnimSequence class=AnimSequence
    SequenceName=Tentpole_Jetpack_Kit
    Notifies=/* Array type was not detected. */
    SequenceLength=16.133330
    NumFrames=484
    TranslationCompressionFormat=AnimationCompressionFormat.ACF_Identity
    RotationCompressionFormat=AnimationCompressionFormat.ACF_Identity
    KeyEncodingFormat=AnimationKeyFormat.AKF_PerTrackCompression
    CompressedTrackOffsets=/* Array type was not detected. */
object end
// Reference: AnimSequence'CHH_Lv3MedMale_ANIMSET.Anims.AS_Jetpack.AnimSequence'

begin object name=AnimSequence_1 class=AnimSequence
    SequenceName=MV_JetClose
    Notifies=/* Array type was not detected. */
    SequenceLength=1.3666670
    NumFrames=41
    bNoLoopingInterpolation=true
    RotationCompressionFormat=AnimationCompressionFormat.ACF_Float96NoW
    KeyEncodingFormat=AnimationKeyFormat.AKF_VariableKeyLerp
    CompressedTrackOffsets=/* Array type was not detected. */
object end
// Reference: AnimSequence'CHH_Lv3MedMale_ANIMSET.Anims.AS_Jetpack.AnimSequence_1'

begin object name=AnimSequence_2 class=AnimSequence
    SequenceName=MV_JetClosedState
    Notifies=/* Array type was not detected. */
    SequenceLength=0.066666670
    NumFrames=2
    RotationCompressionFormat=AnimationCompressionFormat.ACF_Float96NoW
    KeyEncodingFormat=AnimationKeyFormat.AKF_VariableKeyLerp
    CompressedTrackOffsets=/* Array type was not detected. */
object end
// Reference: AnimSequence'CHH_Lv3MedMale_ANIMSET.Anims.AS_Jetpack.AnimSequence_2'

begin object name=AnimSequence_3 class=AnimSequence
    SequenceName=MV_JetOpen
    Notifies=/* Array type was not detected. */
    SequenceLength=1.8666670
    NumFrames=56
    bNoLoopingInterpolation=true
    RotationCompressionFormat=AnimationCompressionFormat.ACF_Float96NoW
    KeyEncodingFormat=AnimationKeyFormat.AKF_VariableKeyLerp
    CompressedTrackOffsets=/* Array type was not detected. */
object end
// Reference: AnimSequence'CHH_Lv3MedMale_ANIMSET.Anims.AS_Jetpack.AnimSequence_3'

begin object name=AnimSequence_4 class=AnimSequence
    SequenceName=MV_JetOpenState
    Notifies=/* Array type was not detected. */
    SequenceLength=0.066666670
    NumFrames=2
    RotationCompressionFormat=AnimationCompressionFormat.ACF_Float96NoW
    KeyEncodingFormat=AnimationKeyFormat.AKF_VariableKeyLerp
    CompressedTrackOffsets=/* Array type was not detected. */
object end
// Reference: AnimSequence'CHH_Lv3MedMale_ANIMSET.Anims.AS_Jetpack.AnimSequence_4'

begin object name=AnimSequence_5 class=AnimSequence
    SequenceName=ADD_MV_JetClosedState
    Notifies=/* Array type was not detected. */
    SequenceLength=0.066666670
    NumFrames=2
    bIsAdditive=true
    RotationCompressionFormat=AnimationCompressionFormat.ACF_Float96NoW
    KeyEncodingFormat=AnimationKeyFormat.AKF_VariableKeyLerp
    CompressedTrackOffsets=/* Array type was not detected. */
object end
// Reference: AnimSequence'CHH_Lv3MedMale_ANIMSET.Anims.AS_Jetpack.AnimSequence_5'

begin object name=AnimSequence_6 class=AnimSequence
    SequenceName=ADD_MV_JetClose
    Notifies=/* Array type was not detected. */
    SequenceLength=1.3666670
    NumFrames=41
    bIsAdditive=true
    RotationCompressionFormat=AnimationCompressionFormat.ACF_Float96NoW
    KeyEncodingFormat=AnimationKeyFormat.AKF_VariableKeyLerp
    CompressedTrackOffsets=/* Array type was not detected. */
object end
// Reference: AnimSequence'CHH_Lv3MedMale_ANIMSET.Anims.AS_Jetpack.AnimSequence_6'

begin object name=AnimSequence_7 class=AnimSequence
    SequenceName=ADD_MV_JetOpen
    Notifies=/* Array type was not detected. */
    SequenceLength=1.8666670
    NumFrames=56
    bIsAdditive=true
    RotationCompressionFormat=AnimationCompressionFormat.ACF_Float96NoW
    KeyEncodingFormat=AnimationKeyFormat.AKF_VariableKeyLerp
    CompressedTrackOffsets=/* Array type was not detected. */
object end
// Reference: AnimSequence'CHH_Lv3MedMale_ANIMSET.Anims.AS_Jetpack.AnimSequence_7'

begin object name=AnimSequence_8 class=AnimSequence
    SequenceName=ADD_MV_JetOpenState
    Notifies=/* Array type was not detected. */
    SequenceLength=0.066666670
    NumFrames=2
    bIsAdditive=true
    RotationCompressionFormat=AnimationCompressionFormat.ACF_Float96NoW
    KeyEncodingFormat=AnimationKeyFormat.AKF_VariableKeyLerp
    CompressedTrackOffsets=/* Array type was not detected. */
object end
// Reference: AnimSequence'CHH_Lv3MedMale_ANIMSET.Anims.AS_Jetpack.AnimSequence_8' 

 

 

 

Any ideas what to do there? I'm not entirely sure how to add an entirely new branch using only a hex editor...

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...