Advertisement
Guest User

Untitled

a guest
Apr 28th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.14 KB | None | 0 0
  1. static function X2AbilityTemplate SniperLowProfile()
  2. {
  3. local X2AbilityTemplate Template;
  4. local X2Effect_SniperLowProfile SniperLowProfileEffect;
  5. local X2AbilityTrigger_EventListener EventListener;
  6. local X2ConditionNotVisibleToEnemies NotVisibleToEnemiesCondition;
  7. local X2Effect_PersistentStatChange PersistentStatChangeEffect;
  8.  
  9. `CREATE_X2ABILITY_TEMPLATE(Template, 'SniperLowProfile');
  10.  
  11. Template.AbilitySourceName = 'eAbilitySource_Perk';
  12. Template.eAbilityIconBehaviorHUD = eAbilityIconBehavior_NeverShow;
  13. Template.Hostility = eHostility_Neutral;
  14. Template.IconImage = "img:///UILibrary_PerkIcons.UIPerk_bioelectricskin";
  15.  
  16. NotVisibleToEnemiesCondition = new class'X2ConditionNotVisibleToEnemies';
  17. Template.AbilityTargetConditions.AddItem(NotVisibleToEnemiesCondition);
  18.  
  19. Template.AbilityToHitCalc = default.DeadEye;
  20. Template.AbilityTargetStyle = default.SelfTarget;
  21.  
  22. EventListener = new class'X2AbilityTrigger_EventListener';
  23. EventListener.ListenerData.Deferral = ELD_OnStateSubmitted;
  24. EventListener.ListenerData.EventID = 'PlayerTurnBegun';
  25. EventListener.ListenerData.EventFn = class'XComGameState_Ability'.static.AbilityTriggerEventListener_Self;
  26. EventListener.ListenerData.Filter = eFilter_Player;
  27. Template.AbilityTriggers.AddItem(EventListener);
  28.  
  29. SniperLowProfileEffect = new class'X2Effect_SniperLowProfile';
  30. SniperLowProfileEffect.EffectName = 'SniperLowProfileEffect';
  31. SniperLowProfileEffect.BuildPersistentEffect(1, false, false, false, eGameRule_PlayerTurnBegin);
  32. SniperLowProfileEffect.SetDisplayInfo(ePerkBuff_Passive, Template.LocFriendlyName, Template.GetMyHelpText(), Template.IconImage,true,,Template.AbilitySourceName);
  33. SniperLowProfileEffect.DuplicateResponse = eDupe_Allow;
  34. SniperLowProfileEffect.EffectAddedFn = SniperLowProfile_EffectAdded;
  35. SniperLowProfileEffect.EffectRemovedFn = SniperLowProfile_EffectRemoved;
  36. Template.AddTargetEffect(SniperLowProfileEffect);
  37.  
  38. Template.AddTargetEffect(class'X2Effect_Spotted'.static.CreateUnspottedEffect());
  39.  
  40. PersistentStatChangeEffect = new class'X2Effect_PersistentStatChange';
  41. PersistentStatChangeEffect.BuildPersistentEffect(1, true, true, false, eGameRule_TacticalGameStart);
  42. PersistentStatChangeEffect.AddPersistentStatChange(eStat_DetectionModifier, default.LOW_PROFILE_DETECTION_MODIFIER);
  43. PersistentStatChangeEffect.SetDisplayInfo(ePerkBuff_Passive, Template.LocFriendlyName, Template.GetMyHelpText(), Template.IconImage,,,Template.AbilitySourceName);
  44. Template.AddTargetEffect(PersistentStatChangeEffect);
  45.  
  46. Template.ActivationSpeech = 'ActivateConcealment';
  47. Template.BuildNewGameStateFn = TypicalAbility_BuildGameState;
  48. Template.BuildVisualizationFn = TypicalAbility_BuildVisualization;
  49. Template.bSkipFireAction = true;
  50.  
  51. return Template;
  52. }
  53.  
  54. static function SniperLowProfile_EffectAdded(X2Effect_Persistent PersistentEffect, const out EffectAppliedData ApplyEffectParameters, XComGameState_BaseObject kNewTargetState, XComGameState NewGameState)
  55. {
  56. local X2EventManager EventMgr;
  57. local Object EffectObj;
  58. local XComGameState_Unit UnitState;
  59. local XComGameState_Effect EffectGameState;
  60.  
  61. UnitState = XComGameState_Unit( NewGameState.CreateStateObject( class'XComGameState_Unit', ApplyEffectParameters.TargetStateObjectRef.ObjectID ) );
  62. EffectGameState = UnitState.GetUnitAffectedByEffectState(PersistentEffect.EffectName);
  63.  
  64. EventMgr = `XEVENTMGR;
  65. EffectObj = EffectGameState;
  66. UnitState = XComGameState_Unit(`XCOMHISTORY.GetGameStateForObjectID(EffectGameState.ApplyEffectParameters.TargetStateObjectRef.ObjectID));
  67. EventMgr.RegisterForEvent(EffectObj, 'ObjectMoved', EffectGameState.GenerateCover_ObjectMoved, ELD_OnStateSubmitted, , UnitState);
  68. }
  69.  
  70. static function SniperLowProfile_EffectRemoved(X2Effect_Persistent PersistentEffect, const out EffectAppliedData ApplyEffectParameters, XComGameState NewGameState, bool bCleansed)
  71. {
  72. local XComGameState_Unit UnitState;
  73.  
  74. UnitState = XComGameState_Unit(`XCOMHISTORY.GetGameStateForObjectID(ApplyEffectParameters.TargetStateObjectRef.ObjectID));
  75. if (UnitState != none)
  76. `XEVENTMGR.TriggerEvent('EffectBreakUnitConcealment', UnitState, UnitState, NewGameState);
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement