Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static function X2AbilityTemplate AddExecuteAbility()
- {
- local X2AbilityTemplate Template;
- local X2Effect_KillUnit DamageModifier;
- local X2AbilityCost_Ammo AmmoCost;
- local X2AbilityCost_ActionPoints ActionPointCost;
- local X2AbilityCooldown Cooldown;
- local X2Condition_UnitInventory InventoryCondition;
- local X2Condition_Visibility VisibilityCondition;
- local X2Effect_Knockback KnockbackEffect;
- `CREATE_X2ABILITY_TEMPLATE (Template, 'Commissar_Execute');
- Template.IconImage = "img:///UILibrary_LW2Commissar.UIPerk_CommissarExecuteIcon";
- Template.AbilitySourceName = 'eAbilitySource_Perk';
- Template.ShotHUDPriority = class'UIUtilities_Tactical'.const.CLASS_SQUADDIE_PRIORITY;
- Template.Hostility = eHostility_Offensive;
- Template.AbilityToHitCalc = default.DeadEye;
- Template.AbilityTargetStyle = default.SimpleSingleTarget;
- Template.AbilityTriggers.AddItem(default.PlayerInputTrigger);
- Template.AbilityConfirmSound = "TacticalUI_ActivateAbility";
- Template.bPreventsTargetTeleport = false;
- Template.CinescriptCameraType = "StandardGunFiring";
- Template.TargetingMethod = class'X2TargetingMethod_OverTheShoulder';
- Template.bUsesFiringCamera = true;
- Template.AbilityShooterConditions.AddItem(default.LivingShooterProperty);
- Template.AbilityTargetConditions.AddItem(default.LivingAllyProperty); //target is on team and alive but can be hostile
- Template.AddShooterEffectExclusions();
- //outright kill the target
- DamageModifier = new class 'X2Effect_KillUnit';
- Template.AddTargetEffect (DamageModifier);
- Template.bCrossClassEligible = false; //class skill, don't share
- //no shooting through walls
- VisibilityCondition = new class'X2Condition_Visibility';
- VisibilityCondition.bRequireGameplayVisible = true;
- VisibilityCondition.bAllowSquadsight = true;
- Template.AbilityTargetConditions.AddItem(VisibilityCondition);
- Template.bAllowAmmoEffects = false; //probably not needed, but better safe than sorry
- //applies to corpses
- KnockbackEffect = new class'X2Effect_Knockback';
- KnockbackEffect.KnockbackDistance = 2;
- KnockbackEffect.bUseTargetLocation = true;
- Template.AddTargetEffect(KnockbackEffect);
- ActionPointCost = new class 'X2AbilityCost_ActionPoints';
- ActionPointCost.iNumPoints = default.COMMISSAR_EXECUTE_COST;
- ActionPointCost.bConsumeAllPoints = false;
- Template.AbilityCosts.AddItem(ActionPointCost);
- Cooldown = new class'X2AbilityCooldown';
- Cooldown.iNumTurns = default.COMMISSAR_EXECUTE_COOLDOWN;
- Template.AbilityCooldown = Cooldown;
- AmmoCost = new class'X2AbilityCost_Ammo';
- AmmoCost.iAmmo = default.COMMISSAR_EXECUTE_AMMO;
- Template.AbilityCosts.AddItem(AmmoCost);
- InventoryCondition = new class'X2Condition_UnitInventory';
- InventoryCondition.RelevantSlot=eInvSlot_PrimaryWeapon;
- InventoryCondition.RequireWeaponCategory = 'rifle';
- Template.AbilityShooterConditions.AddItem(InventoryCondition);
- Template.BuildNewGameStateFn = TypicalAbility_BuildGameState;
- //visualization occurs in effect
- Template.BuildVisualizationFn = TypicalAbility_BuildVisualization;
- Template.BuildInterruptGameStateFn = TypicalAbility_BuildInterruptGameState;
- return Template;
- }
- static function X2AbilityTemplate AddExecuteImmunityAbility()
- {
- local X2AbilityTemplate Template;
- local X2AbilityTrigger_OnAbilityActivated ExecuteImmunityTrigger;
- local X2Effect_RemoveEffects RemoveEffects;
- local X2AbilityMultiTarget_AllAllies MultiTargetingStyle;
- local X2Condition_UnitProperty ImmunityTargetCondition;
- local X2Effect_DamageImmunity ImmunityEffect;
- `CREATE_X2ABILITY_TEMPLATE (Template, 'Commissar_Execute_Immunity');
- Template.IconImage = "img:///UILibrary_LW2Commissar.UIPerk_CommissarExecuteIcon";
- Template.AbilitySourceName = 'eAbilitySource_Perk';
- Template.eAbilityIconBehaviorHUD = EAbilityIconBehavior_NeverShow;
- Template.Hostility = eHostility_Neutral;
- Template.AbilityToHitCalc = default.DeadEye;
- //This ability self-targets the commissar, and pulls in everyone on the squad (including the commissar) as multi-targets
- Template.AbilityTargetStyle = default.SelfTarget;
- MultiTargetingStyle = new class'X2AbilityMultiTarget_AllAllies';
- MultiTargetingStyle.bAllowSameTarget = true;
- Template.AbilityMultiTargetStyle = MultiTargetingStyle;
- //Targets are squadmates that aren't dead, but also can be mind controlled (ie, hostile).
- //That way a mind controlled soldiers can snap out of it.
- ImmunityTargetCondition = new class'X2Condition_UnitProperty';
- ImmunityTargetCondition.ExcludeFriendlyToSource = false;
- ImmunityTargetCondition.RequireSquadmates = true;
- ImmunityTargetCondition.ExcludeAlive = false;
- ImmunityTargetCondition.ExcludeDead = true;
- ImmunityTargetCondition.ExcludeRobotic = true; // at least until there is a dreadnought mod.
- Template.AbilityMultiTargetConditions.AddItem(ImmunityTargetCondition);
- //activates when you use execute
- ExecuteImmunityTrigger=new class 'X2AbilityTrigger_OnAbilityActivated';
- ExecuteImmunityTrigger.SetListenerData('Commissar_Execute');
- Template.AbilityTriggers.AddItem(ExecuteImmunityTrigger);
- //remove existing debuffs before applying immunites
- RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.DisorientedName);
- RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.ConfusedName);
- RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.PanickedName);
- RemoveEffects.EffectNamesToRemove.AddItem(class'X2AbilityTemplateManager'.default.StunnedName);
- RemoveEffects.EffectNamesToRemove.AddItem('MindControl');
- Template.AddTargetEffect (RemoveEffects);
- //Apply immunity
- ImmunityEffect = new class 'X2Effect_DamageImmunity';
- ImmunityEffect.ImmuneTypes.AddItem(class'X2AbilityTemplateManager'.default.DisorientedName);
- ImmunityEffect.ImmuneTypes.AddItem(class'X2AbilityTemplateManager'.default.ConfusedName);
- ImmunityEffect.ImmuneTypes.AddItem(class'X2AbilityTemplateManager'.default.PanickedName);
- ImmunityEffect.ImmuneTypes.AddItem(class'X2AbilityTemplateManager'.default.StunnedName);
- ImmunityEffect.ImmuneTypes.AddItem('MindControl');
- ImmunityEffect.iNumTurns = default.COMMISSAR_EXECUTE_IMMUNITY_DURATION;
- ImmunityEffect.SetDisplayInfo(ePerkBuff_Passive, Template.LocFriendlyName, Template.GetMyLongDescription(), Template.IconImage,,,Template.AbilitySourceName);
- Template.AddTargetEffect (ImmunityEffect);
- Template.bCrossClassEligible = false; //passive effect of execute, don't add to awc
- Template.BuildNewGameStateFn = TypicalAbility_BuildGameState;
- //no visualization on purpose
- Template.BuildInterruptGameStateFn = TypicalAbility_BuildInterruptGameState;
- return Template;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement