Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class X2AmbientNarrativeCriteria_SVF_TemplateModificator extends X2AmbientNarrativeCriteria;
- static function array<X2DataTemplate> CreateTemplates()
- {
- // This turns out to be a good hook for doing global template modification because subclasses of X2AmbientNarrativeCriteria
- // are the last ones loaded when the game is setting up. We'll just return an empty list of templates for template creation
- // (because we're not actually using this to create any templates) and put our template modifications in-between
- local array<X2DataTemplate> Templates;
- Templates.Length = 0;
- // Update the Suppression visualization function
- UpdateSuppressionVisualizationFunction();
- return Templates;
- }
- static function UpdateSuppressionVisualizationFunction()
- {
- local X2AbilityTemplate AbilityTemplate;
- // Find the Suppression ability template
- AbilityTemplate = class'X2AbilityTemplateManager'.static.GetAbilityTemplateManager().FindAbilityTemplate('Suppression');
- if (AbilityTemplate != none)
- {
- AbilityTemplate.BuildVisualizationFn = SuppressionBuildVisualization;
- `LOG("Suppression Visualization Fix: Updated " @ AbilityTemplate.DataName @ " template visualization function.");
- }
- }
- //---------------------------------------------------------------------------------------------------
- // Suppression Visualization
- //---------------------------------------------------------------------------------------------------
- static simulated function SuppressionBuildVisualization(XComGameState VisualizeGameState)
- {
- local XComGameStateHistory History;
- local XComGameStateContext_Ability Context;
- local StateObjectReference InteractingUnitRef;
- local VisualizationActionMetadata EmptyTrack;
- local VisualizationActionMetadata ActionMetadata;
- local XComGameState_Ability Ability;
- local X2Action_PlaySoundAndFlyOver SoundAndFlyOver;
- local XComUnitPawn UnitPawn;
- local XComWeapon Weapon;
- History = `XCOMHISTORY;
- Context = XComGameStateContext_Ability(VisualizeGameState.GetContext());
- InteractingUnitRef = Context.InputContext.SourceObject;
- //Configure the visualization track for the shooter
- //****************************************************************************************
- ActionMetadata = EmptyTrack;
- ActionMetadata.StateObject_OldState = History.GetGameStateForObjectID(InteractingUnitRef.ObjectID, eReturnType_Reference, VisualizeGameState.HistoryIndex - 1);
- ActionMetadata.StateObject_NewState = VisualizeGameState.GetGameStateForObjectID(InteractingUnitRef.ObjectID);
- ActionMetadata.VisualizeActor = History.GetVisualizer(InteractingUnitRef.ObjectID);
- // Check the actor's pawn and weapon, see if they can play the suppression effect
- (63) UnitPawn = XGUnit(BuildTrack.TrackActor).GetPawn();
- Weapon = XComWeapon(UnitPawn.Weapon);
- if (Weapon != None &&
- !UnitPawn.GetAnimTreeController().CanPlayAnimation(Weapon.WeaponSuppressionFireAnimSequenceName) &&
- !UnitPawn.GetAnimTreeController().CanPlayAnimation(class'XComWeapon'.default.WeaponSuppressionFireAnimSequenceName))
- {
- // 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
- Weapon.WeaponSuppressionFireAnimSequenceName = Weapon.WeaponFireAnimSequenceName;
- }
- class'X2Action_ExitCover'.static.AddToVisualizationTree(ActionMetadata, Context, false, ActionMetadata.LastActionAdded);
- class'X2Action_StartSuppression'.static.AddToVisualizationTree(ActionMetadata, Context, false, ActionMetadata.LastActionAdded);
- //****************************************************************************************
- //Configure the visualization track for the target
- InteractingUnitRef = Context.InputContext.PrimaryTarget;
- Ability = XComGameState_Ability(History.GetGameStateForObjectID(Context.InputContext.AbilityRef.ObjectID, eReturnType_Reference, VisualizeGameState.HistoryIndex - 1));
- ActionMetadata = EmptyTrack;
- ActionMetadata.StateObject_OldState = History.GetGameStateForObjectID(InteractingUnitRef.ObjectID, eReturnType_Reference, VisualizeGameState.HistoryIndex - 1);
- ActionMetadata.StateObject_NewState = VisualizeGameState.GetGameStateForObjectID(InteractingUnitRef.ObjectID);
- ActionMetadata.VisualizeActor = History.GetVisualizer(InteractingUnitRef.ObjectID);
- SoundAndFlyOver = X2Action_PlaySoundAndFlyOver(class'X2Action_PlaySoundAndFlyOver'.static.AddToVisualizationTree(ActionMetadata, Context, false, ActionMetadata.LastActionAdded));
- SoundAndFlyOver.SetSoundAndFlyOverParameters(None, Ability.GetMyTemplate().LocFlyOverText, '', eColor_Good);
- if (XComGameState_Unit(ActionMetadata.StateObject_OldState).ReserveActionPoints.Length != 0 && XComGameState_Unit(ActionMetadata.StateObject_NewState).ReserveActionPoints.Length == 0)
- {
- SoundAndFlyOver = X2Action_PlaySoundAndFlyOver(class'X2Action_PlaySoundAndFlyOver'.static.AddToVisualizationTree(ActionMetadata, Context, false, ActionMetadata.LastActionAdded));
- SoundAndFlyOver.SetSoundAndFlyOverParameters(none, class'XLocalizedData'.default.OverwatchRemovedMsg, '', eColor_Good);
- }
- }
- Warning/Error Summary
- ---------------------
- D:\SteamLibrary\SteamApps\common\XCOM 2 War of the Chosen SDK\Development\Src\WOTCSuppressionVisualizationFix\Classes\X2AmbientNarrativeCriteria_SVF_TemplateModificator.uc(63):
- Error, Bad or missing expression for token: XGUnit, in '='
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement