Advertisement
Iridar51

Untitled

Aug 7th, 2018
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. static function EventListenerReturn TakeInitiativeListener(Object EventData, Object EventSource, XComGameState GameState, Name EventID, Object CallbackData)
  2. {
  3. local XComGameStateHistory History;
  4. local XComGameStateContext_Ability AbilityContext;
  5. local XComGameState_Unit SourceUnit, TargetUnit;
  6. local array<StateObjectReference> PossibleTargets;
  7. local StateObjectReference BestTargetRef;
  8. local int BestTargetHP;
  9. local int i;
  10. local bool bAbilityContinues;
  11. local XComGameState_Ability AbilityState;
  12. local X2AbilityTemplateManager AbilityTemplateManager; //noodle code
  13. local X2AbilityTemplate AbilityTemplate;
  14.  
  15. `Log("IRIDAR Take Initiative Event Listener Triggered",, 'AkimboClass');
  16.  
  17. AbilityTemplateManager = class'X2AbilityTemplateManager'.static.GetAbilityTemplateManager();
  18. AbilityTemplate = AbilityTemplateManager.FindAbilityTemplate('DP_TakeInitiativeStrike');//noodle code end
  19.  
  20. AbilityContext = XComGameStateContext_Ability(GameState.GetContext());
  21.  
  22. `Log("IRIDAR Interrupt Status: " @ AbilityContext.InterruptionStatus,, 'AkimboClass');
  23.  
  24. if (AbilityContext != none && AbilityContext.InterruptionStatus != eInterruptionStatus_Interrupt)
  25. {
  26. SourceUnit = XComGameState_Unit(GameState.GetGameStateForObjectID(AbilityContext.InputContext.SourceObject.ObjectID));
  27. TargetUnit = XComGameState_Unit(GameState.GetGameStateForObjectID(AbilityContext.InputContext.PrimaryTarget.ObjectID));
  28.  
  29. History = `XCOMHISTORY;
  30. // find all possible new targets and select one with the highest HP to fire against
  31. class'X2TacticalVisibilityHelpers'.static.GetAllVisibleEnemyUnitsForUnit(SourceUnit.ObjectID, PossibleTargets, AbilityTemplate.AbilityTargetConditions);
  32.  
  33. `Log("IRIDAR Possible Targets: " @ PossibleTargets.Length,, 'AkimboClass');
  34.  
  35. BestTargetHP = -1;
  36. for (i = 0; i < PossibleTargets.Length; ++i)
  37. {
  38. TargetUnit = XComGameState_Unit(History.GetGameStateForObjectID(PossibleTargets[i].ObjectID));
  39. if (TargetUnit.GetCurrentStat(eStat_HP) > BestTargetHP)
  40. {
  41. BestTargetHP = TargetUnit.GetCurrentStat(eStat_HP);
  42. BestTargetRef = PossibleTargets[i];
  43. }
  44. }
  45. if (BestTargetRef.ObjectID > 0)
  46. {
  47. AbilityState = XComGameState_Ability(CallbackData);
  48. `Log("IRIDAR Triggering additional strike" @ AbilityState.GetMyTemplateName(),, 'AkimboClass');
  49. `log("IRIDAR CallBackData: " @ XComGameState_Ability(CallbackData).GetMyTemplateName(),, 'AkimboClass');
  50. bAbilityContinues = class'XComGameState_Ability'.static.AbilityTriggerAgainstSingleTarget_Static(AbilityState.ObjectID, SourceUnit.GetReference(), BestTargetRef, false);
  51. }
  52. }
  53. return ELR_NoInterrupt;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement