Advertisement
kregano

Suppression_viz_fix_WOTC_bug

Sep 7th, 2017
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. class X2AmbientNarrativeCriteria_SVF_TemplateModificator extends X2AmbientNarrativeCriteria;
  2.  
  3. static function array<X2DataTemplate> CreateTemplates()
  4. {
  5. // This turns out to be a good hook for doing global template modification because subclasses of X2AmbientNarrativeCriteria
  6. // are the last ones loaded when the game is setting up. We'll just return an empty list of templates for template creation
  7. // (because we're not actually using this to create any templates) and put our template modifications in-between
  8. local array<X2DataTemplate> Templates;
  9. Templates.Length = 0;
  10.  
  11. // Update the Suppression visualization function
  12. UpdateSuppressionVisualizationFunction();
  13.  
  14. return Templates;
  15. }
  16.  
  17. static function UpdateSuppressionVisualizationFunction()
  18. {
  19. local X2AbilityTemplate AbilityTemplate;
  20.  
  21. // Find the Suppression ability template
  22. AbilityTemplate = class'X2AbilityTemplateManager'.static.GetAbilityTemplateManager().FindAbilityTemplate('Suppression');
  23. if (AbilityTemplate != none)
  24. {
  25. AbilityTemplate.BuildVisualizationFn = SuppressionBuildVisualization;
  26.  
  27. `LOG("Suppression Visualization Fix: Updated " @ AbilityTemplate.DataName @ " template visualization function.");
  28. }
  29. }
  30.  
  31. //---------------------------------------------------------------------------------------------------
  32. // Suppression Visualization
  33. //---------------------------------------------------------------------------------------------------
  34.  
  35. static simulated function SuppressionBuildVisualization(XComGameState VisualizeGameState)
  36. {
  37. local XComGameStateHistory History;
  38. local XComGameStateContext_Ability Context;
  39. local StateObjectReference InteractingUnitRef;
  40.  
  41. local VisualizationActionMetadata EmptyTrack;
  42. local VisualizationActionMetadata ActionMetadata;
  43.  
  44. local XComGameState_Ability Ability;
  45. local X2Action_PlaySoundAndFlyOver SoundAndFlyOver;
  46.  
  47. local XComUnitPawn UnitPawn;
  48. local XComWeapon Weapon;
  49.  
  50. History = `XCOMHISTORY;
  51.  
  52. Context = XComGameStateContext_Ability(VisualizeGameState.GetContext());
  53. InteractingUnitRef = Context.InputContext.SourceObject;
  54.  
  55. //Configure the visualization track for the shooter
  56. //****************************************************************************************
  57. ActionMetadata = EmptyTrack;
  58. ActionMetadata.StateObject_OldState = History.GetGameStateForObjectID(InteractingUnitRef.ObjectID, eReturnType_Reference, VisualizeGameState.HistoryIndex - 1);
  59. ActionMetadata.StateObject_NewState = VisualizeGameState.GetGameStateForObjectID(InteractingUnitRef.ObjectID);
  60. ActionMetadata.VisualizeActor = History.GetVisualizer(InteractingUnitRef.ObjectID);
  61.  
  62. // Check the actor's pawn and weapon, see if they can play the suppression effect
  63. (63) UnitPawn = XGUnit(BuildTrack.TrackActor).GetPawn();
  64. Weapon = XComWeapon(UnitPawn.Weapon);
  65. if (Weapon != None &&
  66. !UnitPawn.GetAnimTreeController().CanPlayAnimation(Weapon.WeaponSuppressionFireAnimSequenceName) &&
  67. !UnitPawn.GetAnimTreeController().CanPlayAnimation(class'XComWeapon'.default.WeaponSuppressionFireAnimSequenceName))
  68. {
  69. // The unit can't play their weapon's suppression effect. Replace it with the normal fire effect so at least they'll look like they're shooting
  70. Weapon.WeaponSuppressionFireAnimSequenceName = Weapon.WeaponFireAnimSequenceName;
  71. }
  72.  
  73. class'X2Action_ExitCover'.static.AddToVisualizationTree(ActionMetadata, Context, false, ActionMetadata.LastActionAdded);
  74. class'X2Action_StartSuppression'.static.AddToVisualizationTree(ActionMetadata, Context, false, ActionMetadata.LastActionAdded);
  75. //****************************************************************************************
  76. //Configure the visualization track for the target
  77. InteractingUnitRef = Context.InputContext.PrimaryTarget;
  78. Ability = XComGameState_Ability(History.GetGameStateForObjectID(Context.InputContext.AbilityRef.ObjectID, eReturnType_Reference, VisualizeGameState.HistoryIndex - 1));
  79. ActionMetadata = EmptyTrack;
  80. ActionMetadata.StateObject_OldState = History.GetGameStateForObjectID(InteractingUnitRef.ObjectID, eReturnType_Reference, VisualizeGameState.HistoryIndex - 1);
  81. ActionMetadata.StateObject_NewState = VisualizeGameState.GetGameStateForObjectID(InteractingUnitRef.ObjectID);
  82. ActionMetadata.VisualizeActor = History.GetVisualizer(InteractingUnitRef.ObjectID);
  83. SoundAndFlyOver = X2Action_PlaySoundAndFlyOver(class'X2Action_PlaySoundAndFlyOver'.static.AddToVisualizationTree(ActionMetadata, Context, false, ActionMetadata.LastActionAdded));
  84. SoundAndFlyOver.SetSoundAndFlyOverParameters(None, Ability.GetMyTemplate().LocFlyOverText, '', eColor_Good);
  85. if (XComGameState_Unit(ActionMetadata.StateObject_OldState).ReserveActionPoints.Length != 0 && XComGameState_Unit(ActionMetadata.StateObject_NewState).ReserveActionPoints.Length == 0)
  86. {
  87. SoundAndFlyOver = X2Action_PlaySoundAndFlyOver(class'X2Action_PlaySoundAndFlyOver'.static.AddToVisualizationTree(ActionMetadata, Context, false, ActionMetadata.LastActionAdded));
  88. SoundAndFlyOver.SetSoundAndFlyOverParameters(none, class'XLocalizedData'.default.OverwatchRemovedMsg, '', eColor_Good);
  89. }
  90. }
  91.  
  92. Warning/Error Summary
  93. ---------------------
  94. D:\SteamLibrary\SteamApps\common\XCOM 2 War of the Chosen SDK\Development\Src\WOTCSuppressionVisualizationFix\Classes\X2AmbientNarrativeCriteria_SVF_TemplateModificator.uc(63):
  95. Error, Bad or missing expression for token: XGUnit, in '='
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement