Advertisement
tjd802

Annette and the Furies

Nov 27th, 2022
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.44 KB | None | 0 0
  1. MOD_NAME=Customize Annette's and Furies' Psi Perks
  2. AUTHOR=hawkeye2777
  3. DESCRIPTION=Customize which psi perks the furies and Annette get upon receiving them as reward soldiers. By default, the tier 2 psi perk distribution is unchanged (a 50/50 chance of getting psi inspire or distortion field; Annette only), and the tier 1 psi perk distribution for both Annette and the Furies is changed to a 50%, 25%, or 25% chance for mindfray, neural feedback, or regen biofield respectively.
  4.  
  5. UPK_FILE=XComStrategyGame.upk
  6. OBJECT=XGFundingCouncil.GiveCustomSoldier:AUTO
  7.  
  8. ALIAS=Mindfray:2C <%b 68>
  9. ALIAS=NeuralFeedback:2C <%b 29>
  10. ALIAS=RegenBiofield:2C <%b 149>
  11. ALIAS=PsiInspiration:2C <%b 70>
  12. ALIAS=DistortionField:2C <%b 146>
  13.  
  14. // Rand(2) == 0 ? <!Mindfray> : (Rand(2) == 0 ? <!NeuralFeedback> : <!RegenBiofield>)
  15. ALIAS=RandT1PsiPerk:45 9A A7 2C 02 16 25 16 [@] ( <!Mindfray> ) [@] ( 45 9A A7 2C 02 16 25 16 [@] ( <!NeuralFeedback> ) [@] ( <!RegenBiofield> ) )
  16. // Rand(2) == 0 ? <!PsiInspiration> : <!DistortionField>
  17. ALIAS=RandT2PsiPerk:45 9A A7 2C 02 16 25 16 [@] ( <!PsiInspiration> ) [@] ( <!DistortionField> )
  18.  
  19.  
  20. /********* CUSTOMIZING PSI PERK DISTRIBUTION **********/
  21. // If you want to make it so that one particular psi perk is always given, change
  22. // `<!RandT1PsiPerk>` below to the perk of your choice. For example, if you wanted
  23. // to guarantee that all of the furies got mindfray, you would change `<!RandT1PsiPerk>` to `<!Mindfray>`.
  24. //
  25. // A full list of possible swaps:
  26. // <!Mindfray> // Mindfray (Tier 1)
  27. // <!NeuralFeedback> // Neural Feedback (Tier 1)
  28. // <!RegenBiofield> // Regen Biofield (Tier 1)
  29. // <!PsiInspiration> // Psi Inspire (Tier 2 - Annette only)
  30. // <!DistortionField> // Distortion Field (Tier 2 - Annette only)
  31. // <!RandT1PsiPerk> // Mod Default (50/25/25 chance of MF/NF/RB respectively)
  32. // <!RandT2PsiPerk> // Mod Default (50/50 chance of PI/DF respectively)
  33. //
  34. // Make sure you only swap out a T1 perk with another T1 psi perk (same with T2), or you'll likely run into problems.
  35.  
  36. // Annette Durand (4 HP, 58 aim, 53 will)
  37. ALIAS=AnnetteT1Psi : <!RandT1PsiPerk>
  38. ALIAS=AnnetteT2Psi : <!RandT2PsiPerk>
  39.  
  40. // Matthew "Alecto" Hawkins (4 HP, 70 aim, 51 will)
  41. ALIAS=AlectoT1Psi : <!RandT1PsiPerk>
  42.  
  43. // Said "Megaera" Tariq (3 HP, 64 aim, 53 will)
  44. ALIAS=MegaeraT1Psi : <!RandT1PsiPerk>
  45.  
  46. // Fatima "Tisiphone" Tariq (5 HP, 60 aim, 51 will)
  47. ALIAS=TisiphoneT1Psi : <!RandT1PsiPerk>
  48.  
  49. /********** END CUSTOMIZABLE SECTION **********/
  50.  
  51. [REPLACEMENT_CODE] // Mostly generated by ./HexToPseudoCode
  52. 0F 00 <.Soldier> 19 1B <BARRACKS> 16 [@] <XGFacility_Barracks.CreateSoldier.ReturnValue> 00 ( 1B <CreateSoldier> 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.soldierClass> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier> 38 3A 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.SoldierRank> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier> 38 3A 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.Country> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier> 4A 16 )
  53. 0F 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.kAppearance> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.Appearance> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier>
  54. 0F 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.strFirstName> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.firstName> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier>
  55. 0F 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.strLastName> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.lastName> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier>
  56. 0F 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.strNickName> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.NickName> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier>
  57. 0F 1A 25 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.aStats> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kChar> 00 ( 01 <XGStrategySoldier.m_kChar> ) 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.HP> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier>
  58. 0F 1A 26 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.aStats> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kChar> 00 ( 01 <XGStrategySoldier.m_kChar> ) 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.Aim> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier>
  59. 0F 1A 2C 07 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.aStats> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kChar> 00 ( 01 <XGStrategySoldier.m_kChar> ) 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.Will> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier>
  60. 07 [@label_0x02ED] 2D 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.bPsiGift> <@TFundingCouncilRewardSoldier> 00 00 48 <.CustomSoldier>
  61. 14 19 00 <.Soldier> [@] <XGStrategySoldier.bForcePsiGift> 00 ( 2D 01 <XGStrategySoldier.bForcePsiGift> ) 27
  62. [#label_0x02ED]
  63. 07 [@label_0x0449] 9A 35 <XComGame.XGTacticalGameCoreNativeBase.TAppearance.iHead> <XComGame.XGTacticalGameCoreNativeBase.TAppearance> 00 00 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.Appearance> <@TFundingCouncilRewardSoldier> 00 01 48 <.CustomSoldier> 1D <%i 308> 16
  64. 0F 1A 2C 03 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.aStats> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kChar> 00 ( 01 <XGStrategySoldier.m_kChar> ) 2C 0D
  65. 0F 19 00 <.Soldier> [@] <XGStrategySoldier.m_iTurnsOut> 00 ( 01 <XGStrategySoldier.m_iTurnsOut> ) 90 2C 14 A7 2C 00 16 16
  66. 19 00 <.Soldier> [@] <NullRef> 00 ( 1B <SetStatus> 24 08 4A 16 )
  67. [#label_0x0449]
  68. 07 [@label_0x05D3] 9A 35 <XComGame.XGTacticalGameCoreNativeBase.TAppearance.iHead> <XComGame.XGTacticalGameCoreNativeBase.TAppearance> 00 00 35 <XGFundingCouncil.TFundingCouncilRewardSoldier.Appearance> <@TFundingCouncilRewardSoldier> 00 01 48 <.CustomSoldier> 1D <%i 420> 16
  69. 14 2D 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.bHasPsiGift> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kChar> 00 ( 01 <XGStrategySoldier.m_kChar> ) 27
  70. 0F 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.iPsiRank> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 2C 02
  71. 0F 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.iPsiXP> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 19 1B <TACTICAL> 16 [@] <XComGame.XGTacticalGameCore.GetPsiXPRequired.ReturnValue> 00 ( 1B <GetPsiXPRequired> 2C 02 16 )
  72. 0F 1A 2C 03 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.aStats> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kChar> 00 ( 01 <XGStrategySoldier.m_kChar> ) 2C 0D
  73.  
  74. 19 00 <.Soldier> [@] <NullRef> 00 ( 1B <GivePerk> <!AnnetteT1Psi> 16 )
  75. 19 00 <.Soldier> [@] <NullRef> 00 ( 1B <GivePerk> <!AnnetteT2Psi> 16 )
  76.  
  77. [#label_0x05D3]
  78. 07 [@label_0x0780] 84 84 7A 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.strNickName> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 1F <%t "Tisiphone"> 16 18 [@] ( 7A 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.strNickName> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 1F <%t "Megaera"> 16 16 ) 18 [@] ( 7A 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.strNickName> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 1F <%t "Alecto"> 16 16 )
  79. 14 2D 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.bHasPsiGift> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kChar> 00 ( 01 <XGStrategySoldier.m_kChar> ) 27
  80. 0F 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.iPsiRank> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 2C 01
  81. 0F 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.iPsiXP> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 19 1B <TACTICAL> 16 [@] <XComGame.XGTacticalGameCore.GetPsiXPRequired.ReturnValue> 00 ( 1B <GetPsiXPRequired> 2C 01 16 )
  82.  
  83. // if (Soldier.m_kSoldier.strNickName == "Alecto")
  84. 07 [@labelA] 7A 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.strNickName> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 1F <%t "Alecto"> 16
  85. 19 00 <.Soldier> [@] <NullRef> 00 ( 1B <GivePerk> <!AlectoT1Psi> 16 )
  86. [#labelA]
  87. // if (Soldier.m_kSoldier.strNickName == "Megaera")
  88. 07 [@labelB] 7A 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.strNickName> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 1F <%t "Megaera"> 16
  89. 19 00 <.Soldier> [@] <NullRef> 00 ( 1B <GivePerk> <!MegaeraT1Psi> 16 )
  90. [#labelB]
  91. // if (Soldier.m_kSoldier.strNickName == "Tisiphone")
  92. 07 [@label_0x0780] 7A 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.strNickName> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 1F <%t "Tisiphone"> 16
  93. 19 00 <.Soldier> [@] <NullRef> 00 ( 1B <GivePerk> <!TisiphoneT1Psi> 16 )
  94.  
  95. [#label_0x0780]
  96. 07 [@label_0x07FA] 7A 35 <XComGame.XGTacticalGameCoreNativeBase.TSoldier.strNickName> <XComGame.XGTacticalGameCoreNativeBase.TSoldier> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kSoldier> 00 ( 01 <XGStrategySoldier.m_kSoldier> ) 1F <%t "The General"> 16
  97. 0F 1A 2C 03 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.aStats> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kChar> 00 ( 01 <XGStrategySoldier.m_kChar> ) 2C 0D
  98. [#label_0x07FA]
  99. 07 [@label_0x085E] 1B <IsOptionEnabled> 24 0B 16
  100. A1 1A 26 35 <XComGame.XGTacticalGameCoreNativeBase.TCharacter.aStats> <XComGame.XGTacticalGameCoreNativeBase.TCharacter> 00 01 19 00 <.Soldier> [@] <XGStrategySoldier.m_kChar> 00 ( 01 <XGStrategySoldier.m_kChar> ) 38 44 12 20 <XComGame.XGTacticalGameCore> [@] <XComGame.XGTacticalGameCoreNativeBase.ABDUCTION_REWARD_SCI> 00 ( 02 <XComGame.XGTacticalGameCoreNativeBase.ABDUCTION_REWARD_SCI> ) 16
  101. [#label_0x085E]
  102. 04 0B
  103. 53
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement