Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static function X2AbilityTemplate Create_DP_GunKata_OverwatchShot()
- {
- local X2AbilityTemplate Template;
- local X2AbilityCost_Ammo AmmoCost;
- local X2AbilityToHitCalc_StandardAim StandardAim;
- local X2Condition_UnitProperty ShooterCondition;
- local X2AbilityTarget_Single SingleTarget;
- local X2AbilityTrigger_Event Trigger;
- local X2Effect_ApplyWeaponDamage WeaponDamageEffect;
- local X2Condition_Visibility TargetVisibilityCondition;
- local array<name> SkipExclusions;
- local X2AbilityCost_GunKataCharge GunKataChargeCost;
- `CREATE_X2ABILITY_TEMPLATE(Template, 'DP_GunKata_OverwatchShot');
- Template.DefaultSourceItemSlot = eInvSlot_PrimaryWeapon;
- Template.bDontDisplayInAbilitySummary = true;
- AmmoCost = new class'X2AbilityCost_Ammo';
- AmmoCost.iAmmo = 1;
- Template.AbilityCosts.AddItem(AmmoCost);
- GunKataChargeCost = new class'X2AbilityCost_GunKataCharge';
- GunKataChargeCost.RequiredGunKataCharge = 1;
- Template.AbilityCosts.AddItem(GunKataChargeCost);
- StandardAim = new class'X2AbilityToHitCalc_StandardAim';
- StandardAim.bReactionFire = true;
- Template.AbilityToHitCalc = StandardAim;
- Template.AbilityToHitOwnerOnMissCalc = StandardAim;
- Template.AbilityTargetConditions.AddItem(default.LivingHostileUnitDisallowMindControlProperty);
- TargetVisibilityCondition = new class'X2Condition_Visibility';
- TargetVisibilityCondition.bRequireGameplayVisible = true;
- TargetVisibilityCondition.bRequireBasicVisibility = true;
- TargetVisibilityCondition.bDisablePeeksOnMovement = true; //Don't use peek tiles for over watch shots
- Template.AbilityTargetConditions.AddItem(TargetVisibilityCondition);
- //Template.AbilityTargetConditions.AddItem(OverwatchTargetEffectsCondition()); //add exclusuions for shadwostep and other typical stuff
- Template.AbilityShooterConditions.AddItem(default.LivingShooterProperty);
- ShooterCondition = new class'X2Condition_UnitProperty';
- ShooterCondition.ExcludeConcealed = true;
- Template.AbilityShooterConditions.AddItem(ShooterCondition);
- SkipExclusions.AddItem(class'X2AbilityTemplateManager'.default.DisorientedName);
- Template.AddShooterEffectExclusions(SkipExclusions);
- SingleTarget = new class'X2AbilityTarget_Single';
- SingleTarget.OnlyIncludeTargetsInsideWeaponRange = true;
- Template.AbilityTargetStyle = SingleTarget;
- //Trigger on movement - interrupt the move
- Trigger = new class'X2AbilityTrigger_Event';
- Trigger.EventObserverClass = class'X2TacticalGameRuleset_MovementObserver';
- Trigger.MethodName = 'InterruptGameState';
- Template.AbilityTriggers.AddItem(Trigger);
- Template.AbilitySourceName = 'eAbilitySource_Standard';
- Template.eAbilityIconBehaviorHUD = EAbilityIconBehavior_NeverShow;
- Template.IconImage = "img:///UILibrary_PerkIcons.UIPerk_overwatch";
- Template.ShotHUDPriority = class'UIUtilities_Tactical'.const.OVERWATCH_PRIORITY;
- Template.bDisplayInUITooltip = false;
- Template.bDisplayInUITacticalText = false;
- Template.DisplayTargetHitChance = false;
- Template.BuildNewGameStateFn = TypicalAbility_BuildGameState;
- //Template.BuildVisualizationFn = OverwatchShot_BuildVisualization;
- Template.BuildVisualizationFn = TypicalAbility_BuildVisualization;
- WeaponDamageEffect = new class'X2Effect_ApplyWeaponDamage';
- Template.AddTargetEffect(WeaponDamageEffect);
- //Template.bAllowBonusWeaponEffects = true;
- //Template.bAllowFreeFireWeaponUpgrade = false;
- //Template.bAllowAmmoEffects = true;
- Template.bAllowBonusWeaponEffects = false;
- Template.bAllowFreeFireWeaponUpgrade = false;
- Template.bAllowAmmoEffects = false;
- Template.AddTargetEffect(default.WeaponUpgradeMissDamage); //this adds normal weapon damage too? no, it doesn't.
- return Template;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement