Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static function X2AbilityTemplate SniperLowProfile()
- {
- local X2AbilityTemplate Template;
- local X2Effect_SniperLowProfile SniperLowProfileEffect;
- local X2AbilityTrigger_EventListener EventListener;
- local X2ConditionNotVisibleToEnemies NotVisibleToEnemiesCondition;
- local X2Effect_PersistentStatChange PersistentStatChangeEffect;
- `CREATE_X2ABILITY_TEMPLATE(Template, 'SniperLowProfile');
- Template.AbilitySourceName = 'eAbilitySource_Perk';
- Template.eAbilityIconBehaviorHUD = eAbilityIconBehavior_NeverShow;
- Template.Hostility = eHostility_Neutral;
- Template.IconImage = "img:///UILibrary_PerkIcons.UIPerk_bioelectricskin";
- NotVisibleToEnemiesCondition = new class'X2ConditionNotVisibleToEnemies';
- Template.AbilityTargetConditions.AddItem(NotVisibleToEnemiesCondition);
- Template.AbilityToHitCalc = default.DeadEye;
- Template.AbilityTargetStyle = default.SelfTarget;
- EventListener = new class'X2AbilityTrigger_EventListener';
- EventListener.ListenerData.Deferral = ELD_OnStateSubmitted;
- EventListener.ListenerData.EventID = 'PlayerTurnBegun';
- EventListener.ListenerData.EventFn = class'XComGameState_Ability'.static.AbilityTriggerEventListener_Self;
- EventListener.ListenerData.Filter = eFilter_Player;
- Template.AbilityTriggers.AddItem(EventListener);
- SniperLowProfileEffect = new class'X2Effect_SniperLowProfile';
- SniperLowProfileEffect.EffectName = 'SniperLowProfileEffect';
- SniperLowProfileEffect.BuildPersistentEffect(1, false, false, false, eGameRule_PlayerTurnBegin);
- SniperLowProfileEffect.SetDisplayInfo(ePerkBuff_Passive, Template.LocFriendlyName, Template.GetMyHelpText(), Template.IconImage,true,,Template.AbilitySourceName);
- SniperLowProfileEffect.DuplicateResponse = eDupe_Allow;
- SniperLowProfileEffect.EffectAddedFn = SniperLowProfile_EffectAdded;
- SniperLowProfileEffect.EffectRemovedFn = SniperLowProfile_EffectRemoved;
- Template.AddTargetEffect(SniperLowProfileEffect);
- Template.AddTargetEffect(class'X2Effect_Spotted'.static.CreateUnspottedEffect());
- PersistentStatChangeEffect = new class'X2Effect_PersistentStatChange';
- PersistentStatChangeEffect.BuildPersistentEffect(1, true, true, false, eGameRule_TacticalGameStart);
- PersistentStatChangeEffect.AddPersistentStatChange(eStat_DetectionModifier, default.LOW_PROFILE_DETECTION_MODIFIER);
- PersistentStatChangeEffect.SetDisplayInfo(ePerkBuff_Passive, Template.LocFriendlyName, Template.GetMyHelpText(), Template.IconImage,,,Template.AbilitySourceName);
- Template.AddTargetEffect(PersistentStatChangeEffect);
- Template.ActivationSpeech = 'ActivateConcealment';
- Template.BuildNewGameStateFn = TypicalAbility_BuildGameState;
- Template.BuildVisualizationFn = TypicalAbility_BuildVisualization;
- Template.bSkipFireAction = true;
- return Template;
- }
- static function SniperLowProfile_EffectAdded(X2Effect_Persistent PersistentEffect, const out EffectAppliedData ApplyEffectParameters, XComGameState_BaseObject kNewTargetState, XComGameState NewGameState)
- {
- local X2EventManager EventMgr;
- local Object EffectObj;
- local XComGameState_Unit UnitState;
- local XComGameState_Effect EffectGameState;
- UnitState = XComGameState_Unit( NewGameState.CreateStateObject( class'XComGameState_Unit', ApplyEffectParameters.TargetStateObjectRef.ObjectID ) );
- EffectGameState = UnitState.GetUnitAffectedByEffectState(PersistentEffect.EffectName);
- EventMgr = `XEVENTMGR;
- EffectObj = EffectGameState;
- UnitState = XComGameState_Unit(`XCOMHISTORY.GetGameStateForObjectID(EffectGameState.ApplyEffectParameters.TargetStateObjectRef.ObjectID));
- EventMgr.RegisterForEvent(EffectObj, 'ObjectMoved', EffectGameState.GenerateCover_ObjectMoved, ELD_OnStateSubmitted, , UnitState);
- }
- static function SniperLowProfile_EffectRemoved(X2Effect_Persistent PersistentEffect, const out EffectAppliedData ApplyEffectParameters, XComGameState NewGameState, bool bCleansed)
- {
- local XComGameState_Unit UnitState;
- UnitState = XComGameState_Unit(`XCOMHISTORY.GetGameStateForObjectID(ApplyEffectParameters.TargetStateObjectRef.ObjectID));
- if (UnitState != none)
- `XEVENTMGR.TriggerEvent('EffectBreakUnitConcealment', UnitState, UnitState, NewGameState);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement