How to make the ability animation not play twice?

I have an animation set up on an ability (unarmed_pickup) which works fine, but that animation plays again at the end of the cooldown period. Is there a way to make it not play twice like that?

Here is what's happening:
The ability I have allows the player to place something on the ground, so it plays the unarmed_pickup animation when they do that. But it has a long cooldown (30 sec) and when that time is over, the player does the unarmed_pickup animation a second time just because the timer ended on the cooldown - they're not using the ability again, the time is just up on the cooldown.

I couldn't find anything in the settings. Does anyone know how to turn this off?

Could you post your code that controls the animation.

There is no code for the animation. It's built in. It's the animation that comes with Abilities - when you add an Ability(that comes with Core) to a weapon or equipment.


I have the Cooldown time set to 30 seconds in the Ability settings. The animation unarmed_pickup (one of the player animations that comes with core.) is supposed to play right when you cast it, but it's playing again after the Cooldown phase is over. I have seen it do the same with different animations also.

I'm not sure if it will help, but here is the script I have attached to the ability. It just spawns an object at the player. I don't think it would affect the animation.

local healingDome = script:GetCustomProperty("HealingDome")
local WEAPON = script:FindAncestorByType('Weapon')
local IMPACTFX = script:GetCustomProperty("HealDomeImpactFx")

-- function to connect event handlers to ability events 
function ConnectAbilityEvents_SetHealingDome(ability)
	-- hooks on entering each phase

-- functions called when entering each phase. Add your code inside 
function OnCast_SetHealingDome(ability)
	local rayStart = ability.owner:GetWorldPosition()
	local cameraDown = ability.owner:GetWorldRotation() * (-Vector3.UP)
	local rayEnd = rayStart + cameraDown * 10000
	local hitResult = World.Raycast(rayStart, rayEnd, {ignorePlayers = true})
	if hitResult then
	    local hitPos = hitResult:GetImpactPosition() + Vector3.New(0,0,.1)
	    if IMPACTFX then
    		World.SpawnAsset(IMPACTFX, {position = hitPos})
	    World.SpawnAsset(healingDome, {position=hitPos}):SetNetworkedCustomProperty("TeamNO",

function OnExecute_SetHealingDome(ability)
	-- if isTargetDataUpdated is set to true on ability phase, targetData can be used
	local targetData = ability:GetTargetData()

function OnRecovery_SetHealingDome(ability)
	-- print("OnRecovery " ..

function OnCooldown_SetHealingDome(ability)
	-- print("OnCooldown " ..

function OnInterrupted_SetHealingDome(ability)
	-- print("OnInterrupted " ..

function OnReady_SetHealingDome(ability)
	-- print("OnReady " ..

-- reference to ability object, modify as needed
local myAbility = script.parent

-- call to connect events to ability. 
-- this does not give the ability to player, that need to be handled separately depending on how ability is created in game


Is that an image of everything inside of the equipment object?

Sorry... I just took a screenshot of a basic equipment one just to show what I meant by it being a part of a built-in Ability.

Here is the actual one. There is another ability on it.


But now that I'm running it again, I saw it happen a couple more times, but not any other times. I'm having trouble reproducing it now :confused:

I had tried it before in a different game world (I copied/pasted the weapon) and it did the same thing, but now it's not.

I thought it may have been something I had to specify in the ability script or properties. Maybe it's just a bug that hopefully doesn't show up anymore, but I have a feeling that's not how it's gonna work out hehe.