Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static function X2DataTemplate CreateShadowbind(name AbilityTemplateName, name UnitToSpawnName)
- {
- local X2AbilityTemplate Template;
- local X2AbilityCost_ActionPoints ActionPointCost;
- local X2Condition_UnitProperty UnitPropertyCondition;
- local X2Condition_UnitImmunities UnitImmunityCondition;
- local X2Effect_RemoveEffects RemoveEffects;
- local X2Effect_SpawnShadowbindUnit SpawnShadowbindUnit;
- local X2AbilityCooldown_LocalAndGlobal Cooldown;
- local X2Effect_OverrideDeathAction DeathActionEffect;
- local X2Effect_Persistent UnconsciousEffect;
- local X2Condition_UnitType UnitTypeCondition;
- local array<name> SkipExclusions;
- `CREATE_X2ABILITY_TEMPLATE(Template, AbilityTemplateName);
- Template.IconImage = "img:///UILibrary_XPACK_Common.PerkIcons.UIPerk_shadowbind";
- Template.Hostility = eHostility_Neutral;
- Template.AbilitySourceName = 'eAbilitySource_Standard';
- Template.eAbilityIconBehaviorHUD = eAbilityIconBehavior_AlwaysShow;
- ActionPointCost = new class'X2AbilityCost_ActionPoints';
- ActionPointCost.iNumPoints = 1;
- ActionPointCost.bConsumeAllPoints = false;
- Template.AbilityCosts.AddItem(ActionPointCost);
- Cooldown = new class'X2AbilityCooldown_LocalAndGlobal';
- Cooldown.iNumTurns = default.SHADOWBIND_COOLDOWN_LOCAL;
- Cooldown.NumGlobalTurns = default.SHADOWBIND_COOLDOWN_GLOBAL;
- Template.AbilityCooldown = Cooldown;
- Template.AbilityToHitCalc = default.DeadEye;
- Template.AbilityTargetStyle = new class'X2AbilityTarget_MovingMelee';
- Template.TargetingMethod = class'X2TargetingMethod_MeleePath';
- Template.AbilityTriggers.AddItem(default.PlayerInputTrigger);
- Template.AbilityTriggers.AddItem(new class'X2AbilityTrigger_EndOfMove');
- Template.AbilityShooterConditions.AddItem(default.LivingShooterProperty);
- Template.AbilityShooterConditions.AddItem(new class'X2Condition_UnblockedNeighborTile');
- SkipExclusions.AddItem(class'X2StatusEffects'.default.BurningName);
- Template.AddShooterEffectExclusions(SkipExclusions);
- Template.AbilityTargetConditions.AddItem(default.MeleeVisibilityCondition);
- UnitTypeCondition = new class'X2Condition_UnitType';
- UnitTypeCondition.ExcludeTypes.AddItem('TheLost');
- Template.AbilityTargetConditions.AddItem(UnitTypeCondition);
- // The Target must be alive and a humanoid
- UnitPropertyCondition = new class'X2Condition_UnitProperty';
- UnitPropertyCondition.ExcludeDead = true;
- UnitPropertyCondition.ExcludeRobotic = true;
- UnitPropertyCondition.ExcludeAlien = true;
- UnitPropertyCondition.ExcludeFriendlyToSource = true;
- UnitPropertyCondition.FailOnNonUnits = true;
- UnitPropertyCondition.ExcludeImpaired = true;
- Template.AbilityTargetConditions.AddItem(UnitPropertyCondition);
- UnitImmunityCondition = new class'X2Condition_UnitImmunities';
- UnitImmunityCondition.AddExcludeDamageType('Unconscious');
- Template.AbilityTargetConditions.AddItem(UnitImmunityCondition);
- RemoveEffects = new class'X2Effect_RemoveEffects';
- RemoveEffects.EffectNamesToRemove.AddItem(class'X2Effect_ParthenogenicPoison'.default.EffectName);
- Template.AddTargetEffect(RemoveEffects);
- DeathActionEffect = new class'X2Effect_OverrideDeathAction';
- DeathActionEffect.DeathActionClass = class'X2Action_ShadowbindTarget';
- DeathActionEffect.EffectName = 'ShadowbindUnconcious';
- Template.AddTargetEffect(DeathActionEffect);
- UnconsciousEffect = class'X2StatusEffects'.static.CreateUnconsciousStatusEffect();
- UnconsciousEffect.bRemoveWhenSourceDies = false;
- UnconsciousEffect.VisualizationFn = ShadowbindUnconsciousVisualization;
- Template.AddTargetEffect(UnconsciousEffect);
- SpawnShadowbindUnit = new class'X2Effect_SpawnShadowbindUnit';
- SpawnShadowbindUnit.BuildPersistentEffect(1, true, false, true);
- SpawnShadowbindUnit.bRemoveWhenTargetDies = false;
- SpawnShadowbindUnit.UnitToSpawnName = UnitToSpawnName;
- Template.AddTargetEffect(SpawnShadowbindUnit);
- Template.BuildNewGameStateFn = TypicalMoveEndAbility_BuildGameState;
- Template.BuildVisualizationFn = Shadowbind_BuildVisualization;
- Template.BuildInterruptGameStateFn = TypicalMoveEndAbility_BuildInterruptGameState;
- Template.CinescriptCameraType = "Spectre_Shadowbind";
- //BEGIN AUTOGENERATED CODE: Template Overrides 'Shadowbind'
- //BEGIN AUTOGENERATED CODE: Template Overrides 'ShadowbindM2'
- Template.CustomFireAnim = 'HL_Shadowbind';
- //END AUTOGENERATED CODE: Template Overrides 'ShadowbindM2'
- //END AUTOGENERATED CODE: Template Overrides 'Shadowbind'
- return Template;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement