Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static function EventListenerReturn TakeInitiativeListener(Object EventData, Object EventSource, XComGameState GameState, Name EventID, Object CallbackData)
- {
- local XComGameStateHistory History;
- local XComGameStateContext_Ability AbilityContext;
- local XComGameState_Unit SourceUnit, TargetUnit;
- local array<StateObjectReference> PossibleTargets;
- local StateObjectReference BestTargetRef;
- local int BestTargetHP;
- local int i;
- local bool bAbilityContinues;
- local XComGameState_Ability AbilityState;
- local X2AbilityTemplateManager AbilityTemplateManager; //noodle code
- local X2AbilityTemplate AbilityTemplate;
- `Log("IRIDAR Take Initiative Event Listener Triggered",, 'AkimboClass');
- AbilityTemplateManager = class'X2AbilityTemplateManager'.static.GetAbilityTemplateManager();
- AbilityTemplate = AbilityTemplateManager.FindAbilityTemplate('DP_TakeInitiativeStrike');//noodle code end
- AbilityContext = XComGameStateContext_Ability(GameState.GetContext());
- `Log("IRIDAR Interrupt Status: " @ AbilityContext.InterruptionStatus,, 'AkimboClass');
- if (AbilityContext != none && AbilityContext.InterruptionStatus != eInterruptionStatus_Interrupt)
- {
- SourceUnit = XComGameState_Unit(GameState.GetGameStateForObjectID(AbilityContext.InputContext.SourceObject.ObjectID));
- TargetUnit = XComGameState_Unit(GameState.GetGameStateForObjectID(AbilityContext.InputContext.PrimaryTarget.ObjectID));
- History = `XCOMHISTORY;
- // find all possible new targets and select one with the highest HP to fire against
- class'X2TacticalVisibilityHelpers'.static.GetAllVisibleEnemyUnitsForUnit(SourceUnit.ObjectID, PossibleTargets, AbilityTemplate.AbilityTargetConditions);
- `Log("IRIDAR Possible Targets: " @ PossibleTargets.Length,, 'AkimboClass');
- BestTargetHP = -1;
- for (i = 0; i < PossibleTargets.Length; ++i)
- {
- TargetUnit = XComGameState_Unit(History.GetGameStateForObjectID(PossibleTargets[i].ObjectID));
- if (TargetUnit.GetCurrentStat(eStat_HP) > BestTargetHP)
- {
- BestTargetHP = TargetUnit.GetCurrentStat(eStat_HP);
- BestTargetRef = PossibleTargets[i];
- }
- }
- if (BestTargetRef.ObjectID > 0)
- {
- AbilityState = XComGameState_Ability(CallbackData);
- `Log("IRIDAR Triggering additional strike" @ AbilityState.GetMyTemplateName(),, 'AkimboClass');
- `log("IRIDAR CallBackData: " @ XComGameState_Ability(CallbackData).GetMyTemplateName(),, 'AkimboClass');
- bAbilityContinues = class'XComGameState_Ability'.static.AbilityTriggerAgainstSingleTarget_Static(AbilityState.ObjectID, SourceUnit.GetReference(), BestTargetRef, false);
- }
- }
- return ELR_NoInterrupt;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement