Advertisement
Guest User

Untitled

a guest
Aug 8th, 2017
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. static function X2AbilityTemplate AddExecuteAbility()
  2. {
  3.     local X2AbilityTemplate                 Template;  
  4.     local X2Effect_KillUnit                 DamageModifier;
  5.     local X2AbilityCost_Ammo                AmmoCost;
  6.     local X2AbilityCost_ActionPoints        ActionPointCost;
  7.     local X2AbilityCooldown                 Cooldown;
  8.     local X2Condition_UnitInventory         InventoryCondition;
  9.     local X2Condition_Visibility            VisibilityCondition;
  10.     local X2Effect_Knockback                KnockbackEffect;
  11.  
  12.        
  13.     `CREATE_X2ABILITY_TEMPLATE (Template, 'Commissar_Execute');
  14.     Template.IconImage = "img:///UILibrary_LW2Commissar.UIPerk_CommissarExecuteIcon";
  15.     Template.AbilitySourceName = 'eAbilitySource_Perk';
  16.     Template.ShotHUDPriority = class'UIUtilities_Tactical'.const.CLASS_SQUADDIE_PRIORITY;
  17.     Template.Hostility = eHostility_Offensive;
  18.     Template.AbilityToHitCalc = default.DeadEye;
  19.     Template.AbilityTargetStyle = default.SimpleSingleTarget;
  20.     Template.AbilityTriggers.AddItem(default.PlayerInputTrigger);  
  21.     Template.AbilityConfirmSound = "TacticalUI_ActivateAbility";   
  22.     Template.bPreventsTargetTeleport = false;  
  23.     Template.CinescriptCameraType = "StandardGunFiring";
  24.     Template.TargetingMethod = class'X2TargetingMethod_OverTheShoulder';
  25.     Template.bUsesFiringCamera = true;
  26.     Template.AbilityShooterConditions.AddItem(default.LivingShooterProperty);
  27.     Template.AbilityTargetConditions.AddItem(default.LivingAllyProperty);  //target is on team and alive but can be hostile
  28.     Template.AddShooterEffectExclusions();
  29.  
  30.     //outright kill the target
  31.     DamageModifier = new class 'X2Effect_KillUnit';
  32.     Template.AddTargetEffect (DamageModifier);
  33.  
  34.     Template.bCrossClassEligible = false; //class skill, don't share
  35.  
  36.     //no shooting through walls
  37.     VisibilityCondition = new class'X2Condition_Visibility';
  38.     VisibilityCondition.bRequireGameplayVisible = true;
  39.     VisibilityCondition.bAllowSquadsight = true;
  40.     Template.AbilityTargetConditions.AddItem(VisibilityCondition);
  41.  
  42.     Template.bAllowAmmoEffects = false; //probably not needed, but better safe than sorry
  43.  
  44.     //applies to corpses
  45.     KnockbackEffect = new class'X2Effect_Knockback';
  46.     KnockbackEffect.KnockbackDistance = 2;
  47.     KnockbackEffect.bUseTargetLocation = true;
  48.     Template.AddTargetEffect(KnockbackEffect);
  49.  
  50.     ActionPointCost = new class 'X2AbilityCost_ActionPoints';
  51.     ActionPointCost.iNumPoints = default.COMMISSAR_EXECUTE_COST;
  52.     ActionPointCost.bConsumeAllPoints = false;
  53.     Template.AbilityCosts.AddItem(ActionPointCost);
  54.  
  55.     Cooldown = new class'X2AbilityCooldown';
  56.     Cooldown.iNumTurns = default.COMMISSAR_EXECUTE_COOLDOWN;
  57.     Template.AbilityCooldown = Cooldown;
  58.  
  59.     AmmoCost = new class'X2AbilityCost_Ammo';
  60.     AmmoCost.iAmmo = default.COMMISSAR_EXECUTE_AMMO;
  61.     Template.AbilityCosts.AddItem(AmmoCost);
  62.  
  63.     InventoryCondition = new class'X2Condition_UnitInventory';
  64.     InventoryCondition.RelevantSlot=eInvSlot_PrimaryWeapon;
  65.     InventoryCondition.RequireWeaponCategory = 'rifle';
  66.     Template.AbilityShooterConditions.AddItem(InventoryCondition);
  67.  
  68.     Template.BuildNewGameStateFn = TypicalAbility_BuildGameState;  
  69.     //visualization occurs in effect
  70.  
  71.     Template.BuildVisualizationFn = TypicalAbility_BuildVisualization; 
  72.     Template.BuildInterruptGameStateFn = TypicalAbility_BuildInterruptGameState;   
  73.     return Template;       
  74. }
  75.  
  76. static function X2AbilityTemplate AddExecuteImmunityAbility()
  77. {
  78.     local X2AbilityTemplate                     Template;  
  79.     local X2AbilityTrigger_OnAbilityActivated   ExecuteImmunityTrigger;
  80.     local X2Effect_RemoveEffects                RemoveEffects;
  81.     local X2AbilityMultiTarget_AllAllies        MultiTargetingStyle;
  82.     local X2Condition_UnitProperty              ImmunityTargetCondition;
  83.     local X2Effect_DamageImmunity               ImmunityEffect;
  84.  
  85.        
  86.     `CREATE_X2ABILITY_TEMPLATE (Template, 'Commissar_Execute_Immunity');
  87.     Template.IconImage = "img:///UILibrary_LW2Commissar.UIPerk_CommissarExecuteIcon";
  88.     Template.AbilitySourceName = 'eAbilitySource_Perk';    
  89.     Template.eAbilityIconBehaviorHUD = EAbilityIconBehavior_NeverShow;
  90.     Template.Hostility = eHostility_Neutral;
  91.     Template.AbilityToHitCalc = default.DeadEye;
  92.  
  93.     //This ability self-targets the commissar, and pulls in everyone on the squad (including the commissar) as multi-targets
  94.     Template.AbilityTargetStyle = default.SelfTarget;
  95.     MultiTargetingStyle = new class'X2AbilityMultiTarget_AllAllies';
  96.     MultiTargetingStyle.bAllowSameTarget = true;
  97.     Template.AbilityMultiTargetStyle = MultiTargetingStyle;
  98.  
  99.     //Targets are squadmates that aren't dead, but also can be mind controlled (ie, hostile).
  100.     //That way a mind controlled soldiers can snap out of it.
  101.     ImmunityTargetCondition = new class'X2Condition_UnitProperty';
  102.     ImmunityTargetCondition.ExcludeFriendlyToSource = false;
  103.     ImmunityTargetCondition.RequireSquadmates = true;
  104.     ImmunityTargetCondition.ExcludeAlive = false;
  105.     ImmunityTargetCondition.ExcludeDead = true;
  106.     ImmunityTargetCondition.ExcludeRobotic = true;      //  at least until there is a dreadnought mod.
  107.     Template.AbilityMultiTargetConditions.AddItem(ImmunityTargetCondition);
  108.  
  109.     //activates when you use execute
  110.     ExecuteImmunityTrigger=new class 'X2AbilityTrigger_OnAbilityActivated';
  111.     ExecuteImmunityTrigger.SetListenerData('Commissar_Execute');
  112.     Template.AbilityTriggers.AddItem(ExecuteImmunityTrigger);
  113.  
  114.     //remove existing debuffs before applying immunites
  115.     RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.DisorientedName);
  116.     RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.ConfusedName);
  117.     RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.PanickedName);
  118.     RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.StunnedName);
  119.     RemoveEffects.EffectNamesToRemove.AddItem('MindControl');
  120.     Template.AddTargetEffect (RemoveEffects);
  121.    
  122.     //Apply immunity
  123.     ImmunityEffect = new class 'X2Effect_DamageImmunity';
  124.     ImmunityEffect.ImmuneTypes.AddItem(class'X2AbilityTemplateManager'.default.DisorientedName);
  125.     ImmunityEffect.ImmuneTypes.AddItem(class'X2AbilityTemplateManager'.default.ConfusedName);
  126.     ImmunityEffect.ImmuneTypes.AddItem(class'X2AbilityTemplateManager'.default.PanickedName);
  127.     ImmunityEffect.ImmuneTypes.AddItem(class'X2AbilityTemplateManager'.default.StunnedName);
  128.     ImmunityEffect.ImmuneTypes.AddItem('MindControl');
  129.     ImmunityEffect.iNumTurns = default.COMMISSAR_EXECUTE_IMMUNITY_DURATION;
  130.     ImmunityEffect.SetDisplayInfo(ePerkBuff_Passive, Template.LocFriendlyName, Template.GetMyLongDescription(), Template.IconImage,,,Template.AbilitySourceName);
  131.     Template.AddTargetEffect (ImmunityEffect);
  132.  
  133.     Template.bCrossClassEligible = false;   //passive effect of execute, don't add to awc
  134.  
  135.     Template.BuildNewGameStateFn = TypicalAbility_BuildGameState;  
  136.     //no visualization on purpose
  137.     Template.BuildInterruptGameStateFn = TypicalAbility_BuildInterruptGameState;   
  138.     return Template;       
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement