Advertisement
RedDobe

Offensive and Defensive Reflex Actions

Aug 12th, 2019
1,569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. XcomGame.ini
  2.  
  3. [YellowAlert.YellowAlert_X2DownloadableContentInfo]
  4. DLCIdentifier="YellowAlert"
  5.  
  6. [XComGame.CHHelpers]
  7. ; Ensure that units can use these action point types after scampering
  8. +AdditionalAIBTActionPointTypes=OffensiveReflexActionPoint_LW
  9. +AdditionalAIBTActionPointTypes=DefensiveReflexActionPoint_LW
  10.  
  11.  
  12. XcomYellowAlert.ini
  13. [YellowAlert.YellowAlert_X2DownloadableContentInfo]
  14. ; Offensive actions - Undamaged units in yellow alert that activate on their turn will be allowed
  15. ; these actions.  If these abilties don't exist they won't be used.
  16. +OffensiveReflexAbilities=StandardShot
  17. +OffensiveReflexAbilities=Overwatch
  18. +OffensiveReflexAbilities=SniperRifleOverwatch
  19. +OffensiveReflexAbilities=LightEmUp
  20. +OffensiveReflexAbilities=HunkerDown
  21. +OffensiveReflexAbilities=Suppression
  22. +OffensiveReflexAbilities=Suppression_LW
  23. +OffensiveReflexAbilities=AreaSuppression
  24. +OffensiveReflexAbilities=Mindspin
  25. +OffensiveReflexAbilities=WarCry
  26. +OffensiveReflexAbilities=MarkTarget
  27. +OffensiveReflexAbilities=EnergyShield
  28. +OffensiveReflexAbilities=EnergyShieldMk3
  29. +OffensiveReflexAbilities=BlazingPinionsStage1
  30. +OffensiveReflexAbilities=DevastatingPunch
  31. +OffensiveReflexAbilities=ChryssalidSlash
  32. +OffensiveReflexAbilities=ScythingClaws
  33. +OffensiveReflexAbilities=PsiReanimation
  34. +OffensiveReflexAbilities=AnimaInversion
  35. +OffensiveReflexAbilities=LWDroneShock
  36. +OffensiveReflexAbilities=LWDroneRepair
  37. +OffensiveReflexAbilities=LWDroneMeleeStun
  38. +OffensiveReflexAbilities=MassReanimation_LW
  39. +OffensiveReflexAbilities=PersonalShield
  40. ;+OffensiveReflexAbilities=StandardMove
  41. ;+OffensiveReflexAbilities=Teleport
  42.  
  43. ; Defensive actions - Damaged units in yellow alert that activate on their turn, or any unit
  44. ; in green that activates on their turn (if green reflex actions are enabled) will use this
  45. ; table.
  46.  
  47. ;At the time I cannot get select abilities to work therefore units will have access to all of their abilities when granted an extra reflex action
  48. +DefensiveReflexAbilities=Overwatch
  49. +DefensiveReflexAbilities=SniperRifleOverwatch
  50. +DefensiveReflexAbilities=LongWatch
  51. +DefensiveReflexAbilities=HunkerDown
  52. +DefensiveReflexAbilities=WarCry
  53. +DefensiveReflexAbilities=EnergyShield
  54. +DefensiveReflexAbilities=EnergyShieldMk3
  55. +DefensiveReflexAbilities=LWDroneRepair
  56. +DefensiveReflexAbilities=PersonalShield
  57. +DefensiveReflexAbilities=Suppression
  58. +DefensiveReflexAbilities=Suppression_LW
  59. +DefensiveReflexAbilities=AreaSuppression
  60. ;+DefensiveReflexAbilities=PsiReanimation
  61. ;+DefensiveReflexAbilities=AnimaInversion
  62. ;+DefensiveReflexAbilities=MassReanimation_LW
  63.  
  64.  
  65.  
  66. YellowAlert_X2DownloadableContentInfo
  67.  
  68. class YellowAlert_X2DownloadableContentInfo extends X2DownloadableContentInfo config(YellowAlert);
  69.  
  70. var config array<name> OffensiveReflexAbilities;
  71. var config array<name> DefensiveReflexAbilities;
  72. static event OnPostTemplatesCreated()
  73. {
  74.     AddReflexActions();
  75. }
  76.  
  77. static function AddReflexActions()
  78. {
  79.     local X2AbilityTemplateManager          AbilityManager;
  80.     local name                              AbilityName;
  81.     local X2AbilityTemplate                 Template;
  82.  
  83.     AbilityManager = class'X2AbilityTemplateManager'.static.GetAbilityTemplateManager();
  84.  
  85.     foreach default.DefensiveReflexAbilities(AbilityName)
  86.     {
  87.         Template = AbilityManager.FindAbilityTemplate(AbilityName);
  88.         if (Template != none)
  89.         {
  90.             AddReflexActionPoint(Template, class'YellowAlert_UIScreenListener'.const.DefensiveReflexAction);
  91.         }
  92.         else
  93.         {
  94.         `Log("Cannot add reflex ability " $ AbilityName $ ": Is not a valid ability");
  95.         }
  96.        
  97.     }
  98.     foreach default.OffensiveReflexAbilities(AbilityName)
  99.     {
  100.         Template = AbilityManager.FindAbilityTemplate(AbilityName);
  101.         if (Template != none)
  102.         {
  103.             AddReflexActionPoint(Template, class'YellowAlert_UIScreenListener'.const.OffensiveReflexAction);
  104.         }
  105.         else
  106.         {
  107.         `Log("Cannot add reflex ability " $ AbilityName $ ": Is not a valid ability");
  108.         }
  109.        
  110.     }
  111. }
  112.  
  113. static function AddReflexActionPoint(X2AbilityTemplate Template, Name ActionPointName)
  114. {
  115.     local X2AbilityCost_ActionPoints        ActionPointCost;
  116.     local X2AbilityCost                     Cost;
  117.  
  118.     foreach Template.AbilityCosts(Cost)
  119.     {
  120.         ActionPointCost = X2AbilityCost_ActionPoints(Cost);
  121.         if (ActionPointCost != none)
  122.         {
  123.             ActionPointCost.AllowedTypes.AddItem(ActionPointName);
  124.             `Log("Adding reflex action point " $ ActionPointName $ " to " $ Template.DataName);
  125.             return;
  126.         }
  127.     }
  128.  
  129.     `Log("Cannot add reflex ability " $ Template.DataName $ ": Has no action point cost");
  130.  
  131.  
  132.  
  133. YellowAlert_UIScreenListener
  134.  
  135. const DefensiveReflexAction = 'DefensiveReflexActionPoint_LW';
  136. const OffensiveReflexAction = 'OffensiveReflexActionPoint_LW';
  137.  
  138. CONTINUE DOWN TO EVENT LISTENER FUNCTION
  139.  
  140. if (Member.IsInjured() || !IsYellow)
  141.     {
  142.     //For now just adding a standard action point until I can figure out how to get the enemy to use the DefensiveReflexActions configured in the .ini
  143.     //Member.ActionPoints.AddItem(class'X2CharacterTemplateManager'.default.StandardActionPoint);
  144.     Member.ActionPoints.AddItem(DefensiveReflexAction); //Refund the AI one action point to use after scamper.
  145.     }
  146.     else
  147.     {
  148.     //Member.ActionPoints.AddItem(class'X2CharacterTemplateManager'.default.StandardActionPoint);  //Refund the AI one action point to use after scamper.
  149.     Member.ActionPoints.AddItem(OffensiveReflexAction); //Refund the AI one action point to use after scamper.
  150.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement